我正在实现一个Cadence,它需要用context.Context参数调用函数。我该如何从context.Context获得workflow.Context呢?这只是ctx.(*context.Context)的事吗?
发布于 2021-04-20 22:41:35
这不是context.Context。
您应该永远不要编写任何使用context.Context的工作流代码。所有需要context.Context的调用都应该在工作流活动或本地活动中编写,以实现确定性。
换句话说,activities/childWF/Signal/etc.工作流代码只应包含用于编排/管理其他工作流实体(如)的逻辑
workflow.Context是工作人员在工作流执行过程中传递工作流运行时信息的一种特殊数据结构.例如,workflowID和runID。它恰巧调用了Context,仅仅因为这个看起来与Golang风格非常相似。除此之外,它与context.Context没有直接关系。
在Java中,没有workflow.Context,工作人员通过这些数据的方式是通过ThreadLocal。
如果您真的想将一些KV数据从外部传递到工作流代码,可以使用上下文传播:https://github.com/uber-common/cadence-samples/tree/master/cmd/samples/recipes/ctxpropagation。
https://stackoverflow.com/questions/67187090
复制相似问题