在此步骤中,使用 SQL 查询分析器查看存储在 Microsoft® BizTalk Accelerator for RosettaNet (BTARN) 数据库中的业务线(LOB)消息,以验证环回方案是否正常工作。
LOB 应用程序实用工具生成 LOB 消息并将其提交到 BTARN 后,发起方(home)和响应方(合作伙伴)将发生以下事件:
发起者工作流
SubmitRNIF 将 LOB 消息提交到 BTARN DATA 数据库的 MessagesFromLOB 表。
SQL 适配器接收位置获取消息并将其传递到 MessageBox 数据库。 SQL适配器运行
GetMessagesFromLOB
存储过程时一次只能选取一条消息。私有发起程序从 MessageBox 数据库中选取消息,然后再次将其放回 MessageBox 数据库,并附加其他提升的上下文属性。
公共发起程序根据订阅筛选器从 MessageBox 数据库中选取消息。
HTTP 发送端口根据订阅选取包含 RNIFSend 管道的消息。 它将消息保存在 BTARN 存档数据库的 MessageStorageOut 表中,以确保不可否认性,然后将该消息发送到 RNIFSend.aspx 页。
RNIFSend.aspx页接收带有查询字符串变量的MIME编码消息,其中包含消息的最终目的地(合作伙伴组织的URL)。
响应方工作流
BTARN 将 RNIF 消息发送到 RNIFReceive.aspx 页面,在那里移除 MIME 解码过的包装器。 消息标识为同步或异步,然后转发到同步或异步接收位置(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)。