1、声明任务
会计师现在需要主张任务。通过声明任务,该特定用户将成为任务的受让人,并且该任务将从会计组的其他成员的每个任务列表中消失。声明一项任务的方式如下:
taskService.claim(task.getId(), "fozzie");
该任务现在位于声明该任务的用户的个人任务列表中。
List<Task> tasks = taskService.createTaskQuery().taskAssignee("fozzie").list();
在Flowable Task应用程序中,单击声明按钮将调用相同的操作。该任务现在将移至登录用户的个人任务列表。您还将看到任务的受理人已更改为当前登录的用户。
2、完成任务
会计师现在可以开始编制财务报告。一旦报告完成,他可以完成任务,这意味着完成任务的所有工作。
taskService.complete(task.getId());
对于Flowable引擎,这是流程实例现在可以继续执行的外部信号。任务本身将从运行时数据中删除。遵循任务的单个外出转换,将执行转移到第二个任务(“验证报告”)。现在将使用与第一个任务所描述的相同的机制来分配第二个任务,这个任务将被分配给管理组。
在演示设置中,通过单击任务列表中的完整按钮完成任务。由于Fozzie不是会计师,所以我们需要注销Flowable Task应用程序并以kermit身份登录(谁是经理)。第二个任务现在可以在未分配的任务列表中看到。
3、结束这个过程
验证任务可以以与以前完全相同的方式检索和声明。完成这个第二个任务将把流程执行移到结束事件,结束流程实例。流程实例和所有相关的运行时执行数据将从数据存储中删除。
以编程方式,你也可以验证过程已经结束,使用 historyService。
HistoryService historyService = processEngine.getHistoryService();
HistoricProcessInstance historicProcessInstance =
historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());