如何从 `workflow.Context` 得到 `context.Context`?
How to get `context.Context` from `workflow.Context`?
我正在实现一个 Cadence Workflow,它需要使用 context.Context
参数调用函数。如何从 workflow.Context
中获取 context.Context
?只是ctx.(*context.Context)
的问题吗?
不是context.Context
。
您应该永远不要 编写任何使用 context.Context
的工作流代码。所有需要 context.Context
的调用都应在工作流 activity 或本地 activity 中编写以确定性。
换句话说,工作流代码应该只包含 orchestrate/manage 其他工作流实体的逻辑,例如 activities/childWF/Signal/etc。
workflow.Context
是worker在工作流执行过程中传入工作流运行-时间信息的特殊数据结构。例如,workflowID 和 运行ID。它恰好调用 Context
只是因为这个 看起来 与 Golang 风格非常相似。除此之外,它与 context.Context
.
没有任何直接关系
在Java客户端中,没有workflow.Context
,worker传递这些数据的方式是通过ThreadLocal
。
如果你真的想将一些 KV 数据从外部传递给工作流代码,你可以使用上下文传播:https://github.com/uber-common/cadence-samples/tree/master/cmd/samples/recipes/ctxpropagation
我正在实现一个 Cadence Workflow,它需要使用 context.Context
参数调用函数。如何从 workflow.Context
中获取 context.Context
?只是ctx.(*context.Context)
的问题吗?
不是context.Context
。
您应该永远不要 编写任何使用 context.Context
的工作流代码。所有需要 context.Context
的调用都应在工作流 activity 或本地 activity 中编写以确定性。
换句话说,工作流代码应该只包含 orchestrate/manage 其他工作流实体的逻辑,例如 activities/childWF/Signal/etc。
workflow.Context
是worker在工作流执行过程中传入工作流运行-时间信息的特殊数据结构。例如,workflowID 和 运行ID。它恰好调用 Context
只是因为这个 看起来 与 Golang 风格非常相似。除此之外,它与 context.Context
.
在Java客户端中,没有workflow.Context
,worker传递这些数据的方式是通过ThreadLocal
。
如果你真的想将一些 KV 数据从外部传递给工作流代码,你可以使用上下文传播:https://github.com/uber-common/cadence-samples/tree/master/cmd/samples/recipes/ctxpropagation