BOS项目10:activiti,历史数据操作,流程变量,任务组,监听器,网关,spring整合 - Go语言中文社区

BOS项目10:activiti,历史数据操作,流程变量,任务组,监听器,网关,spring整合




内容:

1、历史数据查询(历史流程实例数据、历史任务数据、历史活动数据)

2、流程变量

3、组任务(候选人、候选组)

4、监听器(执行、任务)

5、网关(排他、并行)

6、spring整合activiti

 
1.    历史数据查询

历史是一个组件,它可以捕获发生在进程执行中的信息并永久的保存,与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中。

在流程引擎配置对象中可以设置历史记录规则:




1.1   查询历史流程实例数据

表中内容包含已经完成的流程和正在进行的流程

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. //查询历史流程实例数据  
  2. @Test  
  3. public void test4(){  
  4.     //历史流程实例查询对象,查询表:act_hi_procinst  
  5.     HistoricProcessInstanceQuery query = pe.getHistoryService().createHistoricProcessInstanceQuery();  
  6.     List<HistoricProcessInstance> list = query.list();  
  7.     for (HistoricProcessInstance pi : list) {  
  8.         System.out.println(pi.getId() + " " + pi.getStartTime() + " " + pi.getEndTime());  
  9.     }  
  10. }  

 

 

1.2   历史任务数据

表中内容包含已经完成的任务和正在进行的任务

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. //查询历史任务数据  
  2. @Test  
  3. public void test5(){  
  4.     //历史任务实例查询对象,查询表:act_hi_taskinst  
  5.     HistoricTaskInstanceQuery query = pe.getHistoryService().createHistoricTaskInstanceQuery();  
  6.     query.orderByProcessInstanceId();  
  7.     query.orderByHistoricTaskInstanceStartTime().asc();  
  8.     List<HistoricTaskInstance> list = query.list();  
  9.     for (HistoricTaskInstance task : list) {  
  10.         System.out.println(task.getProcessInstanceId() + " " + task.getName());  
  11.     }  
  12. }  

 

 

1.3   历史活动数据

 包含一个活动(流程上的节点)的执行信息

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. //查询历史活动数据  
  2. @Test  
  3. public void test6(){  
  4.     //历史活动实例查询对象,查询表:act_hi_actinst  
  5.     HistoricActivityInstanceQuery query = pe.getHistoryService().createHistoricActivityInstanceQuery();  
  6.     query.orderByProcessInstanceId();  
  7.     query.orderByHistoricActivityInstanceStartTime().asc();  
  8.     List<HistoricActivityInstance> list = query.list();  
  9.     for (HistoricActivityInstance ai : list) {  
  10.         System.out.println(ai.getProcessInstanceId() + " " + ai.getActivityName());  
  11.     }  
  12. }  

 

2.    流程变量


 


流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的





 

 

2.1   设置流程变量


    方式一:启动流程实例时设置流程变量

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. // 设置流程变量方式一:启动流程实例时设置  
  2. @Test  
  3. public void test2() {  
  4.     String processDefinitionKey = "qjlc";  
  5.     Map<String, Object> variables = new HashMap<String, Object>();  
  6.     variables.put("k1""v1");  
  7.     variables.put("k2"200);  
  8.     variables.put("username""小明");//从session中动态获取当前登录用户的用户名  
  9.     ProcessInstance processInstance = pe.getRuntimeService()  
  10.             .startProcessInstanceByKey(processDefinitionKey, variables);  
  11.     System.out.println(processInstance.getId());  
  12. }  

 

    方式二:办理任务时设置流程变量

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. // 设置流程变量方式二:办理任务时设置  
  2. @Test  
  3. public void test3() {  
  4.     // pe.getTaskService().createTaskQuery().taskAssignee("张三").list();  
  5.     String taskId = "1502";  
  6.     Map<String, Object> variables = new HashMap<>();  
  7.     variables.put("qjts"5);  
  8.     variables.put("qjyy""不想上班");  
  9.     pe.getTaskService().complete(taskId, variables);  
  10. }  

 

    方式三:使用RuntimeService的set方法设置流程变量

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. // 设置流程变量方式三:RuntimeService的Set方法设置  
  2. @Test  
  3. public void test4() {  
  4.     String executionId = "801";// 流程实例ID  
  5.     String variableName = "k3";// 流程变量的key  
  6.     Object value = "v3";// 流程变量的value  
  7.     // 设置一个流程变量  
  8.     // pe.getRuntimeService().setVariable(executionId, variableName, value);  
  9.   
  10.     Map<String, Object> variables = new HashMap<String, Object>();  
  11.     variables.put("k4""v4");  
  12.     variables.put("k4""v5");  
  13.     variables.put("user"new User(10"abc"20));  
  14.     // 设置多个流程变量  
  15.     pe.getRuntimeService().setVariables(executionId, variables);  
  16. }  

    方式四:使用TaskService的set方法设置流程变量

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢