public void WorkflowVariable_FromObject_测试() { var data = new ObjectData { ReviewDays = 10 }; WorkflowVariable wv = WorkflowVariable.FromObject(data); var obj = ExpressionEvaluator.GetValue(wv, "DateTimeHelper.AddDays(ReviewDays)"); }
public void 调用子活动(string bpmnFile, string subBpmnFile) { var ex = Record.Exception(() => { string teachers = Guid.NewGuid().ToString(); string students = Guid.NewGuid().ToString(); string[] subUsers = new string[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; string[] subUsers1 = new string[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; var bizIds = new string[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; ctx.Deploy(bpmnFile); ctx.Deploy(subBpmnFile); WorkflowVariable vars = new WorkflowVariable(); vars.AddAssignee(nameof(teachers), teachers) .AddAssignee(nameof(students), students) .AddAssignee(nameof(subUsers), subUsers) .AddAssignee(nameof(subUsers1), subUsers1); string bizId = Guid.NewGuid().ToString(); ProcessInstance[] instances = ctx.StartUseFile(bpmnFile, null, vars, businessKey: bizId).GetAwaiter().GetResult(); ITaskController taskClient = ctx.CreateWorkflowHttpProxy().GetTaskClient(); TaskModel task = taskClient.MyTasks(teachers).GetAwaiter().GetResult().List.FirstOrDefault(); _ = taskClient.CompleteTask(new CompleteTaskCmd { TaskId = task.Id, OutputVariables = WorkflowVariable.FromObject(new { ids = bizIds, 完成 = true }), NotFoundThrowError = true }).GetAwaiter().GetResult(); Resources <TaskModel> tasks = ctx.CreateWorkflowHttpProxy().GetProcessInstanceTasksClient() .GetTasks(new ProcessInstanceTaskQuery() { IncludeCompleted = false, ProcessInstanceId = instances[0].Id }).GetAwaiter().GetResult(); foreach (var uid in subUsers) { var myTasks = taskClient.MyTasks(uid).GetAwaiter().GetResult().List.ToList(); myTasks.ForEach(tsk => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = tsk.Id }).GetAwaiter().GetResult()); } foreach (var uid in subUsers1) { var myTasks = taskClient.MyTasks(uid).GetAwaiter().GetResult().List.ToList(); myTasks.ForEach(tsk => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = tsk.Id }).GetAwaiter().GetResult()); } var sTasks = taskClient.MyTasks(students).GetAwaiter().GetResult().List.ToList(); sTasks.ForEach(tsk => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = tsk.Id }).GetAwaiter().GetResult()); ctx.CreateWorkflowHttpProxy().GetProcessInstanceClient().GetProcessInstanceById(instances[0].Id).GetAwaiter().GetResult(); }); Assert.NotNull(ex); }
public void 部分完成并行子活动(string bpmnFile, string subBpmnFile) { var ex = Record.Exception(() => { string teachers = Guid.NewGuid().ToString(); string students = Guid.NewGuid().ToString(); string[] subUsers = new string[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; string[] subUsers1 = new string[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; var bizIds = new string[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() }; ctx.Deploy(bpmnFile); ctx.Deploy(subBpmnFile); WorkflowVariable vars = new WorkflowVariable(); vars.AddAssignee(nameof(teachers), teachers) .AddAssignee(nameof(students), students) .AddAssignee(nameof(subUsers), subUsers) .AddAssignee(nameof(subUsers1), subUsers1); string bizId = Guid.NewGuid().ToString(); ProcessInstance[] instances = AsyncHelper.RunSync(() => ctx.StartUseFile(bpmnFile, null, vars, businessKey: bizId)); ITaskController taskClient = ctx.CreateWorkflowHttpProxy().GetTaskClient(); TaskModel task = AsyncHelper.RunSync(() => taskClient.MyTasks(teachers)).List.FirstOrDefault(); _ = AsyncHelper.RunSync(() => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = task.Id, OutputVariables = WorkflowVariable.FromObject(new { ids = bizIds, 完成 = true }), NotFoundThrowError = true })); ///完成子任务节点1的任务 foreach (var uid in subUsers) { var myTasks = AsyncHelper.RunSync(() => taskClient.MyTasks(uid)).List.ToList(); myTasks.ForEach(tsk => AsyncHelper.RunSync(() => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = tsk.Id }))); } { //任务节点1仅完成子用户1的任务,子活动1应该停在任务节点2 var myTask = AsyncHelper.RunSync(() => taskClient.MyTasks(subUsers1[0])).List.First(); AsyncHelper.RunSync(() => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = myTask.Id })); //完成子活动2的所有任务 var myTasks = AsyncHelper.RunSync(() => taskClient.MyTasks(subUsers1[1])).List.ToList(); myTasks.ForEach(tsk => AsyncHelper.RunSync(() => taskClient.CompleteTask(new CompleteTaskCmd { TaskId = tsk.Id }))); } var sTasks = AsyncHelper.RunSync(() => taskClient.MyTasks(students)).List; Assert.Empty(sTasks); }); Assert.Null(ex); }