1 启动流程
RuntimeService rts = processEngine.getRuntimeService();
ProcessInstance pinstance = rts.startProcessInstanceByKey("myProcessId");
//使用流程定义Key启动流程 按照最新版本启动
System.out.println(pinstance.getActivityId()); // usertask1
System.out.println(pinstance.getId()); // 5001
查看数据:
SELECT * FROM act_ru_execution
SELECT * FROM act_ru_task
2 完成当前已启动的任务
this.processEngineCfg.getTaskService().complete("5004"); // 5004 为 act_ru_task 的主机id
查看流程情况: SELECT * FROM act_hi_taskinst
3 查询流程定义
List<ProcessDefinition> pDeflist = this.processEngineCfg.getRepositoryService()
.createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().asc().list();
if(pDeflist!=null && pDeflist.size()>0){
for(ProcessDefinition pdef:pDeflist){
System.out.println("------------------------------------------------");
System.out.println("流程定义id "+pdef.getId());
System.out.println("流程定义的名称 "+pdef.getName());
System.out.println("流程定义的Key "+pdef.getKey());
System.out.println("流程定义的版本 "+pdef.getVersion());
System.out.println("资源名称bpmn文件 "+pdef.getResourceName());
System.out.println("资源名称png文件 "+pdef.getDiagramResourceName());
System.out.println("部署id "+pdef.getDeploymentId());
}
}
输出结果如下:
------------------------------------------------
流程定义id myProcessId:1:2504
流程定义的名称 Myprocess
流程定义的Key myProcessId
流程定义的版本 1
资源名称bpmn文件 diagrams/MyProcess.bpmn
资源名称png文件 diagrams/MyProcess.png
部署id 2501
------------------------------------------------
流程定义id myProcessId:2:12504
流程定义的名称 Myprocess
流程定义的Key myProcessId
流程定义的版本 2
资源名称bpmn文件 diagrams/MyProcess.bpmn
资源名称png文件 diagrams/MyProcess.png
部署id 12501
4 删除流程定义:
删除前,已经启动两个流程,表task中也有对应的数据
RepositoryService repositoryService = this.processEngineCfg.getRepositoryService();
repositoryService.deleteDeployment("12501"); //执行删除 或者 repositoryService.deleteDeployment("12501",true); 级联删除
删除后数据如下:
表task中相对应的数据也删除
5 设置流程变量
方式1:以在流程启动,和任务执行的时候设置
RuntimeService rts = this.processEngineCfg.getRuntimeService();
Map<String,Object> map = new HashMap<String,Object>();
map.put("ids", "ids-v");
map.put("nams", "nams-v");
map.put("others", "others-v");
ProcessInstance pinstance = rts.startProcessInstanceByKey("myProcessId",map);
方式二 通过taskService或者runtimeService设置
SELECT * FROM act_ru_task WHERE execution_id_='15001' 得到 taskid 为 15007
TaskService taskService = this.processEngineCfg.getTaskService();
String taskid="15007";
taskService.setVariable(taskid, "请假天数", "7天");
taskService.setVariable(taskid,"请假原因", "事假");
taskService.setVariable(taskid,"请假日期", new Date());
Person person = new Person();
person.setAge(30);
person.setName("张三丰");
person.setPid("00002");
taskService.setVariable(taskid,"相对人信息", person);
查询操作结果:
其中
可以在表 act_ge_bytearray 中进行数据查询:
5 设置流程变量
TaskService taskService = this.processEngineCfg.getTaskService();
String taskid="15007";
System.out.println("请假天数 : "+ taskService.getVariable(taskid, "请假天数"));
System.out.println("请假日期 : "+ taskService.getVariable(taskid, "请假日期"));
Person person = (Person) taskService.getVariable(taskid, "相对人信息");
System.out.println("请假人信息 年龄:"+person.getAge()+" 姓名:"+person.getPid());
输出结果如下:
请假天数 : 7天
请假日期 : Thu Feb 09 15:42:37 CST 2017
请假人信息 年龄:30 姓名:00002