主要消息和字段

本部分简要介绍 OrderBrokerOrderManager 业务流程处理的关键消息和字段。 有关应用程序中消息的完整列表,请参阅 业务流程管理解决方案的消息参考

订单消息

来自 OrderBroker 的订单消息是多部分消息。 其中一部分包含路由信息,另一部分包含订单信息。 定义路由消息部分的 .NET 类将其所有字段都定义为可分辨字段,这样业务流程就可以使用消息属性的方式来访问所有类成员。 这些类还包括路由类中的升级字段,以便消息可以路由。 所有升级字段也是可分辨字段,这样就可以使用较简单的符号对其进行编程和引用。

有关使用 .NET 类定义消息的详细信息,请参阅 在用户代码中构造消息

标识订单

解决方案使用路由信息中的三个字段来标识订单。 在这三个订单中,有两个标识订单:订单标识符 (OrderID) ,客户标识符 (CustomerID) 。 尽管这两个字段可以标识订单,但可能存在订单的多个实例。 例如,客户可能本来订购了一个全新的标准电缆安装,但是随后又打电话来将订单更改为全新的高级电缆安装。 原始订单不太可能在更新的订单到达之前完成。 这样就创建了订单的两个实例。

为了区分订单实例,解决方案使用唯一的订单序列号 (SeqNum) 。 三个字段 OrderIDCustomerIDSeqNum 唯一标识订单的实例。

最后,由于解决方案对 SeqNum 使用数量不断增加,因此该解决方案可以将更新与原始顺序区分开来 - 更新具有更高的 SeqNum

注意

该解决方案依赖于创建订单请求的系统将升序值分配给 SeqNum。 请参阅 ASP 页背后的代码,了解输入 Web 服务 CSRMainForm.aspx.cs,以及将请求转换为订单的映射, CSR_OrderRequest_To_Order.btm 获取所涉及的字段的名称。

状态

OrderBrokerOrderManager 及其附属业务流程使用订单消息路由部分中的两个字段来跟踪状态:状态阶段“状态”字段跟踪订单的状态。 下表描述了 “状态” 字段的值。

设置位置 说明
ACCEPTED OrderBroker 订单可以继续进入 OrderManager。
已完成 OrderManager 整个订单处理完成,没有出现任何错误。
ERROR OrderManager 在订单中检测到错误。
ORDERMANAGER-EXCEPTION OrderManager 处理订单时在 OrderManager 中出现异常。
STAGE_n_COMPLETED OrderManager 指示阶段 n(其中 n 是一个数字)已完成,没有出现任何错误。
STARTED OrderManager 订单处理已开始。
已终止 OrderManager 订单处理由于取消被停止。

阶段

OrderManager 使用路由部件中的 Stage 字段来指示消息的处理阶段。 在筛选器中使用该字段来确定处理消息的附属业务流程。 OrderManager 最初将 Stage 设置为 1 (1) 。 当订单终止或完成时, OrderManager 会将 Stage 设置为业务流程变量 Stop 的值。

RequestType

OrderManager 还使用订单消息的 RequestType 字段。 如果该字段的值为 TERMINATE,则将终止订单。 业务流程忽略 RequestType 字段的所有其他值,并依赖于订单序列号来识别订单更新和重复项。 否则, OrderBroker 会将 RequestType 字段设置为来自供应商或客户服务系统的消息中的 “状态” 字段的值。

OrderTypeCode、OrderType 和 ServiceClass

订单的类型位于订单消息的 OrderTypeCode 字段中。 OrderBroker 将其值设置为来自客户服务系统或供应商系统的消息中的 OrdTypeCode 字段中的值。 下表显示了 OrderTypeCode 的可能值:

说明
NS 全新的标准电缆安装。
ND 全新的高级电缆安装。
XS 取消标准电缆安装。
Xd 取消高级电缆安装。
CS 更改标准电缆安装。
CD 更改高级电缆安装。
未知 未知。

稍后, 验证 业务流程使用业务规则引擎将这些值转换为两个单独的字段 :OrderTypeServiceClass验证业务流程由第一个顺序处理阶段 CableOrder1 调用。

下表提供了 OrderType 的值:

OrderTypeCode 值 OrderType 值
NS,ND 激活
XS,XD 取消
CS,CD 更改
无效组合。 INVALID

ServiceClass 的值是相应的单字母,S 表示标准,D 表示豪华。

其他标识符

解决方案还对每个订单使用一个标识符。 此标识符 RequestId 需要在所有订单中是唯一的。 输入 Web Services 会自动为其分配一个 GUID。 通过成批输入提交的消息必须包括该字段的值。 订单架构中的字段为 RequestID 。 但是, OrderBroker 使用 CSR_OrderRequest 架构来处理订单。 字段在此架构中显示为 ReqId ,是一个可分辨属性。

该解决方案使用 RequestId 来形成 BAM 跟踪系统中使用的活动标识符。

另请参阅

进程管理器逻辑
通过进程管理器的订单流
在用户代码中构造消息
业务流程管理解决方案的消息引用