OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-tp message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: CPP capability model draft 19112000


Here is an updated discussion of some ideas
for modelling capabilities in the CPP.

The major change between this version intended for
discussion Wednesday and the Tokyo version
is that the principles for matching the
MsgDocument subtree are proposed. 

(Why am I calling a subtree "MsgDocument"?
No really good reason except that the
data that pertains to message packaging
formats, message security formats, and
document types (dtds and xsds) that are
needed to be declared for interoperable
collaborations are gathered in this subtree.
So the subtree describes aspects of the
message as well as the documents. A
better name for this subtree would 
be welcome!)

(Some sample XML illustrations will
be coming later this week after it is
at least well-formed and has all the
elements indicated as needed when using the
approach described below.)

Dale Moberg

==================================================

A CPP capability item may be viewed as a sequence:

<Role,BP-Service,BP-Action,MsgDocument(),TransportList()>

[Please note that the above analysis is very tentative;
see the open question section for possible additions
or other changes.]

A CPP capability list consists of a sequence of capability items.

A CPP will contain a capability list and possibly some other
information, such as contact info and so on, that may be needed
to form a CPA but not needed for the merge/intersection/match
process at the core of constructing basic CPAs (earlier called
maximal intersections).

The preliminary, non-normative, non-optimized merge/intersection algorithm 
for computing a CPA from two CPPs is:

For each CPPitem in CPP(1)
  For each CPPitem in CPP(2)
      If ( Service(1) == Service(2) 
	and  Matches(Action(1),Action(2) )
	and  Matches(Role(1),Role(2)) 
        and  Matches(MsgDocument(1) , (MsgDocument(2)) 
	and there exists an X in TransportList(1) and Y in TransportList(2)
	     such that Connectable(X,Y) 
	     Then add capability pair to the base CPA
             else TBD (for example, save for constructing
                      gap list to aid human set up or
	              to arrange for automated bridging
	              technology such as communication hubs or
                      translation service hubs, etc.)

Preliminary Comments

The service identifiers need to be the same for a merge to occur.  A
service identitifier can be regarded as a package of actions, all
connected by some higher level grouping or context, not the concern of
the CPP. Without shared services somewhere, no business collaboration
can occur.

For actions, the merge algorithm will need to "know" how an action
matches some other action. What it means for an action to match
another is defined by BP. In simple cases, a match means that the
response action is one that is relevant to and expected for the
request action, at the business level of description.

Presumably for simple bilateral (two party) collaborations involving
only two roles, each service package will somehow specify an action
correlation table for a service. Therefore the TP group should work
with the BP group to make certain that the correlatives of actions are
specified in a form suitable for use by those modules computing a
basic CPA from CPPs.

Matching for roles should likewise be defined by the BP WG.  For
simple cases, matching roles will probably be superfluous because if
matching of actions occurs, presumably the parties will occupy the
appropriate roles. (?) The role concept may eventually be useful for
checking on more complicated collaborations involving multirole
BPs. The BP group is expected to provide dspecifications that will
clarify how the role match method is to be understood.

The most complicated matching will be required for two subtrees: the
MsgDocument subtree and the TransportList for that MsgDocument.

The MsgDocument subtree in a capability item is to provide a
declarative specification for the protocol data unit (PDU) that
transfers a document as part of a message transported between parties;
this data flow thereby implements one part of a BP. The information in
a MsgDocument subtree both characterizes the PDU structure explicitly
and also implicitly indicates the message processing capabilites
required in packaging and unpackaging documents within a message PDU.

Information contained in the MsgDocument subtree provides technical
information on how the BP service's actions are implemented. It is an
explicit goal to allow distinct MsgDocument packages for a given
action. The differences in these subtrees will reflect different
packaging options including differences in security profiles.

Otherwise put, the MsgDocument tree contains information concerning
those packaging conventions that need to be agreed upon so that a
message service layer can accept business information from an
application, put it on the wire using a transport, and have the
business data retrieved and made available to the application on the
other side. Likewise, it contains information needed to characterize
the response document.

For example,the RNIF layer of RosettaNet, the AS1 and AS2 layers of
IETF's EDIINT, and ebXML's TRP layer will all provide packaging
specifications, declaratively specified within MsgDocument capability
elements. The information in this subtree needs to indicate what is
needed for interoperability but may also include some information
needed for a runtime to configure itself to participate in the
security and packaging profiles. The way in which a middleware message
l ayer makes use of the MsgDocument information is entirely
implementation dependent.  The XML produced here can be thought of as
an exchange format between totally independent middleware
implementations that seek to operate using a shared "message/security
interoperabiity profile".

The basic principles governing the match at the MsgDocument level seem
to be as follows: The sender must be able to generate the document
format associated with the sender's request action and the receiver
must be able to parse the msgdocument format associated with the
request action; conversely, the receiver must be able to generate the
msgdocument format associated with the response action while the
original sender must be able to parse the msgdocument format
associated with the receiver's response format. When that occurs, and
the associated security apparatus is aligned, there should be
interoperability within the service, for the roles played in the
service's actions. So in setting up the msgdocument format capability
subtree, besides the actual format information used, there need to be
fields indicating whether a business process collaborator (we used to
say party here...)  can generate, parse, or both generate and parse a
given document format associated with a service's action. Then the
roles of the parties should allow us to check that the request
document can be generated by the sender and parsed by the receiver
while the response document can be generated by the receiver and
parsed by the original sender. Hope that is clear enough for starters.

The match needed for the transportation list is again probably Role or
Action relative in the following way:

Consider using HTTP as a transport.  The HTTP listener capability
(with its associated URL) will normally be in some sort of responder
role. If a URL is provided for the requester, that means that the
responder needs to be capable of sending the response to that
URL. Otherwise the response could be provided directly backf over the
same connection that the requester has opened.  So it will not be
sufficent to simply indicate in a transport list item that the
protocol uses HTTP; the specific way in which the collaborators can
use HTTP for their Roles and actions need to be matched up to assure
interoperability.

So if there are BP requirements that make use of the infamous
distinction between "synchronous" or "asynchronous" connections, there
needs to be a check whether the response action of Role(2) to the
request action of Role(1) comes back on the same or on a different TCP
connection. For asynchronous HTtp, each side would need to have
a HTTP listener. (This is what the "connectable" predicate will
analyze into.)

If an agreement is subject to a higher level BP indication (such as
reliability or asynchronous connections) presumably additional checks
need to be made on the candidate matches.

In the following XML example, the goal is to indicate what the
MsgDocument subtree might contain for a simple profile for ebXML using
S/MIME signatures. The TRP group and the Security TA subgroup will
need to agree on the suitability of these profiles. (This XML infoset
coming later in a separate file.)

By using profiles, there will no longer be an obligation to find the
"one security packaging scheme fits all" solution for ebXML. A variety
of packaging schemes for a given service's correlated actions can
exist, and specific agreements can be reached reflecting security
policies and specific risks for a given collaboration situation.

If we provide the tools needed to adapt to other current schemes as
well as future schemes responding to more complex future functionality
and requirements, the result will more likely be of continuing value.

I am hoping that Chris Ferris will come up with a transportation
subtree that might be suitable for the transportation list.

The other elements (action, service, and role) appear at present to be
simpler to capture and may not involve any subtrees at all. Maybe just
an attribute here and there to indicate constraints on the action, or
some special property of role... or service (versioning?)


/*===============================================
 Open questions Nov. 19 list.
=================================================*/

0. The above needs to be reviewed and analyzed from a variety of
relevant perspectives to make certain that the right information is
identified for the MsgDocument subtree.  The perspectives for review
and analysis include: what is needed in these subtrees for
interoperability, what is needed for profile information exchange,
what is needed to drive configuration of middleware layers, and what
is needed to ensure appropriate support for BP, TRP, RegRep, and other
ebXML specifications.


1. Will a publish/subscribe collaboration fit into the
request/response framework presumed above?

2. Are there other conversation models that resist being viewed as a
special cases (including chaining) of request/response? (Forks and
branches may cause problems; conversation patterns with these
structures have not yet been modelled in explicit BPs within ebXML as
far as I know, though the precondition/postcondition formalism
certainly would permit it.)

3. Are multi-role BPs accomodated here? What multi-role BPs exist at
present?  Any special transport constraints?

4. The role of signals and acknowledgements?  In the tpaML, request,
responses and other items were all tied together in a sequence if the
conversation included all these elements. Here we are trying to do at
most a duplex conversation (the so-called synchronous case) and
usually simplex parts of conversations (when request and response come
by separate connections).  Should signals, acks, nacks, error reports,
and message service messages just be viewed as actions within special
services?  This allows a CPA to be formed from capabilities that lack
the full feature sets (omitting a particular positive ack, for
example) Is this good or bad?  Should we add in the signal ack error
message layer as part of the document profile? It is already the most
complex? Should we shove it into the transportation subtree? Should we
create another subtree to handle these?  Do we have to enforce
standards or just come up with the base CPA at a technical
interoperability level that may not fully conform to some industry
specification "required" features?

5. Is Role needed? I think it will be useful to tell which side of the
Message and Document processing each party is on for the document
associated with each action.

6. Can there be multiple ways in which distinct MsgDocuments relate to
the same Service and Action? (For example in versioning...) Should
there be a MsgDocument list then? How to indicate that possibly
distinct transport lists go with distinct MsgDocuments? Probably
closer to a normal form the way the tuple is now.

7. Figure out how to decompose/uncouple the CTE choice from the
transportation option. CTEs only needed in SMTP, not in FTP or HTTP or
binary clean transports.

]






[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Search: Match: Sort by:
Words: | Help


Powered by eList eXpress LLC