0
WorkflowRuntime workflowRuntime = new WorkflowRuntime();

 ExternalDataExchangeService dataExchangeService;
 dataExchangeService = new ExternalDataExchangeService();
 workflowRuntime.AddService(dataExchangeService);

 PaymentProcessingService paymentProcessing;
 paymentProcessing = new PaymentProcessingService();
 dataExchangeService.AddService(paymentProcessing);

通过上面的代码,我们的应用程序可以使用 paymentProcessing.RaiseXXXXEvent 与工作流实例进行交互。我的问题是:实现这种机制的原理是什么。我认为这是一种事件驱动模式,但我该如何实现这种机制,为什么?请指出方向或任何参考资料表示赞赏。

顺便问一下,jBPM 中有机制吗?jBPM 是否包括序列工作流和状态机工作流,如窗口工作流基础?

谢谢 !

4

1 回答 1

0

WF 定义了一组处理线程调度、工作流持久性、事务和工作流跟踪的核心工作流服务。WF 的设计者本可以将这些服务的实现嵌入运行时引擎本身,但他们明智地选择将它们外部化,将它们的实现置于可插拔服务中。这让您可以控制。您决定使用哪些服务(有些是可选的)以及每个服务使用哪个实现。

WF 还支持另一种称为本地服务(有时称为数据交换服务)的服务。这是您自己设计和实施的服务。本地服务几乎可以服务于任何目的,但一种一般用途是促进工作流实例和主机应用程序之间的通信。与此相反,每个核心工作流服务都有一个由 Microsoft 定义的目的(例如,持久性、跟踪)。您可以为每个核心服务开发替代实现,但这不会改变它们定义的目的。

让您的本地服务可用于您的工作流实例。有几种方法可以做到这一点。最简单的方法是使用 CallExternalMethodActivity 并对其进行配置。

此外,服务应该有一个接口并用 [ExternalDataExchange] 装饰。

如果您正在考虑编写自己的核心服务实现,这里是一个描述如何提供您自己的核心工作流服务的链接。

http://msdn.microsoft.com/en-us/library/ms734705(v=VS.90).aspx

于 2010-09-09T14:50:01.610 回答