您的位置:首页 > 其它

activiti 部署流程定义(InputStream) 流程变量设置 及获取流程变量、查询流程变量历史表

2018-01-22 10:08 633 查看
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();

/**
* 部署流程定义(InputStream)
*/

@Test
public void depolymentProcessDefinition_inputStream(){
InputStream  bpmn=this.getClass().getClassLoader().getResourceAsStream("diagrams/processVariablesProcess.bpmn");
InputStream  png=this.getClass().getClassLoader().getResourceAsStream("diagrams/processVariablesProcess.png");

Deployment deployment=processEngine.getRepositoryService()
             .createDeployment()
             .name("部署名称XX")
                     .addInputStream("processVariablesProcess.bpmn", bpmn)
                     .addInputStream("processVariablesProcess.png", png)
                     .deploy();
System.out.println("部署ID:"+deployment.getId());     // 部署ID:1201
System.out.println("部署名称:"+deployment.getName());  // 部署名称:部署名称XX
}

/**
* 启动流程
* ProcessInstance
*/
@Test
public void startProcessIntance(){
// 获取流程定义的 key
String proceskey="processVariables";
ProcessInstance processInstance=processEngine.getRuntimeService()
                       .startProcessInstanceByKey(proceskey);
System.out.println("流程实例ID:"+processInstance.getId());  //流程实例ID:1301
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId()); //流程定义ID:processVariables:5:1204
}
/**
* 启动流程
* ProcessInstance
*/
@Test
public void startProcessIntance(){
// 获取流程定义的 key
String proceskey="processVariables";
ProcessInstance processInstance=processEngine.getRuntimeService()
                       .startProcessInstanceByKey(proceskey);
System.out.println("流程实例ID:"+processInstance.getId());  //流程实例ID:1301
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId()); //流程定义ID:processVariables:5:1204
}

/**
* 查询当前 办理人的  任务
*/
@Test
public void findMyPersonalTask(){
//与任务(正在执行)
TaskService taskService=processEngine.getTaskService();
// 任务Id
String taskId="1304";   //act_ru_task
/**
* 一:设置流程变量,使用基本数据类型
*/
taskService.setVariableLocal(taskId, "请假天数", 5);
taskService.setVariable(taskId, "请假日期", new Date());
taskService.setVariable(taskId, "请假原因", "回家探亲一起吃个饭!");

/**
* 二:设置流程变量,使用javabean类型
*/
Person person=new Person();
person.setId(20);
person.setName("楼妹妹");
taskService.setVariable(taskId, "人员信息(添加固定版本)", person);
 
System.out.println("设置流程变量成功!");
}

/**
* 获取流程变量
*/
@Test
public void getVariableLocal(){
//与任务(正在执行)
TaskService taskService=processEngine.getTaskService();
// 任务id
String taskId="1304";
/**
* 一:获取流程变量,使用基本数据类型
*/
Integer days = (Integer) taskService.getVariable(taskId, "请假天数");
Date date = (Date) taskService.getVariable(taskId, "请假日期");
String resean = (String) taskService.getVariable(taskId, "请假原因");

System.out.println("请假天数:"+days);
System.out.println("请假日期:"+date);
System.out.println("请假原因:"+resean);

/**
* 二:获取流程变量,使用javabean类型
*/
Person person = (Person)taskService.getVariable(taskId, "人员信息(添加固定版本)");
System.out.println(person.getId()+"        "+person.getName());
}

/**
* 模拟设置和获取流程变量的场景
*/
@Test
public void setAndGetVariables(){
//与流程实例,执行对象(正在执行)
RuntimeService runtimeService = processEngine.getRuntimeService();
// 与任务(正在执行)
TaskService taskService = processEngine.getTaskService();
//设置流程变量

// runtimeService.setVariable(executionId, variableName, value)//表示使用执行对象ID,和流程变量的名称,设置流程变量的值(一次只能设置一个值)

// runtimeService.setVariables(executionId, variables)//表示使用执行对象ID,和Map集合设置流程变量,map集合的key就是流程变量的名称,map集合的value就是流程变量的值(一次设置多个值)

// taskService.setVariable(taskId, variableName, value)//表示使用任务ID,和流程变量的名称,设置流程变量的值(一次只能设置一个值)

// taskService.setVariables(taskId, variables)//表示使用任务ID,和Map集合设置流程变量,map集合的key就是流程变量的名称,map集合的value就是流程变量的值(一次设置多个值)

// runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);//启动流程实例的同时,可以设置流程变量,用Map集合

// taskService.complete(taskId, variables)//完成任务的同时,设置流程变量,用Map集合

/**获取流程变量*/

// runtimeService.getVariable(executionId, variableName);//使用执行对象ID和流程变量的名称,获取流程变量的值

// runtimeService.getVariables(executionId);//使用执行对象ID,获取所有的流程变量,将流程变量放置到Map集合中,map集合的key就是流程变量的名称,map集合的value就是流程变量的值

// runtimeService.getVariables(executionId, variableNames);//使用执行对象ID,获取流程变量的值,通过设置流程变量的名称存放到集合中,获取指定流程变量名称的流程变量的值,值存放到Map集合中

// taskService.getVariable(taskId, variableName);//使用任务ID和流程变量的名称,获取流程变量的值

// taskService.getVariables(taskId);//使用任务ID,获取所有的流程变量,将流程变量放置到Map集合中,map集合的key就是流程变量的名称,map集合的value就是流程变量的值

// taskService.getVariables(taskId, variableNames);//使用任务ID,获取流程变量的值,通过设置流程变量的名称存放到集合中,获取指定流程变量名称的流程变量的值,值存放到Map集合中
}

/**
* 完成我的任务
* taskId 1304
*/
@Test
public void completeMyPersonalTask(){
//任务ID
String taskId = "1304";
processEngine.getTaskService()
                .complete(taskId);
System.out.println("完成 :任务Id:"+taskId);  //1304
}

/**
* 查询流程变量的历史表
* HistoricVariableInstance
*/
@Test
public void findHistoryProcessVariables(){
List<HistoricVariableInstance> list=processEngine.getHistoryService()
                          .createHistoricVariableInstanceQuery()
                          .variableName("请假天数")
                          .list();
if(list!=null && list.size()>0){
for (HistoricVariableInstance hti : list) {
System.out.println(hti.getId()+"   "+hti.getProcessInstanceId()+"   "+hti.getVariableName()+"   "+hti.getVariableTypeName()+"    "+hti.getValue());
System.out.println("======================查询流程变量 的历史表 ==========================");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐