1.子流程
把一切需要处理的任务归结到一起作为作为一个大流程的一部分,因为子流程嵌入在主流程中,所有也叫"嵌入式子流程"
子流程限制:
只能包含一个空启动事件
至少有一个结束事件
在子流程中不能把输出流设置到子流程之外的活动上
- 子流程: 一个包含其他节点,网关,事件等等的节点。 它自己就是一个流程,同时是更大流程的一部分。
- 事件子流程: 事件子流程可以添加到流程级别或任意子流程级别。用于触发事件子流程的事件是使用开始事件配置的。
- 事务子流程: 事务子流程是内嵌子流程,可以用来把多个流程放到一个事务里。 事务是一个逻辑单元,可以把一些单独的节点放在一起,这样它们就可以一起成功或一起失败。
- 调用活动(子流程): 这个流程定义需要被很多其他流程定义调用的时候。调用活动解决的问题是流程的通用性,和子流程一样只不过表现的方式不同而已。
调用活动
属性名称 | 属性说明 |
---|---|
calledElement | 流程的ID对应的流程应该独立存在 |
activiti:in | 调用外部流程时传入的变量,被调用活动需要获取主流的信息 |
activiti:out | 调用活动完成后的结果 |
2.监听器
在Activiti 中开发人员可以通过配置监听器的方式监听各种动作,例如流程 的启动,结束,创建,任务的完成
监听器分为两类:执行监听器和任务监听器
2.1 执行监听器
执行监听器可以捕获的事件如下:
- 流程实例的启动,结束
- 输出流的捕获
- 活动的启动,结束
- 路由开始,结束
- 中间事件开始,结束
- 触发开始事件,触发结束事件
2.2 任务监听器
任务监听器相对于执行监听器的使用范围要小的多,因为它只适用于用户任务,用来监听4种事件
- create(创建):在任务被创建且所有的任务属性设置完成后才触发
- assignment(指派):在任务被分配给某个办理人之后触发
- complete(完成):在配置了监听器的上一个任务完成时触发
- delete(删除):在任务即将被删除前触发。请注意任务由completeTask正常完成时也会触发。
class:必须调用的代理类。 这个类必须实现org.activiti.engine.delegate.
TaskListener接口
expression:(不能与class属性一起使用):指定在事件发生时要执行的表达式。可以为被调用的对象传递DelegateTask对象与事件名(使用task.eventName)作为参数。
delegateExpression:指定一个能够解析为TaskListener接口实现类的对象的表达式。与服务任务类似。