通过流程定义id,开启流程定义,得到流程实例
在部署了一个Zip包后,流程部署表act_re_deployment与流程定义表act_re_procdef均会插入一条新的记录。
这个在之前已经讨论过了。今天要开启流程定义操作,将流程定义启动。
要准备的操作是:先查询流程定义的实例,也就是对流程定义表act_re_procdef进行查询,查询出一条具体的记录。
我准备查询出来的实体是,KEY="myProcess_1",VERSION版本最新的,值为8的流程定义记录。
查询定流程定义表用的Service是 RepositoryService,返回值是一个流程定义对象。如下代码所示。
//开启流程之前先寻找最新版本的请假流程定义
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
//添加查询条件,KEY
query.processDefinitionKey("myProcess_1");
//最新版本过滤
query.latestVersion();//本例子中的数据库中,最新的版本是8
//查询,并返回一个流程实例对象
ProcessDefinition definition = query.singleResult();
在获取流程定义实例对象后,根据此流程定义的id进行“启动流程定义”操作,代码如下:
//获取流程定义id
String processDefId = definition.getId();
/**
* 启动流程时设置流程变量
*
* 配置流程变量:https://blog.csdn.net/lifupingcn/article/details/61921234
* 配置流程变量:https://blog.csdn.net/sw_san/article/details/51079190
*/
Map<String,Object> map = Maps.newHashMap();
map.put("请假天数", days);
map.put("请假理由",reason);
//今天18年6月26日15:42分,终于写到一句最重要的语句了,弄了这么长时间的前端,只为这一句
//这里终于用到新知识了,启动流程实例,它的Service是RuntimeService,可以去Spring配置文件看看
runtimeService.startProcessInstanceById(definition.getId(),map);//根据流程定义的id开启开启流程实例
开启后,流程实例表act_ru_execution表与流程任务表act_ru_task表均会插入一条记录。
act_ru_execution表效果如下。此表中ACT_ID_字段表明任务表的进度到哪里了。
act_ru_task表效果如下。