activiti源码-1-spring配置引擎初始化

本文介绍如何在Spring环境中配置并使用Activiti工作流引擎。通过详细的XML配置示例,展示了Activiti引擎及其相关服务的初始化过程。同时,深入解析了ProcessEngineFactoryBean在Spring中的作用机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

activiti与spring合用,配置文件可配置如下:

    <!-- Activiti引擎配置 -->
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="processEngineName" value="spring"></property>
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManager" />
        <property name="databaseSchemaUpdate" value="true" />
        <property name="jobExecutorActivate" value="false" />
        <property name="dbIdentityUsed" value="false"></property>
        <property name="asyncExecutorEnabled" value="true" />  
        <property name="asyncExecutorActivate" value="true" />
    </bean>

    <!-- Activiti引擎工厂 -->

    <bean id="processEngineFactory" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration" />

    </bean>

    <!-- Activiti的Service -->
    <bean id="repositoryService" factory-bean="processEngineFactory" factory-method="getRepositoryService" />
    <bean id="runtimeService" factory-bean="processEngineFactory" factory-method="getRuntimeService" />
    <bean id="formService" factory-bean="processEngineFactory" factory-method="getFormService" />
    <bean id="identityService" factory-bean="processEngineFactory" factory-method="getIdentityService" />
    <bean id="taskService" factory-bean="processEngineFactory" factory-method="getTaskService" />
    <bean id="historyService" factory-bean="processEngineFactory" factory-method="getHistoryService" />
    <bean id="managementService" factory-bean="processEngineFactory" factory-method="getManagementService" />


初始化入口在processEngineFactory.getObject()方法中,spring的bean加载时,每次实例返回前都会调用getObjectForBeanInstance方法(AbstractBeanFactory类中),内部会调用到BeanFactory子类的getObject()方法,利用这个机制,ProcessEngineFactoryBean作为FactoryBean的实现类,实现了模板方法getObject并在其中完成了activiti引擎的初始化工作。

public ProcessEngine getObject() throws Exception {
        configureExpressionManager();
        configureExternallyManagedTransactions();

        if (processEngineConfiguration.getBeans() == null) {

            // ProcessEngineFactoryBean实现了ApplicationContextAware接口,会得到spring的applicationContext,并把所有的bean关联到processEngineConfiguration的beans对象中,后续可通过访问processEngineConfiguration.beans得到容器中的任意bean实例

            processEngineConfiguration.setBeans(new SpringBeanFactoryProxyMap(applicationContext));
        }
        // activiti引擎实际初始化
        this.processEngine = processEngineConfiguration.buildProcessEngine();
        return this.processEngine;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值