使用哪种业务协议?

消息的业务协议决定了文档格式。业务协议会影响您在规划后端系统集成时必须制定的许多决策。 业务协议的选择决定了必须使用的封装方法,它反过来会影响可使用的消息传输协议。

要获取业务协议的全面描述,请参阅中心配置指南。 本部分描述了针对以下各业务协议的集成信息:

Web service(SOAP)

WebSphere Partner Gateway 使中心社区的成员可以使用以下 Web Service:

请参阅中心配置指南以获取更多信息,包括如何为 Web service 设置文档流定义。

cXML

您可以在社区参与者之间收发 cXML 文档。当 WebSphere Partner Gateway 接收到来自社区参与者的 cXML 文档时,在把该文档发送到社区管理者的后端系统前,会对该文档进行验证和转换(如果指定的话)。注意转换不能用来同步 cXML 消息。在同步交换中,后端系统生成一个响应,WebSphere Partner Gateway 将该响应返回给社区参与者(如果适用于消息)。

需要发送 cXML 文档的社区管理者的后端系统可以执行以下两个操作之一:

注: 如果采用了 XML 文档转换,对于社区参与者的同步请求/响应,则会将响应异步地返回到后端系统。

请参阅中心配置指南以获取更多信息,包括如何为 cXML 设置文档流定义。

EDI

WebSphere Partner Gateway 通过增值网络(VAN)以及因特网接收来自参与者的 EDI 文档。从 VAN 发送或接收的 EDI 文档使用 FTP 脚本传输。FTP 脚本也可用于通过因特网发送文档或接收文档。请参阅中心配置指南以获取有关 FTP 脚本传输的信息。

采用 EDI 包络进出中心的 EDI 文档称为交换。 交换包含一些单独的 EDI 事务或事务组。

如果 EDI 交换将通过中心(未被解包)传递,您可在中心和社区管理者之间创建一个连接。

然而,如果 EDI 交换将被解包,那么创建交互和连接的过程不同于其他的业务协议。交换必须是已解包的,并且是已处理的单个事务。通常将事务转换为另一种形式,这取决于从 Data Interchange Services 客户机导入的转换映射。如果将 EDI 事务转换为 XML 或面向记录的数据(ROD)文档,则可以将这些文档发送给社区管理者或参与者。如果将事务转换为其他 EDI 格式,则在将这些事务发送到社区管理者或参与者之前,首先要对它们进行封包。

后端应用程序到参与者的传输流

后端应用程序可以发送以下文档类型:

参与者到后端应用程序的传输流

参与者可以发送以下文档类型:

功能确认

功能确认指定所接收的 EDI 交换。功能确认总是在传递之前封包。

注: 功能确认仅适用于由 WebSphere Partner Gateway 解包或由 WebSphere Partner Gateway 生成的那些交换。它们不适用于经过 WebSphere Partner Gateway 传递的交换。

对于由 WebSphere Partner Gateway 接收的交换

对于由 WebSphere Partner Gateway 生成的交换

RosettaNet

WebSphere Partner Gateway 为您发送或接收符合 RosettaNet 1.1 和 2.0 标准的文档提供支持。当一个参与者将一条 RosettaNet 消息发送到中心时,参与者连接的目标方必须已经指定后端集成。中心将消息的有效内容转换为 RNSC 格式,并将该消息发送到后端系统。由于使用了后端集成封装,因此中心为该消息添加了传输级头。这些消息是通过 HTTP 或JMS 传输协议发送的。传输级头保留了元信息(它们不属于 PIP),使得 WebSphere Partner Gateway 可以正确地路由消息。

类似地,当社区管理者后端系统向中心发送一条 RNSC 消息时,参与者连接的源必须指定了后端集成封装,而后端系统必须提供传输级头。

例如,假设一个应用程序希望使用 RosettaNet 通过 HTTP 向社区参与者发送消息。该应用程序提供了 RosettaNet 服务内容并添加了传输级头。该头标识出由哪个社区参与者处理该请求、发送哪个 PIP、PIP 版本以及其它信息。 该消息能让 WebSphere Partner Gateway 向社区参与者发送正确的 PIP 。

您可以在中心配置指南中找到关于设置 RosettaNet 支持和配置 PIP 的信息。

事件通知

WebSphere Partner Gateway 与社区参与者代表社区管理者后端应用程序执行 RNIF PIP 进程。因此,WebSphere Partner Gateway 提供了 事件通知,作为向后端应用程序通知有关 RNIF PIP 过程执行的各个方面的机制。例如,如果 WebSphere Partner Gateway 无法向参与者发送 PIP,则事件通知允许 WebSphere Partner Gateway 通知应用程序。 然后该应用程序可以处理故障。

事件通知消息是一个 XML 文档,它含有有关发生在 WebSphere Partner Gateway 或应用程序内的事件的信息。这些消息的结构与其它任何 WebSphere Partner Gateway 所收发消息的结构一样;也就是说它们有一个传输级头,以及有效内容。可以将 WebSphere Partner Gateway 配置成发送(或不发送)事件通知消息,因为这些消息是可选的。

表 2 总结了 WebSphere Partner Gateway 可以发送到后端系统的事件通知消息。

表 2. 发送到后端系统的事件通知消息
事件条件 事件通知消息

WebSphere Partner Gateway 向社区参与者传递一个 RosettaNet 文档,并接收一个“接收确认”。

事件 100

WebSphere Partner Gateway 通过生成 0A1 消息并将其传递给社区参与者来取消 PIP。

事件 800

WebSphere Partner Gateway 收到来自社区参与者的“接收确认”异常或常规异常。

事件 900

如果将 WebSphere Partner Gateway 配置成使用“排除列表管理”来发送消息,则它可以向目的地应用程序发送 0A1 消息,因为它可以处理任何其他 PIP。请参阅管理员指南中的"管理排除列表"。

应用程序可以向 WebSphere Partner Gateway 发送一个事件通知消息来取消 RosettaNet PIP。

事件消息结构

事件通知消息有标准的传输级头,并带有被设置为 XMLEvent 的 x-aux-process-type 字段。但是,消息的有效内容有特定的结构,如 图 11 中所示的样本 XML 模式。

图 11. 事件通知消息的 XML 模式
<?xml version="1.0" encoding="UTF-8"?>
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace=
       "http://www.ibm.com/websphere/bcg/2003/v1.0/xmleventnotification"
    xmlns:evntf=
       "http://www.ibm.com/websphere/bcg/2003/v1.0/xmleventnotification"
 elementFormDefault="qualified">
 <!-- EventNotification version 1.0 document element -->
     <xsd:element name="EventNotification">
        <xsd:complexType>
          <xsd:all>
              <xsd:element ref="evntf:StatusCode"/>
              <xsd:element ref="evntf:StatusMessage"/>
              <xsd:element ref="evntf:EventMessageID"/>
              <xsd:element ref="evntf:BusinessObjectID"/>
              <xsd:element ref="evntf:GlobalMessageID"/>
              <xsd:element ref="evntf:Timestamp"/>
           </xsd:all>
        </xsd:complexType>
     </xsd:element>
<!-- StatusCode element -->
     <xsd:element name="StatusCode">
        <xsd:simpleType>
           <xsd:restriction base="xsd:string">
              <xsd:enumeration value="100"/>
              <xsd:enumeration value="800"/>
              <xsd:enumeration value="900"/>
              <xsd:enumeration value="901"/>
              <xsd:enumeration value="902"/>
              <xsd:enumeration value="903"/>
              <xsd:enumeration value="904"/>
           </xsd:restriction>
        </xsd:simpleType>
     </xsd:element>
<!-- StatusMessage element -->
     <xsd:element name="StatusMessage">
        <xsd:simpleType>
           <xsd:restriction base="xsd:string"/>
        </xsd:simpleType>
     </xsd:element>
 <!-- EventMessageID element -->
     <xsd:element name="EventMessageID">
        <xsd:simpleType>
           <xsd:restriction base="xsd:string"/>
        </xsd:simpleType>
     </xsd:element>
<!-- BusinessObjectID element -->
     <xsd:element name="BusinessObjectID">
        <xsd:simpleType>
           <xsd:restriction base="xsd:string"/>
        </xsd:simpleType>
     </xsd:element>
 <!-- GlobalMessageID element -->
     <xsd:element name="GlobalMessageID">
        <xsd:simpleType>
           <xsd:restriction base="xsd:string"/>
        </xsd:simpleType>
     </xsd:element>
  <!-- Timestamp element -->
     <xsd:element name="Timestamp">
        <xsd:simpleType>
           <xsd:restriction base="xsd:dateTime"/>
        </xsd:simpleType>
     </xsd:element>
  </xsd:schema> 

表 3 描述在事件有效内容里的各个字段。

表 3. 事件通知 XML 字段
字段 描述
StatusCode 消息类型。有效值为:
  • 100 - WebSphere Partner Gateway 已经传递了该文档并接收到“接收确认”。
  • 800 - 应用程序取消了 PIP。
  • 900 - WebSphere Partner Gateway 接收到来自社区参与者的“接收确认”异常、常规异常或 0A1 故障 PIP。
StatusMessage 事件通知消息的字母数字描述。
EventMessageID 特定事件通知消息的字母数字标识。
BusinessObjectID 消息的传输级头里的 x-aux-msg-id,它受该消息通知事件的影响。因此会把原始消息的有效内容链接到该事件。
GlobalMessageID 消息的传输级头里的 x-aux-system-msg-id,它会引起该消息通知事件。
Timestamp

在事件发生时使用的 UTC 时间戳记格式:

CCYY-MM-DDThh:mm:ssZ

包括小数精度的秒数(...ss.ssssZ)。日期戳记必须符合 dateTime XML 模式数据类型(w3.org/TR/2001/REC-xmlschema-2-20010502#dateTime)。

事件通知示例

图 12 显示了 使用 HTTP 协议发送事件通知消息的示例。

图 12. 使用 HTTP 的事件通知消息的示例
POST /builderURL HTTP/1.1
 Content-Type: application/xml
 Content-length: 250
 x-aux-sender-id: 000000001
 x-aux-receiver-id: 000000002
 x-aux-third-party-bus-id: 000000003 
 x-aux-create-datetime: 2002-10-28T23:05:02Z
 x-aux-protocol: XMLEvent
 x-aux-protocol-version: 1.0
 x-aux-process-type: XMLEvent
 x-aux-process-version: 1.0
 x-aux-payload-root-tag: evntf:EventNotification
 x-aux-msg-id: 98732
 x-aux-system-msg-id: 12345
 x-aux-production: Production
 x-aux-process-instance-id: 3456
 x-aux-event-status-code: 100
 x-aux-transport-retry-count: 0
<?xml version="1.0" encoding="UTF-8"?>
 <evntf:EventNotification xmlns:evntf=
    "http://www.ibm.com/websphere/bcg/2003/v1.0/xmleventnotification">
    <evntf:StatusCode>100</evntf:StatusCode>
    <evntf:StatusMessage>The message was delivered</evntf:StatusMessage>
    <evntf:EventMessageID>12345</evntf:EventMessageID>
    <evntf:BusinessObjectID>34234</evntf:BusinessObjectID>
    <evntf:GlobalMessageID>98732</evntf:GlobalMessageID>
    <evntf:Timestamp>2001-01-31T13:20:00Z</evntf:Timestamp>
 </evntf:EventNotification>

Copyright IBM Corp. 2003, 2005