ࡱ >
%` a bjbjNN E , ,
f ^" ^" ^" $ " P " l , " d *C
/j 1j 1j 1j 1j 1j 1j $ no h q Uj Y ^" P @ Uj k "1 "1 "1 Z Z ^" /j "1 /j "1 "1 'U 0 t! ^" X `| & b WV $ ] D Pl l l {V r L/ x r H X X r ^" X ~ "1 l p Uj Uj 0 ^ l " d % W | " % | " " "
Service Component ArchitectureWS-BPEL Client and Implementation Specification Version 1.1
Committee Draft 02 Revision 7
21 January 2010
Specification URIs (the pdf-version is authoritative):
This Version:
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-02.html" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-02.html
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-02.doc" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-02.doc
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-02.pdf" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-02.pdf
Previous Version:
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.html" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.html
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.doc" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.doc
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.pdf" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1-spec-cd-01.pdf
Latest Version:
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1.html" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1.html
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1.doc" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1.doc
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1.pdf" http://docs.oasis-open.org/opencsa/sca-bpel/sca-bpel-1.1.pdf
Technical Committee:
HYPERLINK "http://www.oasis-open.org/committees/" OASIS SCA-BPEL TC
Chair(s):
Anish Karmarkar, Oracle
Sanjay Patil, SAP
Editor(s):
Najeeb Andrabi, TIBCO Software
Martin Chapman, Oracle
Dieter Knig, IBM
Michael Rowley, Active Endpoints
Ivana Trickovic, SAP
Related work:
This specification is related to:
Service Component Architecture Assembly Model Specification Version 1.1
Service Component Architecture Policy Framework Specification Version 1.1
Web Services Business Process Execution Language Version 2.0 HYPERLINK "http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html" http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html
Declared XML Namespace(s):
sca http://docs.oasis-open.org/ns/opencsa/sca/200912
sca-bpel (defined here) http://docs.oasis-open.org/ns/opencsa/sca-bpel/200801
bpel http://docs.oasis-open.org/wsbpel/2.0/process/executable
plnk http://docs.oasis-open.org/wsbpel/2.0/plnktype
sref http://docs.oasis-open.org/wsbpel/2.0/serviceref
wsdl http://schemas.xmlsoap.org/wsdl/
xsd http://www.w3.org/2001/XMLSchema
Abstract:
The Service Component Architecture (SCA) WS-BPEL Client and Implementation model specifies how WS-BPEL 2.0 can be used with SCA. The goal of the specification is to address the following scenarios.
Start from WS-BPEL process. It should be possible to use any valid WS-BPEL process definition as the implementation of a component within SCA. In particular, it should be possible to generate an SCA Component Type from any WS-BPEL process definition and use that type within an SCA assembly. Most BPEL4WS 1.1 process definitions may also be used with SCA by using the backward compatibility approach described in section REF _Ref135103434 \r \h 4 .
I m p l e m e n t a n S C A C o m p o n e n t T y p e . I t s h o u l d b e p o s s i b l e t o u s e W S - B P E L t o i m p l e m e n t a n y S C A C o m p o n e n t T y p e t h a t u s e s o n l y W S D L i n t e r f a c e s t o d e f i n e s e r v i c e s a n d r e f e r e n c e s , p o s s i b l y w i t h s o m e S C A s p e c i f i c e x t e n s i o n s u s e d i n p r o c e s s d e f i n i t i o n .
S t a r t f r om WS-BPEL with SCA extensions. It should be possible to create a WS-BPEL process definition that uses SCA extensions and generate an SCA Component Type and use that type within an SCA assembly. Some SCA capabilities (such as properties and multi-party references) can only be used by WS-BPEL process definitions that use SCA extensions.
Status:
This document was last revised or approved by the OASIS Service Component Architecture / BPEL (SCA-BPEL) TC on the above date. The level of approval is also listed above. Check the Latest Version or Latest Approved Version location noted above for possible later revisions of this document.
Technical Committee members should send comments on this specification to the Technical Committees email list. Others should send comments to the Technical Committee by using the Send A Comment button on the Technical Committees web page at HYPERLINK "http://www.oasis-open.org/committees/%5bTC%20short%20name%5d%20/" http://www.oasis-open.org/committees/sca-bpel/.
For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page ( HYPERLINK "http://www.oasis-open.org/committees/sca-bpel/ipr.php" http://www.oasis-open.org/committees/sca-bpel/ipr.php.
The non-normative errata page for this specification is located at HYPERLINK "http://www.oasis-open.org/committees/%5bTC%20short%20name%5d%20/" http://www.oasis-open.org/committees/sca-bpel/.
Notices
Copyright OASIS 2005, 2009. All Rights Reserved.
All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.
OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.
The names "OASIS", MACROBUTTON NoMacro [insert specific trademarked names and abbreviations here] are trademarks of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see HYPERLINK "http://www.oasis-open.org/who/trademark.php" http://www.oasis-open.org/who/trademark.php for above guidance.
Table of Contents
TOC \o "1-3" \h \z HYPERLINK \l "_Toc251433441" 1 Introduction PAGEREF _Toc251433441 \h 5
HYPERLINK \l "_Toc251433442" 1.1 Terminology PAGEREF _Toc251433442 \h 5
HYPERLINK \l "_Toc251433443" 1.2 Normative References PAGEREF _Toc251433443 \h 5
HYPERLINK \l "_Toc251433444" 1.3 Non-Normative References PAGEREF _Toc251433444 \h 6
HYPERLINK \l "_Toc251433445" 1.4 Naming Conventions PAGEREF _Toc251433445 \h 6
HYPERLINK \l "_Toc251433446" 2 Introspected Component Type of a WS-BPEL Process PAGEREF _Toc251433446 \h 7
HYPERLINK \l "_Toc251433447" 2.1 Services and References PAGEREF _Toc251433447 \h 7
HYPERLINK \l "_Toc251433448" 2.1.1 Generating Services and References PAGEREF _Toc251433448 \h 8
HYPERLINK \l "_Toc251433449" 2.1.2 Handling @initializePartnerRole PAGEREF _Toc251433449 \h 9
HYPERLINK \l "_Toc251433450" 2.2 Partner Link Types and SCA Interfaces PAGEREF _Toc251433450 \h 9
HYPERLINK \l "_Toc251433451" 2.3 Handling of Local Partner Links PAGEREF _Toc251433451 \h 10
HYPERLINK \l "_Toc251433452" 2.3.1 Algorithm for Generating Unique SCA Service and Reference Names PAGEREF _Toc251433452 \h 10
HYPERLINK \l "_Toc251433457" 3 SCA Extensions to WS-BPEL PAGEREF _Toc251433457 \h 14
HYPERLINK \l "_Toc251433458" 3.1 Properties PAGEREF _Toc251433458 \h 14
HYPERLINK \l "_Toc251433459" 3.2 Multi-Valued References PAGEREF _Toc251433459 \h 15
HYPERLINK \l "_Toc251433460" 3.3 Partner Link Mapping to Services and References PAGEREF _Toc251433460 \h 18
HYPERLINK \l "_Toc251433462" 3.4 Required Intents for Partner Links PAGEREF _Toc251433462 \h 18
HYPERLINK \l "_Toc251433463" 4 Using BPEL4WS 1.1 with SCA (Non-Normative) PAGEREF _Toc251433463 \h 19
HYPERLINK \l "_Toc251433464" 5 Conformance PAGEREF _Toc251433464 \h 20
HYPERLINK \l "_Toc251433465" 5.1 SCA WS-BPEL Document PAGEREF _Toc251433465 \h 20
HYPERLINK \l "_Toc251433466" 5.2 SCA Runtimes PAGEREF _Toc251433466 \h 20
HYPERLINK \l "_Toc251433467" 5.2.1 SCA WS-BPEL Runtime PAGEREF _Toc251433467 \h 20
HYPERLINK \l "_Toc251433468" 5.2.2 SCA Extended WS-BPEL Runtime PAGEREF _Toc251433468 \h 20
HYPERLINK \l "_Toc251433469" A. XML Schemas PAGEREF _Toc251433469 \h 21
HYPERLINK \l "_Toc251433470" B. Conformance Items PAGEREF _Toc251433470 \h 24
HYPERLINK \l "_Toc251433471" C. Acknowledgements PAGEREF _Toc251433471 \h 28
HYPERLINK \l "_Toc251433472" D. Revision History PAGEREF _Toc251433472 \h 30
Introduction
This specification describes how a WS-BPEL process definition can be used as the implementation of an SCA component.
For an SCA component to use a WS-BPEL process as an implementation, it uses an element:
...
...
The only aspect of this that is specific to WS-BPEL is the element. [HYPERLINK \l "BPEL1002_T"SBPEL1001] The process attribute of the element MUST be the QName of an executable WS-BPEL process. SCA's artifact resolution mechanism, defined in section 11.2 of the SCA Assembly Specification, MUST be used to resolve the specified QName to a WS-BPEL process.
Terminology
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 REF rfc2119 \h [RFC2119].
Normative References
[RFC2119] S. Bradner, Key words for use in RFCs to Indicate Requirement Levels, HYPERLINK "http://www.ietf.org/rfc/rfc2119.txt" http://www.ietf.org/rfc/rfc2119.txt, IETF RFC 2119, March 1997.
[SCA-Assembly] Service Component Architecture Assembly Model Specification Version 1.1,
HYPERLINK "http://docs.oasis-open.org/opencsa/sca-assembly/sca-assembly-1.1-spec-cd03.pdf" http://docs.oasis-open.org/opencsa/sca-assembly/sca-assembly-1.1-spec-cd03.pdf
[SCA-PolicyFramework]
Service Component Architecture Policy Framework Specification Version 1.1, HYPERLINK "http://docs.oasis-open.org/opencsa/sca-policy/sca-policy-1.1-spec-cd-02.pdf" http://docs.oasis-open.org/opencsa/sca-policy/sca-policy-1.1-spec-cd-02.pdf
[WS-BPEL] Web Services Business Process Execution Language Version 2.0, HYPERLINK "http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html" http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html
MACROBUTTON NoMacro [Reference] MACROBUTTON NoMacro [Full reference citation]
Non-Normative References
MACROBUTTON NoMacro [Reference] MACROBUTTON NoMacro [Full reference citation]
Naming Conventions
This specification follows some naming conventions for artifacts defined by the specification,
as follows:
For the names of elements and the names of attributes within XSD files, the names follow the CamelCase convention, with all names starting with a lower case letter.e.g.
For the names of types within XSD files, the names follow the CamelCase convention with all names starting with an upper case letter. e.g.
Introspected Component Type of a WS-BPEL Process
While a WS-BPEL process definition provides an implementation that can be used by a component, the process definition also determines the introspected ComponentType of the implementation. The introspected component type represents the aspects of the implementation that SCA needs to be aware of in order to support assembly and deployment of components that use that implementation. The generic form of a component type is defined in the SCA Assembly Specification REF scaassembly \h [SCA-Assembly].
...
...
...
The SCA WS-BPEL Client and Implementation Specification does not support the use of component type side files (as described in the SCA Assembly Model specification [SCA-Assembly]). The component type of a WS-BPEL process used an implementation is determined completely by introspection of the process.
The SCA Assembly Specification defines an asyncInvocation policy intent for long-running operations. BPEL processes that implement long-running request-response operations are encouraged to use interfaces marked with this intent.
Services and References
In SCA, both services and references correspond to WS-BPELs concept of partner link. In SCA, the difference between a service and a reference is determined by which party sends the first message in a conversation. No matter of how many messages a bi-directional conversation involves or how long it takes, there is always a first message. The sender of the first message is considered to be the client and the receiver is the service provider. Messages that go from the service provider to the client are called callback messages.
WS-BPELs partner links are not differentiated based on who sends the first message. So, in order to map a WS-BPEL process to an SCA Component Type, it is necessary to determine which role sends the first message. A simple static analysis of the control flow, which does not involve determining the values of any expressions, is used to determine which role can send the first message.
It is also possible to override the default mapping of partner links to service s o r r e f e r e n c e s a s d e s c r i b e d b y e x p l i c i t l y m a r k i n g t h e p a r t n e r l i n k w i t h a n S C A a t t r i b u t e t h a t d e s c r i b e s t h e s e r v i c e o r r e f e r e n c e ( i . e . s c a - b p e l : s e r v i c e o r s c a - b p e l : r e f e r e n c e ) . T h e s e a t t r i b u t e s a r e d e s c r i b e d i n s e c t i o n R E F _ R e f 1 9 3 7 7 5 1 2 2 \ r \ h 3 . 3 .
Generating Services and References
The following sections describe the rules that determine the contents of the introspected component type for a WS-BPEL process.
[HYPERLINK \l "BPEL2001_T"SBPEL2001] If a partner link specifies a sca-bpel:service attribute, then a service MUST be generated for the introspected component type. [HYPERLINK \l "BPEL2002_T"SBPEL2002] The name of the service MUST be the value of the sca-bpel:service attribute.
[HYPERLINK \l "BPEL2003_T"SBPEL2003] If a partner link specifies a sca-bpel:reference attribute, then a reference MUST be generated for the introspected component type. [HYPERLINK \l "BPEL2004_T"SBPEL2004] The name of the reference MUST be the value of the sca-bpel:reference attribute. [HYPERLINK \l "BPEL2024_T"SBPEL2024] If a partner link specifies a sca-bpel:multiRefFrom attribute, then a reference MUST be generated for the introspected component type.
[HYPERLINK \l "BPEL2005_T"SBPEL2005] If neither sca-bpel:service nor sca-bpel:reference is present on the partner link, then if a static analysis of the process determines that it is possible that the first message for a partner link will be received in a activity, the element of a activity or the element of an event handler then the introspected component type MUST include an SCA service that corresponds to the partner link in the component type. [HYPERLINK \l "BPEL2006_T"SBPEL2006] If the name of the partner link is unique within the process, then it M U S T b e u s e d a s t h e n a m e o f t h e s e r v i c e . O t h e r w i s e , t h e n a m e i s d e t e r m i n e d a c c o r d i n g t o t h e r u l e s o f s e c t i o n R E F _ R e f 7 5 4 9 7 0 6 5 \ w \ h 2 . 3 .
[ H Y P E R L I N K \ l " B P E L 2 0 0 7 _ T " S B P E L 2 0 0 7 ] I f t h e r u l e s [ H Y P E R L I N K \ l " B P E L 2 0 0 1 " S B P E L 2 0 0 1 ] - [ H Y P E R L I N K \ l " BPEL2006"SBPEL2006] do not determine that the partner link maps to an SCA service, then the introspected component type MUST include an SCA reference that corresponds to the partner link in the component type. [HYPERLINK \l "BPEL2008_T"SBPEL2008] If the name of the partner link is unique within the process, then it MUST be used as the name of the reference. Otherwise, the name is determined according to the rules of section REF _Ref75497065 \w \h 2 . 3 .
T h e m u l t i p l i c i t y o f t h e r e f e r e n c e i s d e t e r m i n e d a c c o r d i n g t o t h e a l g o r i t h m d e f i n e d b y r u l e s [ H Y P E R L I N K \ l " B P E L 2 0 1 0 " S B P E L 2 0 1 0 ] - [ H Y P E R L I N K \ l " B P E L 2 0 1 3 " S B P E L 2 0 1 3 ] .
M u l t i - R e f e r e n c e . [ H Y P E R L I N K \ l " B P E L 2 0 1 0 _ T " S B P E L 2 0 1 0 ] I f t h e p a r t n e r l i nk is declared with an sca-bpel:multiRefFrom="aVariableName" extension, the multiplicity of the SCA reference MUST be determined by the multiplicity attribute of sca-bpel:multiReference extension used in the corresponding variable. Details of these extensions are described in section REF _Ref132690776 \r \h 3 . 2 .
R e q u i r e d R e f e r e n c e . [ H Y P E R L I N K \ l " B P E L 2 0 1 1 _ T " S B P E L 2 0 1 1 ] I f [ H Y P E R L I N K \ l " B P E L 2 0 1 0 " S B P E L 2 0 1 0 ] d o e s n o t a p p l y a n d t h e p a r t n e r l i n k h a s i n i t i a l i z e P a r t n e r R o l e = " y e s " , t h e n t h e m u l t i p l i c i t y M U S T b e " 1 . . 1 " ( i . e . i t i s a r e q u i r e d r e f e r e n c e ) .
S t ub Reference. [HYPERLINK \l "BPEL2012_T"SBPEL2012] If [HYPERLINK \l "BPEL2010"SBPEL2010] does not apply and the partner link has initializePartnerRole="no", then the multiplicity MUST be "0..1" and the attribute wiredByImpl MUST be set to "true". A reference with wiredByImpl="true" is referred to as a stub reference. Although the target cant be set for such a reference, SCA can still apply bindings and policies to it and potentially need to set the endpoint address for callbacks, if the interface is bi-directional.
Optional Reference. [HYPERLINK \l "BPEL2013_T"SBPEL2013] If neither [HYPERLINK \l "BPEL2010"SBPEL2010] nor [HYPERLINK \l "BPEL2011"SBPEL2011] nor [HYPERLINK \l "BPEL2012"SBPEL2012] apply, then the multiplicity MUST be "0..1". Note that this reference is only optional in the sense that the domain composite can omit it. [SBPELXXXX] If the domain composite includes a wire for an optional reference, then the SCA-BPEL Runtime MUST configure the reference.
Handling @initializePartnerRole
[HYPERLINK \l "BPEL2014_T"SBPEL2014] If a partner link is marked with initializePartnerRole="yes" then any component that uses this business process as an implementation MUST configure the corresponding service or reference using binding, promotion and wiring configuration that guarantees that the partner link's partner role will be initialized as soon as the partner link becomes active. If the partner link is mapped to a service, the callback binding would be the relevant binding for this requirement.
One way this can be achieved is by specifying a callback binding that includes endpoint information, on a bidirectional SCA service of a component. For example:
HYPERLINK "http://example.org/callbackService?inventory" http://example.org/callbackService?inventory
Partner Link Types and SCA Interfaces
When a partner link is determined to correspond to an SCA service, the type of the service is determined by the partner link type of the partner link. [HYPERLINK \l "BPEL2015_T"SBPEL2015] The WSDL port type in the declaration for the service in the introspected component type MUST be the same as the port type of the myRole of the partner link. [HYPERLINK \l "BPEL2016_T"SBPEL2016] If the partner link type has two roles, then the declaration MUST also have a @callbackInterface attribute whose value points to the same WSDL port type as the partnerRole of the partner link.
Consider an example that uses one of the partner link types used as an example in the WS-BPEL specification. The partner link type definition is:
The invoiceProcess, which provides invoice services, would define a partner link that uses that type with a declaration that would look like:
Somewhere in the process, a start activity would use that partner link, which might look like:
Because the partner link is used in a start activity, SCA maps that partner link to a service for on the component type. In this case, the service element of the component type would be:
Conversely, when a partner link is determined to correspond to an SCA reference in the introspected component type, then interface for the reference is also determined by the partner link type, but with the roles reversed. [HYPERLINK \l "BPEL2017_T"SBPEL2017] The WSDL port type in the declaration for the reference MUST be the same as the port type of the partnerRole of the partner link. [HYPERLINK \l "BPEL2018_T"SBPEL2018] If the partner link type has two roles, then the declaration MUST also have a @callbackInterface attribute whose value points to the same WSDL port type as the myRole of the partner link.
Handling of Local Partner Links
It is possible to declare partner links local to a in WS-BPEL, besides declaring partner links at the level. The names of two or more partner links, each declared in a different , could potentially be identical. When multiple partner links s h a r e t h e s a m e n a m e , t h i s s e c t i o n d e f i n e s a o n e - p a s s d e t e r m i n i s t i c a l g o r i t h m f o r g e n e r a t i n g S C A s e r v i c e s a n d r e f e r e n c e s w i t h u n i q u e n a m e s .
[ H Y P E R L I N K \ l " B P E L 2 0 2 3 _ T " S B P E L 2 0 2 3 ] T h e a l g o r i t h m d e f i n e d i n s e c t i o n R E F _ R e f 2 5 1 4 0 9 0 0 4 \ r \ h 2 . 3 . 1 M U S T be used to name the SCA services and references in the introspected component type.
Algorithm for Generating Unique SCA Service and Reference Names
Algorithm:
Let S be the set of names of SCA services and references generated from introspecting the BPEL process definition as defined in section REF _Ref251410967 \r \h 2 . 1 . 1 , a t a n y g i v e n p o i n t i n t i m e .
A t t h e s t a r t o f t h e i n t r o s p e c t i o n , S i s e m p t y .
T h e B P E L p r o c e s s i s e x a m i n e d i n l e x i c a l o r d e r f o r o c c u r r e n c e s o f p a r t n e r L i n k s a n d m u l t i - v a l u e d v a r i a b l e s .
F o r e a c h p a r t n e r L i n k o r m u l t i - v a l u e d v a r i a b l e t h a t i s e n c o u n t e r e d :
If the sca-bpel:service or sca-bpel:reference attribute is present on the partnerLink, its value MUST NOT be a member of S. The value of the attribute is added to S and an SCA service or reference added to the componentType of the BPEL process as defined in section REF _Ref251410967 \r \h 2 . 1 . 1 .
E l s e i f t h e n a m e a t t r i b u t e i s p r e s e n t o n t h e s c a - b p e l : m u l t i R e f e r e n c e e x t e n s i o n e l e m e n t o f a v a r i a b l e , i t s v a l u e M U S T N O T b e a m e m b e r o f S . T h e v a l u e o f t h e a t t r i b u t e i s a d d e d t o S a n d a n S C A r e f e r e n c e i s a d d e d t o t h e c o m p o n e n t T y p e o f t h e B P E L p r o c e s s a s d e f i n e d i n s e c t i o n R E F _ R e f 2 5 1 4 1 0 9 6 7 \ r \ h 2 . 1 . 1 .
E l s e i f t h e n a m e o f t h e p a r t n e r L i n k i s n o t a m e m b e r o f S , t h e n t h e n a m e i s a d d e d t o S a n d a n S C A s e r v i c e o r r e f e r e n c e i s a d d e d t o t h e c o m p o n e n t T y p e o f t h e B P E L p r o c e s s a s d e f i n e d i n s e c t i o n R E F _ R e f 2 5 1 4 1 0 9 6 7 \ r \ h 2 . 1 . 1 .
E l s e i f t h e n a m e o f t h e p a r t n e r L i n k i s a l r e a d y p r e s e n t i n S , t h e n a m e i s p r e f i x e d a n d s u f f i x e d w i t h t h e " _ " c h a r a c t e r . I n a d d i t i o n , t h e n a m e i s a l s o s u f f i x e d w i t h a d d i t i o n a l c h a r a c t e r s t h a t r e p r e s e n t t h e s m a l l e s t p o s i t i v e integer without any leading zero(s), which results in a name that does not conflict with any existing member of S. The resulting name is added to S an SCA service or reference is added to the componentType of the BPEL process as defined in section REF _Ref251410967 \r \h 2 . 1 . 1 .
W h e t h e r t h e p a r t n e r l i n k c o r r e s p o n d s t o a s e r v i c e o r r e f e r e n c e d o e s n o t a f f e c t t h e n a m e u s e d .
C o n s i d e r t h e f o l l o w i n g B P E L p r o c e s s :
<