您的位置:首页 > 其它

Activiti 5.17 流程配置文件以及配置类的继承关系

2015-01-25 11:47 281 查看
流程配置文件分为两类:
一类是普通的基本配置,称作 plain Activiti Style Configuration,使用的文件名为 activiti.cfg.xml
一类是复杂配置,称作 Spring Style Configuration , 使用的文件名为 activiti-context.xml

除了配置内容的不同,本质上两者都是Spring的配置文件。

下面是两个文件的样例:
activiti.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.StandaloneInMemProcessEngineConfiguration">
		<property name="databaseSchemaUpdate" value="true"/>
	</bean>
</beans>

activiti-context.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
	xsi:schemaLocation="http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans.xsd                            http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-2.5.xsd                            http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx-3.1.xsd                            http://www.springframework.org/schema/security   http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 
    <!-- Embedded ldap test server -->
	<security:ldap-server ldif="classpath:users.ldif" root="o=activiti" manager-dn="uid=admin, ou=users" manager-password="admin"/>

	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
		<property name="driverClass" value="org.h2.Driver" />
		<property name="url" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
		<property name="username" value="sa" />
		<property name="password" value="" />
	</bean>

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
		<property name="dataSource" ref="dataSource" />
		<property name="transactionManager" ref="transactionManager" />
		<property name="databaseSchemaUpdate" value="true" />
		<property name="jobExecutorActivate" value="false" />
		<property name="configurators">
		  <list>
		      <bean class="org.activiti.ldap.LDAPConfigurator">
		      
		        <!-- Server connection params -->
                <property name="server" value="ldap://localhost" />
                <property name="port" value="33389" />
                <property name="user" value="uid=admin, ou=users, o=activiti" />
                <property name="password" value="pass" />
                
                <!-- Query params -->
                <property name="baseDn" value="o=activiti" />
                <property name="queryUserByUserId" value="(&(objectClass=inetOrgPerson)(uid={0}))" />
                <property name="queryUserByFullNameLike" value="(&(objectClass=inetOrgPerson)(|({0}=*{1}*)({2}=*{3}*)))" />
                <property name="queryGroupsForUser" value="(&(objectClass=groupOfUniqueNames)(uniqueMember={0}))" />
                
                <!-- Attribute config -->
                <property name="userIdAttribute" value="uid" />
                <property name="userFirstNameAttribute" value="cn" />
                <property name="userLastNameAttribute" value="sn" />
                
                <property name="groupIdAttribute" value="uid" />
                <property name="groupNameAttribute" value="cn" />
                
		      </bean>
		  </list>
		</property>
	</bean>

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

	<bean id="repositoryService" factory-bean="processEngine"
		factory-method="getRepositoryService" />
	<bean id="runtimeService" factory-bean="processEngine"
		factory-method="getRuntimeService" />
	<bean id="taskService" factory-bean="processEngine"
		factory-method="getTaskService" />
	<bean id="historyService" factory-bean="processEngine"
		factory-method="getHistoryService" />
	<bean id="managementService" factory-bean="processEngine"
		factory-method="getManagementService" />

</beans>


两个文件最主要的区别就是用 实现 ProcessEngineConfiguration 接口,继承了 ProcessEngineConfigurationImpl 的不同配置子类,实现不同环境下的配置。
在配置文件中,指明 ProcessEngineConfiguration 由哪个子类实现提供信息。

Activiti 提供的 ProcessEngineConfiguration 子类,列举在下图中配置类边界中。



前面文章 http://blog.csdn.net/teamlet/article/details/43097141 提到过,ProcessEngine的名字会作为 key 保存引擎的配置文件。
Activiti 默认提供了一个引擎名字,名字为 default
上面的两个配置文件中都没有提供引擎的名字,会导致使用默认的引擎名字 default
使用相同的引擎名字,会移除上一个同名引擎实例并重新创建同名引擎。
这个机制比较适合动态刷新一个引擎,利于引擎的动态修改。
如果想要多个引擎同时运行,注意修改或在配置文件中增加引擎名字。

代码方法:
ProcessEngine processEngine = new StandaloneProcessEngineConfiguration()
      .setProcessEngineName("myProcessEngine")

配置方法:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
	<property name="processEngineName" value="myProcessEngine" />
     ...
</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐