08接收任务,
分享于 点击 22423 次 点评:81
08接收任务,
一、接收任务
接收任务(ReceiveTask)即等待任务,接收任务是一个简单任务,它会等待对应消息的到达。当前,官方只实现了这个任务的java语义。 当流程达到接收任务,流程状态会保存到数据库中。在任务创建后,意味着流程会进入等待状态,直到引擎接收了一个特定的消息, 这会触发流程穿过接收任务继续执行。
1、流程图

代码实现: //运行流程 @Test public void doTask() { RuntimeService runtimeService = this.processEngine.getRuntimeService(); String processDefinitionKey = "myProcess"; ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey); System.out.println("流程启动成功:" + processInstance.getId()); /** 使用流程变量设置当日销售额,用来传递业务参数 */ int value = 0;// 应该是去查询数据库,进行汇总 ---耗时操作 int tryNum=0;//尝试汇总次数 while (true) { tryNum++; try { value = this.hzxx(); break; } catch (Exception e) { e.printStackTrace(); if(tryNum==10) { System.out.println("尝试10次汇总。全部失败,已终止汇总"); break; } } } runtimeService.setVariable(processInstance.getId(), "当前的销售额", value); /** 向后执行一步,如果流程处于等待状态,使得流程继续执行 */ runtimeService.signal(processInstance.getId()); /** 从流程变量中获取汇总当日销售额的值 */ Integer saleMoney = (Integer) runtimeService// .getVariable(processInstance.getId(), "当前的销售额"); System.out.println(saleMoney); System.out.println("发送短信"); Boolean flag = false; int num = 0; do { flag = send(); num++; if (num == 10) { System.out.println("尝试10次发送。全部失败,已终止发送"); break; } } while (!flag);
/** 向后执行一步,如果流程处于等待状态,使得流程继续执行 */ runtimeService.signal(processInstance.getId()); System.out.println("流程执行完成"); }
//汇总信息 public Integer hzxx() { // 查询数据库 System.out.println("数据汇总中...."); try { Thread.sleep(2000); } catch (Exception e) { e.printStackTrace(); } System.out.println("数据汇总完成"); return 10000; }
//发送短信 private Boolean send() { System.out.println("发送成功"); return true; }
相关文章
- 暂无相关文章
用户点评