Asynchronous Service Access Protocol (ASAP) Version 1.0

Total Page:16

File Type:pdf, Size:1020Kb

Asynchronous Service Access Protocol (ASAP) Version 1.0

1

2Asynchronous Service Access 3Protocol (ASAP) Version 1.0

4Working Draft 2B, December 11, 2004

5Document identifier: 6 wd-asap-spec-01 7Location: 8 http://www.oasis-open.org/committees/documents.php?wg_abbrev=asap 9Editors: 10 Jeffrey Ricker, Individual, 11 Mayilraj Krishnan, Cisco Systems, 12 Keith Swenson, Fujitsu Software, 13 John Fuller, Individual, 14Committee Members: 15 Moshe Silverstein, Individual, 16 Sameer Pradhan, Fujitsu, 17 Jeff Cohen, Individual 18Abstract: 19 A standard protocol is needed to integrate asynchronous services across the Internet and 20 provide for their interaction. The integration and interactions consist of control and 21 monitoring of the services. Control means creating the service, setting up the service, 22 starting the service, stopping the service, being informed of exceptions, being informed of 23 the completion of the service and getting the results of the service. Monitoring means 24 checking on the current status of the service and getting an execution history of the 25 service. The protocol should be lightweight and easy to implement, so that a variety of 26 devices and situations can be covered. 27 The Asynchronous Service Access Protocol (ASAP) is a proposed way to solve this 28 problem through use of Simple Object Access Protocol (SOAP), and by transferring 29 structured information encoded in XML. A new set of SOAP methods are defined, as well 30 as the information to be supplied and the information returned in XML that accomplish the 31 control and monitoring of generic asynchronous services. 32 This document will: provide an executive overview; specify the goals of ASAP; explain 33 how the resource (object) model works; explain how uniform resource names (URI) are 34 used to invoke methods of those resources; explain how to encode data to be sent or 35 received; and specify preliminary details of the interface methods and parameters. 36Status: 37 This document is updated periodically on no particular schedule. Send comments to the 38 editor. Committee members should send comments on this specification to the 39 [email protected] list. Others should subscribe to and send comments to the 40 [email protected] list. To subscribe, send an email message to asap- 41 [email protected] with the word "subscribe" as the body of the 42 message. 43 For information on whether any patents have been disclosed that may be essential to 44 implementing this specification, and any offers of patent licensing terms, please refer to 45 the Intellectual Property Rights section of the ASAP TC web page (http://www.oasis- 46 open.org/committees/asap/).

1wd-asap-spec-01 December 29, 2004 2Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 1 of 51 47Table of Contents

481 Introduction...... 4 49 1.1 Summary...... 4 50 1.2 Not-so-technical executive summary...... 4 51 1.3 Problem statement...... 5 52 1.4 Things to achieve...... 5 53 1.5 Things not part of the goals...... 6 54 1.6 Terminology...... 6 55 1.7 Notation conventions...... 7 56 1.8 Related documents...... 7 572 Resource model...... 8 58 2.1 Overview...... 8 59 2.2 Instance...... 9 60 2.3 Factory...... 9 61 2.4 Observer...... 9 62 2.5 URI...... 9 63 2.6 ContextData and ResultData...... 9 64 2.7 Common Resource Properties…………………………………………………………………..10 653 Protocol...... 11 66 3.1 SOAP...... 11 67 3.2 Request header...... 11 68 3.3 Response header...... 12 69 3.4 Body...... 12 704 Instance resource...... 14 71 4.1 Instance resource properties...... 14 72 4.2 GetProperties...... 16 73 4.3 SetProperties...... 16 74 4.4 Subscribe...... 17 75 4.5 Unsubscribe...... 18 76 4.6 ChangeState...... 18 775 Factory resource...... 20 78 5.1 Factory resource properties...... 20 79 5.2 GetProperties...... 21 80 5.3 CreateInstance...... 22 81 5.4 ListInstances...... 24 826 Observer resource...... 26 83 6.1 Observer resource properties...... 26 84 6.2 GetProperties...... 26 85 6.3 Completed...... 26 86 6.4 StateChanged...... 27 877 Data encoding...... 28 88 7.1 Context data and result data...... 28

3wd-asap-spec-01 December 29, 2004 4Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 2 of 51 89 7.2 Extensibility...... 28 90 7.3 State type...... 28 91 7.4 History type...... 29 92 7.5 Exceptions and error codes...... 30 93 7.6 Language...... 31 94 7.7 Security...... 31 958 References...... 33 96 8.1 Normative...... 33 97Appendix A. Schema/WSDL...... 34 98Appendix B. Acknowledgments...... 46 99Appendix C. Revision History...... 47 100Appendix D. Notices...... 48 101

5wd-asap-spec-01 December 29, 2004 6Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 3 of 51 1021 Introduction

1031.1 Summary 104This protocol offers a way to start an instance of an asynchronous web service, monitor it, control 105it, and be notified when it is complete. This service instance can perform just about anything for 106any purpose. The key aspect is that the service instance is something that one would like to start 107remotely, and it will take a long time to run to completion. Short-lived services would be invoked 108synchronously with Simple Object Access Protocol (SOAP) [SOAP] and one would simply wait for 109completion. Because certain service instances last anywhere from a few minutes to a few 110months, they must be invoked asynchronously. 111How does it work? You must start with the URI of a service definition called a factory. A SOAP 112request to this URI will cause this service definition to generate a service instance, and return the 113URI of this new service instance that is used for all the rest of the requests. The service instance 114can be provided with data (any XML data structure) by another SOAP request. The current state 115of the service instance can be retrieved with another SOAP request. The service instance can be 116paused or resumed with another SOAP request. There is also a pair of requests that may be 117used to give input data to the service instance, and to ask for the current value of the output data. 118What happens when it is done? The service instance runs asynchronously and takes whatever 119time it needs to complete. The originating program can, if it chooses, keep polling the state of the 120service instance in order to find out when it is complete. This will consume resources 121unnecessarily both on the originating side as well as the performing side. Instead, the originator 122may provide the service instance with an EPR [WS-Addressing] for an observer. When the 123service instance is completed it will send a SOAP request to the EPR for each observer. This 124allows the originator to be put to sleep, freeing up operating system as well as network resources 125while waiting for the service instance to complete.

1261.2 Not-so-technical executive summary 127What does this mean in English? Most existing Internet protocols like HTTP are based on an 128unwritten assumption of instant gratification. If a client asks for any resource that takes longer 129than about a minute to generate, then the request times out, that is, it fails. We call anything on 130the Internet like HTML pages and GIF images a resource. Most resources such as web pages are 131static or require a very simple database query to create, so they easily meet the instant 132gratification requirement. 133As we have applied Internet technology to more and more scenarios, this assumption of instant 134gratification has become more strained. A good example is wireless Internet. With wireless, the 135resource may take more than a minute to generate simply because of a poor connection. 136A more telling example is electronic commerce. In commerce, it may not be a simple database 137query that generates a document but rather an entire corporate business process with a human 138approval involved. Very few corporate business processes especially those requiring 139management approval, take less than a minute to complete. 140What needed in real world scenarios is ability to ask for a resource and for that resource to be 141able to respond, “The information isn’t ready yet. Where would you like me to send it when I’m 142done?” That is what ASAP considers as start an instance of a generic asynchronous service and 143be notified when it is complete. Someone asking for the resource should be able to pester, just 144like in the real world, with questions like, “Are you done yet? Where is that document I asked for?” 145That is what ASAP considers as monitor. Finally the requestor asking resource change mind in 146mid process, just like in the real world with statements like, “Change that to five widgets, not six.” 147That is what ASAP considers as control.

7wd-asap-spec-01 December 29, 2004 8Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 4 of 51 148With such a protocol, business should be able to integrate not just applications but business 149processes, which is what electronic commerce is really all about. With such a protocol, business 150should also be able to integrate within and between enterprises much faster because of the ability 151to have manual processes look and act to everything else on the Internet as if it were actually 152automated. 153Here is an example. An ASAP message is sent to a server requesting inventory levels of a certain 154part number. The server responds to the requestor “The information isn’t ready yet. Where would 155you like me to send it when I’m done?” The server then sends a message to Steve’s two-way 156pager in the warehouse asking him to type in the inventory level of the certain part number. After 157a coffee break, Steve duly types in the number. The server creates the proper message and 158responds to the requestor. To the outside world, an electronic message was sent and an 159electronic message was received. The result is automated inventory level tracking. Nobody need 160to know that Steve walked down the aisle and counted by hand.

1611.3 Problem statement 162Not all services are instantaneous. A standard protocol is needed to integrate asynchronous 163services (processes or work providers) across the Internet and provide for their interaction. The 164integration and interactions consist of control and monitoring of the service. Control means 165creating the service, setting up the service, starting the service, stopping the service, being 166informed of exceptions, being informed of the completion of the service and getting the results of 167the service. Monitoring means checking on the current status and getting execution history of the 168service. 169The protocol should be lightweight and easy to implement, so that a variety of devices and 170situations can be covered.

1711.4 Things to achieve 172In order to have a realizable agreement on useful capabilities in a short amount of time, it is 173important to be very clear about the goals of this effort. 174 The protocol should not reinvent anything unnecessarily. If a suitable standard exists, it 175 should be used rather than re-implement in a different way. 176 The protocol should be consistent with XML Protocol and SOAP. 177 This protocol should be easy to incorporate into other SOAP-based protocols that require 178 asynchronous communication 179 The protocol should be the minimal necessary to support a generic asynchronous service. 180 This means being able to start, monitor, exchange data with, and control a generic 181 asynchronous service on a different system. 182 The protocol must be extensible. The first version will define a very minimal set of 183 functionality. Yet a system must be able to extend the capability to fit the needs of a 184 particular requirement, such that high level functionality can be communicated which 185 gracefully degrades to interoperate with systems that do not handle those extensions. 186 Like other Internet protocols, ASAP should not require or make any assumptions about the 187 platform or the technology used to implement the generic asynchronous service. 188 Terseness of expression is not a goal of this protocol. Ease of generating, understanding and 189 parsing should be favored over compactness. 190Regarding human readability, the messages should be self-describing for the programmer, but 191they are not intended for direct display for the novice end user. This specification attempts to 192adhere to Eric S. Raymond’s ninth principle: “Smart data structures and dumb code works a lot 193better than the other way around,” or, paraphrased from Frederick P. Brooks, “Show me your

9wd-asap-spec-01 December 29, 2004 10Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 5 of 51 194[code] and conceal your [data structures], and I shall continue to be mystified. Show me your 195[data structures], and I won't usually need your [code]; it'll be obvious.'' [RAYMOND]

1961.5 Things not part of the goals 197It is also good practice to clearly demark those things that are not to be covered by the first 198generation of this effort: 199 The goals of ASAP do not include a way to set up or to program the generic services in any 200 way. Especially for the case where the service is a workflow service, ASAP does not provide 201 a way to retrieve or submit process definitions. The service can be considered to be a "black 202 box" which has been pre-configured to do a particular process. ASAP does not provide a 203 way to discover what it is that the service is really doing, only that it does it (given some data 204 to start with) and some time later completes (providing some result data back). 205 ASAP will not include the ability to perform maintenance of the asynchronous web service 206 such as installation or configuration. 207 ASAP will not support statistics or diagnostics of collections of asynchronous web service. 208 ASAP is designed for the control and monitoring of individual asynchronous web services. 209 ASAP does not specify security. Rather, it relies on transport or session layer security. ASAP 210 can adopt SOAP –specific security protocols once they are finalized. 211 ASAP does not address service quality issues of transport such as guaranteed delivery, 212 redundant delivery and non-repudiation. Rather, ASAP relies on the session layer, the 213 transport layer, or other SOAP protocols to address these issues. 214These may be added in a later revision, but there is no requirement to support these from the first 215version, and so any discussion on these issues should not be part of ASAP working group 216meetings.

2171.6 Terminology 218The key words must, must not, required, shall, shall not, should, should not, recommended, may, 219and optional in this document are to be interpreted as described in [RFC2119]. 220Other specific terms are as follows. 221Web Service: W3C Web Service Architecture Group [W3C Arch] defined Web Service as “A 222software system designed to support interoperable machine-to-machine interaction over a 223network. It has an interface described in a machine-processable format (specifically WSDL). 224Other systems interact with the Web service in a manner prescribed by its description using 225SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with 226other Web-related standards”

227Service: synonymous with web service.

228Asynchronous Web Service: A web service or set of web services designed around a mode of 229operation where a request is made to start an operation, and a later separate request is made to 230communicate the results of the operation. A number of requests may be made in between in 231order to control and monitor the asynchronous operation. The results of the operation may be 232delivered either by polling requests from the originator, or else by a notification request originated 233by the performer.

234Method: An individual interoperable function is termed a “method”. Each method may be passed 235a set of request parameters and return a set of response parameters.

236Resource types: Methods are divided into different groups to better identify their context. The 237primary groups of methods required for interoperability are named Instance, Factory, and 238Observer.

11wd-asap-spec-01 December 29, 2004 12Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 6 of 51 239Instance: This is the resource implemented by the web service that is actually performing the 240requested work. These resources allow for the actual monitoring and controlling of the work.

241Factory: This is the resource implemented by the service instance factory. Methods are provided 242to start new service instances, to list or search for existing instances, and to provide definitional 243information about the instances.

244Observer: This is a resource that a web service must implement in order to receive notification 245events from the service instance.

246Context data: The XML data sent to initiate the service.

247Results data: The XML data created by the successful completion of the service.

2481.7 Notation conventions 249The following namespace prefixes are used throughout this document: Prefix Namespace URI Definition as http://www.oasis-open.org/asap/1.0/asap.xsd ASAP namespace env http://schemas.xmlsoap.org/soap/envelope/ Envelope namespace from SOAP 1.1 enc http://schemas.xmlsoap.org/soap/encoding/ Encoding namespace from SOAP 1.1 xsd http://www.w3.org/2001/XMLSchema XML Schema namespace wsa http://schemas.xmlsoap.org/ws/2004/08/addressin W3C WS Addressing namespace g 250Table 1 Namespaces 251This specification uses an informal syntax we call pseudo-XML to describe the XML grammar of 252an ASAP document. This syntax is similar to that employed by the WSDL 1.1 specification Convention Example The syntax appears as an XML instance, but the values indicate the data types instead of values. Paragraphs within tags are the description of the tag and should be thought of as commented out with longer description of the purpose of the tag. Characters are appended to elements and attributes as * follows: "?" (0 or 1), "*" (0 or more), "+" (1 or more). Elements names ending in "…" indicate that elements/attributes irrelevant to the context are being omitted or they are exactly as defined previously. Grammar in bold has not been introduced earlier in the document, or is of particular interest in an example. “ Extensible element” is a placeholder for elements from <-- extensible element --> some "other" namespace (like ##other in XSD). The XML namespace prefixes (defined above) are used to indicate the namespace of the element being defined Examples starting with contain enough information to conform to this specification; others examples are fragments and require additional information to be specified in order to conform. 253 Table 2 Pseudo-XML documentation conventions 254Formal syntax is available in supplementary XML Schema and WSDL specifications in the 255document.

13wd-asap-spec-01 December 29, 2004 14Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 7 of 51 2561.8 Related documents 257An understanding of SOAP and how it works is assumed in order to understand this document.

15wd-asap-spec-01 December 29, 2004 16Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 8 of 51 2582 Resource model

2592.1 Overview 260For the support of an asynchronous web service, three types of web services are defined to 261match the three roles of the interaction: Instance, Factory, and Observer. A web service type is 262distinguished by the group of operations it supports, and so there are three groups of operations. Asynchronous Webservice

CreateInstance GetProperties ListInstances Factory

ChangeState creates GetProperties SetProperties Subscribe Unsubscribe Observer Instance Completed GetProperties StateChanged 263 264Figure 1 Resource types of an asynchronous web service and the methods they use 265Typical use of this protocol would be as follows: 2661. A Factory service receives a CreateInstanceRq message that contains ContextData 267 and an EPR of an Observer 2682. The Factory service creates an Instance service and subscribes the Observer to the Instance 2693. The Factory responds to CreateInstanceRq message with a CreateInstanceRs 270 message that contains an EPR for the Instance 2714. The Instance service eventually completes its task and sends a CompletedRq message that 272 contains the ResultsData to the Observer 273

observer factory instance

CreateInstanceRq create

CreateInstanceRs

CompletedRq

CompletedRs

274 275Figure 2 Typical use of ASAP

17wd-asap-spec-01 December 29, 2004 18Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 9 of 51 2762.2 Instance 277The Instance resource is the actual "performance of work". It embodies the context information 278that distinguishes one performance of one asynchronous service from another. Every time the 279asynchronous service is to be invoked, a new instance is created and given its own resource 280identifier. A service instance can be used only once: it is created, then it can be started, it can be 281paused, resumed, terminated. If things go normally, it will eventually complete. 282When a service is to be enacted, a requestor will reference a service factory’s resource identifier 283and create an instance of that service. Since a new instance will be created for each enactment, 284the service factory may be invoked (or instantiated) any number of times simultaneously. 285However, each service instance will be unique and exist only once. Once created, a service 286instance may be started and will eventually be completed or terminated.

2872.3 Factory 288The Factory resource represents a "way of doing some work". It is the most fundamental 289resource required for the interaction of generic services. It represents the description of a 290service’s most basic functions, and is the resource from which instances of a service will be 291created. Since every service to be enacted must be uniquely identifiable by an interoperating 292service or service requestor, the factory will provide a resource identifier. When a service is to be 293enacted, this resource identifier will be used to reference the desired asynchronous service to be 294executed. A service might be a set of tasks carried out by a group of individuals, or it might be 295set of machine instructions that make up an executable program, or it might be any combination 296of these. The important point to remember about a service factory is that while it embodies the 297knowledge of how work is performed, it does not actually do the work. The service instance does 298the work.

2992.4 Observer 300The Observer resource provides a means by which a service instance may communicate 301information about events occurring during its execution, such as its completion or termination. 302Third-party resources may have an interest in the status of a given service instance for various 303organization and business reasons. Observers subscribe to a service instance by providing a 304WS-Addressing Endpoint Reference (EPR) [WS-Addressing]. A service instance notifies all 305observers by sending SOAP messages to the observer EPRs.

3062.5 URI 307Each resource has an URI address, called the key. A given implementation has complete control 308over how it wishes to create the URI that identifies the resource. It should stick to a single 309method of producing these URI Keys, so that the names can serve as a unique identifier for the 310resource involved. The receiving program should treat it as an opaque value and not assume 311anything about the format of the URI. All instance keys must be unique. 312URIs for resources are exchanged in WS-Addressing endpoint references, so that any additional 313information required for addressing the URI can be provided dynamically to protocol participants.

3142.6 ContextData and ResultData 315The heart of an asynchronous service is the ContextData and the ResultData. The 316ContextData and the ResultData are the unique part of a particular service; everything else 317is boilerplate. The ContextData is the query or the initial request to the service. The 318ContextData dictates, determines or implies what the service instance should create. The 319ResultData is what the service eventually creates for the observers. 320

19wd-asap-spec-01 December 29, 2004 20Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 10 of 51 3212.7 Common Resource Properties 322ASAP resources share some common properties. 323An ASAP resource MUST have a “Key” property, a URI that uniquely identifies it.

324Key: A URI that uniquely identifies this resource. 325 326 327 328 329

330 331Resources like factories and instances have further descriptive properties: name, subject, and 332description. 333Name: A human readable identifier of the resource. This name may be nothing more than a 334number.

335Subject: A short description of the resource.

336Description: A longer description of the resource. 337 338 339 340 341 342 343

344 345ASAP provides a simple, minimal mechanism for accessing these properties. 346Implementations may further support WSRF resource property operations for greater flexibility 347and represent that access capability through related WSDL definitions [WS-RP]. 348

21wd-asap-spec-01 December 29, 2004 22Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 11 of 51 3493 Protocol

3503.1 SOAP 351Simple Object Access Protocol (SOAP) [8] is a protocol that defines a simple way for two 352programs to exchange information. The protocol consists of a client program that initiates a 353request to a server program. Any given program may be capable of being both a client and a 354server. Our use of these terms refers only to the role being performed by the program for a 355particular connection, rather than to the program's capabilities in general. The request involves 356the sending of a request message from the client to the server. The response involves the 357sending of a response message from the server back to the client. Both the request and 358response messages conform to the SOAP message format. 359The root tag of an ASAP message is a SOAP envelope as defined by the SOAP standard. 360The message must contain a SOAP header as per the SOAP standard for addressing and routing 361the message and must employ WS-Addressing. An ASAP message from a client must contain 362the Request element and a message from a server must contain a Response element.

3633.2 Request header 364A request header uses WS-Addressing message information header blocks. Instead of using the 365/wsa:FaultTo element, a fault should always be delivered to the well-defined ASAP resource 366participating in the message exchange given in the /wsa:ReplyTo element.

367/wsa:MessageID Allows for message correlation with wsa:RelatesTo in responses.

368/wsa:ReplyTo If a response is required, the request MUST provide a wsa:ReplyTo element.

369/wsa:From The request MAY specify the endpoint reference for the resource that originated the 370request. This may be redundant with similar specifier in the transport layer.

371/wsa:To The request MUST specify the key of the resource that the request is being made to. 372This may be redundant with similar specifier in the transport layer.

373/wsa:Action The request MUST specify a URI defining the semantics of the message.

374 375 376 377 ?xsd : a n yURI< /wsa :Mes s a g e ID> 378 ?Opt i o n a l EPR fo r rep l i e s < /w s a :R e p l yTo> 379 ? The EPR of the sende r 380 The URI of the rec e i v e r 381 URI iden t i f y i n g the semant i c s of the message< /wsa :Ac t i o n > 382 383 384 . . . 385 386

387Example 1 Request header

23wd-asap-spec-01 December 29, 2004 24Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 12 of 51 388

389Response header 390WS-Addressing message information header blocks are used in responses.

391/wsa:From The response MUST specify the endpoint reference of the resource that originated 392the response. This may be redundant with similar specifier in the transport layer.

393/wsa:To The response MAY specify the key of the resource that the response is being made to. 394This may be redundant with similar specifier in the transport layer. 395Note that the wsa:To is mandatory in a request and the wsa:From is mandatory in a response. 396The purpose is to enforce keys upon ASAP resources without placing an unnecessary burden on 397resources that are merely employing ASAP resources. For instance, a Java program that 398instantiates an asynchronous service instance may not know its own URL.

399/wsa:Action The response MUST specify a URI defining the semantics of the message.

400/wsa:RelatesTo If the original request had a MessageID, then the response must carry one with 401that value in it. The requester can use this ID to correlate the response with the original request. 402

403 404 407 408 ?xsd : a n yURI 409 Endpo in t re f e r e n c e of the sende r< /ws a : F r om> 410 ? The URI of the rec e i v e r 411 Rep l y ac t i o n< /ws a :Ac t i o n > 412 ?Mess ag e Id of the reque s t for cor r e l a t i o n 413 414 415 . . . 416 417

418Example 2 Response header

25wd-asap-spec-01 December 29, 2004 26Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 13 of 51 419

4203.3 Body 421ASAP requires that there be one of the following elements within the body which represents the 422information needed for a specific operation: Factory Instance Observer GetPropertiesRq X X X GetPropertiesRs X X X SetPropertiesRq X SetPropertiesRs X CompletedRq X CompletedRs X CreateInstanceRq X CreateInstanceRs X ListInstancesRq X ListInstancesRs X ChangeStateRq X ChangeStateRs X StateChangedRq X StateChangedRs X SubscribeRq X SubscribeRs X UnsubscribeRq X UnsubscribeRs X env:Fault X X X 423Table 3 The ASAP message body elements 424These elements and their contents are described in detail in the sections on the specific 425operations.

27wd-asap-spec-01 December 29, 2004 28Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 14 of 51 4264 Instance resource 427All resources that represent the execution of a long-term asynchronous service must implement 428the Service Instance resource. The purpose of this resource type is to allow the work to proceed 429asynchronously from the caller. The Instance represents a unit of work, and a new instance of 430the Instance resource must be created for every time the work is to be performed. 431The performing of the work may take anywhere from minutes to months, so there are a number of 432operations that may be called while the work is going on. While the work is proceeding, ASAP 433requests can be used to check on the state of the work. If the input data has changed in the 434meantime, new input values may be supplied to the Instance, though how it responds to new data 435is determined by details about the actual task it is performing. Early values of the result data may 436be requested, which may or may not be complete depending upon the details of the task being 437performed. The results are not final until the unit of work is completed. When the state of the 438Instance changes, it can send events to the Observer informing it of these changes. The only 439event that is absolutely required is the "completed" or "terminated" events that tell the requesting 440resource that the results are final and the Instance resource may be disappearing. 441While a business process will implement Instance, it is important to note that there are also many 442other types of resources that will implement the Instance resource; it will also be implemented on 443any discrete task that needs to be performed asynchronously. Thus a wrapper for a legacy CICS 444transaction would implement the Instance resource so that that legacy application could be called 445and controlled by any program that speaks ASAP. A driver for an actual physical device, such as 446a numerical milling machine, would implement the Instance resource if that device were to be 447controlled by ASAP. Any program to be triggered by a process flow system that takes a long time 448to perform should implement the Instance resource, for example a program that automatically 449backs up all the hard drives for a computer. Since these resources represent discrete units of 450work (which have no subunits represented within the system) these resources will not need to 451have any activities.

4524.1 Instance resource properties

453Key: A URI that uniquely identifies this resource.

454State: The current status of this resource. Please see more details on the status property later in 455section on Section 7.3 “State Type”. This property is not directly settable, but can be changed 456through the ChangeState command.

457Name: A human readable identifier of the resource. This name may be nothing more than a 458number.

459Subject: A short description of this process instance. This property can be set using 460SetProperties.

461Description: A longer description of this process instance resource. This property can be set 462using SetProperties.

463FactoryKey: EPR for the factory resource from which this instance was created.

464Observers: A collection of endpoint references of registered observers of this process instance, if 465any exist.

466ContextData: Context-specific data that represents the values that the service execution is 467expected to operate on.

29wd-asap-spec-01 December 29, 2004 30Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 15 of 51 468ResultData: Context-specific data that represents the current values resulting from process 469execution. This information will be encoded as described in the section Process Context and 470Result Data above. If result data are not yet available, the ResultData element is returned empty.

471History: Describes the sequence of events and time stamp of the process instance.

472UserInterface: The address of a web based user interface for the process, should one exist. The 473remote asynchronous service may have a way to display this service instance to the user(s) who 474are involved in the local service. The URI in this EPR can be used in the local service to make a 475link to the remote service that can be navigated by a user to see directly the state of the remote 476process. An example of this might be a order process, which in turn schedules a shipment from a 477courier, and the courier provides a way to track the shipment, and so this EPR would allow the 478user to the purchase process to access the tracking display directly. This value is optional, and if 479not present then assumed that the remote service instance has no UI acceptable for the local 480users.

481 482 . . . 483 URI 484 op e n . n o t r u n n i n g< / a s : S t a t e > 485 s t r i n g 486 s t r i n g 487 s t r i n g 488 EPR 489 490 * EPR 491 492 493 <- - ext en s i b l e el emen t - - > 494 495 496 <- - ext en s i b l e el emen t - - > 497 498 499 . . .

500Example 3 Instance resource properties

501 502 503 504 505 506 507 508 509 510 513 514 515 516 517 518 519 521 522 523 524 525 526 527 529

31wd-asap-spec-01 December 29, 2004 32Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 16 of 51 530 531 532 533 535 536 537

538 Schema 1 Instance resource properties

5394.2 GetProperties 540This is a single method that returns all the values of all the properties of the resource.

541GetPropertiesRq: This is the main element present in the SOAP Body element.

542 543 545 546 547 548 549 550 551

552Example 4 Instance resource GetProperties method request

553 554 556 557 558 559 560 561 <- - prope r t i e s - - > 562 563 564

565Example 5 Instance resource GetProperties method response

566 567

568Schema 2 Instance resource GetProperties method

5694.3 SetProperties 570All resources implement SetProperties and allow as parameters all of the settable properties. 571This method can be used to set at least the displayable name, the description, or the priority of a 572process flow resource. This is an abstract interface, and the resources that implement this 573interface may have other properties that can be set in this manner. All of the parameters are 574optional, but to have any effect at least one of them must be present. This returns the complete 575info for the resource, just as the GetProperties method does, which will include any updated 576values.

577Data: A collection of elements that represent the context of this Instance. The elements are from 578the schema defined by this resource. The context is considered to be the union of the previous 579context and these values, which means that a partial set of values can be used to update just 580those elements in the partial set having no effect on elements not present in the call.

33wd-asap-spec-01 December 29, 2004 34Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 17 of 51 581 582 584 585 586 587 588 589 ? 590 ? 591 ? 592 593 <- - ext en s i b l e el emen t - - > 594 595 596 597 598

599Example 6 Instance resource SetProperties method request

600 601 603 604 605 606 607 608 Retu rn s the same re spon s e as GetP rope r t i e s 609 610 611

612Example 7 Instance resource SetProperties method response 613 614 615 616 617 618 619 620 621 622 624 625 627 628 629 630

631Schema 3 Instance resource SetProperties method

6324.4 Subscribe 633To allow scalability, Instances will notify Observers when important events occur. Observers 634must register their endpoint references with the Instance in order to be notified. 635The subscribe method is a way for other implementations of the Observer Operation Group to 636register themselves to receive posts about changes in process instance state. Not all Instance 637resources will support this; those that do not support, will return an exception value that explains 638the error.

35wd-asap-spec-01 December 29, 2004 36Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 18 of 51 639ObserverKey: Endpoint reference to a resource that both implements the Observer Operation 640Group and will receive the events

641 642 644 645 646 647 648 649 EPR 650 651 652

653Example 6 Instance resource Subscribe method request

654 655 657 658 659 660 661 662 663

664Example 7 Instance resource Subscribe method response

665 666 667 668 669 670 671 672

673Schema 4 Instance resource Subscribe method

6744.5 Unsubscribe 675This is the opposite of the subscribe method. Resource removed from being observers will no 676longer get events from this resource. The URI of the resource to be removed from the observers 677list must match exactly to an URI already in the list. If it does match, then that URI will be 678removed. If it does not match exactly, then there will be no change to the service instance.

679 680 682 683 684 685 686 687 688 EPR 689 690 691

692Example 8 Instance resource Unsubscribe method request

693 694

37wd-asap-spec-01 December 29, 2004 38Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 19 of 51 695 xmlns :ws a= " ht t p : / / s c h ema s . xm l s o a p . o r g /w s / 2 0 0 4 / 0 8 / a d d r e s s i n g "> 696 697 698 699 700 701 702

703Example 9 Instance resource Unsubscribe method response

704 705 706 707 708 709 710 711

712Schema 5 Instance resource Unsubscribe method

7134.6 ChangeState 714This method requests a change of state in the service. The instance service should send a 715StateChanged message to all observers.

716 717 719 720 721 722 723 724 t h e s t a t e reque s t e d < / a s : S t a t e > 725 726 727

728Example 10 Instance resource ChangeState method request

729 730 732 733 734 735 736 737 t h e s t a t e < / a s : S t a t e > 738 739 740

741Example 11 Instance resource ChangeState method response

742 743 744 745 746 747 748 749 750 751 752

39wd-asap-spec-01 December 29, 2004 40Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 20 of 51 753 754 755

756Schema 6 Instance resource ChangeState method

41wd-asap-spec-01 December 29, 2004 42Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 21 of 51 7575 Factory resource

7585.1 Factory resource properties

759Key: A URI that uniquely identifies this resource. All resources must have a Key property.

760Name: A human readable identifier of the resource. This name may be nothing more than a 761number.

762Subject: A short description of this service. Note that the factory and the instance both have a 763subject. The subject of the factory should be general. The subject of an instance should be 764specific.

765Description: A longer description of what the Asynchronous Web Service will perform. Note that 766the factory and the instance both have a subject. The subject of the factory should be general. 767The subject of an instance should be specific.

768ContextDataSchema: An XML Schema representation of the context data that should be 769supplied when starting an instance of this process. This element contains ContextDataType and 770should not contain any other global element.

771ResultDataSchema: an XML Schema representation of the data that will generate and return as 772a result of the execution of this process. This element contains ResultDataType and should not 773contain any other global element.

774Expiration: The minimum amount of time the service instance will remain accessible as a 775resource after it has been completed for any reason. The requester must plan to pick up all data 776within this time span of service completion. Data might remain longer than this, but there is no 777guarantee. The value is expressed as an XML Schema duration data type. For instance, 120 778days is expresses as “P120D”.

779ServiceGroupReference: Optional EPR for a service group [WS-SG], relating created 780instances. 781

782 783 . . . 784 URI 785 xsd : s t r i n g 786 xsd : s t r i n g 787 xsd : s t r i n g 788 789 790 <- - fac t o r y spec i f i c i t ems of the con t e x t da t a schema - - > 791 792 793 794 <- - fac t o r y spec i f i c i t ems of the re su l t da t a schema - - > 795 796 797 xsd :du r a t i o n 798 . . .

799Example 12 Factory resource properties 800 801 802 803 804

43wd-asap-spec-01 December 29, 2004 44Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 22 of 51 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830

831Schema 7 Factory resource properties

8325.2 GetProperties 833The Factory resource GetProperties method request is exactly the same as the Instance 834resource GetProperties request. The response returns the properties particular to the factory 835resource.

836 837 839 840 841 842 843 844 845

846Example 13 Factory resource GetProperties method request

847 848 850 851 852 853 854 855 <- - prope r t i e s - - > 856 857 858

859Example 14 Factory resource GetProperties method response

860 861

862Schema 10 Factory resource GetProperties method

45wd-asap-spec-01 December 29, 2004 46Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 23 of 51 863

8645.3 CreateInstance 865Given a process definition resource, this method is how instances of that process are created. 866There are two modes: create the process, with data, and start it immediately; or just create it and 867put the data on it and start it manually.

868StartImmediately element holds a Boolean value to say whether the process instances that is 869created should be immediately started, or whether it should be put into an initial state for later 870starting by use of the “start” operation. If this tag is missing, the default value is “Yes”.

871ObserverKey: holds the endpoint reference that will receive events from the created process 872instance. This observer resource (if it is specified) is to be notified of events impacting the 873execution of this process instance such as state changes, and most notably the completion of the 874instance.

875Name: A human readable name of the new instance. There is no commitment that this name be 876used in any way other than to return this value as the name. There are no implied uniqueness 877constraints.

878Subject: A short description of the purpose of the new instance.

879Description: A longer description of the purpose of the newly created instance.

880ContextData: Context-specific data required to create this service instance. Must conform to the 881schema specified by the ContextDataSchema.

882InstanceKey: The endpoint reference of the new Instance resource that has been created. This 883is NOT the same as the key for the factory that is in the Response header.

884 885 887 888 889 890 891 892 Yes |No< / a s : S t a r t Immed i a t e l y > 893 ? EPR 894 ? s t r i n g 895 ? s t r i n g 896 ? s t r i n g 897 898 <- - ext en s i b l e el emen t - - > 899 900 901 902

903Example 15 Factory resource CreateInstance method request

904 905 908 909 URI of the proce s s def i n i t i o n rec e i v i n g th i s reque s t < /ws a : To> 910 911 912 913 EPR 914 915

47wd-asap-spec-01 December 29, 2004 48Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 24 of 51 916

917Example 16 Factory resource CreateInstance method request

918 919 920 921 922 924 925 926 927 928 929 930 932 933 934 935 936 937 938 939 940

941Schema 11 Factory resource CreateInstance method

49wd-asap-spec-01 December 29, 2004 50Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 25 of 51 942

9435.4 ListInstances 944This method returns a collection of process instances, each instance described by a few 945important process instance properties. 946Since this is a request of the factory, a resource responsible for creating instances, about its created instances, limited 947information about the instances is available, likewise the types of filtering are limited. 948Instance properties valued subsequent to creation should be accessed by addressing the instance with ASAP’s 949GetProperties operation. 950For more advanced querying and filtering, such as “find all the instances in a certain state,” implementers may consider 951using WSRF-SG [WS-SG] and querying instances by a service group. 952ASAP does not specify group operations, but does provide a service group endpoint reference factory property so that a 953factory’s instances may be accessed and managed as a group. 954A request to list instances may optionally contain a filter of a filter type.

955Filter: Specifies what kinds of process instance resource you are interested in. 956Example XPath [XPath 1.0] filters might select a maximum number of instances, 957 / / I n s t a n c e [ p o s i t i o n ( ) < " 2 " ]

958or instances with a particular subject 959 / / * [ S ub j e c t = " S ub j e c tO f I n t e r e s t " ]

960FilterType: indicates what language the filter is expressed in. 961In the example of an XPath filter on Subject, 962 / / * [ Sub j e c t = " Sub j e c tO f I n t e r e s t " ] 964

965 966 968 969 970 971 972 973 ? 974 s t r i n g 975 976 977 978

979Example 17 Factory resource ListInstances method request

980 981 983 984 985 986 987 988 * 989 EPR 990 ? 991 ? 992 ? 993 994

51wd-asap-spec-01 December 29, 2004 52Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 26 of 51 995 996

997Example 18 Factory resource ListInstances method response

998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031

1032Schema 12 Factory resource ListInstances method 1033 1034 1035

53wd-asap-spec-01 December 29, 2004 54Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 27 of 51 10366 Observer resource

10376.1 Observer resource properties 1038The Observer resource can receive events about the state changes of a service instance. An 1039observer is expected to have a Key.

1040Key: a URI that uniquely identifies the resource. All resources must have a Key property.

1041 1042 1043 1044 1045 1046 1047

1048Schema 13 Observer resource properties

10496.2 GetProperties 1050This method is the same as it was with Instance and Factory resources.

1051 1052

1053Schema 14 Observer resource GetProperties method 1054

10556.3 Completed 1056The Completed method indicates that the Instance has completed the work. This is the 'normal' 1057completion. 1058This function signals to the observer resource that the started process is completed its task, and 1059will no longer be processing. There is no guarantee that the resource will persist after this point 1060in time.

1061InstanceKey: The URI of a process that is performing this work. The process is addressable by 1062the wsa:From EPR.

1063ResultData: Context-specific data that represents the current values resulting from process 1064execution. This information will be encoded as described in the section Process Context and 1065Result Data above. If result data are not yet available, the ResultData element is returned empty.

1066 1067 1068 1069 1070 1071 1072 1073 URI 1074 1075 <- - ext en s i b l e el emen t - - > 1076 1077 1078 1079

55wd-asap-spec-01 December 29, 2004 56Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 28 of 51 1080Example 19 Observer resource Completed method request

1081 1082 1083 1084 1085 1086 1087 1088 1089

1090Example 20 Observer resource Completed method response

1091 1092 1093 1094 1095 1096 1097 1098 1100 1101 1102 1103 1104 1105 1106

1107Schema 15 Observer resource Completed method

11086.4 StateChanged 1109Observers receive a StateChanged message from the Instance when the state of the Instance 1110changes. The response to a notify event is not necessary. Typically, the header request tag will 1111specify that no response is necessary.

1112 1113 1114 1115 1116 1117 1118 1119 … 1120 … 1121 1122 1123

1124Example 21 Observer resource StateChanged method request

1125 1126 1127 1128 1129 1130 1131 1132 1133

1134Example 22 Observer resource StateChanged method response

1135

57wd-asap-spec-01 December 29, 2004 58Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 29 of 51 1136 1137 1138 1139 1140 1141 1142 1143

1144Schema 16 Observer resource StateChanged method

59wd-asap-spec-01 December 29, 2004 60Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 30 of 51 11457 Data encoding

11467.1 Context data and result data 1147The heart of an asynchronous service is the ContextData and the ResultData. The 1148ContextData and the ResultData are the unique part of a particular service; everything else 1149is boilerplate. The ContextData is the query or the initial request to the service. The 1150ContextData dictates, determines or implies what the service instance should create. The 1151ResultData is what the service eventually creates for the observers. 1152The service factory should provide a schema for the ContextData element and ResultData 1153element. The schema may be XML Schema or Relax NG. ASAP follows the SOAP and XML 1154Schema data type encoding specifications.

11557.2 Extensibility 1156Actual implementations of these resources may extend the set of properties returned. This 1157document defines the required minimum set, as well as an optional set. Every implementation 1158MUST return the required properties. The implementation may optionally return additional 1159properties. Those additional properties should be elements of a namespace that is not ASAP. 1160Use of extended properties must be carefully considered because this may limit the ability to 1161interoperate with other systems. In general no system should be coded so as to require an 1162extended attribute. Instead it should be able to function is the extended properties are missing. 1163Future versions of this specification will cover the adoption of new properties to be considered 1164part of the specification.

11657.3 State type 1166The overall status of the asynchronous web service is defined by a state property value. This is a 1167string value composed of words separated by periods. The status value must start with one of 1168the seven defined values below, but the value can be extended by adding words on the end of 1169the status separated by periods. The extension must be a refinement of one of the seven states 1170defined here, such that it is not necessary to understand the extension. The intention is that these 1171extensions may be proposed for future inclusion in the standard. The seven defined base states 1172are:

1173open.notrunning: A resource is in this state when it has been instantiated, but is not currently 1174participating in the enactment of a work process.

1175open.notrunning.suspended: A resource is in this state when it has initiated its participation in 1176the enactment of a work process, but has been suspended. At this point, no resources contained 1177within it may be started.

1178open.running: A resource is in this state when it is performing its part in the normal execution of 1179a work process.

1180closed.completed: A resource is in this state when it has finished its task in the overall work 1181process. All resources contained within it are assumed complete at this point.

1182closed.abnormalCompleted: A resource is in this state when it has completed abnormally. At 1183this point, the results for the completed tasks are returned.

1184closed.abnormalCompleted.terminated: A resource is in this state when it has been terminated 1185by the requesting resource before it completed its work process. At this point, all resources 1186contained within it are assumed to be completed or terminated.

61wd-asap-spec-01 December 29, 2004 62Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 31 of 51 1187closed.abnormalCompleted.aborted: A resource is in this state when the execution of its 1188process has been abnormally ended before it completed its work process. At this point, no 1189assumptions are made about the state of the resources contained within it.

1190 1191 1192 1193 1194 1195 1196

1197Schema 17 stateType 1198These state values come from the Workflow Management Coalition standards.

11997.4 History type 1200The history is optional. It contains a list of events. An event is a state change that can occur in the 1201asynchronous service that is externally identifiable. Notifications can be sent to an observer in 1202order to inform it of the particular event.

1203Time: the date/time of the event that occurred

1204EventType: One of an enumerated set of values to specify event types: InstanceCreated, 1205PropertiesSet, StateChanged, Subscribed, Unsubscribed, Error. The event types correspond to 1206the message types that the resource can receive.

1207SourceKey: The EPR of the resource that triggered this event, usually an observer resource but 1208perhaps the instance resource itself.

1209Details: A catchall element for containing any data appropriate.

1210OldState: The state of the instance resource before this event occurred.

1211NewState: The state of the instance resource before this event occurred.

1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241

63wd-asap-spec-01 December 29, 2004 64Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 32 of 51 1242Schema 17 complexType

12437.5 Exceptions and error codes 1244All messages have the option of returning an exception. Exceptions are handled in the manner 1245specified by SOAP 1.2. The header information should be the same, but in the body of the 1246response, instead of having an ASAP element such as GetPropertiesRs or CreateInstanceRs, 1247there will be the SOAP exception element env:Fault. 1248Multi server transactions: ASAP does not include any way for multiple servers to participate in 1249the same transactions. It will be up to individual systems to determine what happen if a ASAP 1250request fails; In some cases it should be ignored, in some cases it should cause that transaction 1251to fail, and in some cases the operation should be queued to repeat until it succeeds.

1252 1253 1254 1255 1256 1257 1258 1259 env : S e nd e r< / f a u l t c o d e > 1260 Heade r spec i f i c er ro r< / f a u l t s t r i n g > 1261 1262 104< / a s : E r r o rC ode> 1263 I nv a l i d key 1264 1265 1266 1267

1268Example 23 Exception 1269These error codes are chosen to be specific with the error codes defined by the Workflow 1270Management Coalition Wf-MXL 1.1 specification. 1271 Header-specific 100 Series 1272 These exceptions deal with missing or invalid parameters in the header. 1273 ASAP_PARSING_ERROR 101 1274 ASAP_ELEMENT_MISSING 102 1275 ASAP_INVALID_VERSION 103 1276 ASAP_INVALID_RESPONSE_REQUIRED_VALUE 104 1277 ASAP_INVALID_KEY 105 1278 ASAP_INVALID_OPERATION_SPECIFICATION 106 1279 ASAP_INVALID_REQUEST_ID 107 1280 1281 Data 200 Series 1282 These exceptions deal with incorrect context or result data 1283 ASAP_INVALID_CONTEXT_DATA 201 1284 ASAP_INVALID_RESULT_DATA 202 1285 ASAP_INVALID_RESULT_DATA_SET 203 1286 1287 Authorization 300 Series 1288 A user may not be authorized to carry out this operation on a particular resource, e.g., may 1289 not create a process instance for that process definition. 1290 ASAP_NO_AUTHORIZATION 301 1291 1292 Operation 400 Series

65wd-asap-spec-01 December 29, 2004 66Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 33 of 51 1293 The operation can not be accomplished because of some temporary internal error in the 1294 workflow engine. This error may occur even when the input data is syntactically correct 1295 and authorization is permitted. 1296 ASAP_OPERATION_FAILED 401 1297 1298 Resource Access 500 Series 1299 A valid Key has been used, however this operation cannot currently be invoked on the 1300 specified resource. 1301 ASAP_NO_ACCESS_TO_RESOURCE 501 1302 ASAP_INVALID_FACTORY 502 1303 ASAP_MISSING_INSTANCE_KEY 503 1304 ASAP_INVALID_INSTANCE_KEY 504 1305 1306 Operation-specific 600 Series 1307 These are the more operation specific exceptions. Typically, they are only used in a few 1308 operations, possibly a single one. 1309 ASAP_INVALID_STATE_TRANSITION 601 1310 ASAP_INVALID_OBSERVER_FOR_RESOURCE 602 1311 ASAP_MISSING_NOTIFICATION_NAME 603 1312 ASAP_INVALID_NOTIFICATION_NAME 604 1313 ASAP_HISTORY_NOT_AVAILABLE 605 1314

13157.6 Language 1316ASAP messages should indicate their preferred language using the xml:lang attribute either in the 1317SOAP Envelope element (the root element) or in the ASAP Request or Response element.

13187.7 Security 1319HTTP provides for both authenticated as well as anonymous requests. Because of the nature of 1320process flow in controlling access to resources, many operations will not be allowed unless 1321accompanied by a valid and authenticated user ID. There are two primary means that this will be 1322provided: HTTP authorization header or transport level encryption such as SSL. 1323The first and most common method of authentication over HTTP is through the use of the 1324Authorization header. This header carries a user name and a password that can be used to 1325validate against a user directory. If the request is attempted but the authentication of the user 1326fails, or the Authorization header field is not present, then the standard HTTP error "401 1327Unauthorized" is the response. Within this, there are two authentication schemes: 1328 Basic involves carrying the name and password in the authorization field and is not 1329 considered secure. 1330 A digest authentication for HTTP is specified in IETF RFC-2069 1331 [http://ietf.org/rfc/rfc2069.html], which offers a way to securely authenticate without sending 1332 the password in the clear. 1333Second, encryption at the transport level, such as SSL, can provide certificate based 1334authentication of the user making the request. This is much more secure than the previous 1335option, and should be used when high security is warranted. 1336Because the lower protocol levels are providing the user ID, ASAP does not specify how to send 1337the client user ID. The authenticated user ID can be assumed to be present in the server at the 1338time of handling the request. 1339Note that since most ASAP interactions are between programs that we would normally consider 1340to be servers (i.e. process flow engine to process flow engine) the conclusion can be made that

67wd-asap-spec-01 December 29, 2004 68Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 34 of 51 1341all such process flow engines will need a user id and associated values (e.g. password or 1342certificate) necessary to authenticate themselves to other servers. Servers must be configured 1343with the appropriate safeguards to assure that these associated values are protected from view. 1344Under no circumstances should a set of process flow engines be configured to make anonymous 1345ASAP requests that update information since the only way to be sure that the request is coming 1346from a trustable source is through the authentication. 1347With the authentication requirements above, of either HTTP authorization header field or SSL 1348secure transport, ASAP should be able to protect and safeguard sensitive data while allowing 1349interoperability to and from any part of the Internet.

69wd-asap-spec-01 December 29, 2004 70Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 35 of 51 13508 References

13518.1 Normative 1352 [RFC2119] S. Bradner, Key words for use in RFCs to Indicate Requirement Levels, 1353 http://www.ietf.org/rfc/rfc2119.txt, IETF RFC 2119, March 1997. 1354 [SOAP] Simple Object Access Protocol 1355 [W3C Arch] Web Services Architecture Working Group, 1356 http://www.w3.org/TR/2004/NOTE-ws-arch-20040211/ 1357 [XSD] XML Schema Part 1 & Part 2 1358 http://www.w3.org/TR/xmlschema-1/ and 1359 http://www.w3.org/TR/xmlschema-2/ 1360 [WS-Addressing] Don Box, et al., Web services Addressing (WS-Addressing), 1361 W3C Member Submission, August 2004, 1362 http://www.w3.org/Submission/2004/SUBM-ws-addressing-20040810/ 1363 [RAYMOND] The Art of Unix Programming by Eric S. Raymond, Addision Wesley 1364 Publishers

13658.2 NonNormative 1366 1367 [XPath 1.0] James Clark, et al., XML Path Language (XPath) Version 1.0, W3C 1368 Recommendation, November 1999, http://www.w3.org/TR/1999/REC- 1369 xpath-19991116 1370 [WS-RF] WSRF OASIS technical committee, http://www.oasis- 1371 open.org/committees/tc_home.php?wg_abbrev=wsrf 1372 [WS-RP] Steve Graham, et al., Web Services Resource Properties 1.2 (WS- 1373 ResourceProperties), OASIS Working Draft, June 2004, 1374 http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties- 1375 1.2-draft-04.pdf 1376 [WS-SG] Tom Maguire, et al., Web Services Service Group 1.2 (WS- 1377 ServiceGroup), OASIS Working Draft, June 2004, http://docs.oasis- 1378 open.org/wsrf/2004/06/wsrf-WS-ServiceGroup-1.2-draft-02.pdf 1379 1380

71wd-asap-spec-01 December 29, 2004 72Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 36 of 51 1381Appendix A. Schema

1382 1383 1389 1390 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423

73wd-asap-spec-01 December 29, 2004 74Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 37 of 51 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468

75wd-asap-spec-01 December 29, 2004 76Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 38 of 51 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1489 1490 1491 1492 1493 1494 1495 1497 1498 1499 1500 1501 1502 1503 1505 1506 1507 1508 1509 1511 1512 1513 1514

77wd-asap-spec-01 December 29, 2004 78Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 39 of 51 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558

79wd-asap-spec-01 December 29, 2004 80Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 40 of 51 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604

81wd-asap-spec-01 December 29, 2004 82Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 41 of 51 1605 1607 1608 1609 1611 1612 1613 1614 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649

83wd-asap-spec-01 December 29, 2004 84Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 42 of 51 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694

85wd-asap-spec-01 December 29, 2004 86Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 43 of 51 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713

87wd-asap-spec-01 December 29, 2004 88Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 44 of 51 1714 1715WSDL Elements 1716 1717 1718 1726 1727 1728 1730 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757

89wd-asap-spec-01 December 29, 2004 90Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 45 of 51 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802

91wd-asap-spec-01 December 29, 2004 92Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 46 of 51 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847

93wd-asap-spec-01 December 29, 2004 94Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 47 of 51 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864

95wd-asap-spec-01 December 29, 2004 96Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 48 of 51 1865Appendix B. Acknowledgments

1866The following individuals were members of the committee during the development of this 1867specification: 1868 Jeffrey Ricker 1869 Keith Swenson, Fujitsu 1870 Moshe Silverstein, iWay Software 1871 John Fuller, for EasyASAP 1872 Jeff Cohen, for .Net ASAP 1873A number of people have participated in the development of this document and the related ideas 1874that come largely from earlier work: 1875 Mike Marin, FileNET 1876 Edwin Kodhabakchien, Collaxa Inc. 1877 Dave Hollingsworth, ICL/Fujitsu 1878 Marc-Thomas Schmidt, IBM 1879 Greg Bolcer, Endeavors Technology, Inc 1880 Dan Matheson, CoCreate 1881 George Buzsaki and Surrendra Reddy, Oracle Corp. 1882 Larry Masinter, Xerox PARC 1883 Martin Adder 1884 Mark Fisher, Thomson 1885 David Jakopac and David Hurst, Lisle Technology Partners 1886 Kevin Mitchell 1887 Paul Lyman, United Technologies 1888 Ian Prittie 1889 Members of the Workflow Management Coalition 1890 And many others....

97wd-asap-spec-01 December 29, 2004 98Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 49 of 51 1891Appendix C. Revision History

Rev Date By Whom What wd-01d 2003-09-09 Jeffrey Ricker Draft for first meeting wd-01e 2004-04-22 Mayilraj Krishnan Draft for Publishing Wd-01 f 2004-06-01 Mayilraj Krishnan Schema and Minor changes Wd-02a 2004-11-24 John Fuller Added UserInterface instance property Corrected typos, formatting Introduced use of WS Addressing Wd-02b 2004-12-15 John Fuller FaultTo recommendations, inserted schema corrections, filter clarifications, relation to WSRF RP, SG.

1892

99wd-asap-spec-01 December 29, 2004 100Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 50 of 51 1893Appendix D. Notices

1894OASIS takes no position regarding the validity or scope of any intellectual property or other rights 1895that might be claimed to pertain to the implementation or use of the technology described in this 1896document or the extent to which any license under such rights might or might not be available; 1897neither does it represent that it has made any effort to identify any such rights. Information on 1898OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS 1899website. Copies of claims of rights made available for publication and any assurances of licenses 1900to be made available, or the result of an attempt made to obtain a general license or permission 1901for the use of such proprietary rights by implementors or users of this specification, can be 1902obtained from the OASIS Executive Director. 1903OASIS invites any interested party to bring to its attention any copyrights, patents or patent 1904applications, or other proprietary rights which may cover technology that may be required to 1905implement this specification. Please address the information to the OASIS Executive Director. 1906Copyright © OASIS Open 2003. All Rights Reserved. 1907This document and translations of it may be copied and furnished to others, and derivative works 1908that comment on or otherwise explain it or assist in its implementation may be prepared, copied, 1909published and distributed, in whole or in part, without restriction of any kind, provided that the 1910above copyright notice and this paragraph are included on all such copies and derivative works. 1911However, this document itself does not be modified in any way, such as by removing the 1912copyright notice or references to OASIS, except as needed for the purpose of developing OASIS 1913specifications, in which case the procedures for copyrights defined in the OASIS Intellectual 1914Property Rights document must be followed, or as required to translate it into languages other 1915than English. 1916The limited permissions granted above are perpetual and will not be revoked by OASIS or its 1917successors or assigns. 1918This document and the information contained herein is provided on an “AS IS” basis and OASIS 1919DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 1920ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE 1921ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A 1922PARTICULAR PURPOSE.

101wd-asap-spec-01 December 29, 2004 102Copyright © OASIS Open 2003-2004. All Rights Reserved. Page 51 of 51

Recommended publications