当前位置: 首页 > 知识库问答 >
问题:

哪一个将适合完整的工作流设计时间或节奏

戴鸿羽
2023-03-14

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

它具有以下要求

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

共有1个答案

许出野
2023-03-14

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

下面是在 Leaner 并行/批处理循环中执行活动的示例:

  @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;
  }

这是使用儿童工作流的示例。

 类似资料:
  • 我有一份报告,不管表中的行数是多少,我都想把它改为1页(A4)。通常是10行,但在某些情况下可能更多。 无论如何,我需要在一个固定的背景下使用BIRT(第三方应用),例如,没有调整BIRT浏览器或url参数的选项。因此,我如何将此选项添加到我的报告设计中,以便自动应用它?

  • temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?

  • 5.6 一个完整的流程 到之前为止,我们了解了URL和抽取相关API,一个爬虫已经基本编写完成了。 @TargetUrl("https://github.com/\\w+/\\w+") @HelpUrl("https://github.com/\\w+") public class GithubRepo { @ExtractBy(value = "//h1[@class='entry-t

  • 问题内容: 在hibernate状态下,EJB3和Spring 3有很多共同点。我需要找出在哪里可以将Spring框架与hibernate一起使用,而不是EJB3,反之亦然。 问题答案: 您可以互换使用它们。 如果使用EJB3,则必须拥有完整的Java EE,EJB3应用服务器。有些是免费的,有些不是。 如果使用Spring 3,则需要在CLASSPATH中包含Spring JAR,但是不需要完整

  • 问题内容: 我正在使用Mongoose,MongoDB和Node。 我想定义一个架构,其中的一个字段是date \ timestamp。 我想使用此字段来返回最近5分钟内已更新的所有记录。 由于在Mongoose中我无法使用Timestamp()方法,因此我了解到,我唯一的选择是使用以下Javascript方法: 这可能不是查询庞大数据库的最有效方法。如果有人可以分享一种更有效的实施方式,我将非常

  • 可以运行不需要连接到cadence服务器的本地活动。是否有适当的方式在本地运行工作流,以防发生cadence中断?我正在使用Go客户端。