WorkflowCore中WaitFor vs Activity

使用WorkflowCore获取外部数据时,有两种方法可以让流程等待外部数据,一是使用WaitFor注册一个事件,外部数据输入完成后,通过PublishEvent返回流程;另一种是使用Activity,注册一个人工活动,执行到这个活动时,工作流等待,外部代码通过GetPendingActivity获取相应的Activity,通过SubmitActivitySuccess提交数据。具体的使用方法可以参考系列文章《.Net 轻量级工作流引擎 WorkflowCore的使用》看起来两种都可以完成外部数据输入的任务,但实际研究中发现GetPendingActivity无法获取是哪一个工作流实例的活动,如果有两个实例同时运行,就没有办法分清除向哪个流程提报数据:

            var id1=host.StartWorkflow("MyActivityWorkflow", 1, myClass).Result;
            var id2 = host.StartWorkflow("MyActivityWorkflow", 1, myClass).Result;

             //上面两个实例中有相同的activity-1,无法知道这里获取的是哪一个实例的活动,         
            var activity = host.GetPendingActivity("activity-1", "worker1", TimeSpan.FromMinutes(1)).Result;

WairFor事件发布时有工作流实例ID传入:

host.PublishEvent("MyEvent", workflowId, value);

没有上面的缺陷。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容