Copyright © 2003 W3C® (MIT, ERCIM, Keio ), All Rights Reserved. W3C liability , trademark , document use and software licensing rules apply.
As the momentum around Web Services grows, the need for effective mechanisms to co-ordinate the interactions among Web Services and their users becomes more pressing. The Web Services Choreography Working Group has been tasked with the development of such a mechanism in an interoperable way.
This document describes a set of requirements for Web Services choreography based around a set of representative use cases, as well as general requirements for interaction among Web Services. This document is intended to be consistent with other efforts within the W3C Web Services Activity.
This document is an editors' copy that has no official standing.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.
This is the first W3C Working Draft of the Web Services Choreography Requirements document.
It is a chartered deliverable of the Web Services Choreography Working Group , which is part of the Web Services Activity . Although the Working Group agreed to request publication of this document, this document does not represent consensus within the Working Group about Web Services choreography requirements.
This document is in a state of perpetual change. Feedback on this document is sought by the Working Group.
Comments on this document should be sent to www-ws-chor-comments@w3.org (public archive ). It is inappropriate to send discussion emails to this address.
Discussion of this document takes place on the public public-ws-chor@w3.org mailing list (public archive ) per the email communication rules in the Web Services Choreography Working Group charter .
Patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page .
This is a public W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". A list of all W3C technical reports can be found at http://www.w3.org/TR/.
1 Introduction
1.1 What is Web Services
Choreography?
1.2 Conventions Used In
This Document
2 Requirements Methodology
3 Use Cases
3.1
Structure of Use Cases
3.2 Use
Case Descriptions
3.2.1 D-UC-001 - Simple Client Server
3.2.1.1
Actors
3.2.1.2
Description
3.2.1.3
Preconditions
3.2.1.4
Triggering Event(s)
3.2.1.5
Postconditions
3.2.1.6
Flow of Events
3.2.1.6.1
Basic Flow (Primary Scenario)
3.2.1.6.2
Alternate Flow(s)
3.2.1.7
Related Use Cases
3.2.1.8
Notes / Issues
3.2.2 D-UC-002 - Service and Device Interoperability
3.2.2.1
Actors
3.2.2.2
Description
3.2.2.3
Preconditions
3.2.2.4
Triggering Event(s)
3.2.2.5
Postconditions
3.2.2.6
Flow of Events
3.2.2.6.1
Basic Flow (Primary Scenario)
3.2.2.6.2
Alternate Flow(s)
3.2.2.7
Related Use Cases
3.2.2.8
Notes / Issues
3.2.3 D-UC-003 - Travel agent (static discovery)
3.2.3.1
Actors
3.2.3.2
Description
3.2.3.3
Preconditions
3.2.3.4
Triggering Event(s)
3.2.3.4.1
Basic Flow (Primary Scenario)
3.2.3.4.2
Alternate Flow(s)
3.2.3.5
Postconditions
3.2.3.6
Flow of Events
3.2.3.7
Related Use Cases
3.2.3.8
Notes / Issues
3.2.4 D-UC-004- Alternative paths based on business rules
3.2.4.1
Actors
3.2.4.2
Description
3.2.4.3
Preconditions
3.2.4.4
Triggering Event(s)
3.2.4.4.1
Basic Flow (Primary Scenario)
3.2.4.4.2
Alternate Flow(s)
3.2.4.5
Postconditions
3.2.4.6
Flow of Events
3.2.4.7
Related Use Cases
3.2.4.8
Notes / Issues
3.2.5 D-UC-005 - Exception Handling Across Domains of
Control
3.2.5.1
Actors
3.2.5.2
Description
3.2.5.3
Preconditions
3.2.5.4
Triggering Event(s)
3.2.5.4.1
Basic Flow (Primary Scenario)
3.2.5.4.2
Alternate Flow(s)
3.2.5.5
Postconditions
3.2.5.6
Flow of Events
3.2.5.7
Related Use Cases
3.2.5.8
Notes / Issues
3.2.6 D-UC-006 - Choreography Recovery
3.2.6.1
Actors
3.2.6.2
Description
3.2.6.3
Preconditions
3.2.6.4
Triggering Event(s)
3.2.6.4.1
Basic Flow (Primary Scenario)
3.2.6.4.2
Alternate Flow(s)
3.2.6.5
Postconditions
3.2.6.6
Related Use Cases
3.2.6.7
Notes / Issues
3.2.7 D- UC-007 - Choreography Dependency
3.2.7.1
Actors
3.2.7.2
Description
3.2.7.3
Preconditions
3.2.7.4
Triggering Event(s)
3.2.7.5
Flow of Events
3.2.7.5.1
Basic Flow (Primary Scenario)
3.2.7.5.2
Alternate Flow(s)
3.2.7.6
Postconditions
3.2.7.7
Related Use Cases
3.2.7.8
Notes / Issues
3.2.8 D- UC-008 - Quote Request
3.2.8.1
Actors
3.2.8.2
Description
3.2.8.3
Preconditions
3.2.8.4
Triggering Event(s)
3.2.8.5
Postconditions
3.2.8.6
Flow of Events
3.2.8.6.1
Basic Flow (Primary Scenario)
3.2.8.6.2
Alternate Flow(s)
3.2.8.7
Related Use Cases
3.2.8.8
Notes / Issues
3.2.9 D-UC-009 - Really Big Corporation
3.2.9.1
Actors
3.2.9.2
Description
3.2.9.3
Preconditions
3.2.9.4
Triggering Event(s)
3.2.9.5
Postconditions
3.2.9.6
Flow of Events
3.2.9.6.1
Basic Flow (Primary Scenario)
3.2.9.6.2
Alternate Flow(s)
3.2.9.7
Related Use Cases
3.2.9.8
Notes / Issues
3.2.10 D-UC-010 - Interconnection of Document Management
Systems
3.2.10.1
Actors
3.2.10.2
Description
3.2.10.3
Preconditions
3.2.10.4
Triggering Event(s)
3.2.10.5
Postconditions
3.2.10.6
Flow of Events
3.2.10.6.1
Basic Flow (Primary Scenario)
3.2.10.6.2
Alternate Flow(s)
3.2.10.7
Related Use Cases
3.2.10.8
Notes / Issues
3.2.11 D- UC-11 " Supporting collaboration
3.2.11.1
Actors
3.2.11.2
Description
3.2.11.3
Preconditions
3.2.11.4
Triggering Event(s)
3.2.11.4.1
Basic Flow (Primary Scenario)
3.2.11.4.2
Alternate Flow(s)
3.2.11.5
Postconditions
3.2.11.6
Flow of Events
3.2.11.7
Related Use Cases
3.2.11.8
Notes / Issues
4 Choreography
Requirements
4.1 Charter
Constraints
4.2
Interoperability
4.3 Scalability
4.4 Security
4.5 Management and
Provisioning
4.6 Exception
Handling
4.7 Messaging and
Protocols
4.8 Interfaces
4.9 Reliability
4.10 Transaction
4.11 Composition
4.12 Testing and
Validation
4.13 Ease of Use
4.14 Support for
Semantics
4.15 External
Dependencies
4.16 Systems
5 Correlation
of Use Cases and Requirements
5.1 Use Cases and
Requirements Cross-Reference
5.2 Requirements
Coverage
6 Appendix A - References
6.1 Normative
References
6.2 Informative
References
7 Appendix B - Acknowledgements
Interactions among Web Services, especially in regard to the exchange of messages, their composition, and the sequence in which they are to be transmitted and received, are an especially important problem. These interactions may serve to provide communication among groups of services that in turn make up a larger, composite service, or may be called on to interact across organizational boundaries in order to obtain and process information. The problems of Web Services choreography are largely focused around these two areas, that of message exchange and of sequencing these message in time to the appropriate destinations. In order to fulfill the needs of the Web Services community, these aspects of Web Services must be developed and standardized in an interoperable manner, taking into account the needs of each individual service as well as those of its collaborators and users.
This document describes a set of requirements for Web Services choreography based around a set of representative use cases, as well as general requirements for interaction among Web Services. This document is intended to be consistent with other efforts within the W3C Web Services Activity.
Web Services Choreography concerns the interactions of services with their users. These users may, in turn, be other Web Services, applications, or human beings. Any user, automated or otherwise, that uses a Web Service is a client of that service. Transactions among Web Services and their clients must clearly be well-defined at the time of their execution, and may consist of multiple separate interactions whose composition consititutes a complete transaction. This composition, its message protocols, interfaces, sequencing, and associated logic, is considered to be a choreography .
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 .
A few words on the naming convention used here and throughout this document: all use cases and requirements are labeled according to the following convention:
[D-](C)(R|UC)nnn
[D-] indicates that the item is in a draft state
(C) indicates Candidate status.
(R|UC|) is one of Requirement|Use Case|User Scenario.
nnn indicates the sequence number of the item.
Please note that due to the changing nature of requirements analysis, numbering of requirements, use cases, and user scenarios may not always reflect sequential order.
In order to gather requirements for Web Services Choreography, the working group has currently chosen to follow two paths toward this end. The first means of gathering requirements consists of examination of member-submitted use cases, from which requirements may be inferred. The second methods involves the use of the Critical Success Factor analysis methodology, and will be addressed in future versions of this document.
In order to organize and make use of the member-submitted use cases, a specific template has been developed for use by the Working Group, which includes fields for the requisite information. As a base definition, a use case may be considered to be a description of an interaction which takes place across one or more system boundaries, involving one or more users and services.
It is intended that the uses cases presented here are to include the widest possible number of requirements using the fewest possible number of use cases.
The use cases included here are meant to be representative, meaning that the general concepts are common to many possible use cases across a broad array of organizations.
Structurally, uses cases are submitted using a predefined template that specifies the information required to generate requirements. This template loosely follows the standard UML requirements gathering activities, and is well-aligned with common industry best practices.
Submitted by: Enigmatec Corporation Ltd
Ref: [URL]
Client - Role that makes requests to a Server.
Server - Role that responds to requests from a Client.
A system is to be constructed from two Web Services that we call a "Client" and a "Server". The Client starts a session with a Server and then sends any number of requests receiving, in each instance, a response, and then closes that session with the Server. The Server has analagous behaviour.
The client has declared it's external observable behaviour as described above.
The server has declared it's external observable behaviour as described above.
The triggering event for the choreography between the Client and Server takes place when and only when an "open" request is made to the "Server".
There are not explicit post-conditions. Implicitly the system must return to Idle for both the Client and the Server and this can be done by ensuring that the Client sends a "close" and that the Server is ready to receive a "close"
In it's initial state the Server is said to be Idle, we call this an "IdleServer". An IdleServer can only accept "open" requests. No other request is accepted by an IdleServer. When an IdleServer accepts an "open" request it's behaviour changes. We refer to this change as the Server behaving like a "BusyServer".
In it's BusyServer state a BusyServer can accept a "request" and then sends a response. Or it can also accept a "close" in which case it behaves like an IdleServer once more.
In pi-calculus we represent this as:
IdleServer(o,req,resp,c) = o-in.BusyServer(o,req,resp,c)
BusyServer(o,req,resp,c) = req-in.resp-out.BusyServer(o,req,resp,c) + c-in.IdleServer(o,req,resp,c)
In it's initial state the Client is also said to be an "IdleClient" until it sends an open request. It then is said to be a "BusyClient".
As a "BusyClient" it can send a request and then accept a response. Or it can send a close, in which case it behaves like an IdleClient.
IdleClient(o,req,resp,c) = o-out.BusyClient(o,req,resp,c)
BusyClient(o,req,resp,c) = req-out.resp-in.BusyClientr(o,req,resp,c) + c-out.IdleClient(o,req,resp,c)
This use case shows a clear problem with potential LiveLock situations. In this example it is possible that any Clienti is locked out from dealing with a server forever. Generates the following requirements:
The ability to uniquely name a behaviour (i.e. IdleServer, BusyServer, IdleClient, BusyClient).
The ability to describe a behaviour in terms of their interaction. Their interaction is defined as the sending of a communication on a named channel (o,req,resp,c).
The ability to describe a behaviour recursively (i.e. the defn of BusyServer refers to itself).
The ability to describe a behaviour that has choice to enable different behaviours to be references (i.e. the use of the + operator).
The ability to describe a sequence of communications (i.e. the use of the "." operator in req-out.resp-in as well as o-in.BusyServer).
The composition, the behavioural contract that exists between a Client and a Server can be defined in pi-calculus as follows:
ComposedSystem = (!IdleClient | IdleServer)
The Composed system enables Clients to communicate with a Server. IdleClient1 communicates with the IdleServer until it sends a close. When a close has been received the transitions from behaving like a BusyServer to an IdleServer and so is able to accept open requests from any IdleClienti.
This ability compose behaviours into higher level processes such as our ComposeSystem above gives rise to another requirement, namely
The ability to describe parallel composition of services (i.e. the "|" operator).
The use case demonstrates some of the basic interactions and behaviours that may be required to enable us to describe a choreography between two processes.
Submitted by: unknown
Ref: [URL]
Network Agent Actor: Resposibility is to detect Devices or agnets on devices and their ontology.
A device (sensors, cell phones, printers) manufacturer builds a device that interoperates with (sensor/actuator) devices built by other manufacturers. The device properties are expressed in ontological form. The ontology of device properties or "device ontology" is embedded in the device. If the device is connected to a network, it can be recognized by and installed into that network by an agent that parses the device ontology and determines how best to integrate its function. Once installed, the device may be bound to other devices forming a composite device. The composite device, logically a unique device, may interact with other devices or services on the network. Device manufacturers are not expected to perform a'priori testing of the possible device configurations to achieve interoperability.
Device is connected to the network. An agent is online.
Device is aware of its capabilities.
Device attaches to network and become on-line.
Device is detected by agent.
In it's initial state the network agent can be idle. The agent waits in a loop for a sign on event from the device. The agent then accept the sign on request from the device. When the agent accepts a sign on request, it's behavior changes. The agent then reads the device antology and determines what is needed to install the device to the network.
Submitted by: Web Services Architecture WG
Ref: [URL]
Client - Role that makes requests to a Server.
Server - Role that responds to requests from a Client.
The goal of the consumer is to get the best combination of services and prices suiting his/her needs. The travel agent tries to customer satisfaction and sell packages. The service providers are aiming at selling as many products as possible. The credit card companies guarantee and do the payments of the purchased products. Developers use WSDL and platforms to create instances of web services.
Basic assumptions for the use case:
A company (travel agent) wants to offer to people the ability to book complete vacation packages: plane/train/bus tickets, hotels, car rental, excursions, etc.
Service providers (airlines, bus companies, hotel chains, etc) are providing Web services to query their offerings and perform reservations.
Credit card companies are provide services to guarantee payments made by consumers.
The discovery of the specific service providers and metadata happens prior to the invocation, and that a developer uses the description to create the web service invocation. This could be considered a "static" use case.
For this version of the usage scenario, we will limit ourselves to booking of vacation packages. We will assume that cancellation is not possible once a package has been purchased.
The travel agent provides a system to provide the user with options for his/her vacation and earns money by charging fees for each package bought. Service providers (hotels, airlines) sell their services by making them available widely using Web services. Credit card companies enable customers to use their credit cards in a very large number of cases by making payment Web services available and make profit with each money transaction. The consumer books a vacation easily by choosing among a large variety of offers. Only the user in the scenario is a human being. The travel agent service, airline, hotel and payment services that the travel agent service is interacting with, are agents.
Submitted by: Monica J. Martin, Sun Microsystems.
Ref: http://lists.w3.org/Archives/Member/member-ws-chor/2003Jun/0060.html
This business process use case entails two different paths on an ordering process from the view of two actors: The Buyer and Seller. In order to conduct trade, the two views are valid. However, business rules dictate what process is used, and what other controls are applied within an enterprise. Whether those paths are visible to the observable process is guided by the agreement between the participating roles.
Relevant points to consider:
Multiple paths can occur
Is successful completion of any one path substantive or not (affect final outcome)? Here the seller sees the 'Handle questionnaire' as an obligation. This may not hold true for the buyer.
Opens question of optional behavior and what is allowed in the context of a business process and choreography (affects interoperability).
Raises questions about pre-post conditions as well as the impact of other business processes or external events.
Variation on the Case listed below:Similar to case (1) except raises exception issue
Exception propagation up and down the stack
Business action based on exception.
The business pre-condition is that each actor in this use case has some level of business process defined in order to collaborate with another actor or view.
A business agreement should be established between the parties " whether it is technical, formal or what its expression is are not defined by this use case.
An agreement provides business (and later technical) context to what business rules are applicable for this use case. Therefore, the business event of establishing an agreement may trigger the definition of the business rules, process steps, and acceptable paths on this business process as it relates to the interactions between the Buyer and Seller. A business need triggers an order between the Buyer and the Seller.
Each actor - the Buyer and the Seller - has a view of the ordering business process.
The Buyer and Seller establish a business agreement. However, the business agreement does not specify the execution syntax but establishes business semantics and commitment responsibilities understood between the parties. There could be multiple agreements for commitments and transactions.
The Buyer has a business need for widgets, that are integrated into a packaged product.
The Buyer's view of the ordering process is:
Pick a product.
Pay for a product.
Ship a product
When the ordering process is active:
A quality process is possible from a Quality Coordinator. The quality process is not integrated with or dependent on the ordering process.
The Seller fulfills business needs for the Buyer.
Note: This figure represents the Buyer and the Seller view prior to any agreement.
The Seller's view of the ordering process is:
Pick a product.
Apply a quality check (see business rule).
Pay for a product.
Apply a quality check (see business rule).
Ship the product.
Both the Buyer and Seller wish to have a collaborative view of their ordering process. Therefore, they need to apply business rules to their interaction to establish that collaborative view.
In general, they apply the Seller's view of the ordering process that integrates the Quality check within the Seller's domain of control.
Within the view of the Seller, the quality check is applied and is integrated into the ordering process. However, this quality check MAY or MAY NOT be applied as it relates to an instance of an ordering process interaction between the Buyer and the Seller. The application of the business rules MAY be driven by the business context, requirements and the agreement.
For example, external events, such as a low-risk, high-availability turnaround requirements for ultimate customer delivery may require a different path be taken in the ordering process. When the Buyer interacts with the Seller, it often takes the product component and integrates it into another solution. With one ultimate Customer, the Buyer, on certain occurrences, must deliver in 2 days. Therefore, the Buyer may need to ask the Seller to bypass the quality check. However, in this instance, the Buyer takes on additional responsibility, that releases the Seller from some responsibilities.
Where these rules are applied MAY vary by which Buyer or Seller is involved in this ordering process. (Implies an M-M relationship between the role and the services provided).
Where these rules are applied MAY vary by which Buyer or Seller is involved in this ordering process. The choreography definition should handle either case to provide flexibility to these roles in the ordering process.
Note: In this case, independence is maintained. The Handle Questionnaire is actually executed against business rules during process execution, although it is either path is known prior to execution. Each is a valid path. The business rules related to the quality check are applied 'in' the process, even though a business context rule is applied prior to the order process initiation to maintain process independence.
Note: In this case the business rules are applied first and either path is is actually executed before and during process execution. Although either path is known prior to execution. Each is a valid path. The business rules are applied overall before and 'in' the process.
Allocate responsibility for quality control to Buyer or Seller based on business context. Either the Buyer or the Seller provides maintenance support for product.
Initiate the ordering process.
If for ultimate Customer X, apply this choreography definition:
Pick a product.
Pay for a product.
Ship a product.
Deliver product.
Otherwise, if not Customer X, apply the default choreography definition:
Pick a product.
Apply a quality check (see business rule).
Pay for a product.
Apply a quality check (see business rule).
Ship the product.
Deliver product.
Order is completed successfully.
Exception propagation.
When combined with the exception propagation use case, external events may affect the ultimate business outcome of the ordering process use case focusing on alternative paths.
Upon entry, this use case evidences the following potential requirements:
Choreography agreement or an agreement(s) that provides the business context of the choreography definition.
Process controls and sequencing options: Sequence / order is affected by the agreement or references in the choreography definition.
The outcome given order or the assumptions about the outcome of the given order is based on the business context and agreement(s).
Nested processes or choreography sets: Dependencies may exist between or within processes (Whether they are substantive or not should be discussed).
Optional paths may be taken that affect dependencies and outcomes.
From a business perspective, selecting one or the other could have different agreement implications if an error occurs
Editorial note | |
Submitted by: Sun Microsystems Ref: http://lists.w3.org/Archives/Member/member-ws-chor/2003Jun/0060.html |
Buyer View
Seller View
Quality Control or Customs View (External Views to the Current Process)
This business case extends the Alternative Paths Based on Business Rules use case. In that case, several business processes could occur and take different paths based on business agrement, application of business context, and choice of business rules.
This use case integrates the Seller and Buyer views into one Business Process A. Quality Control at the Seller Company has the Business Process B where Quality Control evaluates the Questionnaire. During shipment, a Customs Control process (Business Process C) may be initiated that affects Business Process A. Multiple concurrent and independent processes exist. Multiple and independent process outcomes could occur and depend on how they are choreographed and how the process is defined within a choreography set or collaboration [higher level].
This business case step should address these requirements:
Exception handling/propagation
Choreography and choreography sets
Typing of exceptions (process and control failure)
Signal impacts if used to indicate process validation success or failure (receipt acknowledgement or acceptance acknowledgement)
Confirmation that the propagation occurs to the application as opposed to the service or service interface
Integration of process and control flow failures (such as Process [validation] failure on Handle Questionnaire and control failure on Business Process A)
For brevity, the Ordering Process defined in the Alternate Paths Based on Business Rules use case is not duplicated here. The relationship between Business Process B and C to Business Process A will be outlined.
For Business Process B, the pre-condition is:
A business rule has been applied either prior to process initiation or during the process, where the business rule is required, and a 'Handle Questionnaire' check is initiated.
An exception on 'Handle Questionnaire' can not occur unless 'Handle Questionnaire' is initiated. Therefore an exception precondition exists in Business Process B, when a Quality Control check is applied. Whether or not the Business Process B is exposed or not, the exception affects the outcome of Business Process A.
For Business Process C, the pre-condition is:
A business rule has been applied either prior to process initiation or during the process, where the business rule is required, and a Customs Control' check is initiated. An order is to be shipped to the Buyer by the Seller to an international location. Therefore, the pre-condition is an international order is processed. International is defined as a condition whereby the ship-to location is considered to be international and subject to regional customs requirements.
An exception on 'Customs Control' can not occur unless 'Customs Control' is initiated. Therefore an exception precondition exists in Business Process C, when a Customs Control check is applied. Whether or not the Business Process C is exposed or not, the exception affects the outcome of Business Process A.
Exception propagation SHOULD occur within Business Process B and C, to the originator of the service request (For example, 'Handle Questionnaire' within the parent process, Business Process B).
The triggering event for an Exception is an exception in the process for Business Process B or C, which is considered substantive to the completion of Business Process A.
The Handle Questionnaire process MAY be handled by an outside service. This service checks the quality of the product produced and applies a quality control check. The results of the Quality Control check are provided to the 'Handle Questionnaire' process step.
Whether or not the Quality Control check for the Handle Questionnaire process step is handled externally is based on business rules agreed upon by the partners in the interaction. The application of these business rules before or inside the processes is typically driven by agreement. See the Alternate Paths Based on Business Rules use case for more detail on the ordering process for further details.
In general, they apply the Seller's view of the ordering process, that integrates the Quality check within the Seller's domain of control. When this Quality check is applied, the Handle Questionnaire process step is initiated. The Handle Questionnaire process step is applied prior to the Pay process step and the results are reported prior to the release to Ship the product. On high risk items (For example, those items that have shown a higher incidence of failures, the Seller turns the Quality check over to another specialized service, designated here as Quality Control).
Quality Control completes the check with a set of parameters provided by the initiating party for the service, Business Process A, Handle Questionnaire process step (Note: This may be based on the role involved with the service or the service itself, which here is the Seller or Handle Questionnaire respectively).
Quality Control is responsible to:
Complete the checks.
Report the results to the Handle Questionnaire process step for the Seller.
With success, the results are logged and the Business Process A notified.
The ordering process continues and completes successfully (Note: Assuming no other business exceptions).
See the ordering process under Alternate Paths Based on Business Rules use case for alternative flows that are presupposed here (For example, rules that dictate whether the Handle Questionnaire process step occurs).
If a Quality Check response fails, i.e. an exception occurs, the Quality Control MUST be reported to the Handle Questionnaire process step in Business Process A. In addition, a decision SHOULD be made to propagate this to the main Business Process A. Whether or not the ordering process of Business Processa B continues is based on business rules, context or agreements between the Seller and Buyer.
The same premise applies to the Customs Control process, external to Business Process A. The Customs Control process is external to Business Process A. If an exception occurs, the Customs Control exceptioin MUST be reported to the Business Process A, to the Ship process step. Whether or not the Business Process A ends successfully or not is based on the business rules held within the Ship process step. This criteria is not externally visible to Business Process A. Unless the Seller is willing to provide these details, this process step and the rules associated with the state MAY or MAY NOT be externally observable by the Buyer from the Seller.
The Business Process B and C should be considered as a 'black box' to Business Process A, except the outcome MUST be reported back to the requesting process.
The business state of the externally observable behavior or process outcomes SHOULD be known by the Buyer and the Seller. If an event, outside of the observable behavior, impacts the state and progress of the Business Process, the events or the services MAY be known to the Buyer and Seller, for auditing and reporting purposes. The Seller will make this data available for business purposes.
See the ordering process for the Alternate Paths for Business Rules use case. Here the exceptions and their propagation is shown in Figure 1. An exception has the following paths:
See Ordering Process
When an international order is triggered or certain business rules met, a Customs Control process is initiated. The Customs Control Process, Business Process B, is external to Business Process A.
The Customs Control process checks the conditions of Order and provides the result back to Business Process A.
The results of the Customs Control Process MUST be reported back to Business Process A, as it can affect the outcome, prior to the completion of the Ship process step and the final transition of state to the end of parent business process.
Seel Alternate Flows for further details.
For Quality Control related to Handle Questionnaire:
See Ordering Process.
When specific business rules are met, an external Quality Control process is initiated. The Quality Control Process, Business Process C, is external to Business Process A.
The Quality Control process checks the conditions of Order and provides the result back to Business Process A.
The results of the Quality Control Process MUST be reported back to Business Process A, as it can affect the outcome, prior to the initiation of the Ship process step.
Further details can be found in the Description and Alternative Flows sections of this use case.
The exception propagation use case is an extension of the Alternative Paths Based on Business Rules use case, dealing with the ordering process. However, it could be related to many other use cases.
Consider this process view of the possibility that exceptions could occur anywhere in this stack. And what requirements that could levy on:
Exception handling within and across processes
Impact of conflicting business requirements
Dependencies within a or between business process (es)
Agreements
Auditing and reporting
State management and timing within a or between business process (es)
Differentiation between errors and exceptions (For example, the latter SHOULD typically be known and therefore, handled).
Finally, it is an open question if an error condition should be considered in this use case, to understand how or whether it is propagated. This affects the execution of Business Process A, and whether it ends in Success or Failure.
Editorial note | |
Submitted by: ? Ref: [URL] |
This use case describes the idea of creating an *instance* of a choreography definition (i.e. an actual choreography) that allows one role to inquire on the outstanding activities being taken by another role after a catastrophic failure. This allows partially complete choreographies to reach their normal conclusion.
This use case suggests the idea of defining an "Outstanding Activities" choreography instance designed to support recovery after a catastrophic failure. The idea is that the Outstanding Activities choreography could be used after the failure of ANY choreography and is therefore generally applicable and so will benefit from standardization.
In this example the choreography is used by a Buyer to recover the processing of an order after the Buyer suffers a system crash.
Buyer system suffers from a crash.
In this example the choreography is used by a Buyer to recover the processing of an order after the Buyer suffers a system crash.
Buyer Recover Process |Supplier Recovery Process
Send PO ---------B (using a RM protocol)
B--------- Send PO response (using a RM protocol)
Resend outstanding PO response ------B
... continue with the original process ...
Buyer Process |Supplier Process
B----------- Send PO response (using a RM protocol)
Buyer continues from where he left off ...
In this particular scenario the choreography that was started in #1 is carried to completion. When the buyer fails, the buyer asks the seller (in fact all parties it talked to before failure) to perform recovery by indicating last messages sent. It then requests that these messages be sent in the original context, which causes all outstanding choreographies to proceed on schedule.
Editorial note | |
Submitted by: Ref: [URL] |
Ref: [URL]
Use case illustrate the dependencies between two Choreographies. The details are explained in the event flow section.
The first choreography - order placement
A Buyer sending a Supplier an order
The Supplier sending an order response document to the buyer that indicates the extent to which the supplier can satisfy the order. This is dependent on step 1
The Buyer optionally sending a Change Order to the Supplier that modifies the original. This is dependent on the step 1 and can occur multiple times.
The supplier sends an order response document to the buyer that indicates the extent to which the supplier can satisfy the changed order. This is dependent on and a response to step 3.
The Buyer optionally sending a Cancel Order to the Supplier that cancels the original order and any changes. This can occur at any point after step 1 provided that a step 5 (this step) has not been executed previously
The Supplier sending a Cancel Order Response to the Buyer that indicates whether or not the Cancel Order has been accepted. This is dependent on step 5.
The Supplier can send an error response document to the Buyer as a reply to any message they receive that indicates that there was some error in the message that prevented it being processed
The Buyer can send an error response document to the Supplier as a reply to any message they receive that indicates that there was some error in the message that prevented it being processed.
The second choreography - order status query
This second choreography allows a Buyer to make an inquiry on the status of any order they have previously placed. The dependency is that the Buyer should only do an order status query if they have previously started the execution of an order placement choreography. The steps are:
A Buyer sending a Supplier an order status request. This is dependent on step 1 of the first choreography
The Supplier returning an order status response that indicates: a) if the order was recognized, and b) if it was recognized, then the state of the processing of the order, e.g. received but not processed, processed, shipped, billed, etc.
In addition error response documents can be sent as for the first choreography.
Editorial note | |
Submitted by: W. W. Grainger, Inc. Ref: [URL] |
Buyer - Role that requests a quote from the supplier
Supplier - Role that provides products / services for the Buyer to purchase directly, potentially aggregating products from one or more manufacturers.
Manufacturer - Role that makes one or more products that are covered in a request for quotation from the Buyer. The Manufacturer role does not have a direct relationship with the Buyer.
The request quote from Supplier use case describes a situation where a Supplier and one or more Manufacturers collaborate to provide pricing and availability on a set of products requested by the Buyer. From a web services choreography perspective, the use case illustrates some of the key features that must be accounted for in the choreography, including:
Contract provisions, including
Start and end times when contract is valid (e.g. how long is the quote valid?)
Renewal policies
Responsibilities for each party (i.e. CRCs for each role)
Service level agreements
Response time
Service availability
Security provisions
Privacy provisions
Non-repudiation
Escalation procedures
Exception handling
The use case also demonstrates a basic flow of interaction between two web services: negotiate contract, negotiate interface, exchange data, execute transaction, and return results.
Figure X - Interaction between services
Supplier has a defined interface for quoting items it supplies to Buyers.
Buyer knows Supplier item identifiers for items requested for quotation.
Metadata required to negotiate contract is known by the Supplier, and available to the Buyer.
Buyer has list of products for which a quote is to be requested, and the product identifiers are understandable by the supplier.
Buyer receives a quote for products requested from supplier, including pricing and availability.
Quote conforms to contract specifications.
Contract specifications are saved by Supplier and Buyer.
Supplier has commitments to receive product from Manufacturer(s), per Buyer's requirements.
In the primary scenario, the contractual relationships between Supplier and Manufacturer roles are already in place.
Buyer sends contract requirements to Supplier
Supplier approves contract requirements for the quote, and returns approval to the Buyer. Where terms are disputed, Supplier offers counter-terms
Buyer accepts contract terms returned by Supplier, and requests interface information from Supplier
Supplier returns interface information to Buyer
Buyer generates a quote request, conforming to Supplier's interface specification, and submits it to Supplier
Supplier determines the Manufacturers that will be used to fulfill the quote based on existing knowledge about Manufacturer(s) ability to meet Buyer specifications, creates price and availability requests for each Manufacturer, and submits them to the Manufacturer(s)
Manufacturer(s) provide price and availability information for items in the price and availability request, and returns to Supplier
The Supplier identifies whether all items requested in the quote by the Buyer have at least one Manufacturer able to deliver product. Supplier reviews responses from Manufacturer(s), determining which items to include from each Manufacturer in the response to Buyer. The Supplier builds the quote, and returns it to Buyer. The response includes items requested, items quoted, and items not quoted, price, and availability.
Fig. X - request quote event sequence
Contractual relationships between Supplier and Manufacturer roles do not exist prior to start of use case. This will be documented as a separate use case.
Step 2: alternatives The Supplier may reject one or more terms requested by the Buyer. To handle the negotiation of terms, there may be multiple request / response sequences between Buyer and Supplier.
Step 5: alternatives Buyer is unable to provide information in the format specified by the Supplier's interface. Use case ends.
Step 7: alternatives. Manufacturer is unable to commit to delivering items requested in the quote, and declines to provide price and availability for one or more items.
Submitted by: BEA Systems, Inc
Ref: [URL]
This use case charts a major corporations' efforts to gain control over the message choreographies used between its various systems. The work uses RBC as the example company. RBC sells the Really Big Product (RBP) that requires the cooperation of approximately 100 different tiny companies. The main activities involved in creating the RBP are order handling, manufacturing, shipping and billing.
Each of the four activities may involve 20 to 30 different systems, some of which are internal to RBC, Tiny Company partners run the rest. When the RBP was first being produced RBC handled communication between the systems, both internal and external, in an ad-hoc manner. The operators of any two systems that needed to communicate would write down on a piece of paper what messages they expected, give some description of the acceptable order and then go write code and test until things finally worked.
At first RBC tries to create a single document that describes all the systems, messages and choreographies but quickly finds that the complexity of the document is so great that it can't be used for any practical purpose and will be out of date long before it's finished. They next try to use a cPl, Java, to describe the choreography behavior but quickly find that the result is so complex that no one can really understand it.
Eventually RBC realizes that they need a cDl. The corporation tries to design its cDl by starting with a cPl and removing features. First the control logic is vastly simplified to the point where it just encodes a graph. Then the cDl is made to encode a global view rather than the participant level view required by cPls. They then add in the ability to segment the cDl so that participants can be given cDls that only show them the part of the message choreography they need to know about. Finally, they add the ability to abstract away sub-systems so that it is easier to understand the over all logic of the cDl without drowning in the details.
Gain control over message choreographies used between its various systems in a corporation.
The first change RBC made was obscuring the control logic. RBC realized that most of the information provided by the cPl, even though it was just about choreography, wasn't actually necessary for understanding the system's behavior. No one really needed to know, for example, the gory details of how a message was ripped apart before being processed. The easiest way to hide this kind of information was to remove control logic from the cDl. So all the control statements in the IFs, WHILEs and other program elements were removed in the cDl. In the cDl programmers would have to annotate the logic with human readable statements in order to explain their intent.
The second change RBC made was to switch to a multi-party global view. cPls, by their very nature, provide a view on the choreography from the perspective of a single participant. To understand the system end-to-end using cPls one has to stitch together all the participant views to create a coherent whole. By writing the cDl using a global view that could show all the parties interacting at once it made it much easier to understand the system's end-to-end functionality.
The challenge with using a global view is that it makes it harder to hide information. After all, if one can see all the participants simultaneously then how does one hide anything? For example, Tiny Company 1 may talk to RBC who then talks to Tiny Company 2. While RBC needs to have a complete global view of all of its activities it only wants to show each Tiny Company the part of the global view relevant to then. The solution RBC choose was to make their cDl support segmentation, e.g. enable multiple cDls to reference each other and describe their overlapping parts.
RBC understood that what they really needed was two different solutions. One solution to make it easier to write long running programs, a cPl, and another solution for describing the choreography between systems, a cDl.
With both solutions in place RBC was able to use the cDl to document the full choreography for all message exchanges in their entire order processing system including the ability to segment the picture so that partners only saw the parts they needed. They were then able to repeat the procedure for the other three activities and to hook all the choreographies for all the activities together using segmentation.
However RBC still had a problem, the final picture was too complex. With 100 different systems and 400 different messages across all four activities no one could understand the whole picture. RBC needed some way to abstract away sub-systems which didn't need to be understood in detail in order to see the over all system flow. Segmentation didn't solve this problem because segmentation allows one to hide information not add a level of indirection. The solution RBC choose was to make their cDl hierarchical, e.g. allow the cDl format to wrap cDl functionality inside of a function call.
The end result of RBC's efforts is that they had implemented and deployed two solutions. A cPl to make it easier to write long running logic and a cDl to make it easier for different systems to understand their messaging obligations to each other.
Submitted by: BEA Systems, Inc
Ref: [URL]
In this use case two companies (BSC and DC) are working together to design a bridge. In order to improve communication the two companies want to connect their document management systems.
This leads to problems with the selection of a reliable messaging protocol that are resolved by allowing the cDl to be annotated with information about what reliable messaging protocol is to be used rather than building the reliable messaging protocol's messages directly into the cDl.
Concern of the two companies of legal and criminal liability. In their area there are very strict legal requirements for who must review and approve any changes to the bridge's design.
BSC and DC were sub-contractors on a project to build a new bridge. Recognizing the need to work closely together they decided to implement a series of web services to enable the companies to submit proposed changes to the bridge's design. The web services accepted changes, drove the process of getting the appropriate approvals and then altered the central design and notified the appropriate parties.
Both companies had existing approval processes and document management systems so as the joint choreography was designed each team used segmentation to integrate the joint choreography with their local systems.
One of the first problems the joint team ran into was that they wanted to use a reliable messaging system to allow them to transfer messages. At first they tried to include the reliable messaging related messages directly into the choreography but that proved to be a mess. Especially when, half way through the project, they decided to change their reliable messaging algorithm when a new group in some standards organization started up and they felt they needed to be standards compliant. Eventually the joint group decided to enhance their cDl to support annotations. This allowed them to mark a message exchange as reliable using an identifier without having to actually include all the reliability details. They used a similar strategy to deal with message correlation. That is, rather than trying to invent a generic correlation language they used an annotation to specify what correlation algorithm they were using.
One problem the joint team didn't run into was selecting what web service description language to use. The joint team, wanting to be strictly standards compliant, was only interested in using Web services. So they were happy to find a Web services cDl working group. By definition Web services means WSDL, in this case WSDL 1.2. Rather than taking precious working group time to invent a generic description framework that could potentially host any and all descriptors including ones for ebXML, RosettaNet, EDIINT, etc., thus causing the group to likely never ship while they busily re-invented the work of the WSDL working group, the Web services cDl working group that the joint team choose focused exclusive on WSDL 1.2.
A problem the joint team did run into was that by law certain change approvals must be signed off in a certain order. While the general rule for interoperability is be generous in what you accept, whose corollary is be flexible in your processing, such cannot be where the law is concerned. A cDl can only provide so much detail and in some limited cases more detail is needed, but not so much detail as to write the actual code. This is where abstract processes in choreography programming languages (cPl) come in.
An abstract process is a cDl program that has been stripped of some logic. More complete abstract processes may show variable handling but hide certain types of variable handling behind opaque functions. More bare bones abstract processes do not even specify what variables are to be used. A bare bones abstract process is similar to a cDl in the sense that it is not executable but unlike a cDl an abstract process can deal with issues beyond sending and receiving messages as well as specifying its behavior from the perspective of a single participant. A cDL on the other hand exclusively illustrates messaging behavior and only from a global view, that is, from the perspective visible to multiple participants rather than a single participant.
After the joint team created the cDl to describe the messages involved in the legally mandated change approval process they then created two abstract processes. The abstract processes provided the details of exactly how each participant was to process a change request. The abstract processes went beyond just describing the messaging behavior and also dealt with issues such as the actual logic used to route messages and some of the transformations involved. This level of detail provided by the abstract process was necessary to ensure that both teams behaved exactly as legally required and since it is impossible to express this level of detail in a cDl an abstract process was necessary.
The joint team chose an abstract process over an executable process in order to not hinder each company's ability to implement the logic in the way they saw fit. What was needed was only a detailed description of the desired behavior, not actual running code. This made the abstract process the more desirable choice.
By using annotations to specify their reliable messaging and correlation behavior the joint team was able to produce a flexible cDl that could focus on their business logic rather than lower level infrastructure issues. By using both a cDl and an abstract process the joint team was able to provide the level of detail needed to write a cPl that would enable both companies to interoperate.
Submitted by: BEA, Inc.
Ref: http://lists.w3.org/Archives/Member/member-ws-chor/someURL
Companies A, B and C do business together. Each has differing infrastructures in support of their business but they all have access to the web. In terms of Web Service actors they have the following:
Web Service A " the primary web service that A offers to the others.
Web Service B " the primary web service that B offers to the others.
Web Service C " the primary web service that C offers to the others.
Each company has made different choices in terms of technology adoptions. Each company has differing degrees of web service adoption. Each company implements their web services using different technological choices.
The problem Particpants A, B and C collaborate on designing a system to join their businesses together using web services at each end. To do this they do the usual pictures and prose which describes the interaction of the system that they jointly wish to build. This is sent out as the requirements and architectural overview of the system.
The high level design A team of CP's get together at A, B and C and describe their own roles using a cDL and then get together to knit the three cDL's together thus forming what is a nascent global view for A, B and C.
The transport This nascent view is further elaborated as the importance of different parts of the choreography are identified and marked as requiring a certain QoS of the underlying transport.
The low level design This choreography is then used to do drive the development of the web services at A, B and C. In the case of A, who has no existing web service that meets these requirements it is used to generate the appropriate code skeletons based on their favourite cPL. In the case of B who have a couple of web services that together will meet the requirements, they stitch it together as a choreography itself and restrict the visibility of the web services that they use to do it offering only entry and exit points in the sub-choreography. In the case of C, well it turns out they have an old system that really does meet the requirements and so they simply wrap that system using WSDL and present it as a web service as is.
Testing Having done all of this each of the participants (A, B and C) use the agreed choreography expressed in this cDL to drive their testing. The cDL together with a special tool is used to generate test messages and is used to validate the responses as they perform the requisite unit testing. When they step up to the system and integration testing phases of the overall system the cDL comes into its own yet again by enabling them to have a clear picture of the message exchanges, and therefore the external observable behaviours of each others systems thus ensuring that the testing is completed within the time and under budget.
Verification In a market place that is highly regulated it turns out that the interchange between A, B and C needs to be shown to be correct. The agreed choreography is checked against the regulators view of what the choreography should be. By performing a bi-simulation it is shown to be incorrect and the regulator requires changes. The changes are made but the impact is quiet different for A, B and C. For A the changes are fairly simple because they generated from the cDL. They simply apply the changes at the high level and the changes get rolled in. For B, who combined web services to meet the requirements upon them, took more time because they could not simply generate. They had to do the usual impact analysis and so on and then apply the changes by hand, fortunately their changes were simply structural on the choreography itself and not on their web services. C had the worst job of all because it required changes to their legacy system. So they had to implement a WSDL wrapper for their system, add new functionality on top. Then they wrapped the new functionality and applied yet more WSDL and then bundled it all back into a sub choreography and so on. The bi-simulation results in only minor changes to the choreography which are implemented and the system resubmitted. This time it is passed and is provisioned. The regulators choreography description, again using the cDL, is used for runtime continual validation by the regulator and the companies A, B and C.
In this use case the roles of A, B and C are as follows:
Company A plays the role of supplier to end users.
Company B provides credit checking facilities to A.
Company C provides shipping facilities to A
An order is either fulfilled or cancelled. This can occur because an order was shipped and received or an order was terminated because of some exception that occurred or because the customer cancelled the order.
This use case compares and contrasts two distinct choreography related problems that may require complementary but separate solutions. For the purpose of clarity we define these problems in terms of two languages that we call a choreography programming language (cPL) and choreography description language (cDL).
A cPL is a programming language specifically designed to address long running asynchronous logic such as that commonly used in business process scenarios. A participant in a choreography would be expected to implement their executable code using a cPL, examples of cPL's are Java and C#. For the purpose of clarity other cPL examples which are not yet mainstream are DAML-S and BPEL4WS1.1 as well as WS-BPEL which is in development at Oasis.
A cDL is a description language used to provide a declarative, multi-party global view of a message choreography. A cDL only focuses on message passing and exist primarily to enable participants in a choreography to understand the expectations of their messaging behavior in relation to other participants. Thus:
A cDL can describe the external observable interactive behaviour of two or more web services relative to each other.
A cDL can be used to generate cPL code skeletons.
A cDL can be used to verify the behaviour of a participant with respect to it's role.
A cDL can be used to generate test cases.
A cDL is independent and orthogonal to the language in which it's participating web services are implemented.
As a consequence of this a cDL may not need to be executable and there maybe a reason to have this fact stated in some way in a cDL language.
D-CR-001 | Category: Charter Constraint | Level: MUST |
All specified choreography descriptions MUST be compatible with WSDL 1.2. |
D-CR-014 | Category: Charter Constraint | Level: SHOULD |
A choreography SHOULD not be bound to any specific implementation. |
D-CR-010 | Category: Interoperability | Level: MAY |
A choreography MAY provide an extensible binding mechanism such that choreographies could be bound to diverse technologies. |
D-CR-023 | Category: Interoperability | Level: MAY |
A choreography definition language MUST NOT be restricted to any single implementation. |
D-CR-004 | Category: Management and Provisioning | Level: MUST |
It MUST be possible to query the state of a choreography. |
D-CR-052 | Category: Management and Provisioning | Level: MUST |
It MUST be possible to manage choreographies and their relationships and the messages exchanged between them. |
D-CR-053 | Category: Management and Provisioning | Level: MUST |
It MUST be possible to observe the state of a choreography as it occurs in time. |
D-CR-056 | Category: Management and Provisioning | Level: MUST |
It MUST be possible to create "limited global views" of a choreography, where not all interactions are presented. |
D-CR-013 | Category: Management and Provisioning | Level: MUST |
A choreography MUST support for a specific observer role. |
D-CR-016 | Category: Management and Provisioning | Level: MUST |
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. |
D-CR-020 | Category: Management and Provisioning | Level: MUST |
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. |
D-CR-005 | Category: Exception Handling | Level: MUST |
A choreography MUST provide exception handling that allows propogation of errors. |
D-CR-009 | Category: Exception Handling | Level: MUST |
A choreography MUST provide the ability to transition to a distinct state when a timeout occurs. |
D-CR-018 | Category: Exception Handling | Level: SHOULD |
A choreography SHOULD define a standardized way to recover from catastrophic failure. |
D-CR-026 | Category: Exception Handling | Level: MUST |
A choreography MUST support rebust exception handling. |
D-CR-027 | Category: Exception Handling | Level: MUST |
Error/fault handling and compensation features MUST to be able to be expressed in the choreography definition language. |
D-CR-030 | Category: Exception Handling | Level: MUST |
A choreography MUST be able to distinguish error and regular state transitions, and to describe unhandled exceptions. |
D-CR-031 | Category: Exception Handling | Level: MUST |
A choreography MUST support an exception condition for Delivery Failure - The message was sent but was (probably) not received. |
D-CR-032 | Category: Exception Handling | Level: MUST |
It MUST be possible to manage exceptions between choreographies, and to include exception handling information in dependency management. |
D-CR-033 | Category: Exception Handling | Level: MUST |
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). |
D-CR-043 | Category: Exception Handling | Level: MUST |
It MUST be possible to differentiate errors (unknown and fatal) and exceptions (known and potentially recoverable) in the context of choreography. |
D-CR-061 | Category: Exception Handling | Level: MUST |
A choreography MUST provide the ability to transition to a predefined state when an exception occurs. |
D-CR-064 | Category: Exception Handling | Level: SHOULD |
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. |
D-CR-065 | Category: Exception Handling | Level: MUST |
A choreography definition language MUST support the following exception: message format error - the components of the message were not validly constructed. |
D-CR-066 | Category: Exception Handling | Level: MUST |
A choreography definition language MUST support the following exception: message Content structure error. |
D-CR-067 | Category: Exception Handling | Level: SHOULD |
A choreography definition language SHOULD support exceptions whereby a given service component could be sent at any point in the transaction. |
D-CR-068 | Category: Exception Handling | Level: MUST |
Exception types MUST be limited to the ones that will be used in the choreography definition language. |
D-CR-069 | Category: Exception Handling | Level: MUST |
It MUST be possible to model different states for termination of the choreography (e.g. failure and success). |
D-CR-070 | Category: Exception Handling | Level: MUST |
A choreography definition language MUST support the following exception: transmission error - message not sent. |
D-CR-002 | Category: Messaging | Level: MUST |
A choreography MUST be independent of message formats. |
D-CR-007 | Category: Messaging | Level: SHOULD |
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. |
D-CR-011 | Category: Messaging | Level: SHOULD |
A choreography SHOULD describe exchanges of information that change the state of the process. |
D-CR-029 | Category: Messaging | Level: MUST |
A choreography MUST support some standard taxonomy of messages, such as a busine messages, generic error reporting messages and acknowledgement messages. |
D-CR-035 | Category: Messaging | Level: MUST |
It MUST be possible to model message flows that repeat, based on information within the messages (for instance, the contract negotiation protocol). |
D-CR-039 | Category: Messaging | Level: MUST |
It MUST be possible to describe a sequence of communications amng choreographies. |
D-CR-051 | Category: Messaging | Level: MUST |
A choreography definition language MUST provide a constuct that describes the sending of a single message. |
D-CR-055 | Category: Messaging | Level: SHOULD |
It SHOULD be possible to define a choreography the uses a callback mechanism. |
D-CR-060 | Category: Messaging | Level: MUST |
It MUST be possible to define choreography without having to specify the contents of the messages being used. |
D-CR-015 | Category: Interfaces | Level: MUST |
A choreography MUST provide the ability to have prose aociated with it to enable its behaviour to be explained. |
D-CR-044 | Category: Interfaces | Level: MUST |
A choreography MUST enable information hiding. |
D-CR-017 | Category: Transaction | Level: SHOULD |
A choreography SHOULD enable a agreement or agreement(s) that provides the busine context of the choreography definition. |
D-CR-037 | Category: Transaction | Level: MUST |
It MUST be possible to describe a behaviour recursively. |
D-CR-038 | Category: Transaction | Level: MUST |
It MUST be possible to describe conditional behaviour for a choreography. |
D-CR-048 | Category: Transaction | Level: MUST |
It MUST be possible to describe a choreography in terms of its messaging behaviour. |
D-CR-057 | Category: Transaction | Level: MUST |
It MUST be possible to define multi-party interaction. |
D-CR-058 | Category: Transaction | Level: SHOULD |
It MUST be possible for a choreography to modify its behaviour based on its operational context. |
D-CR-059 | Category: Transaction | Level: MUST |
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. |
D-CR-003 | Category: Composition | Level: MAY |
A choreography MAY have run time changes which allow the actual participants to vary. |
D-CR-006 | Category: Composition | Level: MUST |
It MUST be possible to describe choreographies as a composition of other choreographies. |
D-CR-019 | Category: Composition | Level: MUST |
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. |
D-CR-024 | Category: Composition | Level: MUST |
It MUST be possible to dynamically determine the participants in a choreography at runtime. |
D-CR-034 | Category: Composition | Level: MUST |
Choreographies MUST be composable into a hierarchy. |
D-CR-036 | Category: Composition | Level: SHOULD |
Choreographies SHOULD be able to call other choreographies in a hierarchical fashion. |
D-CR-040 | Category: Composition | Level: MUST |
It MUST be possible to describe parallel composition of services. |
D-CR-041 | Category: Composition | Level: MUST |
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. |
D-CR-042 | Category: Composition | Level: MAY |
A choreography MAY have run time changes which allow the behaviour of the actual choreography to vary based on state. |
D-CR-047 | Category: Composition | Level: MUST |
It MUST be possible to define a new choreography by "extending" an existing one. |
D-CR-054 | Category: Composition | Level: SHOULD |
A choreography SHOULD express the composition of participant web services into a new service. |
D-CR-062 | Category: Composition | Level: MUST |
It MUST be possible to dynamically add sub-choreographies to a "running" choreography. |
D-CR-008 | Category: Testing and Validation | Level: MUST |
An implementation of a proce that is following a choreography MUST be able to verify that the choreography is being followed correctly as specified in the choreography definition. |
D-CR-049 | Category: Testing and Validation | Level: MUST |
It MUST be possible to validate a choreography definition for correct behaviour at the time it is designed. |
D-CR-050 | Category: Testing and Validation | Level: MUST |
It MUST be possible to validate a choreography definition for correct behaviour at the time it is in operation. |
No requirements document can provide complete coverage for any particular technology. However, these user scenarios, use cases, the requirements derived from them are intended to provide coverage for the majority of the most common possible use of Web Service Choreography. It is hoped that any omissions or errors contained herein will be corrected as this document matures.