08接收任務

1、接收任務

接收任務(ReceiveTask)即等待任務,接收任務是一個簡單任務,它會等待對應消息的到達。當前,官方只實現這個任務的java語義。 當流程達到接收任務,流程狀態會保存到數據庫中。在任務建立後,意味着流程會進入等待狀,直到引擎接收了一個特定的消息, 這會觸發流程穿過接收任務繼續執行。java

一、流程圖

 

 

代碼實現:
    //運行流程
    @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;
    }
相關文章
相關標籤/搜索