问题标签 [cadence-workflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
struct - 如何将结构传递给 Uber Cadence Activity 并在工作流中返回修改后的结构
我只是在尝试一些基本的 Uber Cadence 示例。我遇到如下问题:我有一个活动,它接收一个结构作为参数并更改值并返回修改后的结构。执行时我无法获得修改后的值工作流。它显示默认值。我尝试如下代码片段:
cadence-workflow - 有节奏地恢复工作流程
在执行任务时,如果出现故障,想定义配置以在一定间隔后重试并从失败的任务中恢复。是否可以实现恢复选项?
cadence-workflow - 根据信号恢复Cadence Workflow而不阻塞线程
我们想要构建一个工作流,其中包含按该顺序执行的以下步骤
- 执行一些同步活动。
- 通过 kafka 事件触发外部操作。
- 监听 kafka 事件以获取操作结果。
- 根据结果执行一些其他活动。
Kafka 可能包含与工作流无关的事件,因此我们需要一个单独的工作流来过滤该特定工作流的事件。
使用 cadence 我打算将它分成两个工作流程
- 工作流程1:1 -> 2 -> 等待信号 -> 4
- Workflow2 : 3 -> 调用 workflow1.signal
是否可以在没有实际阻塞线程的情况下等待工作流1中的信号,以便线程可以同时处理另一个工作流。
cadence-workflow - 调用子工作流时,如何防止循环依赖/无限循环
我搜索了 Google、StackOverflow 和 Github 问题,但没有找到任何东西
https://docs.temporal.io/docs/java-implementing-workflows#child-workflows
似乎我可以轻松地创建一个包含多个工作流程的圈子,将其他工作流程称为子工作流程。工作流甚至可以一遍又一遍地调用自己。Cadence/Temporal 是否提供任何东西来防止这种情况或超出范围的情况?
先感谢您
cadence-workflow - 修复错误后如何将失败/卡住的工作流程移动到新版本?
我的理解是,如果bug在Activity中,由于Activity没有版本的概念,所以会使用新的代码。但是如果工作流代码中存在错误并导致某些工作流失败(或者更糟糕的是,不是失败而是卡住了)怎么办,我们修复了错误并部署了新版本,但那些失败的工作流卡在旧版本上。有没有办法自动将那些失败/卡住的工作流程移动到新版本并重新运行它们?
这在我们身上发生了很多,因为我们刚刚开始学习使用 Cadence/Temporal
先感谢您!
cadence-workflow - 当子工作流的输入大小很大时超时异常
我们的父工作流代码基本上是这样的(JSONObject
来自org.json)
我们发现,大多数时候,父工作流工作者无法启动子工作流并抛出上面的超时异常。它疯狂地重试,但从未成功,并一遍又一遍地打印超时异常。然而,有时我们很幸运并且它有效。有时它甚至更早地在活动工作者中失败,并引发相同的异常。我们认为这是由于数据量太大(约 5MB),无法在超时时间内发送(从日志判断我们猜测设置为 2s)。如果我们child.run
用小的假数据调用它,它 100% 有效。
我们使用子工作流的原因是我们想用来Async.function
并行运行它们。那么我们该如何解决这个问题呢?是否有我们应该增加的节俭超时配置,或者我们可以避免传递大量数据?
先感谢您!
---Maxim回答后更新---
谢谢你。我阅读了示例,但对于我的用例仍有一些问题。假设我在我的 RestActivitiesWorker 中有一个包含 100 个巨大 JSON 对象的数组,如果我不应该将这个巨大的数组返回到工作流,我需要对数据库进行 100 次调用以创建 100 行记录并将 100 个 ID 放入一个数组中并且将其传递回工作流程。然后工作流为每个 ID 创建一个子工作流。然后每个子工作流调用另一个具有 id 的活动以从数据库加载数据。但是该活动必须将那个巨大的 JSON 传递给子工作流,这样可以吗?对于在数据库中进行 100 次插入的 RestActivitiesWorker,如果它在中间失败了怎么办?
我想这归结为我们的工作流程试图直接使用巨大的 JSON。我们正在尝试将巨大的 JSON(5-30MB,不是那么大)从外部系统加载到我们的系统中。我们稍微分解一下 JSON,操作一些值,并使用来自几个字段的值来执行一些不同的逻辑,最后将其保存在我们的 DB 中。我们应该如何使用 Temporal 来做到这一点?
cadence-workflow - 工作流事件的重新排序
寻找有关以下用例的建议或解决方案
- 应用程序接收按功能键标识的更改时间排序的消息(例如员工 ID)。一个功能键可以有多个消息
- 每条消息都会触发一个工作流。如果员工有待处理的工作流程,则希望将新消息排队,直到待处理的工作流程完成。
是否有任何方法可以按节奏重新排序消息以将它们作为消息中的功能键标识的组来处理?
cadence-workflow - 如何取消从工作流异步调用的活动?
我们想异步调用一个长时间运行的活动,并且在基于外部信号的某个时间后,想取消该长时间运行的活动。
目前,活动了解取消的唯一方法是通过心跳。确保您的活动心跳并且不会吞下心跳方法抛出的异常。
cadence-workflow - cadence 如何保存动作历史?
我的情况是批准、拒绝或退回我的请求,并根据该工作流程更改其状态。candence 如何帮助保存/检索每个工作流的所有操作历史记录。