本次示例使用的IDER测试完成java
测试背景 : xx饿了去饭店吃饭 须要先和服务员点餐 点完餐后服务员将菜品传递给厨师制做 制做完成后吃饱mysql
建立上一篇测试成功出现的BpmnFilespring
测试环境不须要那么复杂,暂且先用到这几个控件 其余的在此不作演示 能够本身进行测试sql
1:开始画流程图数据库
1.StartEvent 开始按钮(代表如今饿了要去吃饭)
2.UserTask 任务按钮(首先应该先到饭店进行点餐)
3.UserTask 任务按钮(服务员点完餐后要将菜品传递给厨师)
4.UserTask 任务按钮(厨师得到菜品后制做菜品)
5.EndEvent 结束按钮(上菜 吃饱了)ide
2:按钮配置详情 测试
将按钮参数赋值(我这里只测试了 Id 和 Name 这里若是填写的话 以后生成的数据库数据就不是null了)gradle
3:流程按钮配置完成后用链接线链接(这里我没有给线起名字 后面也不妨碍)ui
4:将建立的eat.bpmn生成一个png格式的图片,上一篇也说了 IDEA与Eclipse有一点不同。 IDEA中须要手动进行生成。spa
5:将bpmn后缀改成xml格式(这里有可能出现乱码状况)
解决乱码
5.1:首先打开ider安装目录的bin文件夹下的这两个文件
5.2:添加这句代码 -Dfile.encoding=UTF-8
保存内容,而后重启IDEA,就会发现不会乱码了。效果如图:
6:右键xml文件 选择Diagrams ---- Show BPMN 2.0 Designer...
7:点击上方Export to File
保存到对应的工程下面便可。就会看到有个eat.png的图片出现
其实改不改回来格式都同样,除非你再去修改流程图
下面到了代码阶段(碰了好多壁,直接粘测试好的内容吧)
8:添加依赖(这里引用的是gradle的)
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.40'
compile group: 'org.activiti', name: 'activiti-engine', version: '5.22.0'
compile group: 'org.activiti', name: 'activiti-spring', version: '5.22.0'
compile group: 'org.activiti', name: 'activiti-bpmn-model', version: '5.22.0'
9:在src目录下建立一个activiti.cfg.xml文件,这个主要是用于存放后面acitivi部署流程中,建立的相关联的一些表。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8"></property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="root"></property> <property name="databaseSchemaUpdate" value="true"></property> </bean> </beans>
10:建立一个数据库生成的测试。(注意:要保证本地有对应名字的数据库)
/** * 建立一个数据库生成的测试类.(注意:要保证本地有对应名字的数据库) */ public class ActivitiTable { /** * 建立Activiti流的相关的数据库表 */ @Test public void creatTable(){ ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml") .buildProcessEngine(); } }
若是,运行测试方法成功以后,再进入数据库,咱们会看到产生了以下多张数据表(看别人的都是23张 个人出来25张 最以前jar包引的太乱出现表还不正确也是烦的一批)
表的详解就不在这说了网上都有的就不作分析了
11:进行流程部署的重点开发(按照下面的流程步骤11进行)------------画重点考试要考的
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.task.Task; import org.junit.Test; import java.util.List; /** * 用于进行演示Activiti的首例程序,即描述如何在代码中实现学生进行请假申请,班主任审核,教务处审核 **/ public class ActivitiTest { /** * 一、部署流程 * 二、启动流程实例 * 三、饿了的人发出点餐申请 * 四、服务员查看任务 * 五、服务员点餐 * 六、厨师作饭 */ /** * 1:部署一个Activiti流程 * 运行成功后,查看以前的数据库表,就会发现多了不少内容 */ @Test public void creatActivitiTask(){ //加载的那两个内容就是咱们以前已经弄好的基础内容哦。 //获得了流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getRepositoryService() .createDeployment() .addClasspathResource("eat.xml") .addClasspathResource("eat.png") .deploy(); } /** * 2:启动流程实例 */ @Test public void testStartProcessInstance(){ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getRuntimeService() .startProcessInstanceById("myProcess_1:1:4"); //这个是查看数据库中act_re_procdef表ID值 } /** * 完成点餐申请 */ @Test public void testOrder(){ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getTaskService() .complete("2504"); //查看act_ru_task表ID } /** * 饿了 服务员小张查询当前正在执行任务 */ @Test public void testQueryTask(){ //下面代码中的小张,就是咱们以前设计那个流程图中添加的服务员内容 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); List<Task> tasks = processEngine.getTaskService() .createTaskQuery() .taskAssignee("小张") .list(); for (Task task : tasks) { System.out.println(task.getName()); } } /** * 服务员小张完成任务 */ @Test public void testFinishTask_manager(){ ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); engine.getTaskService() .complete("5002"); //查看act_ru_task数据表ID } /** * 厨师老李完成的任务 */ @Test public void testFinishTask_Boss(){ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getTaskService() .complete("7502"); //查看act_ru_task数据表ID } }
一个一个Test方法来注意表的变化(字段有的太多了就不放两张图了,测试的时候本身注意下)
下面就放图看一下数据变化吧!
多图警告!后方高能!!!
第一步
获取流程引擎:注意这几张表的数据变化
bytearray表
deployment表
procdef表
第二步
启动流程示例,注意这几张表的变化
actinst表
procinst表
taskinst表
execution表
task表
第三步
actinst表
taskinst表
identitylink表
execution表
identitylink表
task表
第四步
第五步
actinst表
identitylink表
taskinst表
execution表
identitylink表
task表
第六步
actinst表
taskinst表
execution表
identitylink表
task表
一个个@Test测试过来,看出其中的规律了吗,本身尝试测试看一下吧!
最后附上测试代码 仅供参考:提取码: n7cj