一、 创建流程规则,如下图

二、发布流程

 /**
* 2、发布一个流程
*/
@Test
public void testDeployProcess() {
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder builder = repositoryService.createDeployment();
// 加载发布资源
builder.name("机器自动执行流程测试") // 设置流程显示别名
.addClasspathResource("receiveTask.bpmn") // 设置流程规则文件
.addClasspathResource("receiveTask.png"); // 设置流程规则的图片
// 发布流程
builder.deploy();
}

三、启动流程,并自动执行任务

 /**
* 3、启动流程,并自动执行任务
*/
@Test
public void testStartProcess() {
// 获取服务对象的实例
RuntimeService runtimeService = processEngine.getRuntimeService(); String processDefinitionKey = "receiveTask";
// 自动执行与Key相对应的流程的最高版本
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey); String processInstanceId = processInstance.getId(); logger.info("Id:" + processInstance.getId()); //获取当前流程下Execution对象
Execution e1 = runtimeService
.createExecutionQuery()
.processInstanceId(processInstanceId) //每个流程的唯一标识
.activityId("汇总当天销售额") //每个活动的唯一标识
.singleResult();
Assert.assertNotNull(e1);
//自动逻辑的绑定-汇总当天销售额,进行一堆逻辑后,得到金额money
Double money = 888888.88d;
//把金额放入变量中
runtimeService.setVariable(e1.getId(), "销售额", money);
logger.info("汇总后当天的销售额是: " + money); //推动流程流转
runtimeService.signal(e1.getId()); //判断当前流程,是否仪在一个节点ID是“发短信给老板”的活动节点
Execution e2 = runtimeService
.createExecutionQuery()
.processInstanceId(processInstanceId) //每个流程的唯一标识
.activityId("发短信给老板") //每个活动的唯一标识
.singleResult();
Assert.assertNotNull(e2);
Double m = (Double) runtimeService.getVariable(e2.getId(), "销售额");
logger.info("老板,今天的销售额是:" +m); //推动流程流转
runtimeService.signal(e2.getId()); //检查结束状态
ProcessInstance pInstance = runtimeService
.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
Assert.assertNull(pInstance);
logger.info("机器自动任务流程成功执行!");
}

四、执行后的结果如下:

[INFO][2015-12-01 17:34:46,411][com.mcs.activiti.test.TestReceiveTask]Id:60001
[INFO][2015-12-01 17:34:46,570][com.mcs.activiti.test.TestReceiveTask]汇总后当天的销售额是: 888888.88
[INFO][2015-12-01 17:34:46,625][com.mcs.activiti.test.TestReceiveTask]老板,今天的销售额是:888888.88
[INFO][2015-12-01 17:34:46,783][com.mcs.activiti.test.TestReceiveTask]机器自动任务流程成功执行!

最新文章

  1. mount img
  2. SQL Server时间粒度系列----第4节季、年时间粒度详解
  3. 基于NodeJS的全栈式开发
  4. vscode调试HTML
  5. centos7 安装 notejs
  6. 字符串匹配的Boyer-Moore算法 详解 加 C# 实现
  7. eclipse运行时编码设置
  8. JSON解析和XML解析
  9. xcode 不值钱的动画UIButton
  10. 【LeetCode】144. Binary Tree Preorder Traversal
  11. exgcd求解同余方程的最小正整数解 poj1061 poj2115
  12. 【转载】systemctl命令完全指南
  13. Exception in Spark
  14. 20180226xlVbaGetStockData
  15. cookie session ORM 操作
  16. WIN7 下IIS7的rewrite伪静态功能设置方法
  17. 淘宝 code 使用
  18. flag -- 诡异的memcache标记
  19. Android 四大组件之 Activity(二)
  20. shell基础(八)-循环语句

热门文章

  1. csdn左侧个人栏目美化,css英文颜色大全,跑马灯效果,点击转到qq联系,点击转到发送邮件。
  2. IdentityServer4认证服务器集成Identity&配置持久化数据库
  3. qemu源码分析
  4. error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
  5. 面向对象(五)——isinstance与issubclass、反射、内置方法
  6. centos7简单安装配置mariadb
  7. [USACO06JAN]牛的舞会The Cow Prom
  8. javascript中的insertBefore方法
  9. java中多线程产生死锁的原因以及解决意见
  10. kubeadm生成的token重新获取