您的位置:首页 > 其它

Activiti学习笔记7 — ReceiveTask机器自动任务的使用

2015-12-01 17:41 169 查看
一、 创建流程规则,如下图

/**
* 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("机器自动任务流程成功执行!");
}


View Code
四、执行后的结果如下:

[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]机器自动任务流程成功执行!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: