全部產品
Search
文件中心

Microservices Engine:工作流程調度

更新時間:May 14, 2025

本文介紹如何通過可視化的工作流程進行任務編排且支援Cron運算式和API。

使用說明

  • 工作流程中的Job沒有獨立調度時間,跟隨工作流程的時間開始調度。

  • 工作流程調度至少要有2個Job,且有依賴關係。如果只有一個Job,請直接使用任務管理。

  • 工作流程支援跨應用編排,可以將不同應用下的任務進行編排。

使用限制

當前只有Java任務支援資料轉送,分布式Java任務請使用MapReduce模型進行資料轉送。

使用指南

具體操作,請參見流程管理

工作流程上下遊資料傳遞

SchedulerX提供工作流程工作編排,同時支援任務上下遊的資料傳遞。

返回執行結果

/**
 *
 * @param status
 * @param result, the size should be less than 1000 bytes
 * @throws Exception
 */
public ProcessResult(boolean status, String result) throws Exception;

在Processor結尾,通過該方法可以返回result執行結果。

說明

result的長度不能超過1000位元組,不是String的長度。如果有中文字元,可能會超過1000位元組,超過1000位元組時任務會失敗。

擷取上遊資料

List<JobInstanceData> upstreamDatas = JobContext.getUpstreamData();

在Processor裡,可以通過該介面從JobContext中擷取上遊的資料,上遊的資料是一個list(可能有多個父節點)。JobInstanceData裡有兩個屬性,分別是JobName和Data(String類型)。

Demo

  1. 首先編寫三個JobProcessor。

    public class TestSimpleJobA extends JavaProcessor {
        @Override
        public ProcessResult process(JobContext context) throws Exception {
            System.out.println("TestSimpleJobA " + DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
            return new ProcessResult(true, String.valueOf(1));
        }
    }
    public class TestSimpleJobB extends JavaProcessor {
        @Override
        public ProcessResult process(JobContext context) throws Exception {
            System.out.println("TestSimpleJobB " + DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
            return new ProcessResult(true, String.valueOf(2));
        }
    }
    public class TestSimpleJobC extends JavaProcessor {
        @Override
        public ProcessResult process(JobContext context) throws Exception {
            List<JobInstanceData> upstreamDatas = context.getUpstreamData();
            int sum = 0;
            for (JobInstanceData jobInstanceData : upstreamDatas) {
                System.out.println("jobName=" + jobInstanceData.getJobName() 
                		+ ", data=" + jobInstanceData.getData());
                sum += Integer.valueOf(jobInstanceData.getData());
            }
            System.out.println("TestSimpleJobC sum=" + sum);
            return new ProcessResult(true, String.valueOf(sum));
        }
    }
  2. 通過控制台配置上述的JobA、JobB和JobC任務,其工作流程編排如下圖所示:

    image.png

  3. 觸發一次該工作流程之後,在左側導覽列單擊執行列表>流程執行個體列表,找到建立的工作流程名稱。然後單擊目標執行記錄操作列下的詳情,按右鍵JobA任務,選擇詳情,進入任務執行個體詳情,可以看到JobA執行個體結果=1,如下圖:

    image.png同理,可以看到JobB的執行個體結果=2, JobC的執行個體結果=3。

  4. 在控制台查看JobC機器的列印資訊。

    jobName=jobB, data=2
    jobName=jobA, data=1
    TestSimpleJobC sum=3