今天跟大家说怎么配置Activiti的配置xml有什么用,一直问为什么,看看就对了,这是各位童鞋整合Activiti必须要面对的文件,所以请留意了:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- 数据库连接池 -->
<property name="dataSource" ref="mysqlDataSource" />
<!-- 事务 -->
<property name="transactionManager" ref="mysqlTransactionManager" />
<!-- 数据库自动升级 -->
<property name="databaseSchemaUpdate" value="false" />
<!-- 作业执行器 -->
<property name="jobExecutorActivate" value="false" />
<property name="enableDatabaseEventLogging" value="false" />
<!-- 历史级别 -->
<property name="history" value="activity" />
<!-- 生成流程图的字体 -->
<property name="activityFontName" value="宋体"/>
<property name="labelFontName" value="宋体"/>
<property name="customFormTypes">
<list>
<bean class="org.activiti.explorer.form.UserFormType"/>
<bean class="org.activiti.explorer.form.ProcessDefinitionFormType"/>
<bean class="org.activiti.explorer.form.MonthFormType"/>
</list>
</property>
<!-- //更换id生成策略
<property name="idGenerator">
<bean class="org.activiti.engine.impl.persistence.StrongUuidGenerator" />
</property>
-->
<!--不创建identity表 -->
<property name="dbIdentityUsed" value="false"/>
<!--自定义用户和组-->
<property name="customSessionFactories">
<list>
<bean class="com.jy.service.workflow.factory.GroupManagerFactory">
<property name="groupEntityManager" >
<bean class="com.jy.service.workflow.factory.GroupManager"/>
</property>
</bean>
<bean class="com.jy.service.workflow.factory.UserManagerFactory">
<property name="userEntityManager" >
<bean class="com.jy.service.workflow.factory.UserManager"/>
</property>
</bean>
</list>
</property>
</bean>
dataSource:就是我们系统的数据库配置
transactionManager:就是我们系统的对应事务配置
databaseSchemaUpdate:填true的话,当数据库没有ACT的表会自动创建,填false的话,相对的就是当数据库没有ACT的表不会自动创建。(具体表结构可以查看《Activiti数据库表结构(表详细版)》)
jobExecutorActivate:有定时任务的话,这个必须开启,如果没有开启的话,定时任务是启动不了的。
enableDatabaseEventLogging:是否开启工作的数据日志。(一般我都不开,系统日志够多了,呵呵)
history:
- 如果是none:忽略所有的历史归档。尽管对于运行期流程执行来说这是性能最高的,但是没有历史信息保留。
- 如果是activity:归档所有流程实例和活动实例。不归档细节。
- 如果是audit:缺省级别。它归档所有流程实例,活动实例和提交的表单属性。以至于通过表单的所有用户交互都是可跟踪并可以被审计。
- 如果是full:历史归档的最高级别。所以是最慢的。这个水平保存audit级别的所有信息加上像流程变量的所有其它可能的细节。
idGenerator:Activiti表的id生成策略,本身原生Activiti就提供UUID(传说永不重复的牛掰ID策略),默认是Activiti数字自增策略,这个以后篇章再说吧。
activityFontName和labelFontName:解决中文bug问题的。
customFormTypes:自定义表单字段类型 。
dbIdentityUsed:是否创建identity表 。
customSessionFactories:使用自定义用户和组。
然后这里以上就是processEngineConfiguration的基本配置结构了。
然后就是Activiti的核心引擎了,这里介绍的是springmvc的做法,注入引擎类,然后在框架里@Autowired就可以直接调用了,具体这些方法有什么用,请查看《【Activiti:学以致用】【第一章】 工作流核心API》
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean" destroy-method="destroy">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- 7大接口 -->
<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="formService" factory-bean="processEngine" factory-method="getFormService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
总结:
* activityFontName和labelFontName是必须的,不然中文真没法玩啊!!
* databaseSchemaUpdate有个好处会自动找对应的数据库版本.sql,原生.sql是分了类的,一般关了比较好,不然每次都要检验一次数据库影响性能,最好还是自己乖乖的导sql吧!!