JBPM4学习总结之6——Task之任务
?流程定义XML如下:
?
?
/** * 使用身份验证接口建立不同的用户、组、组成员 */public void test02CreateGroup() {identityService.createGroup("tibco");identityService.createGroup("vecinfo");identityService.createUser("liuyan", "liuyan", "素还真");identityService.createUser("fcl", "fcl", "风采铃");identityService.createMembership("liuyan", "tibco");identityService.createMembership("liuyan", "vecinfo");identityService.createMembership("fcl", "vecinfo");}/** * 发起流程 */public void test03StartTask() {// 开始process流程ProcessInstance processInstance = executionService.startProcessInstanceByKey("TaskGroup");// 流程实例的IDString pid = processInstance.getId();System.out.println(pid);// forkjoin.10001}/** * 获得指定人的任务列表 */public void test04GetAssigneeGroupTask() {List<Task> taskList1 = taskService.findPersonalTasks("liuyan");for (Task task : taskList1) {System.out.println(task.getAssignee());}List<Task> taskList2 = taskService.findPersonalTasks("fcl");for (Task task : taskList2) {System.out.println(task.getAssignee());}List<Task> taskList3 = taskService.findGroupTasks("liuyan");for (Task task : taskList3) {System.out.println(task.getId());//20002}List<Task> taskList4 = taskService.findGroupTasks("fcl");for (Task task : taskList4) {System.out.println(task.getId());}}/** * 争抢获取任务 */public void test05ExeTask(){taskService.takeTask("20002", "liuyan");}/** * 完成任务 */public void test06(){taskService.completeTask("20002");}
?test02CreateGroup()使用身份验证接口创建了组:tibco和vecinfo,创建了用户:liuyan和fcl,并且建立了人员与组织的关系。tibco只有liuyan、vecinfo有liuyan和fcl。test04GetAssigneeGroupTask()执行结果可以看到用户liuyan有task,而fcl没有任何task。如果此时多个人都有task预备任务(把流程中的组名换成vecinfo)的时候,那么就是以争抢的方式来“夺取”该task来执行,谁先抢到,谁就可以执行任务,抢不到的人无法再争抢。