首页 > 其他 > 详细

08接收任务

时间:2019-12-25 22:59:15      阅读:78      评论:0      收藏:0      [点我收藏+]

一、接收任务

接收任务(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;
    }



08接收任务

原文:https://www.cnblogs.com/Guorisy/p/12099263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!