zoukankan      html  css  js  c++  java
  • 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;
        }



  • 相关阅读:
    oracle里的查询转换
    Oracle里的优化器
    转:oracle几组重要的常见视图-v$undostat,v$open_cursor,v$rowcache,v$session_longops,v$waitstat
    转:oracle几组重要的常见视图-v$segstat,v$segment_statistics,v$filestat,v$rollstat
    转:oracle几组重要的常见视图-v$latch,v$latch_children,v$lock,v$locked_object
    转:oracle常见重要视图-v$sql,v$sql_plan,v$sqltext,v$sqlarea,v$sql_plan_statistcs
    转:oracle几组重要的常见视图-v$process,v$session,v$session_wait,v$session_event
    第三方引擎应用场景分析--Tokudb,infobright
    mysql 常见参数
    Uep的静态下拉和动态下拉建立
  • 原文地址:https://www.cnblogs.com/Guorisy/p/12099263.html
Copyright © 2011-2022 走看看