通过流程定义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表效果如下。


posted @ 2022-07-17 12:15  小大宇  阅读(250)  评论(0编辑  收藏  举报