使用junit+Activiti工作流完整源码分享
在网上查找activiti入门知识,很多都是抄袭,看起来眼花缭乱,可操作性差,学习效果不佳,下面分享个人多年的activiti工作流开发经验。所用的技术myeclipse+Spring+maven+mysql+junit来简单演示一下整个过程,只有读者跟着步骤一步一步实现,就可以一下子掌握activiti整个过程。
1.源码下载地址:http://yayihouse.com/yayishuwu/chapter/1062
2.解压,导入到myeclipse中,右键项目,Maven4Myeclipse或者Maven-》update project即可安装依赖包。
3.使用方法
(1)右键CreateDataSource.java-》Run As-》Java Application,新建一个名叫activiti_test的数据库。
(2)部署流程,把DeployProcess.java中initDeploy()方法上面的@Test去掉注释,右键DeployProcess.java-》run as-》Junit Test,如果Junit显示绿色,而且数据库路新增了23张表,act_re_procdef表中出现一条记录,说明流程图发布成功。
(2)启动流程,把initDeploy()上的@Test注释掉,打开startProcess方法的@Test,其中startProcess方法中的myProcess是流程图的key,如果忘记了可以在act_re_procdef表中的KEY_字段找到,variableMap可以用来设置参数,主要是指派人(动态指定谁来执行任务)或者传递条件(决定下一步怎么走)。执行Junit Test之后如果看到act_ru_task表中多出了一条数据,说明流程启动后,有一个用户任务产生了。myeclipse控制台中"流程实例id:"后面的数字就是实例id。
(3)读取流程待办任务,把startProcess()上的@Test注释掉,打开queryTask方法的@Test,把启动时控制台的流程实例id复制到queryTask方法中作为processInstanceId方法的参数,Junit Test之后,myeclipse的console会打印所有任务的id和名称出来。
(4)处理任务,把queryTask()上的@Test注释掉,打开completeTask方法的@Test,把上面控制台中taskId的值复制到completeTask中代替complete方法的参数,代码中variableMap.put("type", 1)表示申请后指向部门经理审批,Junit Test之后,此时act_ru_task中刚刚处理的任务就会消失,下一个节点(部门经理审批)就会出现在act_ru_task表中。