activiti 5.19 mysql_Activiti工作流学习-----基于5.19.0版本(1)

该版本的Activiti运行须知:

1.JDK 6+,Eclipse最好是Kepler以上版本。

2.试验功能都有EXPERIMENTAL标注,被标注的部分不应该视为稳定的。

有兴趣的同学可以去了解下Activiti Explorer项目,他涵盖了大部分Activiti的功能,还没有Activiti概念的同学可以看看了解一下。

一、工作流开发之配置

Activiti沿用具有Spring配置文件风格的配置,工作流默认是加载名叫activiti.cfg.xml的文件,配置文件大体:

而我们写好配置文件,交给activiti加载有以下几种方式:

ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource);

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource, String beanName);

ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(InputStream inputStream);

ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName);

如果你喜欢零配置的话,可以:

ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();

ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();

比如零配置使用其中第二种方法:

1 ProcessEngine processEngine =ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()2 .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)3 .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")4 .setAsyncExecutorEnabled(true)5 .setAsyncExecutorActivate(false)6 .buildProcessEngine();

不过我个人认为琐碎的配置如果都交给代码来维护的话,太费神了!况且交给代码水平不高的程序员来写的话,也不安全。所以还是交给xml吧,零配置除了新鲜没用。

1.1 activiti.cfg.xml文件配置

activiti.cfg.xml必须包含id为processEngineConfiguration的bean节点,例如:

processEngineConfiguration通常用来构造ProcessEngine,activiti提供了以下4个类来定义processEngineConfiguration:

org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration:通过独立的方式获得流程引擎对象,Activiti将自己管理事务,一般的,数据库仅仅实在系统启动的时候被检测。

org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration: 它主要用作测试。Activiti将自己管理事务,默认使用H2数据库,数据库表将在启动被创建和关闭时被销毁。所以也就没多少配置了。

org.activiti.spring.SpringProcessEngineConfiguration: 它用作和Spring整合的。

org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration: 在独立模式中,使用了分布式事务可以使用它。(本人不怎么清楚)

1.1.1 数据库连接配置

数据库连接目前有两种配置,一种是使用MyBatis默认的数据库连接配置,另外一种是主流的数据库连接池。我是推荐后者的,因为前者的官方说明文档里面已经说了在生产上建议不使用默认的数据库连接设置。

前者的配置如下:(简单掠过)

第二种方案:使用javax.sql.DataSource,比如DBCP,C3P0,Druid等

...

Activiti工作流并没有提供数据库连接池的Jar包,我们需要手动下载加到类路径下面。

无论使用那种数据库连接方案,一些数据库的其他配置需要关注:

databaseType:一般不需要,工作流内部会自动分析数据元,仅仅是在自动分析失败后读取该配置,目前支持的数据库有 h2, mysql, oracle, postgres, mssql, db2。

databaseSchemaUpdate:

false(默认值)---在流程引擎被创建的时候,检查匹配数据库中工作流版本和工作流jar包的工作流版本,不匹配将会抛出异常。

true---在创建工作流引擎时候检测匹配数据库中工作流版本和工作流jar包的工作流版本,没有就添加,有就修改。

create-update:在创建工作流引擎时候添加工作流版本,关闭引擎的时候删除工作流版本。

1.1.2  创建工作流相关的表

在类路径下面加入activiti的jar包,数据库连接的jar,添加activiti.cfg.xml,然后运行DbSchemaCreate即可。

在生产上面往往开发者并没有数据库的管理员权限,所以在activiti的jar中提供了sql给相关人员,这些表总的来说分为三大类:

engine:这是必需的。

identity:activiti提供的用户管理功能的表。

history:流程历史记录相关表

在MySQL上运行执行sql可要注意了,如果版本在5.5~5.6.3的请使用5.5版本的sql执行,或者就是升级数据库5.6.4+,因为在5.6.4的以下版本的MySQL的timestamps或者 date精度没有达到毫秒级,在工作流创建这一类列的话就会抛出异常。

1.1.3 工作流相关表的介绍

工作流相关的表全部是以“ACT_”开头的,后面紧接着的第二部分是activiti提供的service的简写, 比如:

ACT_RE_*: RE 代表 repository. 包含流程定义,流程资源等。

ACT_RU_*: RU 代表 runtime. 这些表包含流程运行实例,任务、变量、分配工作等,这些表中仅仅存放运行数据,在流程实例执行结束后会被清除,这样表中的数据比较少,它使得程序执行很快。

ACT_ID_*: ID 代表 identity. 这些表包含了用户信息数据,比如用户个人信息,组信息等。

ACT_HI_*: HI 代表 history. 这些表包含历史数据,比如过去的流程实例,变量,任务等。

ACT_GE_*: 通用的数据表,被用来存放各种数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值