主要消息和字段
本部分简要介绍 OrderBroker 和 OrderManager 业务流程处理的关键消息和字段。 有关应用程序中消息的完整列表,请参阅 业务流程管理解决方案的消息参考。
订单消息
来自 OrderBroker 的订单消息是多部分消息。 其中一部分包含路由信息,另一部分包含订单信息。 定义路由消息部分的 .NET 类将其所有字段都定义为可分辨字段,这样业务流程就可以使用消息属性的方式来访问所有类成员。 这些类还包括路由类中的升级字段,以便消息可以路由。 所有升级字段也是可分辨字段,这样就可以使用较简单的符号对其进行编程和引用。
有关使用 .NET 类定义消息的详细信息,请参阅 在用户代码中构造消息。
标识订单
解决方案使用路由信息中的三个字段来标识订单。 在这三个订单中,有两个标识订单:订单标识符 (OrderID) ,客户标识符 (CustomerID) 。 尽管这两个字段可以标识订单,但可能存在订单的多个实例。 例如,客户可能本来订购了一个全新的标准电缆安装,但是随后又打电话来将订单更改为全新的高级电缆安装。 原始订单不太可能在更新的订单到达之前完成。 这样就创建了订单的两个实例。
为了区分订单实例,解决方案使用唯一的订单序列号 (SeqNum) 。 三个字段 OrderID、 CustomerID 和 SeqNum 唯一标识订单的实例。
最后,由于解决方案对 SeqNum 使用数量不断增加,因此该解决方案可以将更新与原始顺序区分开来 - 更新具有更高的 SeqNum。
注意
该解决方案依赖于创建订单请求的系统将升序值分配给 SeqNum。 请参阅 ASP 页背后的代码,了解输入 Web 服务 CSRMainForm.aspx.cs,以及将请求转换为订单的映射, CSR_OrderRequest_To_Order.btm 获取所涉及的字段的名称。
状态
OrderBroker、OrderManager 及其附属业务流程使用订单消息路由部分中的两个字段来跟踪状态:状态和阶段。 “状态”字段跟踪订单的状态。 下表描述了 “状态” 字段的值。
值 | 设置位置 | 说明 |
---|---|---|
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 | 更改高级电缆安装。 |
未知 | 未知。 |
稍后, 验证 业务流程使用业务规则引擎将这些值转换为两个单独的字段 :OrderType 和 ServiceClass。 验证业务流程由第一个顺序处理阶段 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 跟踪系统中使用的活动标识符。