步骤 8:在 BTARN 数据库中查看消息
在此步骤中,使用 SQL 查询分析器查看存储在 Microsoft® BizTalk Accelerator for RosettaNet (BTARN) 数据库中的业务线 (LOB) 消息,以验证回环方案是否正常工作。
LOB 应用程序实用工具生成 LOB 消息并将其提交到 BTARN 后,发起方 (主) 和响应方 (合作伙伴) 发生以下事件:
发起方工作流
SubmitRNIF 将 LOB 消息提交到 BTARN DATA 数据库的 MessagesFromLOB 表。
SQL 适配器接收位置提取消息,并将其传送至 MessageBox 数据库。 SQL 适配器在运行
GetMessagesFromLOB
存储过程时一次选取一条消息。专用发起方从 MessageBox 数据库中提取消息,然后使用附加的已升级上下文属性将消息重新放到 MessageBox 数据库中。
公用发起方根据订阅筛选器从 MessageBox 数据库中提取消息。
HTTP 发送端口根据订阅利用 RNIFSend 管道提取消息。 它将消息保存在 BTARN 存档数据库的 MessageStorageOut 表中,以便不可否认,然后将消息发送到 RNIFSend.aspx 页。
RNIFSend.aspx 页接收的 MIME 编码消息带有查询字符串变量,这些变量含有消息的最终目标,即合作伙伴组织的 URL。
响应方工作流
BTARN 将 RNIF 消息发送到删除 MIME 解码包装器的 RNIFReceive.aspx 页。 消息被标识为同步或异步,然后转发到同步接收位置或异步接收位置(RNIF_Sync_Receive 或 RNIF_Async_Receive)。
HTTP 接收位置首先将消息的线路格式保存在 MessageStorageIn 表中,以便不可否认地证明 BTARN 存档数据库。 HTTP 接收位置然后进行解码、解密(对于 RNIF 2.0)、验证消息签名、拆装 XML 消息各部分、根据签名进行授权,最后使用正确的已升级属性将消息放到 MessageBox 数据库中
公用响应方根据订阅提取消息各部分,然后根据正确的 RNIF 标准验证和处理消息。 服务内容部分使用正确的上下文属性将消息放到 MessageBox 数据库中。
SQL 发送端口根据订阅筛选器提取消息。 然后,它将消息保存在 BTARN DATA 数据库的 MessagesToLOB 表中。
注意
在响应方,公共响应方负责生成确认回执或异常信号,发回给发起方。 BTARN 不会将信号消息保存在 MessagesFromLOB 表中。 这是因为 LOB 应用程序不生成信号消息。 操作消息将继续通过专用响应方,BTARN 将其保存到 MessagesToLOB 表。
注意
对于双重操作的 PIP,响应方端的 LOB 负责生成响应消息。 BTARN 将其拖放到 MessagesFromLOB 表,以完成与发起方进程相同的过程。 在这种情况下,发起方方面的公用发起方流程将返回响应消息的确认回执或异常信号。
在 BTARN 数据库中查看消息
单击“开始”,指向“所有程序”,指向“Microsoft SQL Server<版本>”,然后单击“SQL Server Management Studio”。
在“连接到服务器”对话框中,单击“ 连接”。
注意
在“对象资源管理器”窗格中,检验 SQL Server 代理是否已启动。 如果没有,请右键单击“SQL Server 代理”,然后单击“启动”。
在 Microsoft SQL Server Management Studio中,单击“新建查询”。
在“空查询”窗口中,键入以下内容:
use BTARNArchive SELECT * FROM MessageStorageIn ORDER BY TIMECREATED ASC SELECT * FROM MessageStorageOut ORDER BY TIMECREATED ASC use BTARNData SELECT * FROM MessagesFromLOB ORDER BY TIMECREATED ASC SELECT * FROM MessagesToLOB ORDER BY TIMECREATED ASC SELECT * FROM Attachments ORDER BY TIMECREATED ASC
在 Microsoft SQL Server Management Studio中,单击“执行”。
您将在 MessagesFromLOB 表中看到一条操作消息,如果几分钟后(此时间取决于您的系统配置)再次运行查询,您将在 MessagesToLOB 表中看到所生成的两条消息,其 MessageCategory 值分别为 AsyncAckSignal (25) 和 AsyncAction (10)。