美文网首页activiti工作流
activiti源码分析之流程引擎监听器

activiti源码分析之流程引擎监听器

作者: 我有一只喵喵 | 来源:发表于2019-03-26 15:29 被阅读5次

activiti源码分析之流程引擎监听器

一、流程引擎监听器是什么?何时触发?
  • 流程引擎监听器自然是监听流程引擎的生命周期,在流程引擎创建和销毁时分别调用执行监听器中的相应逻辑

  • 通过源码查看分析

在ProcessEngineImpl被实例化的同时调用以下一段代码

  if (processEngineConfiguration.getProcessEngineLifecycleListener() != null) {
            processEngineConfiguration.getProcessEngineLifecycleListener().onProcessEngineBuilt(this);
        }

并且ProcessEngineImpl的close方法中以下片段代码

    if (this.processEngineConfiguration.getProcessEngineLifecycleListener() != null) {
        this.processEngineConfiguration.getProcessEngineLifecycleListener().onProcessEngineClosed(this);
    }

通过以上源码可知关于流程引擎监听器以下几点

1、流程引擎监听器是由ProcessEngineConfiguration(流程引擎配置类)进行管理

2、查看getProcessEngineLifecycleListener()实现

public ProcessEngineLifecycleListener getProcessEngineLifecycleListener() {
         return this.processEngineLifecycleListener;
     }
public interface ProcessEngineLifecycleListener {
    void onProcessEngineBuilt(ProcessEngine var1);

    void onProcessEngineClosed(ProcessEngine var1);
}

从以上代码可知监听器只需要实现ProcessEngineLifecycleListener接口并且实现onProcessEngineBuilt,onProcessEngineClosed方法即可。

3、流程引擎监听器在ProcessEngineImpl被实例化时执行构造器时触发onProcessEngineBuilt,在close方法中触发onProcessEngineClosed

二、流程引擎监听器实战

1、实现ProcessEngineLifecycleListener接口
public class MyProcessEngineListener implements ProcessEngineLifecycleListener {
    @Override
    public void onProcessEngineBuilt(ProcessEngine processEngine) {
        System.out.println("流程引擎创建");
    }

    @Override
    public void onProcessEngineClosed(ProcessEngine processEngine) {
        System.out.println("流程引擎销毁");
    }
}
2、将流程引擎监听器交给ProcessEngineConfigurantion管理

activiti.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--suppress ALL -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti" />
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="1234" />
        <!--配置流程引擎监听器-->
        <property name="processEngineLifecycleListener">
            <bean class="cn.cf.activiti.shareniu.MyProcessEngineListener"/>
        </property>
        <property name="databaseSchemaUpdate" value="true" />
    </bean>

</beans>

相关文章

网友评论

    本文标题:activiti源码分析之流程引擎监听器

    本文链接:https://www.haomeiwen.com/subject/kyogvqtx.html