There are several components to ebXML, including:
CPP describes an enterprise offering using a standard, portable format. This component describes the message-exchange mechanisms as well as business collaborations that are native to the enterprise or trading community. The ebXML standard also describes business processes within CPP, including how partners interact within a trading community. As mentioned in our discussion of process integration earlier in this book, CPP supports intra- and intercompany processes, and public versus private processes, collaborating on both sides of a two-party B2B transaction. For example, when leveraging CPP, a trading community would define all processes between partners buying parts to build a car, for example as well as semantic differences, and how processes and data need to interact to support any number of business activities. CPA describes the particular requirements, facilities, and descriptions for the transaction of trading partner business. It is formed from either manual or automated systems, deriving the intersection of their agreed-upon CPPs. Thus, the CPA becomes the de facto contract between the trading partners, creating "rules of engagement" for a specific collaborative business transaction. See Listing 12.1 for an example of a CPA. Listing 12.1[View full width] <?xml version="1.0" ?> - <tp:CollaborationProtocolAgreement xmlns:tp="http://www.ebxml.org/namespaces/ tradePartner" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xsi: schemaLocation="http://www.ebxml.org/namespaces/tradePartner http://ebxml.org/ project_teams/trade_partner/cpp-cpa-v1_0.xsd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" tp:cpa tp:version="1. 2"> <tp:Status tp:value="proposed" /> <tp:Start>2001-05-20T07:21:00Z</tp:Start> <tp:End>2002-05-20T07:21:00Z</tp:End> <tp:ConversationConstraints tp:invocationLimit="100" tp:concurrentConversations="100" /> - <tp:PartyInfo> <tp:PartyId tp:type="DUNS">123456789</tp:PartyId< <tp:PartyRef xlink:href="http://example.com/about.html" /< - <tp:CollaborationRole tp:> <tp:ProcessSpecification tp:version="1.0" tp:name="buySell" xlink:type="simple" xlink: href="http://www.ebxml.org/processes/buySell.xml" /> <tp:Role tp:name="buyer" xlink:type="simple" xlink:href="http://ebxml.org/processes/ buySell.xml#buyer" /> <tp:CertificateRef tp:cert /> - <tp:ServiceBinding tp:channel tp:package> <tp:Service tp:type="uriReference">uri:example.com/services/buyerService</tp:Service> <tp:Override tp:action="orderConfirm" tp:channel tp:package xlink: href="http://ebxml.org/processes/buySell.xml#orderConfirm" xlink:type="simple" /> </tp:ServiceBinding> </tp:CollaborationRole> - <tp:Certificate tp:cert> <ds:KeyInfo /> </tp:Certificate> - <tp:DeliveryChannel tp:channel tp:transport tp:docExchange> <tp:Characteristics tp:syncReplyMode="none" tp:nonrepudiationOfOrigin="true" tp: nonrepudiationOfReceipt="false" tp:secureTransport="true" tp:confidentiality="true" tp: authenticated="true" tp:authorized="false" /> </tp:DeliveryChannel> - <tp:DeliveryChannel tp:channel tp:transport tp:docExchange> <tp:Characteristics tp:syncReplyMode="none" tp:nonrepudiationOfOrigin="true" tp: nonrepudiationOfReceipt="false" tp:secureTransport="false" tp:confidentiality="true" tp:authenticated="true" tp: authorized="false" /> </tp:DeliveryChannel> - <tp:Transport tp:transport> <tp:SendingProtocol tp:version="1.1">HTTP</tp:SendingProtocol> <tp:ReceivingProtocol tp:version="1.1">HTTP</tp:ReceivingProtocol> <tp:Endpoint tp:uri="https://www.example.com/servlets/ebxmlhandler" tp:type="allPurpose" /> - <tp:TransportSecurity> <tp:Protocol tp:version="3.0">SSL</tp:Protocol> <tp:CertificateRef tp:cert /> </tp:TransportSecurity> </tp:Transport> - <tp:Transport tp:transport> <tp:SendingProtocol tp:version="1.1">HTTP</tp:SendingProtocol> <tp:ReceivingProtocol tp:version="1.1">SMTP</tp:ReceivingProtocol> <tp:Endpoint tp:uri="mailto:ebxmlhandler@example.com" tp:type="allPurpose" /> </tp:Transport> - <tp:DocExchange tp:docExchange> - <tp:ebXMLBinding tp:version="0.98b"> - <tp:ReliableMessaging tp:deliverySemantics="OnceAndOnlyOnce" tp:idempotency="true" tp: messageOrderSemantics="Guaranteed"> <tp:Retries>5</tp:Retries> <tp:RetryInterval>30</tp:RetryInterval> <tp:PersistDuration>P1D</tp:PersistDuration> </tp:ReliableMessaging> - <tp:NonRepudiation> <tp:Protocol>http://www.w3.org/2000/09/xmldsig#</tp:Protocol> <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction> <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm> <tp:CertificateRef tp:cert /> </tp:NonRepudiation> - <tp:DigitalEnvelope> <tp:Protocol tp:version="2.0">S/MIME</tp:Protocol> <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm> <tp:CertificateRef tp:cert /> </tp:DigitalEnvelope> </tp:ebXMLBinding> </tp:DocExchange> </tp:PartyInfo> - <tp:PartyInfo> <tp:PartyId tp:type="DUNS">987654321</tp:PartyId< <tp:PartyRef xlink:type="simple" xlink:href="http://contrived-example.com/about.html" /> - <tp:CollaborationRole tp:> <tp:ProcessSpecification tp:version="1.0" tp:name="buySell" xlink:type="simple" xlink: href="http://www.ebxml.org/processes/buySell.xml" /> <tp:Role tp:name="seller" xlink:type="simple" xlink:href="http://ebxml.org/processes/ buySell.xml#seller" /> <tp:CertificateRef tp:cert /> - <tp:ServiceBinding tp:channel tp:package> <tp:Service tp:type="uriReference">uri:example.com/services/sellerService</tp:Service> </tp:ServiceBinding> </tp:CollaborationRole> - <tp:Certificate tp:cert> <ds:KeyInfo /> </tp:Certificate> - <tp:DeliveryChannel tp:channel tp:transport tp:docExchange> <tp:Characteristics tp:nonrepudiationOfOrigin="true" tp:nonrepudiationOfReceipt="false" tp:secureTransport="true" tp:confidentiality="true" tp:authenticated="true" tp: authorized="false" /> </tp:DeliveryChannel> - <tp:Transport tp:transport> <tp:SendingProtocol tp:version="1.1">HTTP</tp:SendingProtocol> <tp:ReceivingProtocol tp:version="1.1">HTTP</tp:ReceivingProtocol> <tp:Endpoint tp:uri="https://www.contrived-example.com/servlets/ebxmlhandler" tp: type="allPurpose" /> - <tp:TransportSecurity> <tp:Protocol tp:version="3.0">SSL</tp:Protocol> <tp:CertificateRef tp:cert /> </tp:TransportSecurity> </tp:Transport> - <tp:DocExchange tp:docExchange> - <tp:ebXMLBinding tp:version="0.98b"> - <tp:ReliableMessaging tp:deliverySemantics="OnceAndOnlyOnce" tp:idempotency="true" tp: messageOrderSemantics="Guaranteed"> <tp:Retries>5</tp:Retries> <tp:RetryInterval>30</tp:RetryInterval> <tp:PersistDuration>P1D</tp:PersistDuration> </tp:ReliableMessaging> - <tp:NonRepudiation> <tp:Protocol>http://www.w3.org/2000/09/xmldsig#</tp:Protocol> <tp:HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</tp:HashFunction> <tp:SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#dsa-sha1</tp:SignatureAlgorithm> <tp:CertificateRef tp:cert /> </tp:NonRepudiation> - <tp:DigitalEnvelope> <tp:Protocol tp:version="2.0">S/MIME</tp:Protocol> <tp:EncryptionAlgorithm>DES-CBC</tp:EncryptionAlgorithm> <tp:CertificateRef tp:cert /> </tp:DigitalEnvelope> </tp:ebXMLBinding> </tp:DocExchange> </tp:PartyInfo> - <tp:Packaging tp:> <tp:ProcessingCapabilities tp:parse="true" tp:generate="true" /> - <tp:SimplePart tp: tp:mimetype="text/xml"> <tp:NamespaceSupported tp:location="http://ebxml.org/project_teams/transport/ messageService.xsd" tp:version="0.98b">http://www.ebxml.org/namespaces/messageService</tp: NamespaceSupported> <tp:NamespaceSupported tp:location="http://ebxml.org/project_teams/transport/ xmldsig-core-schema.xsd" tp:version="1.0">http://www.w3.org/2000/09/xmldsig</tp: NamespaceSupported> </tp:SimplePart> - <tp:SimplePart tp: tp:mimetype="text/xml"> <tp:NamespaceSupported tp:location="http://ebxml.org/processes/buysell.xsd" tp:version="1. 0">http://ebxml.org/processes/buysell.xsd</tp:NamespaceSupported> </tp:SimplePart> - <tp:CompositeList> - <tp:Composite tp: tp:mimetype="multipart/related" tp:mimeparameters="type=text/ xml;"> <tp:Constituent tp:idref="N40" /> <tp:Constituent tp:idref="N41" /> </tp:Composite> </tp:CompositeList> </tp:Packaging> <tp:Comment xml:lang="en-us">buy/sell agreement between example.com and contrived-example. com</tp:Comment> </tp:CollaborationProtocolAgreement>[1]
Business Process and Information Modeling is a specification for describing a business process in XML. This includes transactions, document flow, information encryption, binary collaborations, semantics, and such. Processes that leverage ebXML use these specifications when they create CPPs, which are also used to define shared business processes within a trading community. Core components are a set of ebXML schemas and other components that contain formats for business data, including customer account, amounts, and so on. They are particular to an entity, such as a particular trading partner, but not leveraged as vertical semantics (as with vertical standards within health care and financial services markets). Messaging, as you may expect, is a standard format for ebXML messages that leverages concepts from messaging middleware, including the ability to transmit information asynchronously or synchronously. This is the visible portion of the CPA and provides specific business rules for processing. ebXML messaging is built inside of SOAP, extending the SOAP protocol by frameworks that support attachments, security, and verifications of delivery. The ebXML message service provides a mechanism to exchange business messages that does not rely upon proprietary technologies and solutions. The message contains structure for message headers used for routing and a payload section for the content. As you may remember, in our message discussion in the middleware chapters (e.g., JMS), we talked about similar structures.
The ebXML message service is broken down, at least conceptually, into three parts:
Registry and Repository services maintain CPPs, CPAs, ebXML components, and other ebXML artifacts such as JAR files, video, WSDL, and semantics. This is a database, when you get right down to it, providing query capabilities that allow users to look for relevant content and even information about trading partners. The services defined by CPPs can be published to UDDI. This portion of ebXML provides a Web service discovery scenario. Thus, a trading partner would first search for a shared service in UDDI, which may indeed contain reference to a CPP that actually exists in the ebXML Registry, which in turn provides access to information about the trading partner. From there you can use the CPA to create a partnership agreement for B2B transactions. We'll talk more about Registry/Repository services in the next section. The ebXML Registry provides a core set of services that enable the exchange of information between trading partners. As you may recall, the registry is like a database, allowing a trading partner to place and obtain information pertaining to the interaction between trading partners. The registry maintains an interface to metadata for a registered item, and access to an ebXML Registry is gained through the use of several APIs (see Figure 12.2). To facilitate semantic recognition of business process and information meta models, the registry provides a mechanism for incorporating human-readable descriptions of registry items. Moreover, you can assign UID keys from other existing business processes and information meta models, such as RosettaNet, and implement them using XML syntax. Figure 12.2. Registry architecture.
|