JBPM4工作流应用(二)
?5.task人工任务活动
?? 1)、使用task活动的assignee属性进行任务分配
?
?
?
? ?Assignee属性默认会被作为EL表达式来执行,任务被分配给#{order.owner}。
??
?
?? 部分事例代码如下:
?
?
?? AssignTask类必须实现AssignmentHandler类,代码如下:
??
?
?? 泳道中的用户组中的用户在接受任务后成为任务的分配者,同时泳道也会发生变化,接收任务者在流程实例中会被固化为分配者。
?
??? 子流程SubProcessReview定义JPDL:
?? 流程变量是父子流程用来沟通的纽带。父流程在子流程启动时将自己的“父流程变量”输入子流程,
???反之,子流程在结束时可以将自己的“子流程变量”返回父流程,从而实现父子流程间的数据交换。
??? 部分事例代码如下:?
?
?? 子流程SubProcessReview定义:
?
?? 部分事例代码如下:
?
?? 子流程SubProcessReview定义:
?
??? 部分事例代码如下:
?
?
7.自定义活动
?? 如果有特殊而复杂的业务需求,与其生套JBPM本身提供的流转控制活动,不如自己实现一个自定义的活动使用。
Jpdl定义:?
?
?自定义活动的类需实现ExternalActivityBehaviour接口
?
?JohnDoe事例代码如下:
Map<String, Object> variables = new HashMap<String, Object>(); variables.put("hand", new Hand()); variables.put("joesmoe", new JoeSmoe()); ProcessInstance processInstance = executionService.startProcessInstanceByKey("Java", variables); String pid = processInstance.getId(); // 获取流程变量answer String answer = (String) executionService.getVariable(pid, "answer"); assertEquals("I'm fine, thank you.", answer); // 获取流程变量hand Hand hand = (Hand) executionService.getVariable(pid, "hand");assertTrue(hand.isShaken());??