camunda-bpmn-用户任务(User Task)
用户任务被用作给哪些需要人去完成的工作建模。当流程执行到用户任务时,一个新的任务被创建在任务列表里,任务将会分配给用户(user)或者组(group)
用户任务被定义成下面的xml,用户任务的id属性是必须的,名称属性是可选的
描述(Description):
用户任务可以有一个描述,事实上,BPMN2.0的所有元素都可以有一个描述。描述被定义在一个附件的documentation元素中。
<userTask id="theTask" name="Schedule meeting" > <documentation> Schedule an engineering meeting for next week with the new hire. </documentation>
描述文本可以通过一下方式获取:
task.getDescription();
属性(Properties):
1.到期日期(Due Date):
每一个任务都有一个字段指明任务的到期时间,查询API可以用来查询任务到期日期在给定的时间之前或者之后
有一个扩展的属性,可以用来指定一个表达式,用来在task创建的时候初始化任务的到期时间。表达式的值应该能被解析为Java的Date或者ISO8601标准的时间字符串或者null。当使用ISO8601格式的字符串时,你也可以指定一个确切的时间点或者一个时间段,或者一个相对于任务创建的时间段。例如,可以使用之前流程表单中输入的时间,或者在之前的服务任务中技术的时间。
<userTask id="theTask" name="Important task" camunda:dueDate="${dateVariable}"/>
到期时间可以TaskService或者或者在TaskListeners中用通过的DelegateTask来修改到期时间
2.跟催时间(Follow Up Date):
每个任务都有一个字段指明任务的跟催时间,查询API可以用来查询任务跟催日期在一个给定时间之前或者之后
<userTask id="theTask" name="Important task" camunda:followUpDate="${dateVariable}"/>
3.用户分配(User Assignment):
用户任务可以直接分配给一个单个用户,一个用户列表,或者一个组列表
4.使用BPMN资源分配的任务(Assignment using BPMN Resource Assignments):
BPMN定义了一些可以在本地使用的赋值概念。作为一个更强大的代替方案,camunda还定义了一系列的定制扩展元素。
4.1.人的行为(Human Performer):
这是通过定义一个humanPerformer来实现的。humanPerformer定义需要一个事件上定义了用户的的resourceAssignmentExpression。目前只支持formalExpressions
只能将一个用户作为human performer分配给该任务。在引擎术语中,此用户称为受让人(assignee)。具有受让人(assignee)的任务在其他用户的任务列表中不可见,而可以在受让人(assignee)的所谓个人任务列表中找到。
直接分配给用户的任务可以通过TaskService获取到:
List<Task> tasks = taskService.createTaskQuery().taskAssignee("kermit").list();
4.2.潜在的拥有者(Potential Owner):
任务也可以放在所谓的候选任务人员列表中。在这个例子中,potentialOwner必须被使用。这个使用与humanPerformer类似。请注意,如意每个元素用这种方式表示,它要求指明定义的是一个用户或者是一个组。
<process ... > ... <userTask id='theTask' name='important task' > <pote