使用 BAM 监视业务流程管理解决方案
该解决方案使用业务活动监视 (BAM) API 来监视订单处理步骤。 业务流程在设计上将活动拆分为多个阶段。 但是,可以将这些活动重新组合起来以形成连续的流程。 BAM 还提供聚合数据,以便您能够了解不同后端系统所花费的时间、已完成的订单数以及其他类似信息。
与面向服务的解决方案一样,它使用新的 OrchestrationEventStream 对象。 有关 OrchestrationEventStream 对象的讨论,请参阅 使用 BAM 监视面向服务的解决方案中的“什么是 OrchestrationEventStream 对象”。
有关 BAM 的一般信息,请参阅 使用业务活动监视。 有关跟踪配置文件编辑器 (TPE) 的信息,请参阅 跟踪配置文件编辑器。
包装 OrchestrationEventStream 对象
与面向服务的解决方案一样,业务流程管理解决方案包装 OrchestrationEventStream 对象。 并且,与面向服务的解决方案一样,所有方法都是静态方法,这样业务流程不需要创建对象实例也可以使用这些方法。 这也意味着如果引擎冻结某个业务流程,则不一定非要对跟踪中使用的对象进行序列化,并且也不需要保存这些对象(不必为可序列化对象)。 但是,业务流程管理解决方案将 OrchestrationEventStream 包装在多个对象中,这些对象都派生自单个抽象对象。
抽象类是 BasicActivity。 尽管该类为抽象类,但它并不是真的作为派生类的模板。 而是通过其静态方法提供一组没有派生类中的限定条件的可用方法。 这实际上为您提供了四种默认的方法实现方式。 四个静态方法是: CreateActivityId、 BeginActivity、 UpdateActivity 和 EndActivity。
类重载 BeginActivity 方法。 该类的一个版本获取活动名称作为单个参数,并创建一个 GUID 用作活动标识符,接着调用该类获取活动名称和活动标识符的版本,然后返回活动标识符。 在订单可能不具有唯一标识符的情况下,此单参数版本非常有用。
CreateActivityId 方法采用字符串和唯一标识符(如请求标识符),并返回一个用下划线连接它们的字符串。 这提供了一个唯一的活动标识符,在派生类中广泛使用。 BeginActivity、UpdateActivity 和 EndActivity 方法调用 OrchestrationEventStream 的 BeginActiviy、UpdateActivity 和 EndActivity 方法。
该解决方案从 Order Broker (CustomerOrderRequest) 、订单管理器 (OrderManager) 以及 ServiceOrderRequest) 处理阶段 (的 BasicActivity 派生类。 每个类都对应于一个活动。 每个类都为 在 CreateActivityId 中使用的活动名称提供一个字符串,用于创建活动标识符以及专用于活动里程碑的方法。
由于 OrderBroker 发出订单,并在稍后接收响应,因此它包含一个用于将给定的活动标识符恢复为订单的请求标识符的方法。 这使得业务流程可以继续跟踪最后处理订单的元素。
注意
如果通过文件工具而非客户服务 Web 应用程序来提交订单,则需要为每个请求添加一个唯一的标识符。