如何通过IWorkflowBuilder让Elsa子工作流继承父工作流CorrelationId?
Elsa Workflow 子工作流继承父工作流CorrelationId解决方案
在Elsa Workflow v2.10.2.2中,默认RunWorkflow活动不会自动传递父工作流的CorrelationId给子工作流,需通过显式配置实现继承。
修改父工作流代码
调整MyWorkflow中RunWorkflow活动的配置,从父工作流执行上下文提取CorrelationId并传递给子工作流:
public class MyWorkflow : IWorkflow { public void Build(IWorkflowBuilder builder) { builder.WorkflowBuilder .HttpEndpoint(setup => setup.WithPath("myworkflow")) .RunWorkflow<OtherWorkflow>(setup => { setup.Mode = RunWorkflowMode.Blocking; // 从父工作流上下文获取CorrelationId,传递给子工作流 setup.CorrelationId = context => context.CorrelationId; }) .Finish(); } }
原理说明
通过RunWorkflow活动的setup委托,可直接访问父工作流的执行上下文(context),从中获取已有的CorrelationId并赋值给子工作流的对应属性。子工作流启动时会直接使用该值,而非生成新的标识。
额外提示
如果OtherWorkflow仅作为父工作流的子流程被调用,无需外部HTTP触发,可以移除其HttpEndpoint节点,避免外部调用时生成独立的CorrelationId。
内容的提问来源于stack exchange,提问作者ilMattion
相关产品推荐
相关产品推荐

