一、 变量的使用
1、创建流程引擎对象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
2、启动流程
1 /**
2 * 2、启动流程
3 */
4 @Test
5 public void testStartProcess() {
6 // 获取服务对象的实例
7 RuntimeService runtimeService = processEngine.getRuntimeService();
8
9 // 当使用ByKey方式时会自动执行相对应流程的最高版本
10 String processDefinitionKey = "leaveflow2";
11
12 // 设置启动时的流程变量
13 Map<String, Object> variables = new HashMap<String, Object>();
14 variables.put("test", "测试");
15
16 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);
17
18 logger.info("Id:" + processInstance.getId());
19 logger.info("ActivitiId:" + processInstance.getActivityId());
20 }
View Code
3、设置流程变量
1 /**
2 * 3、设置流程变量
3 * 1、在办理时设置流程变量
4 * 2、在完成时设置流程变量
5 */
6 @Test
7 public void testProcessTask(){
8 //获取服务对象的实例
9 TaskService taskService = processEngine.getTaskService();
10
11 //1、在办理时设置流程变量
12 //1.1、获取任务,查询正在执行的任务
13 String assignee = "employee";
14 TaskQuery query = taskService.createTaskQuery()
15 .taskAssignee(assignee)
16 .orderByTaskCreateTime()
17 .desc();
18 Task task = query.list().get(0);
19 String taskId = task.getId();
20 //1.2、向任务中设置流程变量
21 //设置一个流程变量
22 //taskService.setVariable(taskId, "请假天数", 2);
23 //taskService.setVariable(taskId, "请假原因", "约会");
24 //设置多个流程变量
25 //taskService.setVariables(taskId, variables);
26
27 //2、在完成时设置流程变量
28 Map<String, Object> variables = new HashMap<String, Object>();
29 variables.put("请假天数", 4);
30 variables.put("请假原因", "外出培训");
31 variables.put("请假借款", 1000.5);
32 variables.put("请假开始日期", new Date());
33 variables.put("是否用车", false);
34 taskService.complete(taskId, variables);
35
36 }
View Code
4、查看流程变量
1 /**
2 * 4、查看流程变量
3 * 流程变量不与Task相关
4 */
5 @Test
6 public void testQueryProcessVariable() {
7 // 1、获取服务对象的实例
8 TaskService taskService = processEngine.getTaskService();
9
10 // 2、查询正在执行的任务
11 String assignee = "employee";
12 TaskQuery query = taskService.createTaskQuery()
13 .taskAssignee(assignee)
14 .orderByTaskCreateTime()
15 .desc();
16 Task task = query.list().get(0);
17
18 //3、根据任务ID与流程变量的Key获取流程变量信息
19 String taskId = task.getId();
20 logger.info("TaskId: " + task.getId() );
21 //3.1、获取单个流程变量
22 String variableName = "test";
23 String varilable = (String) taskService.getVariable(taskId, variableName);
24
25 logger.info("Varilable:" + varilable);
26
27 //3.2、获取多个流程变量
28 Map<String, Object> varMap = new HashMap<String, Object>();
29 varMap = taskService.getVariables(taskId);
30
31 logger.info("Map - Key: test, Value: " + varMap.get("test"));
32
33 }
View Code
二、历史记录
1、查看按照某个规则一共执行了多少次流程
HistoricProcessInstance :包含当前和已经结束的流程实例信息。
2、查看某一次流程执行,一共经历了多少步骤
HistoricActivityInstance:包含一个活动(流程上的节点)的执行信息。
3、Activiti的历史信息维护策略
在流程活动产生时,同时会产生一个对应的历史,记录开始相关的记录,然后在活动结束后,把结束时间维护进去。
4、配置文件 activiti.cfg.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
3 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
4 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
5
6 <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
7 <!-- 数据库连接属性 -->
8 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?characterEncoding=utf-8"></property>
9 <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
10 <property name="jdbcUsername" value="root"></property>
11 <property name="jdbcPassword" value="root"></property>
12
13 <!-- 数据库更新策略 -->
14 <property name="databaseSchemaUpdate" value="true"></property>
15
16 <!--
17 Activiti默认提供4种历史级别:
18 1、none: 不保存任何历史记录,可以提高系统的性能;
19 2、activity:保存所有的流程实例、任务、活动信息;
20 3、audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
21 4、full:最完整的历史记录,除了包含Audit级别的信息之外还能保存详细信息,例如:流程变量。
22 -->
23 <property name="history" value="activity"></property>
24
25 <property name="jobExecutorActivate" value="false"></property>
26
27 <!-- 邮件服务地址 -->
28 <property name="mailServerHost" value="mail.wxintl.com"></property>
29 <property name="mailServerPort" value="5025"></property>
30 </bean>
31
32 </beans>
View Code