【问题标题】:"No context found." When trying to launch a Workflow from within an Activity (Amazon SWF)“没有找到上下文。”尝试从活动 (Amazon SWF) 中启动工作流时
【发布时间】:2020-04-13 09:22:35
【问题描述】:

我的意图是让 ParentWorkflow 启动一个独立的 ChildWorkflow,然后不等待孩子完成。但是,当我直接从 ParentWorkflow 启动 ChildWorkflow 时,我发现我无法获得这种行为——父母总是在等待孩子。如果父母终止(取消、放弃、终止),您可以设置孩子会发生什么,但您不能“断开”孩子与父母的联系。

我想出一个能够做到这一点的好方法是启动一个活动 LaunchChildWorkflowActivity,然后它会产生子工作流。但是,测试运行导致出现此错误:

No context found. It means that the method is called outside of the workflow definition code.

堆栈跟踪表明,在 LaunchChildWorkflowActivity 中,调用 ChildWorkflowClientFactory.getClient() 最终会导致 getDecisionContext() 调用,这在 Activity 中是不允许的。所以现在我不确定如何继续。

一个想法是在 ParentWorkflow 中获取 ChildWorkflowClient,并将其传递给 LaunchChildWorkflowActivity.launchChild,但我不确定这是最好的想法,因为 SWF 对可以从上下文传递到上下文的对象大小有限制,例如这个。

(我试图完成这项工作的原因是我希望 ChildWorkflow 中的逻辑是它自己独立的轻量级单元,可以单独重试,而无需调用包含相当昂贵的操作的 ParentWorkflow。)

【问题讨论】:

标签: amazon-swf


【解决方案1】:

ChildWorkflowClientFactory 只能在工作流代码中使用。当您从一个活动开始工作流时,它应该使用任何外部代码使用的普通客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2017-09-10
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    相关资源
    最近更新 更多