Activiti7 配置全局事件ActivitiEventListener

本文介绍了如何在Spring环境下使用Activiti的ExecutionListener和TaskListener,通过自定义ActivitiEventListener类并在XML配置文件中添加,实现在流程开始、任务接收和完成时的事件监听,无需在流程模板中手动配置。

Activiti可以使用执行监听器【ExecutionListener】来监听流程的开始【start】、接收【end】、连线【take】三个事件。使用任务监听器【TaskListener】来监听任务节点的一系列操作,但都需要在流程模板xml中配置。

这里我使用ActivitiEventListener这个监听器,在后台把代码配置好,流程模板xml就不用配置了。

使用如下:

1、在Activiti的xml配置文件中

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    ...其它省略
    <property name="eventListeners">
        <list>
            <bean class="com.xxx.xxxEventListener"/>
        </list>
    </property>
</bean>

 2、创建自己的事件监听器

package com.xxx;
@Slf4j
@Component
public class xxxEventListener implements ActivitiEventListener {
    private static xxxEventListener listener;

    @Autowired
    private TaskService taskService;

    /**
     * 初始化操作
     */
    @PostConstruct
    public void init() {
        listener = this;
        listener.taskService= this.taskService;
    }

    @SneakyThrows
    @Override
    public void onEvent(ActivitiEvent event) {
        final ActivitiEventType activitiEventType = event.getType();
        log.info("流程事件类型: " + activitiEventType);

        if (activitiEventType == ActivitiEventType.TASK_CREATED
                || activitiEventType == ActivitiEventType.TASK_ASSIGNED
                || activitiEventType == ActivitiEventType.TASK_COMPLETED) {

            ActivitiEntityEvent entityEvent = (ActivitiEntityEvent) event;
            TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
            log.info("taskEntity: {}", taskEntity);

            // ... 业务处理
        }
        // ... 业务处理
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值