您将使用哪种封装?

该封装类型决定了 WebSphere Partner Gateway 向后端系统发送消息所使用的格式以及后端系统向 WebSphere Partner Gateway 发送消息所使用的格式。

您可以使用社区控制台来建立与社区参与者之间的连接,并且指定 WebSphere Partner Gateway 和后端系统之间使用的封装。要确定使用何种封装类型,必须了解下列问题:

要获取更多关于如何设置合作伙伴连接的信息,请参阅中心配置指南

当使用 WebSphere Partner Gateway 进行集成时,不是所有的封装类型都是有效的。表 4 列出了 WebSphere Partner Gateway 与社区管理者的后端应用程序交换文档或消息时,哪些封装类型是有效的。

表 4. 用于后端集成的相关封装类型
封装类型 描述
“无”封装

发送到后端系统或中心的消息没有任何头数据的原因

后端集成封装

向消息头添加额外的属性,并且可选地,将消息内容包装到 XML 传输包络中。

注: 其它封装类型(例如 AS)也可用于 WebSphere Partner Gateway。但是,为了与后端系统集成,只推荐使用“无”和“后端集成”封装类型。

“无”封装

当封装设为“无”时,WebSphere Partner Gateway 既不在将消息发送给后端系统时添加一个传输级头,也不期望所接收的来自后端系统消息有传输级头。WebSphere Partner Gateway 仅向后端系统发送消息。文档中的信息控制消息传输。

后端集成封装

当封装设为“后端集成”时,后端系统收发的消息含有以下组件:

头和有效内容是必需的部分,而附件是可选的。 下面各部分描述了使用“后端集成”所封装文档的每个组件。

传输级头的内容

传输级头包含 WebSphere Partner Gateway 用来处理消息以及将消息路由到正确目的地的信息。传输级头是双向的,从而 WebSphere Partner Gateway 收发的所有消息都含有必需的字段和任何适用的可选字段。

表 5 列出了传输级头的各字段。

表 5. 传输级头字段
头字段 描述 是否必需?
x-aux-sender-id 消息发送者的标识,例如 DUNS 号。
x-aux-receiver-id 消息接收者的标识,例如 DUNS 号。
x-aux-protocol 消息内容的协议。有效值包括用于 RosettaNet 服务内容的 RNSC、XMLEvent 和二进制。对于 WebSphere Partner Gateway,该字段的值的优先级高于有效内容中任何协议字段的值。
x-aux-protocol-version 消息内容协议的版本。
x-aux-process-type 要执行的过程或正被发送消息的类型。对于 RosettaNet 消息,这是 PIP 代码(例如 3A4)。 对于事件消息,这是 XMLEvent,而对于二进制消息,这是“二进制”。对于 WebSphere Partner Gateway,该字段的值的优先级高于有效内容中任何过程字段的值。
x-aux-process-version 过程版本。对于 RosettaNet 消息,这是 PIP 的版本号。
x-aux-create-datetime 使用 UTC 时间戳记格式成功发送消息的时间(CCYY-MM-DDThh:mm:ssZ)
x-aux-msg-id 有效内容内容的标识。例如,它可以是 RosettaNet 消息的 RNPIPServiceContent 实例的标识,也可以是专有文档的标识。 为了跟踪目的,这个标识将消息有效内容与消息发送者系统的某些内容相链接。
x-aux-production 消息的路由。有效值为:Production 和 Test。在请求的两个方向中都应填充该值。请注意,当消息是社区参与者发出的对双向 PIP 的响应时,WebSphere Partner Gateway 在请求中使用 GlobalUsageCode 并忽略传输级头中的值。
x-aux-system-msg-id 消息的全局唯一标识(GUID),它用于重复检查。
x-aux-payload-root-tag 有效内容的根标记元素。例如, 对于 3A4 RosettaNet 服务内容,该字段的值为 Pip3A4PurchaseOrderRequest。对于事件通知消息,该字段的值为 EventNotification。
x-aux-process-instance-id 将多个消息业务流程中的文档链接到唯一过程实例的标识。对于 RosettaNet, 它必须对最近的 30 天内的 RosettaNet 过程是唯一的。 所有交换消息作为 RosettaNet 过程实例的一部分,包括重试,都使用相同的过程实例标识。
x-aux-event-status-code 事件通知的状态码。请参阅事件消息结构中的 StatusCode 字段。
x-aux-third-party-bus-id 标识,例如传递消息的一方的 DUNS 号。如果第三方代表社区所有者主管 WebSphere Partner Gateway,则该标识可以不同于 x-aux-sender-id 和 x-aux-receiver-id。
x-aux-transport-retry-count 在这次尝试前,试图发送消息的不成功次数。如果第一次尝试就成功地发送了消息,则该字段值为 0。
x-out-file-name 通过 JMS,采用“后端集成”封装所发送消息的原始文件名。(请参阅注释2。)
content-type 消息的内容类型。
content-length 消息长度(以字节计)。
注:
  1. 为了与 IBM WebSphere MQ(JMS 提供程序)兼容,JMS 协议消息的字段使用下划线代替连字符。例如,在 JMS 消息中,使用 x_aux_sender_id 字段而不是 x-aux-sender-id 字段。
  2. 如果将目标指定为 HTTP,并将包指定为“无”,则 HTTP 头中的原始文件名被设置为"Content-Disposition: attachment;po.xml"。

    如果将目标指定为 JMS,并将包指定为“后端集成”,则原始文件名将被写为带有其他 x-aux-* 头的 x-out-file-name。

表 5 概述了传输级头信息。下列各部分提供了针对特定业务协议的传输级头信息:

传输级头和 RosettaNet 消息

表 6 描述了 WebSphere Partner Gateway 从 RosettaNet 消息获取传输级头字段值的位置。

表 6. 传输级头字段和 RosettaNet 内容
头字段 值的来源:RosettaNet 2.0 值的来源:RosettaNet 1.1
x-aux-sender-id
<(DeliveryHeader)>
   <messageSenderIdentification>
     <PartnerIdentification>
       <GlobalBusinessIdentifier>
<ServiceHeader>
   <ProcessControl>
     <TransactionControl>
       <ActionControl>  <SignalControl>
         <PartnerRouter>
           <fromPartner>
             <PartnerDescription>
               <BusinessDescription>
                 <GlobalBusinessIdentifier>
x-aux-receiver-id
<(DeliveryHeader)>
   <messageReceiverIdentification>
     <PartnerIdentification>
       <GlobalBusinessIdentifier>
<ServiceHeader>
   <ProcessControl>
     <TransactionControl>
       <ActionControl>  <SignalControl>
         <PartnerRouter>
           <toPartner>
             <PartnerDescription>
               <BusinessDescription>
                 <GlobalBusinessIdentifier>
x-aux-protocol 设置用于 RosettaNet 的值:RNSC 和 RosettaNet 2.0 的一样
x-aux-protocol-version 设置值:1.0 和 RosettaNet 2.0 的一样
x-aux-process-type

源 XPath 为:

/ServiceHeader/ProcessControl/
 pipCode/GlobalProcessIndicatorCode 

源 XPath 为:

/ServiceHeader/ProcessControl/
 ProcessIdentity/GlobalProcessIndicatorCode
x-aux-process-version

源 XPath 为:

/ServiceHeader/ProcessControl/
 pipVersion/VersionIdentifier 

各 PIP 的版本标识值使用其 PIP 规范里。

源 XPath 为:

/ServiceHeader/ProcessControl/
 ProcessIdentity/VersionIdentifier

各 PIP 的版本标识值使用其 PIP 规范里。

x-aux-payload- root-tag PIP 名称,例如 Pip3A4PurchaseOrderRequest 和 RosettaNet 2.0 的一样
x-aux-process-instance-id

对于应用程序启动的过程,该值是这个过程实例的标识。对于不是通过工作流的社区参与者启动的过程,该值是初始 RosettaNet 请求中的过程标识:

<ServiceHeader>
   <ProcessControl>
     <pipInstanceId>
       <InstanceIdentifier> 
<ServiceHeader>
   <ProcessControl>
     <ProcessIdentity>
       <InstanceIdentifier> 
x-aux-msg-id
<(RNPipServiceContent)>
 <thisDocumentIdentifier>
     <ProprietaryDocumentIdentifier> 
和 RosettaNet 2.0 的一样
x-aux-production
<ServiceHeader>
   <ProcessIndicator>
   <GlobalUsageCode>
<Preamble>
   <GlobalUsageCode>
传输级头和 AS2 消息

表 7 描述了 WebSphere Partner Gateway 从 AS2 消息获取传输级头字段值的位置。

注: 这些值是区分大小写的
表 7. 来自 AS2 内容的传输级头字段
头字段 当社区参与者向中心发送 AS/2 消息时值的来源 当将 AS2 消息发送到社区参与者时值的来源
x-aux-sender-id 在后端集成消息的 x-aux-sender-id 字段中设置了 AS2 消息的 AS2-From 头字段(后端集成消息将发送给社区管理者)。 入站的后端集成消息的 x-aux-sender-id 字段 用作 AS2 消息的 AS2-From 头值。
x-aux-receiver-id 在后端集成消息的 x-aux-receiver-id 字段中设置了 AS2 消息的 AS2-To 头字段(后端集成消息将发送给社区管理者)。 入站的后端集成消息的 x-aux-receiver-id 字段 用作 AS2 消息的 AS2-To 头值。
x-aux-protocol 在后端集成消息的 x-aux-protocol 字段设置了参与者连接的 ToProtocol(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-protocol 字段用于确定参与者连接的 FromProtocol。
x-aux-protocol-version 在后端集成消息的 x-aux-protocol-version 字段设置了参与者连接的 ToProtocolVersion(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-protocol-version 字段用作参与者连接的 FromProtocolVersion。
x-aux-process-type 在后端集成消息的 x-aux-process-type 字段设置了参与者连接的 ToProcessCode(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-process-type 字段用作参与者连接的 FromProcessCode。
x-aux-process-version 在后端集成消息的 x-aux-process-version 字段设置了参与者连接的 ToProcessVersion(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-process-version 字段用作参与者连接的 FromProcessVersion。
x-aux-payload- root-tag 仅对于定制的 XML 协议,从消息中解析出 XPATH 中指定的根标记,并在 x-aux-payload-root-tag 字段中使用该根标记。 该字段无需在入站后端集成消息中进行设置。
x-aux-process-instance-id 对于 AS2,不使用该字段。 对于 AS2,不使用该字段。
x-aux-msg-id 仅对于定制的 XML 协议,从消息中解析出 XPATH 中指定的文档标识,并在 x-aux-msg-id 字段中使用该文档标识。 该字段无需在入站后端集成消息中进行设置。
x-aux-system-msg-id 将该字段设为内部生成的该消息的唯一标识。 该字段无需在入站后端集成消息中进行设置。
x-aux-production 对于 AS2,不使用该字段。 对于 AS2,不使用该字段。
传输级头和 AS1 消息

表 8 描述了 WebSphere Partner Gateway 从 AS1 消息获取传输级头字段值的位置。

注: 这些值是区分大小写的

表 8. 来自 AS1 内容的传输级头字段
头字段 当社区参与者向中心发送 AS/1 消息时值的来源 当将 AS/1 消息发送到社区参与者时值的来源
x-aux-sender-id 在后端集成消息的 x-aux-sender-id 字段中设置 AS1 消息“Subject:ToID;FromID”头字段中的 FromID(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-sender-id 字段用作 AS1 消息“Subject: ToID;FromID”头值中的 FromID
x-aux-receiver-id 在后端集成消息的 x-aux-receiver-id 字段中设置 AS1 消息“Subject:ToID;FromID”头字段中的 ToID(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-receiver-id 字段用作 AS1 消息“Subject: ToID;FromID”头值中的 ToID
x-aux-protocol 在后端集成消息的 x-aux-protocol 字段设置了参与者连接的 ToProtocol(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-protocol 字段用于确定参与者连接的 FromProtocol。
x-aux-protocol-version 在后端集成消息的 x-aux-protocol-version 字段设置了参与者连接的 ToProtocolVersion(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-protocol-version 字段用作参与者连接的 FromProtocolVersion。
x-aux-process-type 在后端集成消息的 x-aux-process-type 字段设置了参与者连接的 ToProcessCode(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-process-type 字段用作参与者连接的 FromProcessCode。
x-aux-process-version 在后端集成消息的 x-aux-process-version 字段设置了参与者连接的 ToProcessVersion(后端集成消息将发送给社区管理者)。 入站后端集成消息的 x-aux-process-version 字段用作参与者连接的 FromProcessVersion。
x-aux-payload- root-tag 仅对于定制的 XML 协议,从消息中解析出 XPATH 中指定的根标记,并在 x-aux-payload-root-tag 字段中设置该根标记。 该字段无需在入站后端集成消息中进行设置。
x-aux-process-instance-id 对于 S21,不使用该字段。 对于 S21,不使用该字段。
x-aux-msg-id 仅对于定制的 XML 协议,从消息中解析出 XPATH 中指定的文档标识,并在 x-aux-msg-id 字段中使用该文档标识。 该字段无需在入站后端集成消息中进行设置。
x-aux-system-msg-id 将该字段设为内部生成的该消息的唯一标识。 该字段无需在入站后端集成消息中进行设置。
x-aux-production 对于 S21,不使用该字段。 对于 S21,不使用该字段。

有效内容

消息的有效内容包含消息的实际内容。有效内容的位置取决于发送消息的传输协议,如表 9 所示。

表 9. 有效内容的位置
传输协议 有效内容的位置
HTTP 协议消息 在 HTTP post的正文中
JMS 协议消息 在 JMS 消息的正文中
RosettaNet 消息 来自 PIP 的服务内容
EDI EDI 包络
ROD 或 XML 文档 ROD 或 XML 文档

有效内容可以用 Base64 编码,并且可以采用 XML 传输包络格式用于下面任何一种情况:

这个 XML 传输包络将文档包装到<transport-envelope> 根标记中。在这个根标记中,有一个包含文档有效内容的<有效内容>标记。如果存在任何附件,它们都包含在各自的<附件>标记中。要获取更多关于这些标记结构的信息,请参阅附件

WebSphere Partner Gateway 包含下列 W3C XML 模式文件,该文件描述了后端集成 XML 传输包络的结构:

wbipackaging_v1.0_ns.xsd

该模式文件位于在安装介质上的如下目录:

B2BIntegrate\packagingSchemas

根据该模式文件,可以使用任何 XML 编辑工具来验证您的后端集成 XML 以确保在向文档管理器发送该文档前它是有效的。

附件

如果业务协议允许有附件,则每个文档可以含有一个或多个附件。如果文档含有附件,则文档必须包装在一个XML 传输包络中,与有效内容中描述的一样。表 10 描述了有效内容和附件标记的 XML 属性。

表 10. payload 和 attachment 标记的 XML 属性
XML 属性 描述 是否必需?
Content-Type 标识 MIME 类型/子类型,例如 text/xml 或 image/gif。
Encoding 标识编码。因为附件和有效内容必须是用 Base64 编码的,所以该属性的唯一有效值是“Base64”。

图 13 展示了包含有效内容和一个附件的 XML 传输包络中文档的示例。

注: 本示例中的名称空间是必需的:
xmlns="http://www.ibm.com/websphere/bcg/2003/v1.0/wbipackaging"
图 13. 用于有效内容和一个附件的样本 XML 传输包络
<?xml version="1.0" encoding="utf-8"?>
 <transport-envelope
     xmlns="http://www.ibm.com/websphere/bcg/2003/v1.0/wbipackaging">
  <payload encoding="base64" contentType="application/xml">
     ...base64 encoded XML message...
   </payload>
  <attachment encoding="base64" Content-Type="text/xml">
     ...base64 encoded XML attachment...
   </attachment>
</transport-envelope>
注: 为了使用 WebSphere Interchange Server 处理包装在 XML 传输包络中的文档,WebSphere Partner Gateway 提供了附件数据处理程序。要了解更多信息,请参阅处理带附件的文档

您的文档使用哪种封装类型?

某些业务协议中的文档只能使用某些类型的封装。 例如,只有将封装方式指定为“后端集成”时才可以处理 RosettaNet。请参阅 表 12表 13表 14 以获取关于文档类型与封装类型关联信息的完整列表。

HTTP 上的后端集成封装的示例

图 14显示一个使用 HTTP 传输协议把消息从 WebSphere Partner Gateway 发送到应用程序的示例。请注意,该消息不包含附件。

图 14. 使用 HTTP 传输协议的样本消息
POST /sample/receive HTTP/1.1
 Host: sample. COM
 Content-Type: application/xml
 Content-Length: nnn    
 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: RNSC
 x-aux-protocol-version: 1.0
 x-aux-process-type: 3A4
 x-aux-process-version: V02.00
 x-aux-payload-root-tag: Pip3A4PurchaseOrderRequest
 x-aux-msg-id: 1021358129419
 x-aux-system-msg-id: 2
 x-aux-production: Production
 x-aux-process-instance-id: 123456
 x-aux-transport-retry-count: 0
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE Pip3A4PurchaseOrderRequest SYSTEM
      "3A4PurchaseOrderRequestMessageGuideline_v1_2.dtd">
 <Pip3A4PurchaseOrderRequest>
   <PurchaseOrder>
       ...
    </PurchaseOrder>
       ...   
   <thisDocumentIdentifier>
       <ProprietaryDocumentIdentifier>1021358129419
       </ProprietaryDocumentIdentifier>
    </thisDocumentIdentifier>
    <GlobalDocumentFunctionCode>Request</GlobalDocumentFunctionCode>
</Pip3A4PurchaseOrderRequest>

Copyright IBM Corp. 2003, 2005