工作流引擎如何接收外部事件?

时间:2010-09-09 09:27:30

标签: c# java workflow workflow-foundation jbpm

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

此外,该服务应具有接口并使用[ExternalDataExchange]进行修饰。

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

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