TaskService的主要目的是提供对任务列表的访问途径。 例子代码会展示出如何为id为johndoe
的用户获得任务列表
List<Task> taskList = taskService.findPersonalTasks("johndoe");
一般来说,任务会对应一个表单,然后显示在一些用户接口中。 表单需要可以读写与任务相关的数据。
// read task variables Set<String> variableNames = taskService.getVariableNames(taskId); variables = taskService.getVariables(taskId, variableNames); // write task variables variables = new HashMap<String, Object>(); variables.put("category", "small"); variables.put("lires", 923874893); taskService.setVariables(taskId, variables);
taskSerice也用来完成任务。
taskService.completeTask(taskId); taskService.completeTask(taskId, variables); taskService.completeTask(taskId, outcome); taskService.completeTask(taskId, outcome, variables);
这些API允许提供一个变量map,它在任务完成之前作为流程变量添加到流程里。 它也可能提供一个“外出outcome”,这会用来决定哪个外出转移会被选中。 逻辑如下所示:
如果一个任务拥有一个没用名称的外向转移:
如果一个任务拥有一个有名字的外向转移:
如果一个任务拥有多个外向转移,其中一个转移没有名称,其他转移都有名称:
如果一个任务拥有多个外向转移,每个转移都拥有唯一的名字:
任务可以拥有一批候选人 。候选人可以是用户 也可以是用户组 。 用户可以接收自己是候选人的任务。 接收任务 的意思是用户会被设置为被分配给任务的人。 在那之后,其他用户就不能接收这个任务了。
人们不应该在任务做工作(什么意思?), 除非他们被分配到这个任务上。 用户界面应该显示表单,并允许用户完成任务, 如果他们被分配到这个任务上。对于有了候选人,但是还没有分配的任务, 唯一应该暴露的操作就是“接收任务” 。