常用的service
repositoryService:操作流程,包括部署流程、删除流程、挂起流程、查询流程。查询器createProcessDefinitionQuery()
runtimeService:创建流程实例、删除流程实例、挂起流程实例。查询器createProcessInstanceQuery()
taskService:操作流程实例,包括查询流程信息、处理流程。查询器createTaskQuery()
historyService:查询历史信息。查询器createHistoricActivityInstanceQuery()
概念总结
每个流程有唯一的部署id,一个流程可能被部署了很多次,会有很多版本,所有版本的流程共用一个流程定义id和流程key。
一个流程的某个版本下,能产生多个流程实例,每个流程实例拥有一个流程实例id。
流程变量
流程变量的定义是在bpmn文件中,用el表达式定义,如${message}。
流程变量能定义节点负责人、分支条件等。
流程变量赋值常见的是用map集合赋值:
能在创建流程实例时赋值:
/*
* 一般用ByKey启动流程,key一致,就会启动版本最新的流程,startProcessInstanceByKey这个方法有3个参数
* 参数1:流程key
* 参数2:业务表id
* 参数3:指定流程变量map
* */
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("key","id",map);
System.out.println("流程定义id:"+processInstance.getProcessDefinitionId());
System.out.println("实例id:"+processInstance.getId());
流程实例创建后单独赋值:
/*
* 参数1:流程实例id
* 参数2:流程key
* 参数3:存储流程变量的map
* */
taskService.setVariable("2501","key",map);
runtimeService.setVariable("2501","key",map);
提交任务时赋值:
/*
* 通过审批,complete这个方法有两个参数
* 参数1:流程节点id
* 参数2:指定流程变量,用map
* */
taskService.complete(instance,map);
网关
排他网关:只能有一条分支被执行。(多条分支都为true时,只会选一个执行,如果多条分支都是false,那么将抛出异常。注意:排他网关在bpmn文件中只要加入即可,无需配置)
并行网关:并行网关分为前后两级,从前级开始分支,到后级结束,中间所有分支都是并行执行,只有当所有分支都执行完毕后,并行网关才结束,流程才能继续向后执行。(注意:并行网关前级后的分支上,不能设置条件,设置了也会被忽略)
包含网关:就是并行网关的升级版,包含网关能在多个分支上添加条件。
排他网关、并行网关、包含网关图形如下: