本次示例使用的IDER测试完成

测试背景 : xx饿了去饭店吃饭  需要先和服务员点餐  点完餐后服务员将菜品传递给厨师制作  制作完成后吃饱

一 :创建流程图

  创建上一篇测试成功出现的BpmnFile

  测试环境不需要那么复杂,暂且先用到这几个控件 其他的在此不做演示 可以自己进行测试

  1:开始画流程图

    1.StartEvent 开始按钮(表明现在饿了要去吃饭)
    2.UserTask 任务按钮(首先应该先到饭店进行点餐)
    3.UserTask 任务按钮(服务员点完餐后要将菜品传递给厨师)
    4.UserTask 任务按钮(厨师获得菜品后制作菜品)
    5.EndEvent 结束按钮(上菜 吃饱了)

  2:按钮配置详情 

  将按钮参数赋值(我这里只测试了 Id 和 Name  这里如果填写的话   之后生成的数据库数据就不是null了)

  3:流程按钮配置完成后用连接线连接(这里我没有给线起名字  后面也不妨碍)

  4:将创建的eat.bpmn生成一个png格式的图片,上一篇也说了 IDEA与Eclipse有一点不一样。 IDEA中需要手动进行生成。

  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&amp;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、部署流程
* 2、启动流程实例
* 3、饿了的人发出点餐申请
* 4、服务员查看任务
* 5、服务员点餐
* 6、厨师做饭
*/ /**
* 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

Activity 学习(二) 搭建第一个Activity流程框架的更多相关文章

  1. Android_打开多个Activity,返回到第一个Activity

    正文 一.流程截图 二.问题说明 依次从登录到三级界面,然后退出回到登录界面. 三.解决办法 3.1 实现代码 三级界面调用如下代码:         Intent intent = new Inte ...

  2. Android 实现在Activity中操作刷新另外一个Activity数据列表

    做android项目中遇到这样一个问题:有两个acticity,一个显示好友列表,另外一个显示会话列表,现在问题是在会话界面增加一个添加好友功能,添加好友后要求实时的刷新好友列表. 想了想,找了两种方 ...

  3. Android应用开发学习之启动另外一个Activity

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 一个Activity可以启动另外一个Activity,以实现比较复杂的功能,我们来看一个例子,其运行效果如下图所示: ...

  4. Android组件系列----当前Activity跳转到另一个Activity的详细过程

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  5. 【原创】Android 从一个Activity跳转到另外一个Activity

    Android四大组件activity使用,实现两个activity之间的跳转 基本流程:创建两个activity-将其中一个activity中组件作为事件源-通过组件事件的处理借助intent对象实 ...

  6. 由一个activity跳转到另一个activity

    定义一个按钮,当点击的时候跳转到另一个activity的界面 1.新建第二个activity 2.在第二个Java源码处继承第一个activity,导入 3.在source中复写Oncreat方法 4 ...

  7. Android-管理Activity生命周期 -开始一个Activity

    很多程序都是从main()方法开始启动的,和其他程序不同,android是在activity生命周期的特定状态的特定回调方法中初始化代码的.activity启动和销毁的时候都用很多回调方法. 这里将要 ...

  8. kivy学习二:做一个查询所在地区身份证前6位的小软件

    经过半个月的尝试,终于成功,记录下来备查! 做完之后发现有很多的问题没有解决,请大佬多批评指教! 强烈建议:学习KIVY的查看官方文档 需要用的知识: 1.字典的相关知识 2.kivy的下拉列表(Dr ...

  9. swoole学习(二)----搭建server和client

    1.搭建server 1.1搭建server.php 1.搭建websocket服务器,首先建立 server.php 文件, <?php $server = new swoole_websoc ...

随机推荐

  1. 谁是狸猫谁是太子?--戏说java构造器

    故事背景 <狸猫换太子>在我国民间文学中很出名,故事剧情大致如下:北宋第三位皇帝宋真宗赵恒年长无子,他的两个妃子刘妃与李妃同时怀了身孕.真宗召见二人,各赐信物,并声明哪个生了儿子就立谁为皇 ...

  2. 为elastic的索引做快照并恢复快照到新集群

    1. 为指定的所有做快照 curl -XPUT "192.168.1.1:9200/_snapshot/my_backup/testindex_20170803?wait_for_compl ...

  3. Spring boot 官网学习笔记 - Configuration Class(@import)

    推荐使用 Java-based configuration ,也可以使用xml we generally recommend that your primary source be a single ...

  4. Docker下配置nacos

    前言 近段时间在学dubbo,dubbo-admin死活装不上,无论是本地还是docker,所以把目光投向了其他配置中心,我选定的是阿里新开源的nacos. 正文 拉取镜像到本地docker dock ...

  5. AlexNet模型的解析及tensorflow实现

    AlexNet是ImageNet LSVRC 2012比赛中分类效果第一的深度神经网络模型,点击链接下载论文http://papers.nips.cc/paper/4824-imagenet-clas ...

  6. Spring Cloud Config Server 节点迁移引起的问题,请格外注意这一点!

    前言: 虽然强烈推荐选择使用国内开源的配置中心,如携程开源的 Apollo 配置中心.阿里开源的 Nacos 注册&配置中心. 但实际架构选型时,根据实际项目规模.业务复杂性等因素,有的项目还 ...

  7. linux登录后出现-bash-4.1$

    linux登录后有时候会出现-bash-4.1$ 造成这样的原因: 与这个用户有关环境变量没了,有关的文件被删除.也就是用户的家目录下面 .bash_profile .bashrc 被删除. 解决办法 ...

  8. github代码仓库提示:“We found a potential security vulnerability in one of your dependencies”

    问题描述: Github上传代码后出现这样的错误: We found a potential security vulnerability in one of your dependencies. A ...

  9. 【TencentOS tiny】深度源码分析(8)——软件定时器

    软件定时器的基本概念 TencentOS tiny 的软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,本质上软件定时器的使用相当 ...

  10. Nexus搭建开发组的私有仓库

    一.私有仓库的价值 开发Java应用系统,用到Maven.sbt和 Gradle等构建工具,在构建过程中一般需要从互联网下载依赖库,构建私有仓库就是为了在开发组或者部门内共用,从而节省整体的下载成本和 ...