工作流引擎如何接收外部事件?
-
01-10-2019 - |
题
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
ExternalDataExchangeService dataExchangeService;
dataExchangeService = new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchangeService);
PaymentProcessingService paymentProcessing;
paymentProcessing = new PaymentProcessingService();
dataExchangeService.AddService(paymentProcessing);
使用上面的代码,我们的应用程序可以使用paymentprocessing.raisexxxxevent与工作流实例进行交互。我的问题是:实施这种机制的原则是什么。我认为这是一种 事件驱动的模式, ,但是我该如何实施这种机制,为什么?请指出指示或任何参考值得赞赏。
顺便说一句,JBPM中是否有机制? JBPM是否包括序列工作流程和状态机工作流,例如窗口工作流程基础?
谢谢 !
解决方案
WF定义了一组核心工作流服务,该服务处理线程调度,工作流持续性,交易和工作流跟踪。 WF的设计师可以将这些服务的实施嵌入到运行时引擎本身中,但他们明智地选择了外部化,将其实现放在 可插的服务。这使您受到控制. 。您决定使用哪些服务(有些是可选的),以及用于每种服务的实现。
WF还支持另一种称为本地服务的服务(有时称为数据交换服务)。这是您设计和实施自己的服务。本地服务几乎可以提供任何目的,但是一种一般用途是促进工作流实例和主机应用程序之间的通信。与此相比,核心工作流服务每个都有一个由Microsoft定义的目的(例如,持久性,跟踪)。您可以为每个核心服务开发替代实现,但这并不能改变其定义目的。
为您的工作流实例提供本地服务。有几种方法可以做到这一点。最简单的是使用CallexternalMethodactivity并进行配置。
此服务还应具有一个接口,并用[externalDataexchange]装饰。
如果您正在考虑编写自己的核心服务实施,以下是描述如何提供您的链接 自己的核心工作流服务.
http://msdn.microsoft.com/en-us/library/ms734705(V=VS.90).aspx
不隶属于 StackOverflow