使用 Siebel 适配器通过集成对象调用业务服务方法
Siebel 适配器使适配器客户端能够调用使用集成对象的业务服务方法。 这些业务服务通常具有“hierarchy”数据类型的 IN、OUT 或 IN OUT 参数,用于发送或接收集成对象数据。
Siebel 适配器将这些分层类型公开为字符串。 这些字符串值实质上是封装在 XML CDATA 节中的 XML 字符串。 XML 字符串与适配器客户端尝试发送或接收的集成对象的 XML 架构兼容。
基于本主题的示例
BizTalk 适配器包还提供了基于本主题的示例 SiebelAdapterIntegrationObjects。 有关详细信息,请参阅 Siebel 适配器的示例。
创建业务流程以使用集成对象调用业务服务方法
创建业务流程以调用采用集成对象参数的业务服务方法类似于调用任何其他业务服务的业务流程,如使用 BizTalk Server 和 Siebel 适配器调用业务服务方法中所述。
区别在于你为业务流程删除的请求消息。 这种差异是由于以下原因:
请求消息的架构不同,因为调用了不同的业务服务。
请求消息包含集成对象的 XML 字符串。 此 XML 封装在 CDATA 节中。 必须首先为集成对象生成架构,然后创建符合架构的 XML。 此 XML 必须在发送到适配器的请求消息的 CDATA 部分中传递。
生成符合集成对象架构的 XML 并将其包含在请求消息中后,必须将请求消息删除到 FILE 位置,就像对任何其他业务流程一样。 在其他 FILE 位置查找响应消息。
使用集成对象调用业务服务的请求和响应消息
如前所述,调用采用集成对象参数的业务服务的唯一区别是发送到适配器的请求消息。 本部分提供有关创建请求消息必须执行的步骤的说明。
为了更好地理解,以 Siebel 业务服务“EAI Siebel 适配器”为例。 “EAI Siebel 适配器”业务服务在 Siebel 集成对象“示例帐户”上运行。 必须执行以下任务才能创建请求消息,以调用“EAI Siebel Adapter”业务服务公开的方法:
生成 EAI Siebel 适配器业务服务的架构。 必须使用使用适配器服务外接程序来生成架构。 生成架构后,生成符合架构的 XML。
生成集成对象的架构。 使用 Siebel 工具为集成对象生成架构。 在 Siebel 工具界面中,选择集成对象(例如示例帐户),然后单击“ 生成架构”。 生成架构时,请确保:
“从列表选择业务服务”下拉列表具有值“EAI XML XSD 生成器”。
从列表下拉列表中选择信封类型具有值“Siebel 邮件信封”。
有关详细信息,请参阅 Siebel 文档。
创建符合集成对象的架构的 XML 消息。 为“示例帐户”集成对象生成的示例 XML 消息如下所示:
<?xml version="1.0" encoding="UTF-16"?> <SiebelMessage MessageId="" IntObjectName="Sample Account" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> <ListOfSampleAccount> <Account> <CurrencyCode>USD</CurrencyCode> <Location>Redmond</Location> <Name>IntegrationObjectTest</Name> </Account> </ListOfSampleAccount> </SiebelMessage>
将此 XML 消息作为业务服务方法的请求消息中的 CDATA 元素的值传递。 在 CDATA 元素中包含上述 XML 消息的示例请求消息如下所示。 此示例请求是为“EAI Siebel Adapter”业务服务调用 Insert 方法。
<Insert xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter/Operation"> <InsertRequestRecord /> <InsertInOutRecord> <SiebelMessage xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter"> <![CDATA[ <?xml version="1.0" encoding="UTF-16"?> <SiebelMessage MessageId="" IntObjectName="Sample Account" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> <ListOfSampleAccount> <Account> <CurrencyCode>USD</CurrencyCode> <Location>Redmond</Location> <Name>IntegrationObjectTest</Name> </Account> </ListOfSampleAccount> </SiebelMessage> ]]> </SiebelMessage> </InsertInOutRecord> </Insert>
Siebel 对上述请求消息的响应如下所示:
<?xml version="1.0" encoding="utf-8" ?> <InsertResponse xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter/Operation"> <InsertResult> <ErrorCode xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter">0x0</ErrorCode> <ErrorContextIntComp xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter" /> <ErrorContextSearchSpec xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter" /> <ErrorSymbol xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter" /> <OMErrorCode xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter" /> <OMErrorSymbol xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter" /> <PrimaryRowId xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter">1-6SPSJ</PrimaryRowId> </InsertResult> <InsertInOutRecord> <SiebelMessage xmlns="http://Microsoft.LobServices.Siebel/2007/03/BusinessServices/EAI_x0020_Siebel_x0020_Adapter"> <![CDATA[ <?xml version="1.0" encoding="UTF-16"?> <SiebelMessage MessageId="" IntObjectName="Sample Account" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> <ListOfSampleAccount> <Account> <CurrencyCode>USD</CurrencyCode> <Location>Redmond</Location> <Name>IntegrationObjectTest</Name> </Account> </ListOfSampleAccount> </SiebelMessage> ]]> </SiebelMessage> </InsertInOutRecord> </InsertResponse>
使用 BizTalk 功能,适配器客户端还可以针对从 Siebel Tools. (获取的集成对象架构对集成对象 IN 和 OUT 参数执行附加验证 )