一 Activiti 启动事件与结束事件
1, 空启动事件 (常用)
属性:activiti:formKey 指定事件关联的表单文件。
有两种表单:
①外置表单 如:activiti:formKey="xxx-start.form".
②动态表单
<extensionElements>
<activiti:formProperty id="startDate" name="开始日期" type="date" datePattern="yyyy-MM-dd" writable="false"></activiti:formProperty>
</extensionElements>
activiti:initiator 记录流程启动人ID(也可以是名称). activiti:initiator="userName"
通过启动时 identityService.setAuthenticatedUserId( id ); 设置,至整个流程都可以用${userName}.访问。
2, 定时启动事件
<timerEventDefinition><timeCycle>R4/PT10H</timeCycle></timerEventDefinition>
3, 异常启动事件
4, 消息启动事件
5, 结束事件
又分①空结束事件(常用) ②异常结束事件 ③取消结束事件 (暂时木有发现怎么实用,一般空结束)
二 顺序流
分为标准顺序流与条件顺序流
activiti 中不作具体区别 有设置conditionExpression的就是条件顺序流, 条件表达式只支持UEL,
如:<conditionExpression xsi:type="tFormalExpression"><![CDATA[${isMan== 'false'}]]></conditionExpression>;
顺序流中可以设置监听器。
三 任务
用户任务 (常用)
属性
activiti:assignee 指定的处理人
activiti:cadidateUsers 指定用户任务的候选人,多个可用',' 分隔。
activiti:cadidateGroups 指定候选组,多个可用',' 分隔。
指定候选人和候选组都需要先签收,再处理.
activiti:dueDate 设置用户任务到期日.
activiti:priority 任务优先级 [0,100].
用户任务也可以添加监听器.
<extensionElements>
<activiti:taskListener class="com.xx.xx" event="complete"/>
</extensionElements>
脚本任务
java service 任务
web service 任务
业务规则任务
邮件任务
camel 任务 Mule任务
手动任务
接收任务
Shell 任务
多实例任务
以上没说明的任务都不熟悉,大概什么时候有需求的时候再研究下。
四 网关
排他网关 (常用)
只有线路为true才执行,并且多个线路为true只执行第一个true的网关。
<exclusiveGateway id="geteway" default="flow1"/>
并行网关
线路大家一起执行,不会管线路上的设置条件,如有设置则忽略。
分为拆分、合并阶段,不必一一对应,有始有终即可。
<parallelGateway id="bingxing" name="bingxing"/>
包容网关
排他网关与并行网关的合成体,可以一起执行,也可以设置线路条件。
事件网关
五 子流程与调用活动 (待实用写)
六 边界与中间事件 (待实用写)
七 监听器
如上所述的线路与用户任务上都可以设置监听器。
event 有三种 start, take, end.
执行监听器
作用在流程启动、结束、线路开始结束上。
执行类型:
class 设置监听类 expression 监听表达式 delegateExpression指定监听接口,具体类可以在引擎中配置或Spring代理.
如: <activiti:executionListener event="start" class="com.xx.xx"/>, <activiti:executionListener event="start" expression="${name}"/>
任务监听器
作用于用户任务
监听三种事件:
create: 任务创建且所有任务属性设置完全之后触发。
assignment: 任务分配给某个班里人之后触发,并在create之后。
complete: 任务完成时触发,在运行时任务数据被删除之前触发(act_ru_task表数据清之前)。
执行类型:
class 设置监听类 expression 监听表达式 delegateExpression指定监听接口,具体类可以在引擎中配置或Spring代理.
如:
<userTask id="task1" name="用户任务">
<extensionElements>
<activiti:taskListener event="complete" class="com.task.listener.taskForUserTaskComplete"/>
</extensionElements>
</userTask>
暂时写到这里,待续...
