Activiti学习笔记7 — ReceiveTask机器自动任务的使用
一、 创建流程规则,如下图
二、发布流程
/**
* 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]机器自动任务流程成功执行!
Activiti学习笔记7 — ReceiveTask机器自动任务的使用的更多相关文章
- Activiti学习笔记目录
1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...
- Activiti 学习笔记记录(二)
上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...
- activiti学习笔记一
activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...
- Activiti 学习笔记记录(2016-8-31)
上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件
- CAS学习笔记五:SpringBoot自动/手动配置方式集成CAS单点登出
本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式实现CAS客户端登出及单点登出. 本文基于<CAS学习笔记三:SpringBoot自动/手动配置方式集成C ...
- 机器学习框架ML.NET学习笔记【9】自动学习
一.概述 本篇我们首先通过回归算法实现一个葡萄酒品质预测的程序,然后通过AutoML的方法再重新实现,通过对比两种实现方式来学习AutoML的应用. 首先数据集来自于竞赛网站kaggle.com的UC ...
- Activiti 学习笔记(2016-8-30)
前言 不管学习什么,都必须对知识体系中专有的名词或者特定的语言组织方式 有所了解. 本文仅记录学习过程中的笔记,参考意义因人而定,不保证所言全部正确. 学习方式,百度传课的视频<权威Activi ...
- Activiti 学习笔记记录
官方在线用户手册(英文版):http://activiti.org/userguide/index.html 中文用户手册:http://www.mossle.com/docs/activiti/in ...
- Activiti学习笔记11 — 判断节点的使用
一. 创建流程 <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns=" ...
随机推荐
- 初探gitlab & gitlab-runner & asp.net core持续集成
文章简介 gitlab & gitlab-runner 简介 基于gitlab & gitlab-runner 的asp.net core webapi 极简持续集成实践 gitla ...
- 20140808 const和define区别 内联函数(inline) 栈和堆的地址分配 栈帧
1.const和define区别 const有数据类型(不能改变的变量),define只是简单的字符串替换,没有数据类型. C++程序用const完全取代 define. const还可以类成员函数为 ...
- maven管理工具配置
1.登录maven.apache.org,下载maven.,选择apache-maven-3.6.2-bin.zip,并解压到所需目录. 2.进行环境配置,计算机右击--属性---高级系统配置---环 ...
- linux每日命令(3):which命令
这个命令我也神佑体会它的用处,在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate ...
- shiro注解权限拦截失效解决
今天在给项目添加注解拦截的时候,总是发现拦截不起作用,加入了这个注解按照角色来进行拦截.角色不是1的用户访问此方法都会被拦截. 测试了一会发现把注解bean配置到了shiro.xml中没有起作用.需要 ...
- MVC--MVP?
第一部分:什么是MVP?什么是MVC? 1.什么是MVP? M:数据层(数据库.网络.文件存储等等...) V:View和Activity和Fragment以及它们的子类 P:中介->Prese ...
- Vue之数据排序加签
这篇随笔小编给大家带来的是数据排序加签: 所谓数据加签,就是把数据进行加密再传给后端,这样保证数据的秘密性.不容易被修改和获取:排序就是根据公司要求对字段进行排序,有些公司会把字段根据a-z排序,有些 ...
- JS Window对象 计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码。
计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码. 语法: setInterval(代码,交互时间); 参数说明: 1. 代码:要调用的函数或要执行的代码串. 2. 交互 ...
- python之pyquery 学习
pyquery是jQuery的Python实现,可以用以解析HTML网页的内容.官网文档:http://pythonhosted.org/pyquery/ 下载:https://pypi.python ...
- Mysql流程解析
Mysql流程解析 流程图 流程图解析 客户端发送一条sql语句. 1.此时,mysql会检查sql语句,查看是否命中缓存,如果命中缓存,直接返回结果,不继续执行.没有命中则进入解析器. 2.解析器会 ...