首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪一个适合完整的工作流设计?时态还是卡登?

哪一个适合完整的工作流设计?时态还是卡登?
EN

Stack Overflow用户
提问于 2021-05-14 11:11:42
回答 1查看 305关注 0票数 0

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

它有以下要求

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 17:05:52

在Cadence工作流中,所有1-5都很容易得到支持。我不知道你所说的Polling是什么意思。如果你能提供更多的细节,我会更新这个答案来帮助你。

这是示例以在Leaner+并行/批处理+循环中执行活动

代码语言:javascript
复制
  @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;
  }

这是使用ChildWorkflow的示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67533372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档