本节提供了下列信息,说明了如何利用 WebSphere Business Integration Connect 规划您的后端集成:
消息的业务协议决定了文档格式。业务协议会影响您在规划后端系统集成时必须制定的许多决策。 业务协议的选择决定了必须使用的封装方法,它反过来会影响可使用的消息传输协议。
要获取业务协议的全面描述,请参阅管理向导。 本节描述了针对以下各业务协议的集成信息:
Business Integration Connect 使中心成员可以使用以下 Web Service:
必须向社区参与者提供 Business Integration Connect 生成的公共 WSDL。值得注意的是,社区参与者调用 Web Service 的 URL 是上载该 Web Service 时指定的公共 URL。Business Integration Connect 充当一个代理。 它从参与者那接收一个 SOAP 消息并确定对应的专用 Web Service。 然后它使用相同的 SOAP 消息调用专用的 Web Service(由社区管理员提供)。 接着将社区管理者返回的响应返回给参与者。
值得注意的是,多个合作伙伴可提供同一个 Web Service 接口。Business Integration Connect 使社区管理者通过在上载 Web Service 时控制台中指定的 Web Service URL 使用这个 Web Service。另外,社区管理者必须提供 URL 参数来标识“接收方合作伙伴”。请参阅中心配置指南获取更详细的信息。Business Integration Connect 充当一个代理。它接收来自社区管理者的 SOAP 消息并确定对应的 Web Service 和“接收方合作伙伴”。 然后它使用相同的 SOAP 消息调用合作伙伴提供的 Web Service。 接着将合作伙伴返回的响应消息返回给社区管理者。
请参阅中心配置指南以获取更多信息,包括如何为 Web Service 设置文档流定义。
您可以在社区参与者之间收发 cXML 文档。当 Business Integration Connect 接收到来自社区参与者的 cXML 文档时,在把该文档发送到社区管理者的后端系统前,它验证该文档并进行转换(如果指定的话)。注意转换不能用来同步 cXML 消息。在同步交换时,后端系统生成一个响应,Business Integration Connect 将该响应返回给社区参与者(如果与消息相对应)。
需要发送 cXML 文档的社区管理者的后端系统可以执行以下两个操作之一:
请参阅管理员指南以获取更多信息,包括如何为 cXML 设置文档流定义。
如果 RosettaNet 消息具有后端集成封装(也就是说,它们必须具有传输级头),则 Business Integration Connect 可以提供对 RosettaNet 1.1 和 2.0 的支持。这些消息必须使用 HTTP 或 JMS 传输协议。传输级头保留了元信息(它们不属于 PIP),使得 Business Integration Connect 可以正确地路由消息。
例如,假设一个应用程序希望使用 RosettaNet 通过 HTTP 向社区参与者发送消息。该应用程序提供了 RosettaNet 服务内容,并添加了传输级头。该头标识出哪个社区参与者将处理该请求、将发送哪个 PIP、PIP 版本以及其它信息。 该消息能让 Business Integration Connect 向社区参与者发送正确的 PIP 。
可以在中心配置指南中找到关于设置 RosettaNet 支持和配置 PIP 的信息。
因为 Business Integration Connect 把应用程序与社区参与者中分离开(社区参与者是 RosettaNet 服务提供者),所以 Business Integration Connect 提供了事件通知。 例如,如果 Business Integration Connect 不能向参与者发送 PIP,则事件通知会让 Business Integration Connect 通知应用程序。然后该应用程序可以处理故障。
事件通知消息是一个 XML 文档,它含有关于发生在 Business Integration Connect 或应用程序内的事件的消息。这些消息的结构与其它任何 Business Integration Connect 所收发消息的结构一样;也就是说它们有传输级头和有效负载。可以选择将 Business Integration Connect 配置成发送(或不发送)事件通知消息。
表 1 总结了 Business Integration Connect 可以发送到后端系统的事件通知消息。
事件条件 | 事件通知消息 |
---|---|
Business Integration Connect 向社区参与者传递一个 RosettaNet 文档,并接收一个“接收应答”。
| 事件 100 |
Business Integration Connect 通过生成 0A1 消息并将其传递给社区参与者来取消 PIP。
| 事件 800 |
Business Integration Connect 收到来自社区参与者的“接收应答”异常或常规异常。
| 事件 900 |
如果将 Business Integration Connect 配置成使用“排除列表管理”来发送消息,则当它处理任何其它 PIP 时,它可以向目的地应用程序发送 0A1 消息。请参阅管理员指南中的『“管理排除列表 ”』。
应用程序可以向 Business Integration Connect 发送一个事件通知消息来取消 RosettaNet PIP。
事件通知消息有标准的传输级头,并带有被设置为 XMLEvent 的 x-aux-process-type 字段。但是,消息的有效负载有特定的结构,如 图 2 中所示的样本 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>
表 2 描述在事件有效负载里的各个字段。
字段 | 描述 |
---|---|
StatusCode | 消息类型。有效值为:
|
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) |
图 3 显示了使用 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>
封装类型决定了 Business Integration Connect 向后端系统发送消息所使用的格式。
您可以使用社区控制台来建立与社区参与者之间的连接,并且指定 Business Integration Connect 和后端系统之间使用的封装。要确定使用何种封装类型,必须了解下列问题:
要获取更多关于如何设置合作伙伴连接的信息,请参阅中心配置指南。
当使用 Business Integration Connect 进行集成时,不是所有的封装类型都是有效的。表 3 列出了 Business Integration Connect 充当社区管理者时有效的封装类型。
封装类型 | 描述 |
---|---|
“无”封装 |
使 Business Integration Connect 向后端系统发送的消息中无任何头数据 |
“后端集成”封装 |
向消息头添加额外的属性,并且可选地,将消息内容包装到 XML 传输包络中。
|
当封装设为“无”时,Business Integration Connect 既不在它将消息发送给后端系统时添加一个传输级头,也不期望它接收来自后端系统消息时候有一个传输级头。Business Integration Connect 仅向后端系统发送消息。文档控制路由表中的信息。
当封装设为“后端集成”时,后端系统收发的消息必须含有下面组件:
头和有效负载是必需的部分,而附件是可选的。 下面各节描述了使用“后端集成”所封装文档的每个组件。
传输级头包含 Business Integration Connect 用来处理消息以及将消息路由到正确目的地的信息。传输级头是双向的,从而 Business Integration Connect 收发的所有消息都含有必需的字段和任何适用的可选字段。
表 4 列出了传输级头的各字段。
头字段 | 描述 | 是否需要? |
---|---|---|
x-aux-sender-id | 消息发送者的标识,例如 DUNS 号。 | 是 |
x-aux-receiver-id | 消息接收者的标识,例如 DUNS 号。 | 是 |
x-aux-protocol | 消息内容的协议。有效值包括用于 RosettaNet 服务内容的 RNSC、XMLEvent 和二进制。对于 Business Integration Connect,该字段的值的优先级高于有效负载中的任何协议字段。 | 是 |
x-aux-protocol-version | 消息内容协议的版本。 | 是 |
x-aux-process-type | 要执行的过程或正被发送消息的类型。对于 RosettaNet 消息,这是 PIP 代码(例如 3A4)。 对于事件消息,这是 XMLEvent,而对于二进制消息,这是二进制。对于 Business Integration Connect,该字段的值的优先级高于有效负载中的任何过程字段。 | 是 |
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 的响应时,Business Integration Connect 在请求中使用 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 号。如果第三方代表社区所有者托管 Business Integration Connect,则该标识可以不同于 x-aux-sender-id 和 x-aux-receiver-id。 |
|
x-aux-transport-retry-count | 在这次尝试前,试图发送消息的不成功次数。如果第一次尝试就成功地发送了消息,则该字段值为 0。 |
|
content-type | 消息的内容类型。 |
|
content-length | 消息长度(以字节计)。 |
|
表 4 概述了传输级头信息。下列各节提供了针对特定业务协议的传输级头信息:
表 5 描述了 Business Integration Connect 从 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> |
表 6 描述了 Business Integration Connect 从 AS2 消息获取传输级头字段值的位置。
头字段 | 值的来源 |
---|---|
x-aux-sender-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,在后端集成消息的 x-aux-sender-id 字段中设置了 AS2 消息的 AS2-From 头字段(后端集成消息将发送给社区管理者)。 当 AS2 消息发送给社区参与者时,入站的后端集成消息的 x-aux-sender-id 字段 被用作 AS2 消息的 AS2-From 头值。 |
x-aux-receiver-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,在后端集成消息的 x-aux-receiver-id 字段中设置了 AS2 消息的 AS2-To 头字段(后端集成消息将发送给社区管理者)。 当将 AS2 消息发送给社区参与者时,入站的后端集成消息的 x-aux-receiver-id 字段被用作 AS2 消息的 AS2-To 头值。 |
x-aux-protocol | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,在后端集成消息的 x-aux-protocol 字段中设置了参与者连接的 ToProtocol(后端集成消息将发送给社区管理者)。 当 AS2 消息发送给社区参与者时,入站后端集成消息的 x-aux-protocol 字段被用作确定参与者连接的 FromProtocol。 |
x-aux-protocol-version | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,在后端集成消息的 x-aux-protocol-version 字段里设置了参与者连接的 ToProtocolVersion(后端集成消息将发送给社区管理者)。当 AS2 消息发送给社区参与者时,入站的后端集成消息的 x-aux-protocol-version 字段被用作参与者连接的 FromProtocolVersion。 |
x-aux-process-type | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,在后端集成消息的 x-aux-process-type 字段里设置了参与者连接的 ToProcessCode(后端集成消息将发送给社区管理者)。当 AS2 消息发送给社区参与者时,入站的后端集成消息的 x-aux-process-type 字段 将被用作参与者连接的 FromProcessCode。 |
x-aux-process-version | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,在后端集成消息的 x-aux-process-version 字段里设置了参与者连接的 ToProcessVersion(后端集成消息将发送给社区管理者)。当 AS2 消息发送给社区参与者时,入站的后端集成消息的 x-aux-process-version 字段 被用作参与者连接的 FromProcessVersion。 |
x-aux-payload- root-tag | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 向 AS 消息时,仅对于定制的 XML 协议,从消息中解析出的 XPATH 中指定的根标记,并在 x-aux-payload-root-tag 字段中使用该根标记。当 AS2 消息发送给社区参与者时,不需要在入站的后端集成消息中设置该字段。 |
x-aux-process-instance-id | 对于 AS2,不使用该字段。 |
x-aux-msg-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,仅对于定制的 XML 协议,从消息中解析出的 XPATH 中指定的文档标识,并在 x-aux-payload-root-tag 字段中使用该文档标识。当 AS2 消息发送给社区参与者时,不需要在入站的后端集成消息中设置该字段。 |
x-aux-system-msg-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS2 消息时,将该字段设为内部生成的该消息唯一标识。当 AS2 消息发送给社区参与者时,不需要在入站的后端集成消息中设置该字段。 |
x-aux-production | 对于 AS2,不使用该字段。 |
表 7 描述了 Business Integration Connect 获取 AS1 消息中传输级头字段值的位置。
头字段 | 值的来源 |
---|---|
x-aux-sender-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,在后端集成消息的 x-aux-sender-id 字段中设置 AS1 消息“Subject:ToID;FromID”头字段中的 FromID(后端集成消息将发送给社区管理者)。当 AS1 消息发送给社区参与者时,入站后端集成消息的 x-aux-sender-id 字段被用作 AS1 “Subject: ToID;FromID”头值中的 FromID 。 |
x-aux-receiver-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,在后端集成消息的 x-aux-receiver-id 中设置 AS1 消息“Subject: ToID;FromID”头字段中的 ToID(后端集成消息将发送给社区管理者)。当 AS1 消息发送给社区参与者时,入站后端集成消息的 x-aux-receiver-id 字段被用作 AS1 消息“Subject: ToID;FromID”头值中的 FromID。 |
x-aux-protocol | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,在后端集成消息的 x-aux-protocol 字段设置参与者连接的 ToProtocol(后端集成消息将发送给社区管理者)。 当 AS1 消息发送给社区参与者时,入站后端集成消息的 x-aux-protocol 字段 被用作参与者连接的 FromProtocol。 |
x-aux-protocol-version | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,在后端集成消息的 x-aux-protocol-version 字段里设置参与者连接的 ToProtocolVersion(后端集成消息将发送给社区管理者)。当 AS1 消息发送给社区参与者时,入站后端集成消息的 x-aux-protocol-version 字段被用作参与者连接的 FromProtocolVersion。 |
x-aux-process-type | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,在后端集成消息的 x-aux-process-type 字段里设置参与者连接的 ToProcessCode(后端集成消息将发送给社区管理者)。当 AS1 消息发送给社区参与者时,入站后端集成消息的 x-aux-process-type 字段被用作参与者连接的 FromProcessCode。 |
x-aux-process-version | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,在后端集成消息的 x-aux-process-version 字段里设置参与者连接的 ToProcessVersion(后端集成消息将发送给社区管理者)。当 AS1 消息发送给社区参与者时,入站后端集成消息的 x-aux-process-version 字段被用作参与者连接的 FromProcessVersion。 |
x-aux-payload- root-tag | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,仅对于定制的 XML 协议,从消息中解析出在 XPATH 中指定的根标记,并在 x-aux-payload-root-tag 字段中设置该根标记。当 AS1 消息发送给社区参与者时,不需要在入站后端集成消息中设置该字段。 |
x-aux-process-instance-id | 对于 S21,不使用该字段。 |
x-aux-msg-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,仅对于定制的 XML 协议,从消息中解析出在 XPATH 中指定的文档标识,并在 x-aux-payload-root-tag 字段中使用该文档标识。当 AS1 消息发送给社区参与者时,不需要在入站后端集成消息中设置该字段。 |
x-aux-system-msg-id | 当社区参与者向 Business Integration Connect Enterprise Edition 或 Advanced Edition 发送 AS1 消息时,将该字段设为内部生成的该消息唯一标识。当 AS1 消息发送给社区参与者时,不需要在入站后端集成消息中设置该字段。 |
x-aux-production | 对于 S21,不使用该字段。 |
消息的有效负载包含消息的实际内容。有效负载的位置取决于 发送消息的传输协议,如表 8 所示。
传输协议 | 有效负载的位置 |
---|---|
HTTP 协议消息 | 在 HTTP post的正文中 |
JMS 协议消息 | 在 JMS 消息的正文中 |
RosettaNet 消息 | 来自 PIP 的服务内容 |
通过 AS2 发送 EDI |
EDI 消息
有效负载不和 XML 包络合并除非消息还携带了一个或多个附件。要获取有关用于封装附件的 XML 包络和标记的信息,请参阅附件。
|
有效负载可以用 Base64 编码,并且可以作为 XML 格式 传输包络格式出现在下面任何一种情况下:
包含附件的文档必须包装到 XML 传输包络中。要获取更多关于如何格式化附件的信息,请参阅附件。
要将文档包装到 XML 传输包络而忽略它是否包含附件,从概要文件的 B2B 功能屏幕将后端集成包络标志设为“是”。 例如,要在中心操作者的概要文件中设置这个标志,选择:
概要文件>中心操作者> B2B 功能
对后端集成单击“编辑”以查看包络标志。
这个 XML 传输包络将文档包装到 <transport-envelope> 根标记中。在这个根标记中,有一个包含文档有效负载的 <payload> 标记。如果存在任何附件,它们都包含在各自的<attachment>标记中。要获取更多关于这些标记结构的信息,请参阅附件。
Business Integration Connect 包括下列 W3C XML 模式文件,该文件描述了后端集成 XML 传输包络的结构:
wbipackaging_v1.0_ns.xsd
该模式文件位于在安装介质上的如下目录:
B2BIntegrate\packagingSchemas
根据该模式文件,可以使用任何 XML 编辑工具来验证您的后端集成 XML 以确保在向文档管理器发送该文档前它是有效的。
如果业务协议允许有附件,则每个文档可以含有一个或多个附件。如果文档含有附件,则文档必须包装在一个 XML 传输包络中,与有效负载中描述的一样。表 9描述了 payload 和 attachment 标记中的 XML 属性。
表 9. payload 和 attachment 标记的 XML 属性
XML 属性 | 描述 | 是否需要? |
---|---|---|
Content-Type | 标识 MIME 类型/子类型,例如 text/xml 或 image/gif。 | 是 |
Encoding | 标识编码。因为附件和有效负载必须是用 Base64 编码的,所以该属性的唯一有效值是“Base64”。 | 否 |
图 4 展示了包含有效负载和一个附件的 XML 传输包络中文档的示例。
xmlns="http://www.ibm.com/websphere/bcg/2003/v1.0/wbipackaging"
<?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>
某些业务协议中的文档只能使用某些类型的封装。 例如,只有将封装方式指定为“后端集成”时才可以处理 RosettaNet。请参阅表 15 和表 20 以获取关于文档类型与封装类型关联信息的完整列表。
图 5 显示了一个使用 HTTP 传输协议把消息从 Business Integration Connect 发送到应用程序的示例。请注意,该消息不包含附件。
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>
当后端系统和 WebSphere Business Integration Connect 相互发送消息时,双方必须使用相同的消息传输协议。 消息传输协议定义了 发送消息时所用的通信协议。
Business Integration Connect 通过它的后端集成接口与后端系统进行通信。表 10 列出了该后端集成接口支持的传输协议。
表 10. Business Integration Connect 支持的传输协议
传输协议 | 要获取更多信息 |
---|---|
HTTP 或 HTTPS | HTTP 传输协议 |
文件系统文件 | Enterprise Edition 和 Advanced Edition 的文件系统协议 |
JMS | JMS 协议 |
请参阅表 15 和表 20 以获取关于哪些传输协议可用于消息内容和后端集成封装特定组合的信息。
为了使用 HTTP 协议发送消息,Business Integration Connect 使用了 HTTP/S 1.1。为了接收来自后端系统的消息,Business Integration Connect 既支持 HTTP/S V1.0 也支持 V1.1。
HTTP 消息可以包括集成封装属性。 是否包括这些属性取决于与参与者连接相关的封装类型,如下所述:
当在 Business Integration Connect 和应用程序之间发送 HTTP 或 HTTPS 消息以进行异步交换时,会发生下面的步骤:
如果交换是 同步(例如,对于 SOAP 或 cXML),在相同的 HTTP 连接中,会返回一个带 HTTP 200 消息的响应。
要使用 HTTP 协议将消息发送到 Business Integration Connect,后端系统将采用如下步骤:
传输级头中的 Content-Type 属性定义了消息中使用的编码。
对于后端集成封装,后端系统添加了 Business Integration Connect 所需的协议头属性。
要在这个方向启用 HTTP 消息交换,使用社区控制台的“目标详细信息”屏幕来为入站文档设置一个目标。要了解更多信息,请参阅从后端系统接收文档。
要使用 HTTP 协议从 Business Integration Connect 接收消息,后端系统将采用如下步骤:
要在这个方向启用 HTTP 消息交换,使用社区控制台的“网关”屏幕来为出站文档设置一个网关。要了解更多信息,请参阅向后端系统发送文档。
JMS 协议基于 Java 消息服务(JMS),它通过事务性的和持久的 JMS 队列来传递消息,JMS 队列是由 WebSphere MQ 之类的工具提供的。JMS 协议支持下列 JMS 消息类型:
在 JMS 协议中,发送系统使用入队操作来把 JMS 消息发送到接收系统。接收系统从队列里取得消息,持久保存消息,然后 执行出队操作以从队列中除去消息。 从这时起,接收系统可以 异步地处理消息。
JMS 消息可以包括集成封装属性。 是否包括这些属性取决于与参与者连接相关的封装类型,如下所述:
除二进制消息外,Business Integration Connect 支持在需要时发送和接收任何一种封装类型的 JMS 消息。
从应用程序接收到的二进制消息必须含有后端集成封装。反之则不然,因为 Business Integration Connect 支持使用任何一种封装类型相应用程序发送二进制消息。
要使用 JMS 协议将消息发送到 Business Integration Connect,后端系统将采用如下步骤:
content_type 头属性设置消息的内容类型,而 content_length 头属性指定消息的长度(以字节计)。
对于后端集成封装,应用程序添加必需的 JMS 头属性。
要在这个方向启用 JMS 消息交换,使用社区控制台的“目标详细信息”屏幕来为入站文档设置一个目标。要了解更多信息,请参阅从后端系统接收文档。
要使用 JMS 协议从 Business Integration Connect 接收消息,后端系统将采用如下步骤:
要在这个方向启用 JMS 消息交换,使用社区控制台的“网关”屏幕来为出站文档设置一个网关。要了解更多信息,请参阅向后端系统发送文档。
文件系统协议使得 Business Integration Connect 能够通过把消息放入已定义的目录结构中来发送消息。Business Integration Connect 通过从目录结构中读取消息来接收它们。文件系统协议支持下列各项:
要使用文件系统协议将消息发送到 Business Integration Connect,应用程序必须采用下列步骤:
要在这个方向启用文件系统消息,使用社区控制台的“目标详细信息”屏幕来为入站文档设置一个目标。消息的目标决定了 Business Integration Connect 轮询的目录。当您创建目标时,Business Integration Connect 会为该目标创建一个 Documents 目录及其子目录,如下所示。
<doc_root> Documents Production Test <other destination types>
Business Integration Connect 定期轮询 Documents 目录及其子目录以检测消息文件。如果它发现消息,则 Business Integration Connect 持久存储该消息,然后从目录中删除该消息。然后 Business Integration Connect 按正常方式处理该消息。请参阅中心配置指南以获取关于如何创建目标的信息。
要使用文件系统协议接收消息,应用程序应当执行如下步骤:
要在这个方向下启用文件系统消息交换,使用社区控制台的“网关”屏幕来为出站文档设置一个网关。Business Integration Connect 将消息文件放入网关定义的 Documents 目录。通过根据网关定义目的地目录,每个参与者连接都可以拥有一个不同的目录。 要获取关于网关的信息,请参阅中心配置指南。
Business Integration Connect 提供了与许多不同后端应用程序集成的能力。通常,通过后端系统访问后端应用程序集成代理程序。 在本指南中包含了在表 11 中列出的与后端系统的集成。
表 11. Business Integration Connect 支持的后端系统
后端系统 | 要获取更多信息 |
---|---|
WebSphere InterChange Server | InterChange Server 集成简介 |
WebSphere Business Integration Message Broker | 与 WebSphere Business Integration Message Broker 集成 |
WebSphere Data Interchange | 与 WebSphere Data Interchange 集成 |