Oracle WS-CDL comparison against the

Web Services Choreography Requirements

 

 

 

 

 

 

 

Authors:

 

Nickolaos Kavantzas (Oracle)

 

Ashwini Surpur (Oracle)

 

 

 

Version:

                        V1.0 (date: Oct 17th 2003)

 

 

 

 

 


Charter Constraints

 

D-CR-001     

All specified choreography descriptions MUST be compatible with WSDL 1.2.

BurdettML  - NA

The spec defines an abstract choreography. A separate binding is required to map to WSDL

 

OracleCDL -  Met

The spec is a WSDL 1.2 based language

 

 

Sep 16th Comment –

Our Comment –

 

 

D-CR-014     

A choreography SHOULD not be bound to any specific implementation.

BurdettML – Met

The spec defines an abstract choreography and so is implementation independent

 

OracleCDL – Met

The abstract part is separate from binding part. So is implementation independent.

 

 

Sep 16th Comment – Wordsmithing "Implementation"

Our Comment -

 

 

Interoperability

 

D-CR-010           

A choreography MAY provide an extensible binding mechanism such that choreographies could be bound to diverse technologies.

 

BurdettML – NA

The spec defines an abstract choreography. However it is designed to be used with a binding  mechanism but does not define one

 

OracleCDL – Met

The spec though focuses on WSDL, it is abstract enough to allow binding to different technologies.

 

 

Sep 16th Comment – Wordsmithing needed (binding mechanism, diverse technology)

 

Our Comment – Is this is the case, then what is the meaning of MUST be compatible with WSDL 1.2(conflicting?)

 

 

D-CR-023     

A choreography definition language MUST NOT be restricted to any single implementation.

BurdettML - Met

The spec defines an abstract choreography and so is implementation independent

 

OracleCDL – Met

Abstract enough.

 

 

Sep 16th Comment – Wordsmithing

 

Our Comment - duplicate of 14

 

 

Management & Provisioning

 

D-CR-004     

It MUST be possible to query the state of a choreography.

BurdettML  - Not Met

The spec specifies the states that may exist when performing a choreography but does not specify how to query them.

 

OracleCDL – Not Met

 

 

Sep 16th Comment - Further discussion; contentious

 

Our Comment – Who must query the state? The peers? Why? I must know what state I am in, right?

 

 

D-CR-052    

It MUST be possible to manage choreographies and their relationships and the messages exchanged between them.

 

BurdettML - Don't know. What is meant by "manage" in this context.

 

OracleCDL - Ditto

 

 

Sep 16th Comment – Clarification

 

Our Comment - Ditto

 

 

D-CR-053     

It MUST be possible to observe the state of a choreography as it occurs in time.

BurdettML – Not Met

The spec specifies the states that may exist when performing a choreography but does not specify how to observe them.

 

OracleCDL – Not Met

 

 

Sep 16th Comment – Wordsmithing         

 

Our Comment – Who must be able to observe the state? How is it different from issue 004?

 

 

D-CR-056           

It MUST be possible to create "limited global views" of a choreography, where not all interactions are presented

 

BurdettML - Not Met

The spec allows choreographies to be extended but does not define how to create restricted views.

 

OracleCDL – Partially Met

We have compositions which allow a Business Analyst to compose the choreographies such that a limited view is possible.

 

 

Sep 16th Comment – Reclassify (Composition)

 

Our Comment – Are we corrected assuming compositions allow limited global view to be presented if properly designed?

 

 

D-CR-013     

A choreography MUST support for a specific observer role.

 

BurdettML – Not Met

There is no separate observer role

OracleCDL - Ditto

 

 

Sep 16th Comment – Delete; Implementation

 

Our Comment - Ditto

 

 

D-CR-016           

A choreography MUST provide a global model for presenting its interactions from the point of view of all the parties and not from the point of view of just one party.

 

BurdettML – Met

Fully supported.

 

OracleCDL - Met

 

 

Sep 16th Comment – Reclassify("Charter Constraint")

 

Our Comment -

 

 

D-CR-020           

It MUST be possible and practicable to store instances of use of choreographies in a repository, and to be a able to search for such instances and to retrieve them.

 

BurdettML – Not Met

The spec defines an abstract choreography and does describe or define *instances* of choreographies or how to manage or use them.

 

OracleCDL – Not Met

 

 

Sep 16th Comment – Delete; implementation feature not part of the language

 

Our Comment - Ditto

 

 

Exception Handling

 

D-CR-005     

A choreography MUST provide exception handling that allows propagation of errors.

 

BurdettML – Partially Met

The spec allows definitions of states that are error states but does not define how those states are propagated.

 

OracleCDL – Met

Exception handling and propagation across choreography boundaries is defined.

 

 

Sep 16th Comment – Wordsmithing

 

Our Comment -

 

 

D-CR-009     

A choreography MUST provide the ability to transition to a distinct state when a timeout occurs.

 

BurdettML – Partially Met

The spec would allow the specification choreographies with states that corresponded to a timeout.

 

OracleCDL - Partially Met

Interaction timeouts are supported. Choreography timeout is not specified.

 

 

Sep 16th Comment – Clarification

 

Our Comment – Ditto

 

 

D-CR-018     

A choreography SHOULD define a standardized way to recover from catastrophic failure.

 

BurdettML – Not Met

Although a choreography could be defined that allowedattempts at a recovery from a catastrophic failure.

OracleCDL – Partially Met

Forward and backward recovery is defined. But we do not specify catastrophic failures explicitly.

 

 

Sep 16th Comment – Clarification; Leave till later

 

Our Comment - Ditto

 

 

D-CR-026     

A choreography MUST support robust exception handling.

BurdettML - Not Met

Although there has been some discussion on the list on how it could be extended to do this.

 

OracleCDL - Met

 

 

Sep 16th Comment – Clarify in conjunction with CR-005

 

Our Comment - Ditto

 

 

D-CR-027    

Error/fault handling and compensation features MUST to be able to be expressed in the choreography definition language.

BurdettML – Met

The spec allows states to be defined that correspond to errors or faults. The existence of these states allows the definition of the compensation interactions and messages required.

OracleCDL – Met

It is an extension of 005 and/or 026.

 

 

Sep 16th Comment – Clarification("Do we need to distinguish")

 

Our Comment - Ditto

 

 

D-CR-030           

A choreography MUST be able to distinguish error and regular state transitions, and to describe unhandled exceptions.

 

BurdettML – Partially Met

Only Met in the sense that semantic definitions associated with a state can identify them as regular or error. There is no attribute that identifies this.

OracleCDL – Met on part a, Partially Met on part b of the requirement

Normal states are distinguished from exception states.

No implicit exception handling mentioned in the doc.

 

 

Sep 16th Comment – Clarification on unhandled exceptions

 

Our Comment - Ditto

 

 

D-CR-031           

A choreography MUST support an exception condition for Delivery Failure - The message was sent but was (probably) not received.

 

BurdettML – Partially Met

Only Met in the sense that semantic definitions associated with a state can identify them as regular or error. There is no attribute that identifies this.

 

OracleCDL – Partially Met

Ditto

 

 

Sep 16th Comment – Duplication candidate

 

Our Comment –

 

 

D-CR-032           

It MUST be possible to manage exceptions between choreographies, and to include exception handling information in dependency management.

 

BurdettML - Don't know. What is meant by "exceptions between choreographies" in this context?

 

OracleCDL - Met

 

 

Sep 16th Comment – Clarification on propagation

 

Our Comment – Clarification or duplicate

 

 

D-CR-033     

A choreography MUST provide support for defining behavior of the system, when valid error/exception messages arrive for choreography instances after their completion (or before their initiation).

 

BurdettML – Met

The spec would allow the definition of a condition where a message was received after the instance was complete. Interactions/messages could then be defined that would follow.

OracleCDL – Not Applicable

 

Sep 16th Comment – Deletion

 

Our Comment - Deletion. Implementation issue.

 

 

D-CR-043    

It MUST be possible to differentiate errors (unknown and fatal) and exceptions (known and potentially recoverable) in the context of choreography.

 

BurdettML – Met

Exceptions and errors are defined as a state and a state is completely flexible in its definition and meaning.

 

OracleCDL – Met

State is flexible enough to cover these aspects

 

Sep 16th Comment – Deletion; Further Discussion

 

Our Comment – Errors are programming concept. Exceptions are language concept. Why should the language care about errors?

 

 

D-CR-061           

A choreography MUST provide the ability to transition to a predefined state when an exception occurs.

 

BurdettML – Met

The spec would allow the definition of a choreography that transitioned to a state when an exception occurred.

 

OracleCDL – Met

 

 

 

Sep 16th Comment – Duplicate

 

Our Comment –  Duplicate of 26, Handling exception means transitioning to a distinct state right?



D-CR-064    

If a process detects that a choreography is not being followed correctly, then the process SHOULD be able to use the choreography definition to identify exactly what went wrong.

BurdettML – Met

The spec is designed so that the choreography definition can be used for this purpose

 

OracleCDL – Met

 

 

Sep 16th Comment – Reclassify to Management and mild word smithing

 

Our Comment - Reclassify to Management and mild word smithing



D-CR-065     

A choreography definition language MUST support the following exception: message format error -the components of the message were not validly constructed.

 

BurdettML – Met

The spec allows the specification of a state that corresponds to this.

 

OracleCDL –  Met

 

 

Sep 16th Comment – Deletion candidate

 

Our Comment – Implementation detail or should we define standard Exceptions in the language?

 

 

D-CR-066

A choreography definition language MUST support the following exception: message Content structure error.

 

BurdettML – Met

See response to D-CR-065

 

OracleCDL – Met

 

 

Sep 16th Comment – Deletion candidate

 

Our Comment –  – Implementation detail or should we define standard Exceptions in the language?



D-CR-067

A choreography definition language SHOULD support exceptions whereby a given service component could be sent at any point in the transaction.

 

BurdettML – Met

The spec is completely flexible in terms of the conditions that apply when sending any message.

 

OracleCDL – Met

 

 

Sep 16th Comment – Clarification (We don't understand any of these)

 

Our Comment – Ditto

 

 

D-CR-068            

Exception types MUST be limited to the ones that will be used in the choreography definition language.

 

BurdettML -  Partially Met

Different exception types can be defined as states. However, standard exception types are not defined.

 

OracleCDL – Partially Met

Different exception types can be defined as states. However, standard exception types are not defined.

 

 

Sep 16th Comment – Deletion candidate

 

Our Comment –  Clarification

 

 

D-CR-069            

It MUST be possible to model different states for termination of the choreography (e.g. failure and success).

 

BurdettML – Met

Although the semantic definitions are used to identify which present failure and which success.

 

OracleCDL – Met

 

 

Sep 16th Comment – Duplication candidate

 

Our Comment –

 

 

D-CR-070           

A choreography definition language MUST support the following exception: transmission error -message not sent.

 

BurdettML – Met

See response to D-CR-065

 

OracleCDL – Met

 

 

Sep 16th Comment – Deletion candidate

 

Our Comment – – Implementation detail or should we define standard Exceptions in the language?

 

 

Messaging and Protocols

 

D-CR-002     

A choreography MUST be independent of message formats.

 

BurdettML – Met

Fully supported.

 

OracleCDL – Met

 

 

Sep 16th Comment – Wordsmith (Chor vs CDL)

 

Our Comment – Ditto

 

 

D-CR-007           

A choreography SHOULD express the types of messages a participant may send, and the types of messages/responses the participant should anticipate receiving from the other participant(s) (including time-outs) based on the apparent state of the exchange.

BurdettML – Met

Fully supported.

 

OracleCDL – Met

 

 

Sep 16th Comment – Wordsmith (Must, apparent state of the exchange)

 

Our Comment –

 

 

D-CR-011    

A choreography SHOULD describe exchanges of information that change the state of the process.

 

BurdettML – Met

Fully supported.

 

OracleCDL – Met

If the term process state means only observable state, then we support this.

 

 

Sep 16th Comment – Duplication (merge with 007)

 

Our Comment – We believe that manipulation of non-observable state MUST not be supported in a choreography language.

 

 

D-CR-029    

A choreography MUST support some standard taxonomy of messages, such as a business messages, generic error reporting messages and acknowledgement messages.

BurdettML - Not Met

There is no taxonomy of message types as all messages are treated equally although all the different types of messages could be defined.

 

OracleCDL – Not met

 

 

Sep 16th Comment – Deletion candidate

 

Our Comment – Should be deleted

 

 

D-CR-035    

It MUST be possible to model message flows that repeat, based on information within the messages (for instance, the contract negotiation protocol).

 

BurdettML – Met

Looping of messages is possible

 

OracleCDL – Met.

 

 

Sep 16th Comment – Further discussion

 

Our Comment –

 

 

D-CR-039    

It MUST be possible to describe a sequence of communications among choreographies.

BurdettML – Met

Sequences of messages can be defined

 

OracleCDL – Met

 

 

Sep 16th Comment – Deletion candidate; Clarification (among chor) and duplicate

 

Our Comment –

 

 

D-CR-051           

A choreography definition language MUST provide a construct that describes the sending of a single message.

 

BurdettML – Met

A choreography consisting of a single message could be defined

 

OracleCDL – Met

A choreography block can be defined with a single react activity (that has no guard) and within the react there is a single interact activity.

 

 

Sep 16th Comment – Deletion Candidate

 

Our Comment – Deletion Candidate

 

 

D-CR-055     

It SHOULD be possible to define a choreography the uses a callback mechanism.

BurdettML - Not Met

There is no direct support for call back although it could be included in a binding of a choreography to an implementation

 

OracleCDL – Met

The use of channel state and channel passing between participants allows a callback to be supported.

 

 

Sep 16th Comment – Wordsmithing

 

Our Comment – This is the fundamental requirement of a Choreograpgy Language.

 

 

D-CR-060    

It MUST be possible to define choreography without having to specify the contents of the messages being used.

 

BurdettML – Met

Fully supported using Message Families.

 

OracleCDL –Met

Fully supported using DocumentType.

 

 

Sep 16th Comment – Duplicate

 

Our Comment –

 

 

Interfaces

 

D-CR-015     

A choreography MUST provide the ability to have prose associated with it to enable its behaviour to be explained.

 

BurdettML – Met

Many different parts of the choreography can have text in multiple languages defined to describe the semantics.

 

OracleCDL – Met

Many different language elements, within Oracle’s WS-CDL proposal, can have documentation text and semantics may be defined as specified by the proposal.

 

 

Sep 16th Comment –

 

Our Comment –

 

 

D-CR-044     

A choreography MUST enable information hiding.

 

BurdettML - Don't know. What is "information hiding" in this context?

 

OracleCDL – Don't know. What is "information hiding" in this context?

 

 

Sep 16th Comment – Wordsmith (Information hiding vs Segmentation)

 

Our Comment –  Wordsmith (Information hiding vs Segmentation)

 

 

Transaction

 

D-CR-017    

A choreography SHOULD enable a agreement or agreement(s) that provides the business context of the choreography definition.

 

BurdettML - Partially Met

Business context could be included in the definition of a state that triggers the processing of the different parts of the choreography.

 

OracleCDL – Partially Met

Any context could be included in the definition of a state.

 

 

Sep 16th Comment – Candidate for deletion; Reclassify

 

Our Comment – What is a business context?

 

 

D-CR-037     

It MUST be possible to describe a behavior recursively.

 

BurdettML - Not Met

There is no composition facility defined.

 

OracleCDL – Met

 

 

Sep 16th Comment – Reclassify ("Composition"); Wordsmith (What not how)

 

Our Comment –

 

 

D-CR-038     

It MUST be possible to describe conditional behaviour for a choreography.

 

BurdettML – Met

Using the "precondition" on each interaction

 

OracleCDL – Met

Using a react activity with a guard.

 

 

Sep 16th Comment – Further Discussion;  Reclassify ("Composition"); Wordsmith (What not how)

 

Our Comment –

 

 

D-CR-048

It MUST be possible to describe a choreography in terms of its messaging behaviour.

BurdettML – Met

The spec defines messaging behaviour.

 

OracleCDL – Met

The proposal defines a messaging behaviour atop of a Web Services message exchange pattern.

 

Sep 16th Comment – Duplicate

 

Our Comment – MEPS(one way request and request/response] should be bare minimum that CDL should support.

 

 

D-CR-057     

It MUST be possible to define multi-party interaction.

BurdettML – Met

There can be any number of roles specified, each of which can be mapped to a different party.

 

OracleCDL – Met

There can be any number of roles specified, each role can be mapped to a different participant.

 

 

Sep 16th Comment – Reclassify

 

Our Comment –

 

 

D-CR-058     

It MUST be possible for a choreography to modify its behaviour based on its operational context.

BurdettML – Met

This can be Met by defining the semantics associated with states.

 

OracleCDL – Met

This can be Met by defining the semantics associated with state variables.

 

Sep 16th Comment – Deletion candidate

 

Our Comment – What is operational context v/s business context?

 

 

D-CR-059    

It MUST be possible to describe negotiation between web services participating in a choreography, where the result of a transaction may depend on repeated iterations of an ask/answer cycle.

 

BurdettML – Met

A choreography with these characteristics could be defined

 

OracleCDL – Met

A choreography with these characteristics could be defined

 

 

Sep 16th Comment – Clarification (of use case)

 

Our Comment –

 

 

Composition

 

D-CR-003     

A choreography MAY have run time changes which allow the actual participants to vary.

BurdettML - Partially Met

The spec only defines an abstract choreography. A binding could probably created that allowed this type of behavior.

 

OracleCDL – Met

Using channel instantiation.

 

 

Sep 16th Comment –

 

Our Comment – Instantiation of a role is a requirement for CDL.

 

 

D-CR-006     

It MUST be possible to describe choreographies as a composition of other choreographies.

BurdettML - Not Met. There is no composition capability.

 

OracleCDL – Met

 

 

Sep 16th Comment – Duplication (KL: important requirement)

 

Our Comment –

 

 

D-CR-019     

It MUST be possible to make a choreography C2 dependent on another choreography C1 such that you can only create a new instance of C2 after a related instance of C1 has been completed.

BurdettML – Met

You can specify that the following of one choreography is dependent on the following of an earlier one.

 

OracleCDL – Met

We can use guards in react in one choreography to depend on a state that another choreography has populated

 

 

Sep 16th Comment –

 

Our Comment –

 

 

D-CR-024     

It MUST be possible to dynamically determine the participants in a choreography at runtime.

BurdettML - Partially Met

The spec only defines an abstract choreography. A binding could probably created that allowed this type of behavior.

 

OracleCDL – Met

 

 

Sep 16th Comment – Duplicate with 003; Leave in

 

Our Comment –  Duplicate with 003

 

 

D-CR-034     

Choreographies MUST be composable into a hierarchy.

 

BurdettML - Not Met. There is no composition capability.

 

OracleCDL –Met

 

 

Sep 16th Comment – duplicate?  About composition of Choreographies - clarify heirarchy in this req

 

Our Comment – Ditto

 

 

D-CR-036     

Choreographies SHOULD be able to call other choreographies in a hierarchical fashion.

BurdettML - Not Met

There is no composition capability.

 

OracleCDL – Met

 

 

Sep 16th Comment – Clarification: Dynamic whereas 34 is static design time? But seem to be related - agreed needs clarification

 

Our Comment –

 

 

D-CR-040     

It MUST be possible to describe parallel composition of services.

 

BurdettML - Not Met

There is no composition capability.

 

OracleCDL – Met

 

 

Sep 16th Comment – Clarification

 

Our Comment – Ditto

 

 

D-CR-041           

It MUST be possible to model events that are strictly related in time, as well as those that are unrelated in time - i.e. parallelism or partial ordering.

 

BurdettML – Met

Messages can occur in parallel or partially ordered.

 

OracleCDL – Met

Fully supported Using the react construct, interact activities can be un-ordered or partially ordered of fully ordered. Ability to guard on a state at one role or on aligned state at 2 roles within a relationship.

 

 

Sep 16th Comment – Clarification

 

Our Comment –  Ditto.

 

 

D-CR-042           

A choreography MAY have run time changes which allow the behaviour of the actual choreography to vary based on state.

 

BurdettML – Met

The spec defines states that can be used to control the choreography being followed

 

OracleCDL – Met

Using the react construct with a guard condition.

 

 

Sep 16th Comment – Clarification: Not understood - major clarification required

 

Our Comment – Duplicate of 38

 

 

D-CR-047

It MUST be possible to define a new choreography by "extending" an existing one.

 

BurdettML – Met

The spec defines how to extend a choreography.

 

OracleCDL –Met

Composition allows modeling this concept.

 

Sep 16th Comment – Reclassify("Reuse")

 

Our Comment –

 

D-CR-054

A choreography SHOULD express the composition of participant web services into a new service.

BurdettML - Not Met

The spec defines an abstract choreography - a binding to a web service would be

 

OracleCDL – Not Met

 

 

Sep 16th Comment – Delete

 

Our Comment – We do not believe that the composition should result into a new web service.

 

D-CR-062

It MUST be possible to dynamically add sub-choreographies to a "running" choreography.

BurdettML –  Not Met

However I think this is a "business process" rather than a choreography problem

OracleCDL – Not Met

 

 

Sep 16th Comment – Remit to a V2

 

Our Comment - Clarification

 

 

Testing and Validation

D-CR-008           

An implementation of a process that is following a choreography MUST be able to verify that the choreography is being followed correctly as specified in the choreography definition.

BurdettML –  Met

The definitions produced according to the spec are designed to be used so that checking that a choreography is being followed correctly is possible.

OracleCDL – Met

 

 

Sep 16th Comment – Duplication; Wordsmithing ("needs to mention viewpoint")

 

Our Comment – clarification/duplicate of 64?

 

 

D-CR-049           

It MUST be possible to validate a choreography definition for correct behaviour at the time it is designed.

BurdettML –  Don't know.

This can only be done by a review process. There problem is that in order to do this you already need a definition of "correct behavior" however "correct behavior is what the choreography definition is supposed to define.

 

OracleCDL - Ditto

 

 

Sep 16th Comment – Remit to a V2

 

Our Comment - Delete

 

 

D-CR-050           

It MUST be possible to validate a choreography definition for correct behaviour at the time it is in operation.

 

BurdettML –  Met

The spec is defined to support this.

 

OracleCDL – Met

Duplicate of 64 and 8

 

 

Sep 16th Comment – Duplication: Wrong way around also a duplicate

 

Our Comment - Ditto

 

 

Ease of Use

 

D-CR-012     

A choreography MUST be uniquely named.

 

BurdettML – Met

Each choreography definition is given a URI.

 

OracleCDL - Met

 

 

Sep 16th Comment – Reclassify - semantics

 

Our Comment -

 

 

Support for Semantics

 

D-CR-025     

There SHOULD be a distinction between a "participant" and a "role", where the participants might be dynamic but the roles need not be required to realize this.

 

BurdettML – Not Met

The spec just defines roles. Participants could be defined in the binding.

 

OracleCDL – Met

Role and Channels are supported.

 

       Our Comment –