简要说明
每个任务如何执行需要通过行为类来决定,任务节点的行为类决定了该流程实例的最终走向。
活动行为工厂类
Activiti将所有活动行为类的创建工作都交给活动行为工厂类来完成。
活动行为类架构
DefaultActivityBehaviorFactory类实现了ActivityBehaviorFactory接口并且继承了AbstractBehaviorFactory类,AbstractBehaviorFactory类内部持有表达式管理器,主要负责将FieldExtension类型的集合转化成FieldDeclaration类型的集合(activiti:filed元素)。
所有活动行为类的创建都需要在ActivityBehaviorFactory接口中,这样方便集中管理,也方便对抽象工厂类进行维护,扩展活动行为工厂时只需要在同一个地方操作即可,降低客户端使用复杂度。例如扩展某个活动行为类的默认实现时,只需要继承DefaultActivityBehaviorFactory类,并覆盖对应活动行为工厂类的创建方法即可。
DefaultActivityBehaviorFactory类衍生一系列活动行为类,包括:
- ActivityBehavior 该接口定义了execute方法,该方法决定了流程实例最终可以到达的目的地及途径的连线
- SignallableActivityBehavior 在ActivityBehavior接口的基础上增加了执行任务的信号发射方法signal(在7.0中未找到此接口)
- TriggerableActivityBehavior 在ActivityBehavior接口的基础上增加了触发任务的方法trigger
- FlowNodeActivityBehavior 在实现ActivityBehavior和TriggerableActivityBehavior基础上,作为流程三要素的活动行为类的父类存在,意味着此类的子类可以时连线的源或目标。
- AbstractBpmnActivityBehavior 该类时所有自流程、任务、引用流程的活动行为类的父类
- TaskActivityBehavior 所有任务行为类的父类
- MultiInstanceActivityBehavior 多实例活动行为类的父类
- GatewayActivityBehavior 网关活动行为类的父类