JBPM4学习总结之8——Task之任务泳道和Task任务变量
这里的泳道类似于UML中的泳道的概念,类似于组(Group)的概念,当一个业务流程需要很多种角色来共同、分时才能走完时,就需要泳道的概念引入其中。这种操作和分组操作十分相似。
流程图如下:
?
?
?
?
?
?
?
?
Xml流程图如下:
<?xml version="1.0" encoding="UTF-8"?><process name="TaskSwimlane" xmlns="http://jbpm.org/4.4/jpdl"><swimlane name="myswimlane" candidate-groups="tibco"></swimlane><start name="start1" g="57,44,48,48"><transition name="to task1" to="task1" g="242,67:-52,-22" /></start><task name="task1" g="197,172,92,52" swimlane="myswimlane"><transition name="to state1" to="state1" g="242,339:-56,-22" /></task><state name="state1" g="52,311,92,52" /></process>
?
?
?
测试代码如下,和Group测试代码类似
/** * 使用身份验证接口建立不同的用户、组、组成员 */public void test02CreateGroup() {identityService.createGroup("tibco");identityService.createUser("liuyan", "liuyan", "素还真");identityService.createMembership("liuyan", "tibco");}/** * 发起流程 */public void test03StartTask() {// 开始process流程ProcessInstance processInstance = executionService.startProcessInstanceByKey("TaskSwimlane");// 流程实例的IDString pid = processInstance.getId();System.out.println(pid);// TaskSwimlane.20001}/** * 获得指定人的任务列表 */public void test04GetAssigneeGroupTask() {List<Task> taskList1 = taskService.findPersonalTasks("liuyan");for (Task task : taskList1) {System.out.println(task.getAssignee());}List<Task> taskList2 = taskService.findGroupTasks("liuyan");for (Task task : taskList2) {System.out.println(task.getId());//20002}}/** * 争抢获取任务 */public void test05ExeTask(){taskService.takeTask("20002", "liuyan");}/** * 完成任务 */public void test06(){taskService.completeTask("20002");}
?
?这样将liuyan给了tibco组,凡是tibco组的会员都可以争抢、处理这个task。
?
任务变量和流程变量的概念差不多,不过任务变量比流程变量更微观、更具体。通过
?
Map<String,Object> vars = taskService.getVariables(tasked,varName);
?
获得任务变量Map;
通过
?
taskService.setVariables(tasked,new HashMap<String,Object>());
对任务变量进行赋值。
?
?