Activiti中的事件监听

工作流程事件监听可用于任务提醒、超时提醒等的模块的设计。

其默认的事件监听接口:org.activiti.engine.delegate.event.ActivitiEventListener

事件类型:org.activiti.engine.delegate.event.ActivitiEventType,事件类型是一个枚举类型,其中包含了42种类型

public enum ActivitiEventType {
    ENTITY_CREATED,                            //创建了一个新实体。实体包含在事件中。
    ENTITY_INITIALIZED,                        //创建了一个新实体,初始化也完成了。如果这个实体的创建会包含子实体的创建,这个事件会在子实体都创建/初始化完成后被触发,这是与ENTITY_CREATED的区别。
    ENTITY_UPDATED,                            //更新了已存在的实体。实体包含在事件中。
    ENTITY_DELETED,                            //删除了已存在的实体。实体包含在事件中。
    ENTITY_SUSPENDED,                          //暂停了已存在的实体。实体包含在事件中。会被ProcessDefinitions, ProcessInstances 和 Tasks抛出。
    ENTITY_ACTIVATED,                          //激活了已存在的实体,实体包含在事件中。会被ProcessDefinitions, ProcessInstances 和 Tasks抛出。
    TIMER_SCHEDULED,
    TIMER_FIRED,                               //触发了定时器。job包含在事件中。
    JOB_CANCELED,                              //取消了一个作业。事件包含取消的作业。作业可以通过API调用取消,   任务完成后对应的边界定时器也会取消,在新流程定义发布时也会取消。
    JOB_EXECUTION_SUCCESS,                     //作业执行成功。job包含在事件中。
    JOB_EXECUTION_FAILURE,                     //作业执行失败。作业和异常信息包含在事件中。
    JOB_RETRIES_DECREMENTED,                   //因为作业执行失败,导致重试次数减少。作业包含在事件中。
    CUSTOM,
    ENGINE_CREATED,                            //监听器监听的流程引擎已经创建完毕,并准备好接受API调用。
    ENGINE_CLOSED,                             //监听器监听的流程引擎已经关闭,不再接受API调用。
    ACTIVITY_STARTED,                          //一个节点开始执行
    ACTIVITY_COMPLETED,                        //一个节点成功结束
    ACTIVITY_CANCELLED,
    ACTIVITY_SIGNALED,                         //一个节点收到了一个信号
    ACTIVITY_COMPENSATE,                       //一个节点将要被补偿。事件包含了将要执行补偿的节点id。
    ACTIVITY_MESSAGE_WAITING,
    ACTIVITY_MESSAGE_RECEIVED,                 //一个节点收到了一个消息。在节点收到消息之前触发。收到后,会触发ACTIVITY_SIGNAL或ACTIVITY_STARTED,这会根据节点的类型(边界事件,事件子流程开始事件)
    ACTIVITY_ERROR_RECEIVED,                   //一个节点收到了一个错误事件。在节点实际处理错误之前触发。   事件的activityId对应着处理错误的节点。 这个事件后续会是ACTIVITY_SIGNALLED或ACTIVITY_COMPLETE, 如果错误发送成功的话。
    HISTORIC_ACTIVITY_INSTANCE_CREATED,
    HISTORIC_ACTIVITY_INSTANCE_ENDED,
    SEQUENCEFLOW_TAKEN,
    UNCAUGHT_BPMN_ERROR,                       //抛出了未捕获的BPMN错误。流程没有提供针对这个错误的处理器。   事件的activityId为空。
    VARIABLE_CREATED,                          //创建了一个变量。事件包含变量名,变量值和对应的分支或任务(如果存在)。
    VARIABLE_UPDATED,                          //更新了一个变量。事件包含变量名,变量值和对应的分支或任务(如果存在)。
    VARIABLE_DELETED,                          //删除了一个变量。事件包含变量名,变量值和对应的分支或任务(如果存在)。
    TASK_CREATED,                              //创建了新任务。它位于ENTITY_CREATE事件之后。当任务是由流程创建时,     这个事件会在TaskListener执行之前被执行。
    TASK_ASSIGNED,                             //任务被分配给了一个人员。事件包含任务。
    TASK_COMPLETED,                            //任务被完成了。它会在ENTITY_DELETE事件之前触发。当任务是流程一部分时,事件会在流程继续运行之前,   后续事件将是ACTIVITY_COMPLETE,对应着完成任务的节点。
    PROCESS_STARTED,                           //流程启动
    PROCESS_COMPLETED,                         //流程已结束。在最后一个节点的ACTIVITY_COMPLETED事件之后触发。 当流程到达的状态,没有任何后续连线时, 流程就会结束。
    PROCESS_COMPLETED_WITH_ERROR_END_EVENT,
    PROCESS_CANCELLED,
    HISTORIC_PROCESS_INSTANCE_CREATED,
    HISTORIC_PROCESS_INSTANCE_ENDED,
    MEMBERSHIP_CREATED,                        //用户被添加到一个组里。事件包含了用户和组的id。
    MEMBERSHIP_DELETED,                        //用户被从一个组中删除。事件包含了用户和组的id。
    MEMBERSHIPS_DELETED;                       //所有成员被从一个组中删除。在成员删除之前触发这个事件,所以他们都是可以访问的。   因为性能方面的考虑,不会为每个成员触发单独的MEMBERSHIP_DELETED事件。

    ...
    ...
}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti事件监听获取流程发起人信息,可以通过以下方式进行操作: 1. 使用`ExecutionListener`接口:在BPMN,可以使用`executionListener`元素来监听事件。在事件触发时,可以通过`DelegateExecution`对象获取流程实例信息,包括流程发起人。 ```java import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.ExecutionListener; public class MyExecutionListener implements ExecutionListener { @Override public void notify(DelegateExecution execution) { String initiator = (String) execution.getVariable("initiator"); // 执行你的逻辑操作 } } ``` 在BPMN配置`executionListener`元素: ```xml <process id="myProcess" name="My Process"> <!-- ... --> <startEvent id="start" name="Start"> <extensionElements> <activiti:executionListener event="start" class="com.example.MyExecutionListener" /> </extensionElements> </startEvent> <!-- ... --> </process> ``` 2. 使用任务监听器(Task Listener):如果你在流程包含了用户任务,你可以使用任务监听器来监听任务的创建事件。此时,你可以通过`DelegateTask`对象获取任务相关的信息,包括任务的创建人。 ```java import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; public class MyTaskListener implements TaskListener { @Override public void notify(DelegateTask task) { String initiator = task.getProcessInstance().getStartUserId(); // 执行你的逻辑操作 } } ``` 在BPMN配置任务监听器: ```xml <userTask id="task1" name="Task 1"> <extensionElements> <activiti:taskListener event="create" class="com.example.MyTaskListener" /> </extensionElements> </userTask> ``` 通过上述方式,你可以在Activiti事件监听获取流程发起人的信息。请根据你的具体需求选择合适的监听器类型,并在相应的位置配置监听器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值