一、相关服务接口
RepositoryService : 操作流程定义
RuntimeService : 操作流程实例
TaskService : 操作任务
IdentityService : 操作用户或者组
HistoryService : 查询历史表相关数据
AuthorizationService : 授权相关服务
FormService : 操作流程表单
ManagementService : 执行cmd以及job相关服务
CaseService : CMMN相关操作
FilterService : 过滤相关服务
ExternalTaskService : 外部任务相关服务
DecisionService : DMN相关服务
二、相关概念
- 流程定义与流程实例:二者就像Java中的类与new的对象的关系,对象是类的实例,类是对象的模板。
- 流程定义key:标识一类流程定义,流程定义带有版本功能,而流程定义id才代表具体的流程定义。
- 流程定义Id: 具有唯一性,同一个流程定义有不同版本,他们的流程定义Key相同,但是流程定义id不同。
- 流程实例Id:代表具体的某条流程实例,具有唯一性。
- **任务:**任务是直接对应人的,每个节点上会有多个任务,但是每个任务只会对应一个处理人。
- **会签:**指同一个审批节点设置多个人,如ABC三人,三人会同时收到审批,需全部同意之后,审批才可到下一审批节点。
- **或签:**指同一个审批节点设置多个人,如ABC三人,三人会同时收到审批,只要其中任意一人审批即可到下一审批节点。
三、监听器
执行监听器:ExecutionListener
在流程实例执行的过程中触发某个事件时,执行监听器允许你去执行额外的java代码或者对指定的表达式求值。
属性值有:start 【启动时触发】、end【结束时触发】
任务监听器:TaskListener
属性值有:create【创建任务时触发】、assignment【任务指定负责人触发】、complete:【任务完成后触发】、delete:【任务删除前触发】
四、Camunda Modeler
就是用来画流程图的,我们需要这个来生成对应的xml文件,后面方便测试流程引擎
下载地址:流程设计器
五、会签
一个流程节点可以有一个至多个任务,也称之为工作项。如果是多个任务则称这个节点为会签
会签执行的顺序
- **串行会签:**串行会签也叫顺序会签,指按照提交流程处理人的次序user1、user2、user3依次接收待办任务,并按顺序处理流程。
- **并行会签:**指user1、user2、user3同时接收到流程待办任务,并行处理。
会签通过的规则
- 全部通过:会签人全部审批通过表决后,会签通过。
- 按数量通过:达到一定数量的通过表决后,会签通过。
- 按比例通过:达到一定比例的通过表决后,会签通过。
- 一票通过:只要有一个表决通过的,会签通过。
- 一票否决:只要有一个表决时否定的,会签不通过。
主要参数
- loop cardinality:循环基数。可选项。可以直接填整数,表示会签的人数。
- Collection:集合。可选项。会签人数的集合,通常为list,和loop cardinality二选一。
- Element variable:元素变量。选择Collection时必选,为collection集合每次遍历的元素。
- Completion condition:完成条件。可选。比如设置一个人完成后会签结束,那么其他人的代办任务都会消失。
- nrOfActiviteInstances:当前活动的实例数量,即还没有完成的实例数量
- loopCounter :循环计数器,办理人在列表中的索引
- nrOfInstances:会签中总共的实例数
- nrOfCompletedInstances:已经完成的实例数量
两种方式二选一:
条件**${nrOfInstances == nrOfCompletedInstances}**表示所有人员审批完成后该节点结束。
条件**${ nrOfCompletedInstances == 1}**表示一个人完成审批后该节点结束。
使用Collection后,会根据userList的size来创建Task。
下一篇我们发布流程定义,发起流程实例,实际操作一下。