首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

开源工作流引擎activiti与bboss调整使用方法浅析

2012-08-09 
开源工作流引擎activiti与bboss整合使用方法浅析本文介绍开源工作流引擎activiti与bboss ioc框架整合方法,

开源工作流引擎activiti与bboss整合使用方法浅析
本文介绍开源工作流引擎activiti与bboss ioc框架整合方法,涉及内容如下:
a).activiti采用bboss ioc来配置和初始化流程引擎
b).在activiti流程中使用bboss ioc容器托管的组件
c).bboss 托管activiti引擎流程处理事务

下面介绍前两部分,事务部分请参考文章《bboss持久层事务管理组件托管第三方持久层框架(mybatis等)事务功能介绍 》。

1 activiti-bboss源码工程下载及构建方法
1.1 环境准备
安装好jdk 1.6,ant 1.7.1或以上版本,并配置好jdk和ant的环境变量
安装好mysql数据库(自行安装),并启动
在mysql中建立一个activiti的数据库
准备好eclipse

1.2 下载activiti与bboss结合的源码工程
基于activiti-5.9.1和最新的bbossgroups 3.5.1
http://www.bbossgroups.com/file/download.htm?fileName=activiti-engine-bboss.zip

1.3 下载后解压并构建

执行解压目录下的run.bat文件构建activiti流程引擎的jar包,生成的jar存放在distrib目录下:



2 在源码工程中运行流程测试用例
解压目录是一个eclipse工程,将其导入eclipse中
2.1 修改src/test/resources/poolman.xml中的数据库地址为mysql数据库地址,并设置账户:



为activiti配置bboss ioc容器对象,以便在测试用例中引用bboss ioc管理的组件来获取和设置流程环节处理人:

被activiti使用的bboss ioc容器可以是独立的ioc容器,例如如上配置就是一个加载beans.xml的类型为DefaultApplicationContext的独立ioc容器(本文以独立ioc容器为例);也可以是bboss mvc对应的ioc容器,这样web应用中的流程就可以使用mvc ioc容器中配置的各种业务组件,mvc容器配置示例如下:


下面是一个完整的activiti.cfg.xml文件:


2.3 beans.xml 配置和管理bboss ioc组件

我们在src/test/resources/beans.xml文件中配置了一个组件:


流程定义文件完整内容如下:


流程执行示例
测试用例:
src/test/java/org/activiti/examples/bpmn/tasklistener/CustomTaskAssignmentTest.java
测试方法:

流程执行:
测试用例src/test/java/org/activiti/examples/bpmn/usertask/taskassignee/TaskAssigneeTest.java

测试方法:


5.activiti-bboss eclipse demo工程
为了更好地方便大家使用activiti-bboss的整合版本,特意整理了一个demo工程,工程下载地址:
http://www.bbossgroups.com/file/download.htm?fileName=activiti-bboss-example.zip

工程里面已经根据上文方法做好相关配置
activiti.cfg.xml
beans.xml
poolman.xml

下载解压后将其导入eclipse,修改poolman.xml中的数据库连接地址和账号即可运行demo工程中的测试用例:
/activiti-bboss-example/src/org/frameworkset/activiti/test/SimpleActivitTest.java
用例方法为:
@Testpublic void runBare() throws Throwable {initializeProcessEngine();// 初始化流程引擎,默认加载activiti.cfg.xml文件initializeServices();// 初始化流程相关服务initusers();// 初始化测试用户String deploymentId = null;try {deploymentId = annotationDeploymentSetUp(processEngine);// 部署测试流程testAssigneeAssignment();// 执行测试用例testTaskAssignee();// 执行测试用例} catch (AssertionFailedError e) {throw e;} catch (Throwable e) {throw e;} finally {annotationDeploymentTearDown(processEngine, deploymentId);// 卸载流程deleteusers();//清除用户信息assertAndEnsureCleanDb();// 重置activiti数据库表ClockUtil.reset();}}


和本文相关的两个流程的测试方法:
testAssigneeAssignment();// 执行测试用例
testTaskAssignee();// 执行测试用例

热点排行