activiti操作总结

常用的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文件中只要加入即可,无需配置)
并行网关:并行网关分为前后两级,从前级开始分支,到后级结束,中间所有分支都是并行执行,只有当所有分支都执行完毕后,并行网关才结束,流程才能继续向后执行。(注意:并行网关前级后的分支上,不能设置条件,设置了也会被忽略)
包含网关:就是并行网关的升级版,包含网关能在多个分支上添加条件。
在这里插入图片描述
排他网关、并行网关、包含网关图形如下:
在这里插入图片描述          在这里插入图片描述         在这里插入图片描述

下面是一个复杂的例子

猜你喜欢

转载自blog.csdn.net/weixin_52877849/article/details/115032376