【问题标题】:Which one will suit for complete workflow design Temporal or Cadence哪一个适合完整的工作流程设计 Temporal 或 Cadence
【发布时间】:2021-05-15 01:05:52
【问题描述】:

我想设计一个完整的端到端工作流编排引擎。

它有以下要求

  1. 线性工作流程
  2. 并行工作流 - 我想并行执行 n 个活动。在验证了我想要的所有活动的结果之后 继续下一个状态,否则工作流程将失败
  3. 批处理 - 假设我有 30 个活动要完成,但我希望以批处理方式完成。就像如果窗口大小是 5 那么我想要 一次执行 5 个活动 T. 执行完所有活动后 并验证结果将继续进行还是使工作流程失败。
  4. 循环 - 想要无限运行一个活动,直到满足某些条件
  5. 子工作流程
  6. 轮询

【问题讨论】:

    标签: cadence-workflow cadence temporal-workflow


    【解决方案1】:

    Cadence 工作流程轻松支持所有 1-5。我不确定您所说的Polling 是什么意思。如果您可以提供更多详细信息,我将更新此答案以帮助您。

    这里是sample to execute activities in Leaner+parallel/batch+loop:

      @Override
      public long calculate(long a, long b, long c) {
        LOGGER.info("workflow start...");
    
        long result = 0;
    
        // Async.invoke takes method reference and activity parameters and returns Promise.
        Promise<Long> ab = Async.function(activities::multiple, a, b);
        Promise<Long> ac = Async.function(activities::multiple, a, c);
        Promise<Long> bc = Async.function(activities::multiple, b, c);
    
        // Promise#get blocks until result is ready.
        this.abPlusAcPlusBc = result = ab.get() + ac.get() + bc.get();
    
        // waiting 30s for a human input to decide the factor N for g(n), based on a*b+a*c+b*c
        // the waiting timer is durable, independent of workers' liveness
        final boolean received = Workflow.await(Duration.ofMinutes(2), () -> this.factorForGn > 1);
        if (!received) {
          this.factorForGn = 10;
        }
    
        long fi_1 = 0; // f(0)
        long fi_2 = 1; // f(1)
        this.currentG = 1; // current g = f(0)*f(0) + f(1)*f(1)
        long i = 2;
    
        for (; i < this.factorForGn; i++) {
          // get next fibonacci number
          long fi = fi_1 + fi_2;
          fi_2 = fi_1;
          fi_1 = fi;
    
          this.currentG += activities.multiple(fi, fi);
        }
    
        result += this.currentG;
        return result;
      }
    

    这是sample of using ChildWorkflow。

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      相关资源
      最近更新 更多