继续标记用来关联 BAM 基础结构中各种不同的信息。 假设有一个业务流程用于构造以下类型的消息:
由采购订单号标识的采购订单
由销售订单号标识的销售订单
由发货订单号标识的发货订单
在此过程中,有三个重要标识符:采购订单 ID、销售订单 ID 和发货订单 ID。 其中每个标识符都表示原始订单生存期内的一个重要事件,但这些标示符无法直接关联。 若要跟踪与采购订单相关的事件,必须标识各消息间共有的信息,这样 BAM 跟踪基础结构才能准确地关联事件。
格式
继续标记由一个表达式元素和一项或多项运算组成:
<ic:ContinuationToken>
<ic:Expression>
<!-- Operations -->
</ic:Expression>
</ic:ContinuationToken>
注解
ContinuationToken 表达式中不允许使用以下常见运算:
且
等于
[WF/WCF 中的运算部分标头应具有相似的图表及其他图表,具体视需要而定]
示例
在此示例中,使用 GetWorkflowProperty
从工作流中检索 WF 进程的延续标记。 在此开发人员之所以决定通过使用自定义代码为工作流中的连续符提供支持,可能是因为确定继续标记的流程涉及两个或三个以上的表达式并且可能依赖外部数据。
<ic:ContinuationToken>
<ic:Expression>
<wf:Operation Name="GetWorkflowProperty">
<wf:Argument>ContinuationToken</wf:Argument>
</wf:Operation>
</ic:Expression>
</ic:ContinuationToken>
您可以选择在您的新 WF 或 WCF 应用程序中提供类似功能,或者,如果使用表达式运算创建标记非常简便,则无需编写额外的代码。
以下示例通过使用 XPath 操作从当前消息中检索信用卡数字,并使用常量和串联操作为 WCF 进程建立延续标记,以将字符串“CID_”追加到检索到的数字:
<ic:ContinuationToken>
<ic:Expression>
<ic:Operation Name="Constant">
<ic:Argument>CID_</ic:Argument>
</ic:Operation>
<wcf:Operation Name="XPath">
<wcf:Argument>//Purchase/Payment/CreditCardNumber</wcf:Argument>
</wcf:Operation>
<ic:Operation Name="Concatenate" />
</ic:Expression>
</ic:ContinuationToken>