activiti学习笔记(三) 监听生命周期
来源:互联网 发布:sftp 命令行 指定端口 编辑:程序博客网 时间:2024/06/08 00:07
activiti监听生命周期
activiti生命周期的作用
生命周期的作用是在构建processEngine实例时候或者关闭的时候调用对应处理方法,比如我在启动实例的时候,可以对实例做一些预处理
activiti的接口类
public interface ProcessEngineLifecycleListener { /**实体引擎实例化的时候调用该方法*/ void onProcessEngineBuilt(ProcessEngine processEngine); /**实体引擎关闭的时候调用该方法*/ void onProcessEngineClosed(ProcessEngine processEngine);}
activiti的生命周期的实现
首先通过bean进行实例化,再注入到当前bean,具体监听则是在构建实例和关闭实例的时候
构建实例:会调用监听类的onProcessEngineBuilt方法
/** * @author 郑小康 * * 1.注入流程配置实例的一些变量到当前实例 * * 2.FIXME:未知 * * 3.注册当前流程实例 * * 4.FIXME:未知 * * 5.调用监听方法,这也是这里需要描述的核心(不是本方法的核心) * */ public ProcessEngineImpl(ProcessEngineConfigurationImpl processEngineConfiguration) { this.processEngineConfiguration = processEngineConfiguration; this.name = processEngineConfiguration.getProcessEngineName(); this.repositoryService = processEngineConfiguration.getRepositoryService(); this.runtimeService = processEngineConfiguration.getRuntimeService(); this.historicDataService = processEngineConfiguration.getHistoryService(); this.identityService = processEngineConfiguration.getIdentityService(); this.taskService = processEngineConfiguration.getTaskService(); this.formService = processEngineConfiguration.getFormService(); this.managementService = processEngineConfiguration.getManagementService(); this.dynamicBpmnService = processEngineConfiguration.getDynamicBpmnService(); this.asyncExecutor = processEngineConfiguration.getAsyncExecutor(); this.commandExecutor = processEngineConfiguration.getCommandExecutor(); this.sessionFactories = processEngineConfiguration.getSessionFactories(); this.transactionContextFactory = processEngineConfiguration.getTransactionContextFactory(); this.formEngineRepositoryService = processEngineConfiguration.getFormEngineRepositoryService(); this.formEngineFormService = processEngineConfiguration.getFormEngineFormService(); if (processEngineConfiguration.isUsingRelationalDatabase() && processEngineConfiguration.getDatabaseSchemaUpdate() != null) { commandExecutor.execute(processEngineConfiguration.getSchemaCommandConfig(), new SchemaOperationsProcessEngineBuild()); } if (name == null) { log.info("default activiti ProcessEngine created"); } else { log.info("ProcessEngine {} created", name); } ProcessEngines.registerProcessEngine(this); if (asyncExecutor != null && asyncExecutor.isAutoActivate()) { asyncExecutor.start(); } //流程引擎实例化监听方法 if (processEngineConfiguration.getProcessEngineLifecycleListener() != null) { processEngineConfiguration.getProcessEngineLifecycleListener().onProcessEngineBuilt(this); } processEngineConfiguration.getEventDispatcher().dispatchEvent(ActivitiEventBuilder.createGlobalEvent(ActivitiEventType.ENGINE_CREATED)); }
关闭实例会调用onProcessEngineClosed方法
public void close() { ProcessEngines.unregister(this); if (asyncExecutor != null && asyncExecutor.isActive()) { asyncExecutor.shutdown(); } commandExecutor.execute(processEngineConfiguration.getSchemaCommandConfig(), new SchemaOperationProcessEngineClose()); //流程引擎关闭触发监听方法 if (processEngineConfiguration.getProcessEngineLifecycleListener() != null) { processEngineConfiguration.getProcessEngineLifecycleListener().onProcessEngineClosed(this); } processEngineConfiguration.getEventDispatcher().dispatchEvent(ActivitiEventBuilder.createGlobalEvent(ActivitiEventType.ENGINE_CLOSED)); }
activiti生命周期的使用
上面是生命周期的源码实现介绍,下面就讲述一下怎样使用
第一步:实现ProcessEngineLifecycleListener这个接口
public class processEngineLifecycleListener implements ProcessEngineLifecycleListener{public void onProcessEngineBuilt(ProcessEngine processEngine) {System.out.println("流程引擎生命周期监听器开始了....");ProcessEngineConfiguration pec = processEngine.getProcessEngineConfiguration();String activityFontName = pec.getActivityFontName();System.out.println(activityFontName);}public void onProcessEngineClosed(ProcessEngine processEngine) {}}
第二步:配置当前processEngineLifecycleListener这个bean并将其注入processEngineConfiguration里面
<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="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><value>jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=UTF-8</value></property><property name="username"><value>root</value></property><property name="password" value="fadp" /></bean><bean id="processEngineLifecycleListener"class="com.activiti_study.ch6.processEngineLifecycleListener"></bean><bean id="processEngine1" name="processEngineConfiguration"class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><property name="dataSource" ref="dataSource" /><property name="databaseSchemaUpdate" value="true" /><property name="processEngineLifecycleListener" ref="processEngineLifecycleListener"></property></bean></beans>
第三步:具体实现
@Testpublic void getDefaultProcessEngine() throws FileNotFoundException {ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("com/activiti_study/ch6/activiti1.cfg.xml","processEngineConfiguration");ProcessEngine pe = processEngineConfiguration.buildProcessEngine();System.out.println(pe+"========");}
流程引擎生命周期监听器开始了....Arialorg.activiti.engine.impl.ProcessEngineImpl@4b29d1d2========
从显示结果可以看出在调用buildProcessEngine方法的时候调用了ProcessEngineLifecycleListener继承类的onProcessEngineBuilt方法
阅读全文
0 0
- activiti学习笔记(三) 监听生命周期
- Activiti流程管理学习笔记(三)
- Activiti学习笔记三:管理流程定义
- activiti学习(三)
- Activiti学习笔记三 模拟流程的执行
- Activiti学习笔记三-开发部署bpmn流程文件
- Maven学习笔记(三)--生命周期和插件
- Activiti学习笔记
- activiti学习笔记(一)
- Activiti学习笔记
- activiti学习笔记
- Activiti 学习笔记 小结
- Activiti学习笔记1
- Activiti 学习笔记 小结
- Activiti工作流学习笔记
- activiti工作流学习笔记
- Activiti学习笔记一初识activiti面目
- Activiti监听
- 数据库重要知识
- Android开发 第11课 AbsoluteLayout
- Java学习路线图
- 网络安全技术之外网限制
- HDU 1064
- activiti学习笔记(三) 监听生命周期
- hdu 1085 母函数
- 数据库事务的四大特性以及事务的隔离级别
- Nginx配置详解
- Android开发 第12课 TableLayout
- 并查集
- python3 [爬虫入门实战]爬取熊猫直播用户信息
- linux初学者-ftp篇(一)
- 欢迎使用CSDN-markdown编辑器