JBPM-泳道

2 篇文章 0 订阅

      A swimlane is a process role(角色). It is a mechanism to specify that multiple tasks in the process should be done by the same actor.(多个任务被同一个用户执行) So after the first task instance is created for a given swimlane, the actor should be remembered in the process for all subsequent(后来的) tasks that are in the same swimlane. A swimlane therefore has one assignment and all tasks that reference a swimlane should not specify an assignment. 
      泳道是用来处理一个流程中的多个任务必须由同一个人来处理的机制。所以,当一个流程的第一个任务实例被创建到指定的泳道后,第一个任务实例中的执行人被保存,该泳道中的后续任务的处理人都是第一个任务的处理人。所以一个泳道有一个人员被分配,并且泳道中的任务不需要再分配人员。 
 
 

流程图如下:

 

Xml流程图如下:

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <process name="TaskSwimlane" xmlns="http://jbpm.org/4.4/jpdl">  
  4.     <swimlane name="myswimlane" candidate-groups="tibco"></swimlane>  
  5.     <start name="start1" g="57,44,48,48">  
  6.         <transition name="to task1" to="task1" g="242,67:-52,-22" />  
  7.     </start>  
  8.     <task name="task1" g="197,172,92,52" swimlane="myswimlane">  
  9.         <transition name="to state1" to="state1" g="242,339:-56,-22" />  
  10.     </task>  
  11.     <state name="state1" g="52,311,92,52" />  
  12. </process>  

 

 

 

测试代码如下,和Group测试代码类似

Java代码   收藏代码
  1. /** 
  2.  * 使用身份验证接口建立不同的用户、组、组成员 
  3.  */  
  4. public void test02CreateGroup() {  
  5.     identityService.createGroup("tibco");  
  6.   
  7.     identityService.createUser("liuyan""liuyan""素还真");  
  8.   
  9.     identityService.createMembership("liuyan""tibco");  
  10. }  
  11.   
  12. /** 
  13.  * 发起流程 
  14.  */  
  15. public void test03StartTask() {  
  16.       
  17.     // 开始process流程  
  18.     ProcessInstance processInstance = executionService  
  19.             .startProcessInstanceByKey("TaskSwimlane");  
  20.   
  21.     // 流程实例的ID  
  22.     String pid = processInstance.getId();  
  23.   
  24.     System.out.println(pid);// TaskSwimlane.20001  
  25. }  
  26.   
  27. /** 
  28.  * 获得指定人的任务列表 
  29.  */  
  30. public void test04GetAssigneeGroupTask() {  
  31.     List<Task> taskList1 = taskService.findPersonalTasks("liuyan");  
  32.   
  33.     for (Task task : taskList1) {  
  34.         System.out.println(task.getAssignee());  
  35.     }  
  36.       
  37.       
  38.     List<Task> taskList2 = taskService.findGroupTasks("liuyan");  
  39.   
  40.     for (Task task : taskList2) {  
  41.         System.out.println(task.getId());//20002  
  42.     }  
  43.   
  44. }  
  45.   
  46. /** 
  47.  * 争抢获取任务 
  48.  */  
  49. public void test05ExeTask(){  
  50.     taskService.takeTask("20002""liuyan");  
  51.       
  52. }  
  53.   
  54. /** 
  55.  * 完成任务 
  56.  */  
  57. public void test06(){  
  58.     taskService.completeTask("20002");  
  59. }  

 

 这样将liuyan给了tibco组,凡是tibco组的会员都可以争抢、处理这个task。

 

Task的任务变量

任务变量和流程变量的概念差不多,不过任务变量比流程变量更微观、更具体。通过

 

Map<String,Object> vars = taskService.getVariables(tasked,varName);

 

获得任务变量Map

通过

 

taskService.setVariables(tasked,new HashMap<String,Object>());

对任务变量进行赋值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值