6.2.6.2. task候选人
任务可能被分配给一组用户。 其中的一个用户应该接受这个任务并完成它。
表 6.11. 任务属性:
属性类型默认值是否必填描述candidate-groups表达式可选一个使用逗号分隔的组id列表。 所有组内的用户将会成为这个任务的 候选人。
candidate-users表达式可选一个使用逗号分隔的用户id列表。 所有的用户将会成为这个任务的候选人。
图 6.11. 任务候选人示例流程
这是一个使用任务候选人的示例流程: candidate-groups="sales-dept">
在启动之后,一个任务会被创建。这个任务不显示在任何人的个人任务列表中。 下面的任务列表会是空的。 taskService.getAssignedTasks("johndoe");taskService.getAssignedTasks("joesmoe");
但是任务会显示在所有sales-dept组成员的 分组任务列表中。
在我们的例子中,sales-dept有两个成员:johndoe和joesmoe identityService.createGroup("sales-dept");identityService.createUser("johndoe", "johndoe", "John", "Doe");identityService.createMembership("johndoe", "sales-dept");identityService.createUser("joesmoe", "joesmoe", "Joe", "Smoe");identityService.createMembership("joesmoe", "sales-dept");
所以在流程创建后, 任务会出现在johndoe和joesmoe用户的分组任务列表中。 taskService.findGroupTasks("johndoe");taskService.findGroupTasks("joesmoe");
候选人必须接受一个任务,在他们处理它之前。 这会阻止两个候选人在同一个任务上开始工作。 分组任务列表中,用户接口必须只接受对这些任务的“接受”操作。 taskService.takeTask(task.getDbid(), "johndoe");
当一个用户接受了一个任务,这个任务的分配人就会变成当前用户。 任务会从所有候选人的分组任务列表中消失, 它会出现在用户的已分配列表中。
用户只允许工作在他们的个人任务列表上。 这应该由用户接口控制。
简单的,candidate-users属性 可以用来处理用逗号分隔的一系列用户id。 candidate-users属性可以和其他分配选项结合使用。