activiti工作流:

一、 activiti的流程引擎配置:

ProcessEngineConfiguration(抽象类)对象代表了一个activiti流程引擎的全部配置,该类提供了一系列的创建ProcessEngineConfiguration的静态方法,用于读取解析

相应的配置文件,并返回该对象实例。还提供了一些get和set方法,可用于配置流程引擎的其他属性。(使用其实现子类StandaloneProcessEngineConfiguration);

1、 createProcessEngineConfigurationFromResourceDefault方法 使用activiti默认的方式创建ProcessEngineConfiguration实例。

(默认为:ClassPath下读取名为“activiti.cfg.xml”配置文件,启动并获取名称为“processEngineConfiguration”的bean的实例。)

2 、createProcessEngineConfigurationFromResource方法:指定相应的配置文件。

3、createProcessEngineConfigurationFromInputStream方法:指定对应配置文件的输入流即可。

4、createStandaloneMemProcessEngineConfiguration方法:返回ProcessEngineConfiguration的子类StandaloneMemProcessEngineConfiguration实例。

该方法不读取配置文件,需要在代码中指定(仅有databaseSchemaUpdate属性和jdbcUrl属性),调用set和get方法。

5、createStandaloneProcessEngineConfigurantion方法:指定databaseSchemaUpdate和jdbcUrl默认属性:分别为:“false”和“jdbc:h2:tcp://localhost/activiti”。

   二、数据源配置:




false:默认值,activiti启动时对比数据库表的保存的版本,没有表或者版本不匹配,抛异常。

true: 对所有的表进行更新,不存在,则自动创建。

create-drop:activiti启动时会执行数据库表的创建,关闭时,执行数据库表的删除操作。

drop-create: 一般不用,实际应用有风险:先删除表,在创建表。


 三、其它配置:

1 history配置
none     :不保存任何历史数据,因此流程执行最高效。

activity  :  级别高于none,保存流程实例和流程行为,其它数据不保存。

audit      :  除activity级别保存的数据外,还会保存全部的流程任务及其属性  (默认级别)

full

各个history级别,activiti会将相应的值保存到ACT_GE_PROPERTY表的historyLevel属性中:


2 jobExecutorActivate配置:

activiti中提供了一个工作执行器,执行器会定时到数据库中扫描没有执行的工作。然后使用jobExecutor类执行这些工作。JobExecutor会启动一条线程,

定时到数据库查询需要执行的工作,当查询符合条件的工作,则调用executeJobs方法执行这些工作。jobExecutor为抽象类,默认会使用DefaultJobExecutor。

该类维护了ThreadPoolExecutor线程池对象,会以扫描的工作数据主键创建一条线程,交给ThreadPoolEcecutor执行。

true: 表示activiti流程引擎创建时,需要启动JobExecutor

false:表示不启动。(默认值)

3 邮件服务器配置:

流程执行到某个节点,activiti会根据配置文件(EmailTask)发送邮件到相应的邮箱

4 ProcessEngineConfiguration bean 

ProcessEngineConfiguration为抽象类,activiti实现的子类可以配置个性化的流程引擎。

1 StandaloneProcessEngineConfiguration: activiti会对事务进行管理。

2 StandaloneMemProcessEngineConfiguration:是 StandaloneProcessEngineConfiguration子类,对事务进行管理。

同时设置了databaseSchemaUpdate和jdbcUrl属性,可以在单元测试中使用。

3 SpringProcessEngineConfiguration:activiti和spring整合使用。

4 JtaProcessEngineConfiguration:不使用activiti事务,使用JTA进行事务管理。

5 自定义拦截器配置:activiti的拦截器使用命令模式和责任链模式,进行拦截处理,可以添加自己定义的的拦截器进行配置。


文章摘自于:疯狂workflow讲义:基于activiti工作流开发