使用跟踪配置文件和 TPE 时,您应该考虑以下问题。
在 TPE 中命名文件夹
在跟踪配置文件编辑器中命名文件夹时,请注意以下命名要求:
文件夹名称和数据项实例值组合的长度不得超过 128 个字符。
对于 Continuation 和 ContinuationID 文件夹,文件夹的命名是关联两个业务流程的关键。 例如,如果业务流程 A 是业务流程 B 的父级,则业务流程 A 包含一个延续文件夹,该文件夹的名称直接映射到业务流程 B 中的 ContinuationID 文件夹。
开发 TPE 的业务流程
如果编排流程以无效的形状启动或结束,则无法将其映射到业务活动。 业务流程引擎不允许跟踪某些形状。 它们分别是:
消息分配
转换
组 (任务)
暂停
循环(While)
分支
终止
扔
捕获
考虑形状时
在映射到业务活动时使用以下准则,以便跟踪配置文件编辑器和其他 BAM 工具可以使用它们:
对于“组”形状,请使用非事务性作用域形状。
对于 While 形状,请将其置于一个非事务性的 Scope 形状中。
对于终止形状,没有解决方法,因为此形状的结束事件永远不会在正常情况下发生。
请勿以不允许拖放操作的形状启动或结束计划。
应用监视正在运行的进程的跟踪配置文件
如果活动包含 BAM 延续,则更新跟踪配置文件可能会影响正在进行的活动实例。 具体而言,如果对跟踪配置文件的更新指定要对已记录的活动项的数据进行下游拦截,则可能会覆盖原始值。 从本质上讲,任何单个事件流都不会受到跟踪配置文件更新的应用程序的影响,因为每个流对象都绑定到在活动/流启动时就位的特定配置文件版本。 但是,由于续延是关联多个事件流的手段,因此在配置文件更新时尚未开始的流将会采纳更新中的更改,从而可能导致数据覆盖的情况。 有关延续的详细信息,请参阅 “活动延续 ”和 “如何创建延续”。
跟踪不带发送或接收形状的追踪配置,从中提取消息属性
活动的延续通过在活动之间相同的上下文属性或负载数据来进行跟踪。 活动之间的属性值,例如消息 ID、服务 ID 和实例 ID,会发生变化。
可以使用以下方法创建跟踪的配置文件以应对这种情况:
如果业务流程通过动态绑定向另一个业务流程发送消息,则可以将全局唯一的有效负载数据值用于后续处理。
如果消息中没有唯一的有效负载数据,则可以使用消息的交换 ID。 若要使用交换 ID,必须在相同的接收形状上跟踪它。 如果创建新消息,则无法使用交换 ID,因为创建新消息时交换 ID 会发生变化。 从接收或发送形状以外的任何形状跟踪交换 ID 是不可靠的。
还可以使用消息 ID,前提是业务流程中使用了从管道接收的完全相同的消息,即业务流程端口绑定到管道和接收形状,并从该位置跟踪消息 ID。 如果从不同的形状跟踪消息 ID,则该消息 ID 在延续中将无效。
如果一个编排调用另一个编排且没有传递任何消息,或者编排调用另一个编排,但被调用方没有用于检索有效负载数据值的创建、接收或发送形状,则用户可以使用实例 ID。 被调用的业务流程的实例 ID 不会发生变化。
如果业务流程通过执行调用加载另一个业务流程,而不是直接调用它,则无法使用任何静态消息属性来跟踪活动。 用户无法开启续用。 在此实例中执行跟踪的唯一方法是,如果消息通过管道传递,该管道包含要对其执行跟踪的唯一有效负载数据。
不能将会话 ID 用作 Pass-Through 管道的续接令牌
在跟踪配置文件中,当您从消息有效负载中选择项目时,该跟踪配置文件将会绑定到该消息的架构。 在传递管道中,架构名称值为 null 值。 当 BAM 尝试通过端口名称和架构名称加载配置时,它无法与会话 ID 架构匹配,并且引擎不会跟踪任何数据。
对于透传管道,可以从跟踪配置中删除所有有效负载跟踪,或者在需要跟踪有效负载数据时使用 XML 管道。
使用唯一端口名称
枚举双向端口时,TPE 将它们显示为两个逻辑端口、一个发送和接收端口。 其中每个逻辑端口都以相同的名称显示。 BizTalk Server 允许创建具有相同名称的单向和双向端口。 例如,可以创建一个名为“Port1”的双向端口,然后创建具有相同名称的接收端口。 在这些情况下,TPE 将接收端口显示一次和双向端口两次,一次作为接收端口,一次作为发送端口。
在这种情况下,TPE 会将跟踪配置文件应用到两个接收端口。 建议为端口提供唯一名称,以帮助正确识别它们。
将具有并行形状的 TPE 业务流程用作第一个形状
如果开始编排时使用 Fork、Parallel 或 Listen 形状,则无法映射其中一个分支上的活动 ID。 在进行并行处理时,可以将 ActivityID 映射到 Fork 形状的上方。 还可以让 BAM 生成活动 ID,以避免在编排顶端出现并行结构的问题。
重要
将活动映射到多个路径,并将 ActivityID 映射到分支形状的一个路径时,处理过程遵循未映射 ActivityID 的路径时会导致错误。
设计时消息属性的可用性
创建跟踪配置文件时,并非所有消息属性都可用。 当从中映射消息属性的形状位于业务流程的顶部时,很可能遇到这种情况。 在这些实例中,消息属性的值为 null。
例如,侦听形状是编排中的第一个形状。 从此形状映射消息属性时,只有以下属性具有值:InstanceID、ServiceID 和 ServiceClassID。 (MessageID 目前不在范围内,并且具有 null 值。
不能将一种循环形状内部的形状映射到里程碑报告中
TPE 块将循环形状内部包含的源映射到被映射到循环之外的项目的活动。
循环活动是指在编排中循环或重复的动作。 可以捕获在编排中循环的动作事件。 为此,请创建另一个活动,并映射循环中的所有新活动里程碑和数据。 这是必要的,因为循环中的数据处理在每次计划执行时将多次发生。
例如,如果你有一个包含循环中处理的多个行项的采购订单,那么“哪些采购订单的订单价格为 100 美元?”等问题不明确。 明确的问题是:
哪些采购订单中的条目的价格是 100 美元?
哪些采购订单的总/最小值/最大项目价格为 100 美元?
创建明确的问题需要将单个项目视为与采购订单分开的独立内容。 在跟踪配置文件编辑器中,根活动(例如采购订单)映射到循环之外的所有动作。 子活动(例如一个行项)映射到循环中的动作。
处理这些类型的构造的典型方法是分解重复循环,并根据与外部活动相关的内部活动创建相关活动。
你需要使用有效负载项作为根活动的 ActivityID,并确保在循环内部的一些消息中可以使用该有效负载项。 将活动映射到在子活动下显示的关系节点,并将其命名为根活动。
跟踪跨多个应用程序的用户档案
如果跟踪配置文件跨越多个应用程序,则必须在部署解决方案中的所有应用程序后部署跟踪配置文件。 如果跟踪配置文件不是部署的最后一项,则当部署向导调用 BTTDeploy.exe时,将收到以下消息“找不到映射源”。
将多个 BizTalk Server 项目映射到文档引用 URL 或 MessageID 节点
TPE 允许您将多个 BizTalk Server 构件拖放到相同的文档引用 URL 或 MessageID 节点上。
如果多个源映射到 BAM 活动中的同一项,在 BAM 处理期间遇到的最后一个项目是跟踪数据中仍然存在且可在 BAM 门户中查看的项目。
更新 BTT 版本以匹配 BizTalk 解决方案版本
BAM 开发人员和管理员可以通过自动更新 BTT 文件来维护跟踪配置文件和 BizTalk 解决方案之间的版本同步。 为此,请修改 BTT 文件的 DataLevel 元素中的 Version 属性。 在以下示例元素中,将修改 TargetAssemblyName 和 SchemaName 属性中的版本信息。
<DataLevel Name="City" SourceTypeSelected="Messaging Payload" TargetAssemblyName="TheImplementationOfOrderMgmt, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5b33e44ffa4658b" SchemaName="TheImplementationOfOrderMgmt.PurchaseOrder,TheImplementationOfOrderMgmt, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5b33e44ffa4658b" SomXPath="/*[local-name()='<Schema>' and namespace-uri()='http://TheImplementationOfOrderMgmt.PurchaseOrder']/*[local-name()='PurchaseOrder' and namespace-uri()='http://TheImplementationOfOrderMgmt.PurchaseOrder']/*[local-name()='Header' and namespace-uri()='']/*[local-name()='ShipTo' and namespace-uri()='']/@*[local-name()='City' and namespace-uri()='']" XPath="/*[local-name()='PurchaseOrder' and namespace-uri()='http://TheImplementationOfOrderMgmt.PurchaseOrder']/*[local-name()='Header' and namespace-uri()='']/*[local-name()='ShipTo' and namespace-uri()='']/@*[local-name()='City' and namespace-uri()='']" IsBeginActivity="true" IsEndActivity="false">
无法在 TPE 中跟踪某些业务流程形状
编排引擎不会为以下形状生成事件,因此无法在 TPE 中跟踪或映射这些形状:
任务
所有分支
暂停
终止
扔
捕获
MessageAssignment (因为它是构造形状的一部分)
转换(因为它是构造形状的一部分)
循环
TPE 不检索已部署的跟踪配置文件
升级或重新部署后,检索已部署的跟踪配置文件可能会遇到困难。 这可能是由于 BizTalkMgmtDb 数据库存储在注册表中的服务器名称的方式不匹配造成的。
BizTalkMgmtDb 在组配置期间写入注册表。 TPE 使用条目来查找主要导入数据库并筛选跟踪档案。
在配置过程中,可以以多种格式输入服务器名称。 例如:
mgmtsvr1316267,15001\inst
MGMTSVR1316267\inst,15001
使用注册表项时,TPE 执行基本字符串比较。 若要检索已部署的跟踪配置文件,必须检查存储的服务器和数据库名称,并在“TPE 集管理数据库 ”对话框中输入它们。
确定服务器和数据库名称的语法,并将其输入到 BizTalk 管理数据库中。
打开 BizTalk Server自定义配置管理器。 有关使用 自定义配置管理器的信息,请参阅 “配置 BizTalk Server”。
在导航窗格中,选择“ 组 ”以打开组配置页。
在数据存储网格中,观察服务器名称和数据库名称的格式。
打开 TPE 并选择 “工具” 菜单项。
选择 “设置管理数据库 ”菜单项以打开 “设置管理数据库 ”对话框。
在 SQL Server 文本框中,输入在“数据存储”网格的“自定义配置管理器组”页的“服务器名称”字段中使用的服务器名称。
在“数据库名称”文本框中,输入在“数据存储”网格的“自定义配置管理器组”页的“数据库名称”字段中使用的数据库名称。
单击“ 确定 ”按钮保存条目。