Regrep Core Rs v4.0 Os
Regrep Core Rs v4.0 Os
0
Part 2: Services and Protocols (ebRS)
OASIS Standard
25 January 2012
Specification URIs
This version:
http://docs.oasis-open.org/regrep/regrep-core/v4.0/os/regrep-core-rs-v4.0-os.odt (Authoritative)
http://docs.oasis-open.org/regrep/regrep-core/v4.0/os/regrep-core-rs-v4.0-os.html
http://docs.oasis-open.org/regrep/regrep-core/v4.0/os/regrep-core-rs-v4.0-os.pdf
Previous version:
http://docs.oasis-open.org/regrep/regrep-core/v4.0/csd01/regrep-core-rs-v4.0-csd01.odt
(Authoritative)
http://docs.oasis-open.org/regrep/regrep-core/v4.0/csd01/regrep-core-rs-v4.0-csd01.html
http://docs.oasis-open.org/regrep/regrep-core/v4.0/csd01/regrep-core-rs-v4.0-csd01.pdf
Latest version:
http://docs.oasis-open.org/regrep/regrep-core/v4.0/regrep-core-rs-v4.0.odt (Authoritative)
http://docs.oasis-open.org/regrep/regrep-core/v4.0/regrep-core-rs-v4.0.html
http://docs.oasis-open.org/regrep/regrep-core/v4.0/regrep-core-rs-v4.0.pdf
Technical Committee:
OASIS ebXML Registry TC
Chairs:
Kathryn Breininger ([email protected]), Boeing
Farrukh Najmi ([email protected]), Wellfleet Software
Editors:
Farrukh Najmi, ([email protected]), Wellfleet Software
Nikola Stojanovic ([email protected]), Individual
Additional artifacts:
This specification consists of the following documents, schemas, and ontologies:
• Part 0: Overview Document - provides a global overview and description of the other parts
• Part 1: Registry Information Model (ebRIM) - specifies the types of metadata and content that
can be stored in an ebXML RegRep
• Part 2: Services and Protocols (ebRS) (this document) - specifies the services and protocols
for ebXML RegRep
• Part 3: XML Schema - specifies the XML Schema for ebXML RegRep
• Part 4: WSDL - specifies the WSDL interface descriptions for ebXML RegRep
• Part 5: XML Definitions - specifies the canonical XML data for ebXML RegRep as well as
example XML documents used in the specification
Related work:
This specification replaces or supersedes the OASIS ebXML RegRep 3.0 specifications.
Declared XML namespaces:
See Part 0: Overview Document.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 1 of 95
Abstract:
This document defines the services and protocols for an ebXML RegRep.
A separate document, OASIS ebXML RegRep Version 4.0 Part 1: Registry Information Model
(ebRIM), defines the types of metadata and content that can be stored in an ebXML RegRep.
Status:
This document was last revised or approved by the OASIS ebXML Registry TC on the above
date. The level of approval is also listed above. Check the "Latest version" location noted above
for possible later revisions of this document.
Technical Committee members should send comments on this specification to the Technical
Committee's email list. Others should send comments to the Technical Committee by using the
"Send A Comment" button on the Technical Committee's web page at http://www.oasis-
open.org/committees/regrep/.
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 (http://www.oasis-
open.org/committees/regrep/ipr.php).
Citation format:
When referencing this specification the following citation format should be used:
[regrep-rs-v4.0]
OASIS ebXML RegRep Version 4.0 Part 2: Services and Protocols (ebRS). 25 January 2012.
OASIS Standard. http://docs.oasis-open.org/regrep/regrep-core/v4.0/os/regrep-core-rs-v4.0-
os.html.
1.2.1.2 Description..................................................................................................................... 13
1.2.2 RegistryResponseType........................................................................................................... 13
1.2.2.1 Syntax............................................................................................................................ 14
1.2.2.2 Description..................................................................................................................... 14
1.2.3 RegistryExceptionType........................................................................................................... 14
1.2.3.1 Syntax............................................................................................................................ 14
1.2.3.2 Description..................................................................................................................... 15
1.3 Server Plugins................................................................................................................................ 15
2 QueryManager Interface........................................................................................................................ 16
2.1 Parameterized Queries................................................................................................................... 16
2.1.1 Invoking Adhoc Queries.......................................................................................................... 16
2.2 Query Protocol................................................................................................................................ 16
2.2.1 QueryRequest......................................................................................................................... 16
2.2.1.1 Syntax............................................................................................................................ 17
2.2.1.2 Example......................................................................................................................... 17
2.2.1.3 Description..................................................................................................................... 17
2.2.1.4 Response....................................................................................................................... 18
2.2.1.5 Exceptions..................................................................................................................... 18
2.2.2 Element Query........................................................................................................................ 18
2.2.2.1 Syntax............................................................................................................................ 18
2.2.2.2 Description:.................................................................................................................... 19
2.2.3 Element ResponseOption........................................................................................................ 19
2.2.3.1 Syntax............................................................................................................................ 19
2.2.3.2 Description:.................................................................................................................... 19
2.2.4 QueryResponse...................................................................................................................... 20
2.2.4.1 Syntax............................................................................................................................ 20
2.2.4.2 Example......................................................................................................................... 20
2.2.4.3 Description:.................................................................................................................... 20
3.1.1.2 Description..................................................................................................................... 43
3.1.1.4 Returns.......................................................................................................................... 44
3.1.1.5 Exceptions..................................................................................................................... 44
3.1.2 Audit Trail Requirements......................................................................................................... 44
3.1.3 Sample SubmitObjectsRequest............................................................................................... 45
3.2 The Update Objects Protocol.......................................................................................................... 45
3.2.1 UpdateObjectsRequest........................................................................................................... 45
3.2.1.1 Syntax............................................................................................................................ 46
3.2.1.2 Description..................................................................................................................... 46
3.2.1.3 Returns.......................................................................................................................... 47
3.2.1.4 Exceptions..................................................................................................................... 47
3.2.2 UpdateAction........................................................................................................................... 47
3.2.2.1 Syntax............................................................................................................................ 47
3.2.2.2 Description..................................................................................................................... 47
3.2.3 Audit Trail Requirements......................................................................................................... 48
3.2.4 Sample UpdateObjectsRequest..............................................................................................49
3.3 RemoveObjects Protocol................................................................................................................ 49
3.3.1 RemoveObjectsRequest......................................................................................................... 49
3.3.1.1 Syntax............................................................................................................................ 50
3.3.1.2 Description..................................................................................................................... 50
3.3.1.3 Returns:......................................................................................................................... 51
3.3.1.4 Exceptions:................................................................................................................... 51
3.3.2 Audit Trail Requirements......................................................................................................... 51
3.3.3 Sample RemoveObjectsRequest............................................................................................51
4 Version Control...................................................................................................................................... 52
4.1 Version Controlled Resources........................................................................................................ 52
4.2 Versioning and Id Attribute............................................................................................................. 53
4.3 Versioning and Lid Attribute............................................................................................................ 53
4.4 Version Identification for RegistryObjectType.................................................................................53
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 7 of 95
4.5 Version Identification for RepositoryItem........................................................................................ 53
4.5.1 Versioning of RegistryObjectType........................................................................................... 53
4.5.2 Versioning of ExtrinsicObjectType...........................................................................................54
4.6 Versioning and References............................................................................................................ 54
4.7 Versioning of RegistryPackages..................................................................................................... 55
4.8 Versioning and RegistryPackage Membership...............................................................................55
4.9 Inter-version Association................................................................................................................ 55
4.10 Version Removal.......................................................................................................................... 55
4.11 Locking and Concurrent Modifications..........................................................................................56
4.12 Version Creation........................................................................................................................... 56
5 Validator Interface.................................................................................................................................. 57
5.1 ValidateObjects Protocol................................................................................................................ 57
5.1.1 ValidateObjectsRequest.......................................................................................................... 57
5.1.1.1 Syntax............................................................................................................................ 57
5.1.1.2 Example......................................................................................................................... 58
5.1.1.3 Description..................................................................................................................... 58
5.1.1.4 Response....................................................................................................................... 58
5.1.1.5 Exceptions..................................................................................................................... 58
5.1.2 ValidateObjectsResponse....................................................................................................... 58
5.2 Validator Plugins............................................................................................................................. 58
5.2.1 Validator Plugin Interface........................................................................................................ 59
5.2.2 Canonical XML Validator Plugin.............................................................................................. 59
6 Cataloger Interface................................................................................................................................ 60
6.1 CatalogObjects Protocol................................................................................................................. 60
6.1.1 CatalogObjectsRequest.......................................................................................................... 60
6.1.1.1 Syntax............................................................................................................................ 60
6.1.1.2 Example......................................................................................................................... 61
6.1.1.3 Description..................................................................................................................... 61
6.1.1.4 Response....................................................................................................................... 61
6.1.1.5 Exceptions..................................................................................................................... 61
6.1.2 CatalogObjectsResponse........................................................................................................ 61
6.1.2.1 Syntax............................................................................................................................ 62
6.1.2.2 Example......................................................................................................................... 62
6.1.2.3 Description..................................................................................................................... 62
6.2 Cataloger Plugins........................................................................................................................... 63
6.2.1 Cataloger Plugin Interface....................................................................................................... 63
Illustration Index
Illustration 1: Query Protocol...................................................................................................................... 16
Illustration 2: SubmitObjects Protocol........................................................................................................ 42
Illustration 3: UpdateObjects Protocol........................................................................................................ 45
Illustration 4: RemoveObjects Protocol...................................................................................................... 49
Illustration 5: A visual example of a version tree........................................................................................ 52
Illustration 6: ValidateObjects Protocol...................................................................................................... 57
Illustration 7: CatalogObjects Protocol....................................................................................................... 60
Illustration 8: Notification Protocol.............................................................................................................. 68
Illustration 9: Remote Object Reference.................................................................................................... 69
Illustration 10: Local Replication of Remote Objects..................................................................................70
Illustration 11: Registry Federations........................................................................................................... 72
Illustration 12: Default Governance Collaboration......................................................................................76
3 This document specifies the ebXML RegRep service interfaces and the protocols they support. For a gen-
4 eral overview of ebXML RegRep and other related parts of the specification please refer to Part 0 [regrep-
5 overview-v4.0].
6 1.1 Terminology
7 The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
8 NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as de-
9 scribed in IETF [RFC 2119].
17 1.2.1 RegistryRequestType
18 The RegistryRequestType is the abstract base type for most requests sent by client to the server.
19 1.2.1.1 Syntax
<complexType name="RegistryRequestType">
<complexContent>
<extension base="rim:ExtensibleObjectType">
<attribute name="id" type="string" use="required"/>
<attribute name="comment" type="string" use="optional"/>
</extension>
</complexContent>
</complexType>
20 1.2.1.2 Description
21 ● Attribute comment – The comment attribute if specified contains a String that describes the re-
22 quest. A server MAY save this comment within a CommentType instance and associate it with
23 the AuditableEvent(s) for that request as described by [regrep-rim-v4.0].
24 ● Attribute id – The id attribute must be specified by the client to uniquely identify a request. Its
25 value SHOULD be a UUID URN like “urn:uuid:a2345678-1234-1234-123456789012”.
26 1.2.2 RegistryResponseType
27 The RegistryResponseType is the base type for most responses sent by the server to the client in re-
28 sponse to a client request. A global RegistryResponse element is defined using this type which is used by
29 several requests defined within this specification.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 13 of 95
30 1.2.2.1 Syntax
<complexType name="RegistryResponseType">
<complexContent>
<extension base="rim:ExtensibleObjectType">
<sequence>
<element name="Exception" type="tns:RegistryExceptionType"
minOccurs="0" maxOccurs="unbounded"/>
<element ref="rim:RegistryObjectList" minOccurs="0" maxOccurs="1"/>
<element ref="rim:ObjectRefList" minOccurs="0" maxOccurs="1"/>
</sequence>
<attribute name="status" type="rim:objectReferenceType" use="required"/>
<attribute name="requestId" type="anyURI" use="optional"/>
</extension>
</complexContent>
</complexType>
<element name="RegistryResponse" type="tns:RegistryResponseType"/>
31 1.2.2.2 Description
32 ● Element ObjectRefList – Contains a sequence of zero or more RegistryObject elements. It is
33 used by requests that return
36 ● Attribute requestId – This attribute contains the id of the request that returned this QueryRe-
37 sponse.
38 ● Attribute status – This attribute contains the status of the response. Its value MUST be a refer-
39 ence to a ClassificationNode within the canonical ResponseStatusType ClassificationScheme. A
40 server MUST support the status types as defined by the canonical ResponseStatusType Classi-
41 ficationScheme. The canonical ResponseStatusType ClassificationScheme may be extended by
42 adding additional ClassificationNodes to it.
43
44 The following canonical values are defined for the ResponseStatusType ClassificationScheme:
45 ○ Failure - This status specifies that the request encountered a failure. This value MUST never
46 be returned since a server MUST indicate failure conditions by returning an appropriate fault
47 message.
48 ○ PartialSuccess - This status specifies that the request was partially successful. Certain re-
49 quests such as federated queries allow this status to be returned.
51 ○ Unavailable – This status specifies that the response is not yet available. This may be the
52 case if this RegistryResponseType represents an immediate response to an asynchronous
53 request where the actual response is not yet available.
54 1.2.3 RegistryExceptionType
55 The RegistryExceptionType is the abstract base type for all exception or fault messages sent by the
56 server to the client in response to a client request. A list of all protocol exceptions is available in the
57 Protocol Exceptions appendix.
58 1.2.3.1 Syntax
<complexType name="RegistryExceptionType">
59 1.2.3.2 Description
60 In addition to the attributes and elements inherited from ExtensibleObjectType this type defines the follow-
61 ing attributes and elements:
62 ● Attribute code – The code attribute value may be used by a server to provide an error code or
63 identifier for an Exception.
64 ● Attribute detail – The detail attribute value may be used by a server to provide any detailed in-
65 formation such as a stack trace for an Exception.
66 ● Attribute message – The message attribute value MUST be used by a server to provide a brief
67 message summarizing an Exception.
68 ● Attribute severity – The severity attribute value provides a severity level for the exception. Its
69 value SHOULD reference a ClassificationNode within the canonical ErrorSeverityType Classifica-
70 tionScheme.
91 This specification defines a number of canonical queries that are standard queries that MUST be suppor-
92 ted by a server. Profiles, implementations and deployments may define additional parameterized queries
93 beyond the canonical queries defined by this specification.
94 A client invokes a parameterized query supported by the server by specifying its unique id as well as val-
95 ues for any parameters supported by the query.
96 A parameterized query MAY be stored in the server as a specialized RegistryObject called QueryDefini-
97 tion object which is defined by [regrep-rim-v4.0]. The definition of a QueryDefinition may contain any num-
98 ber of Parameters supported by the query.
108 A client initiates the Query protocol by sending a QueryRequest message to the QueryManager endpoint.
109 The QueryManager sends a QueryResponse back to the client as response. The QueryResponse con-
110 tains a set of objects that match the query.
118
<query:QueryRequest maxResults="-1" startIndex="0" ...>
<rs:ResponseOption returnComposedObjects="true"
returnType="LeafClassWithRepositoryItem"/>
<query:Query queryDefinition="urn:oasis:names:tc:ebxml-
regrep:query:GetObjectById">
<rim:Slot name="id">
<rim:SlotValue xsi:type="StringValueType"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rim:Value>%danyal%</rim:Value>
</rim:SlotValue>
</rim:Slot>
</query:Query>
</query:QueryRequest>
122 ● Element Query - This element identifies a parameterized query and supplies values for its para-
123 meters.
124 ● Attribute depth - This optional attribute specifies the pre-fetch depth of the response desired by
125 the client. A depth of 0 (default) indicates that the server MUST return only those objects that
126 match the query. A depth of N where N is greater that 0 indicates that the server MUST also re-
127 turn objects that are reachable by N levels of references via attributes that reference other ob-
130 ● Attribute federated – This optional attribute specifies that the server must process this query as a
131 federated query. By default its value is false. This value MUST be false when a server routes a
132 federated query to another server. This is to avoid an infinite loop in federated query processing.
133 ● Attribute federation - This optional attribute specifies the id of the target Federation for a feder-
134 ated query in case the server is a member of multiple federations. In the absence of this attribute
135 a server must route the federated query to all registries that are a member of all federations con-
136 figured within the local server. This value MUST be unspecified when a server routes a federated
137 query to another server. This is to avoid an infinite loop in federated query processing.
138 ● Attribute format - This optional attribute specifies the format of the response desired by the client.
139 The default value is “application/x-ebrs+xml” which returns the response in ebRS
140 QueryResponse format.
141 ● Attribute lang - This optional attribute specifies the natural language of the response desired by
142 the client. The default value is to return the response with all available natural languages.
143 ● Attribute matchOlderVersions – This optional attribute specifies the behavior when multiple ver-
144 sions of the same object are matched by a query. When the value of this attribute is specified as
145 false (the default) then a server MUST only return the latest matched version for any object and
146 MUST not return older versions of such objects even though they may match the query. When
147 the value of this attribute is specified as true then a server MUST return all matched versions of
148 all objects.
149 ● Attribute maxResults - This optional attribute specifies a limit on the maximum number of results
150 the client wishes the query to return. If unspecified, the server SHOULD return either all the res-
151 ults, or in case the result set size exceeds a server specific limit, the server SHOULD return a
152 sub-set of results that are within the bounds of the server specific limit. This attribute is described
153 further in the Iterative Queries section.
154 ● Attribute startIndex - This optional integer value is used to indicate which result must be returned
155 as the first result when iterating over a large result set. The default value is 0, which returns the
156 result set starting with index 0 (first result). This attribute is described further in the Iterative
157 Queries section.
● QueryException: signifies that the query syntax or semantics was invalid. Client must fix the query syntax or
semantic error and re-submit the query
171 ● Attribute query - The value of this attribute must be a reference to a parameterized query that is
172 supported by the server.
181 ● Attribute returnType - This optional attribute specifies the type of RegistryObject to return within
182 the response. Values for returnType are as follows:
183 ○ ObjectRef - This option specifies that the QueryResponse MUST contain a <rim:ObjectRe-
184 fList> element. The purpose of this option is to return references to objects rather than the ac-
185 tual objects.
186 ○ RegistryObject - This option specifies that the QueryResponse MUST contain a <rim:Re-
187 gistryObjectList> element containing <rim:RegistryObject> elements with xsi:type=“rim:Re-
188 gistryObjectType”.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 19 of 95
189 ○ LeafClass - This option specifies that the QueryResponse MUST contain a collection of
190 <rim:RegistryObjectList> element containing <rim:RegistryObject> elements that have an
191 xsi:type attribute that corresponds to leaf classes as defined in [regrep-xsd-v4.0]. No Reposit-
192 oryItems SHOULD be included for any rim:ExtrinsicObjectType instance in the <rim:Registry-
193 ObjectList> element.
194 ○ LeafClassWithRepositoryItem - This option is the same as the LeafClass option with the addi-
195 tional requirement that the response include the RepositoryItems, if any, for every rim:Extrins-
196 icObjectType instance in the <rim:RegistryObjectList> element.
197 If “returnType” specified does not match a result returned by the query, then the server MUST use the
198 closest matching semantically valid returnType that matches the result. For example, consider a case
199 where a Query that matches rim:OrganizationType instances is asked to return LeafClassWithRepository-
200 Item. As this is not possible, QueryManager will assume the LeafClass option instead.
214 ● Attribute totalResultCount - This optional parameter specifies the size of the complete result set
215 matching the query within the server. When this value is unspecified, the client should assume it
216 is the size of the result set contained within the result. When this value is -1, the client should as-
217 sume that the number of total results is unknown. In this case the client should keep iterating
218 through the remaining result set for the query until no more results are returned. This attribute is
219 described further in the Iterative Queries section.
227 A server MUST return a result set whose size is less than or equal to the maxResults parameter depend-
228 ing upon whether enough results are available starting at startIndex.
229 The iterative queries feature is not a true Cursor capability as found in databases. A server is not required
230 to maintain transactional consistency or state between iterations of a query. Thus it is possible for new
231 objects to be added or existing objects to be removed from the complete result set in between iterations.
232 As a consequence it is possible to have a result set element be skipped or duplicated between iterations.
233 However, a server MUST return the same result in a deterministic manner for the same QueryRequest if
234 no changes have been made in between the request to the server (or servers in case of federated
235 queries).
236 Note that while it is not required, a server MAY implement a transactionally consistent iterative query fea-
237 ture.
queryExpression string 1
Value is a query expression string in the
language specified by the queryLan-
guage parameter
251 ● The server MUST use rim:Slot child elements of the rim:Query as named parameters to the query
252 queryExpression
253 ● The server MUST return a QueryException fault message if the queryLanguage used by the
254 queryExpression is not supported by the server
255 ● The server SHOULD return an AuthorizationException fault message if the client is not authorized
256 to invoke this query
257 ● The server MUST return the objects matching the query if the query is processed without any ex-
258 ceptions
classifications Set whose elements are path attribute val- string 0..*
ues to ClassificationNodes.
Matches RegistryObjects that have a classi-
fication whose classificationNode attribute
value matches the id of the Classification-
Node where
rim:RegistryObject[@xsi:type="rim:Classific-
ationNodeType"]/@path matches specified
value
When multiple values are specified it implies
a logical AND operation.
matchOnAnyParameter If true then use logical OR between predic- boolean false 0..1
ates for each parameter
266 ● Predicates for each supplied parameter are combined using with an implicit LOGICAL AND if
267 matchOnAnyParameter is unspecified or false. If it is specified as true then predicates for each
268 supplied parameters are combined using a LOGICAL OR
269 ● If an optional parameter is not supplied then its corresponding predicate MUST NOT be included
270 in the underlying query
classificationSchemeId string 1
Matches
rim:RegistryObject[@xsi:type="rim:Clas-
sificationSchemeType"]/@id.
279 ● The ClassificationNodes MUST NOT be returned as nested elements inside their parent Tax-
280 onomy element. Instead they MUST be returned as sibling elements with the RegistryObjectList
281 element of the QueryResponse.
matchOnAnyParameter If true then use logical OR between predic- boolean false 0..1
ates for each parameter
288 ● The server MUST return the objects matching the query if the query is processed without any ex-
289 ceptions
290 ● Predicates for each supplied parameter are combined using an implicit LOGICAL AND if
291 matchOnAnyParameter is unspecified or false. If it is specified as true then predicates for each
292 supplied parameters are combined using a LOGICAL OR
matchOnAnyParameter If true then use logical OR between predic- boolean false 0..1
ates for each parameter
299 ● The server MUST return the objects matching the query if the query is processed without any ex-
300 ceptions
303 ● Both sourceObjectId and targetObjectId MUST NOT be specified. If both are specified then
304 QueryException fault MUST be returned
305 ● Predicates for each supplied parameter are combined using an implicit LOGICAL AND if
306 matchOnAnyParameter is unspecified or false. If it is specified as true then predicates for each
307 supplied parameters are combined using a LOGICAL OR
315 ● The definition of what objects are garbage may be implementation, profile or deployment specific
id string 1
Matches rim:/RegistryObject/@id.
327 ● If startTime is specified the server MUST only include AuditableEvents whose timestamp is >=
328 startTime parameter value
329 ● If endTime is specified the server MUST only include AuditableEvents whose timestamp is <= en-
330 dTime parameter value
lid string 1
Matches rim:/RegistryObject/@lid.
339 ● If startTime is specified the server MUST only include AuditableEvents whose timestamp is >=
340 startTime parameter value
341 ● If endTime is specified the server MUST only include AuditableEvents whose timestamp is <= en-
342 dTime parameter value
352 ● The server MUST only include AuditableEvents whose timestamp is >= startTime parameter
353 value
354 ● The server MUST only include AuditableEvents whose timestamp is <= endTime parameter value
exclusiveChildrenOnly Specifies how to handle children that may boolean false 0..1
have multiple parents:
• True value specifies that only chil-
dren that are not children of any
other parent should be returned
• false value specifies that children
objectType Specifies the type of object hierarchy for the string 0..1
query
366 ● If parentId parameter is unspecified and objectType parameter is specified the server MUST re-
367 turn all root level objects for the object hierarchy identified by the objectType as follows:
368 ○ If objectType parameter value contains the string “ClassificationScheme” the server MUST
369 return all ClassificationSchemes
370 ○ If objectType parameter value contains the string “Organization” the server MUST return all
371 Organizations that are not a member of another Organization (root level Organizations)
372 ○ If objectType parameter value contains the string “RegistryPackage” the server MUST return
373 all RegistryPackages that are not a member of another RegistryPackage (root level Re-
374 gistryPackages)
376 ○ If objectType parameter value is unspecified or if its value contains the string “RegistryPack-
377 age” the server MUST return all RegistryObjects that are member of a RegistryPackage
378 whose id is the same as the value of the parentId attribute
379 ○ If objectType parameter is specified and its value contains the string “ClassificationScheme”
380 the server MUST return all ClassificationNodes that are children of a TaxonomyElementType
381 instance whose id is the same as the value of the parentId attribute
382 ○ If objectType parameter is specified and its value contains the string “Organization” the server
383 MUST return all Organizations that are members of an Organization whose id is the same as
384 the value of the parentId attribute
385 ● If depth parameter is specified then the server MUST also return all descendants upto the spe-
386 cified depth as described by the definition of the depth parameter above
387 ● If exclusiveChildrenOnly is specified with a true value then the server MUST not return any des-
388 cendants that have multiple parents
396 ● The depth parameter of the QueryRequest may be used to pre-fetch the ClassificationNodes of
397 matches ClassificationSchemes
412 ● The server MUST return only those events that have a timestamp later than startTime.
id string 1
Matches rim:RegistryObject/@id.
lid string 1
Matches rim:RegistryObject/@lid.
435 ○ If the objectReference contains the id of a local object that is not a DynamicObjectRef in-
436 stance then the server MUST return that object.
437 ○ If the objectReference contains the id of a local DynamicObjectRef instance then the server
438 MUST invoke the Query within the DynamicObjectRef instance and resolve the reference to
439 the singleton result of the Query and return the matching object.
440 ○ If the objectReference contains the canonical URL for a remote object then the server MUST
441 invoke the GetReferencedObject query against the remote server using the id of the remote
442 object as the value of the objectReference parameter and return the matching object. The id
443 of the remote object is accessible from its canonical URL as the value of the id parameter
444 within the URL.
453
name.localizedString.value Indexes the value of all localized string in all Name ele-
ments of all RegistryObjects
repositoryItem Indexes the text of all text based repository items associ-
ated with ExtrinsicObjects
454
455
keywords string 1
A space separated list of keywords to
search for
464 ● A term may be enclosed in double-quotes to include white space characters as a literal value.
465
466 Example: “ebxml regrep”
467 Semantics: Matches objects containing “ebxml regrep”
469 ● Terms may be specified using wildcard characters where '*' matches one or more characters and
470 “?” matches a single character.
471
472 Example: eb?ml reg*
474 ● Terms may be combined using boolean operators “AND”, “OR” and “NOT”. Absence of a boolean
475 operator between terms implies an implicit OR operator between them.
476 ●
477 Example: ebxml AND regrep
478 Semantics: Matches objects containing “ebxml” and “regrep”
479
480 Example: ebxml NOT regrep
481 Semantics: Matches objects containing “ebxml” and not containg “regrep”
482
483 Example: ebxml OR regrep
484 Semantics: Matches objects containing “ebxml” or “regrep”
485
486 Example: ebxml regrep
487 Semantics: Matches objects containing “ebxml” or “regrep”
489 ● Terms may be grouped together using “(“ at the beginning and “)” at the end of the group. Group-
490 ing allowing boolean operators to be applied to a group of terms as a whole and enables more
491 flexible searches.
492
493 Example: ebxml AND (registry OR regrep)
494 Semantics: Matches objects containing both “ebxml” and either “registry” or “regrep”
495 ● The server MUST return all RegistryObjects that contain indexed data matching the semantics of
496 the keywords parameter.
497 ● The server MUST return all ExtrinsicObjects that have a repository item that contains indexed
498 data matching the semantics of the keywords parameter.
510 ● The member RegistryObjectType instances MUST NOT be returned as nested elements inside
511 the RegistryPackage. Instead they MUST be returned as sibling elements with the RegistryPack-
512 age and Associations within the RegistryObjectList element of the QueryResponse.
519 This specification defines a number of canonical functions that are standard functions that MUST be sup-
520 ported by a server. Profiles, implementations and deployments may define additional query functions bey-
521 ond the canonical functions defined by this specification.
527 If a query expression contains one or more function invocations then the query expression MUST delimit
528 the parts of the query expression that are not a function invocation with the leading characters “#@” and
529 trailing characters “@#”. This is similar in syntax to a Java multi-line comment syntax where a comment is
530 delimited by leading characters “/*” and trailing characters “*/”. The delimiters serve the following pur-
531 poses:
532 ● Allows a parser to recognize the non-function parts of the query expression that MUST be pre-
533 served as is
534 ● Allows implementations to be optimized to skip function parsing and evaluation if the special de-
535 limiter characters are not present in query expression
536 The following is an example of a SQL query expression which uses the getClassificationNodes function to
537 match all RegistryObjects that are targets of Association with specified sourceObject and type that is a
538 subnode of AffiliatedWith node upto a depth of 2 levels in the descendant hierarchy. The delimiter charac-
539 ters are in bold font while the function invocations is in bold and italic font below:
--example of a query expression with query functions
#@SELECT targetObject.* FROM
RegistryObjectType targetObject, AssociationType a WHERE
545 If a query parameter value contains one or more function invocations then the query expression MUST
546 delimit the parts of the query parameter that are not a function invocation with the leading characters
547 “#@” and trailing characters “@#”. If a query parameter value only has function invocations and contains
548 no non-function parts then it must include at least one leading or trailing “#@@#” delimiter token pair to
549 allow optimized parsing and evaluation of query functions only when needed.
550 The following is an example of a query expression that has no query functions. Its two parameters are
551 shown in bold font:
--Following is the query expression within the server
--This time it has no query functions as they are in the query parameters
SELECT targetObject.* FROM
RegistryObjectType targetObject, AssociationType a WHERE
552
553 The following is an example of invocation of a parameterized query that uses the above query expression
554 and uses the getClassificationNodes function from previous example within the value of the types para-
555 meter. Note the trailing “#@@#” delimiter tokens are present as required.
556
<query:QueryRequest maxResults="-1" startIndex="0" ...>
<rs:ResponseOption returnComposedObjects="true"
returnType="LeafClassWithRepositoryItem"/>
<query:Query queryDefinition="urn:acme:ExampleQuery">
<rim:Slot name="sourceObject">
<rim:SlotValue xsi:type="StringValueType"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rim:Value>urn:test:Person:Danyal</rim:Value>
</rim:SlotValue>
<rim:Slot name="types">
<rim:SlotValue xsi:type="StringValueType"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rim:Value>getClassificationNodes("urn:oasis:names:tc:ebxml-
regrep:AssociationType:AffiliatedWith", 0, 2, "false", ",", "$
{id}")#@@#</rim:Value>
</rim:SlotValue>
</rim:Slot>
</query:Query>
</query:QueryRequest>
567 ● When processing a query expression element if the special delimiter sequences of “#@” and
568 “@#” are found then the server MUST process query expression elements to replace all function
569 invocations with the value returned when the function is invoked with specified parameters
570 ● When processing query invocation parameter elements if the special delimiter sequences of “#@”
571 and “@#” are found then the server MUST process each query parameter element to replace all
572 function invocations with the value returned when the function is invoked with specified paramet-
573 ers
574 ● When invoking a function that has another function invocation as its parameter the inner most
575 functions MUST be invoked first so that the outer function can be invoked with the value returned
576 by the inner function invocation
577 ● When processing a query expression or query parameter the special delimiter characters “#@”
578 and “@#” MUST be removed and the value contained within them MUST be preserved without
579 any change
584
<DEFAULT> SKIP : {
" "
| "\t"
| "\r"
| "\n"
}
<DEFAULT> TOKEN : {
<FLOAT: <INTEGER> "." <INTEGER> | "." <INTEGER> | <INTEGER> ".">
| <INTEGER: (<DIGIT>)+>
| <DIGIT: ["0"-"9"]>
| <BOOLEAN: "true" | "false">
}
<DEFAULT> TOKEN : {
<S_IDENTIFIER: (<LETTER>)+ (<DIGIT> | <LETTER> | <SPECIAL_CHARS>)*>
| <#LETTER: ["a"-"z","A"-"Z"]>
| <#SPECIAL_CHARS: "_">
| <S_CHAR_LITERAL: "\'" (~["\'"])* "\'" ("\'" (~["\'"])* "\'")*>
| <S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"">
| <OPENPAREN: "(">
| <CLOSEPAREN: ")">
| <COMMA: ",">
| <COLON: ":">
| <DELIMITED_TEXT: "#@" (~["@"])* "@#">
}
589 2.23.1 Specifying a null Value for string Param or Return Value
590 A function that accepts a string parameter SHOULD treat a value of “rs:null” as a null string. A null string
591 is a string whose value is unspecified.
592 When a function returns a “string” type it SHOULD return a null value string as the canonical value
593 “rs:null”.
599 A client MUST use the “rs:” namespace prefix when using a canonical function defined by this profile. Pro-
600 files of this specification MAY define their own canonical functions as well as a standard namespace pre-
601 fix to be used with these functions.
602 A client MUST specify the parameters of a function in the same order as specified in the table for the
603 function specification.
605
Function Name Semantics
currentUserId Returns the id of the user associated with the current RegistryRequest
relativeTime Returns a time in the future or past, relative to the current time where
the offset period is determined by specified parameter
610 ● The value of the string MUST be current time in ISO 8601 format using the UTC time zone. An
611 example of value returned is “2010-02-25T15:22:14.534Z”.
618 ● The value of the string MUST be “rs:null” if no current user is associated with the RegistryRe-
619 quest
duration duration
A duration of time in the format as specified by the duration type
defined by XML Schema duration type. The duration format supports
negative or positive durations so this function may be used to return a
time relative to current in the future or the past.
626 ● The format of the duration parameter MUST conform to the format as specified by the duration
627 type defined by XML Schema duration type otherwise the server MUST return InvalidRequestEx-
628 ception
629 ● The value of the string MUST be a time in ISO 8601 format that is offset by the specified period in
630 the future relative to the current time. An example of value returned is “2010-02-
631 25T15:22:14.534Z”
nodeId string
Specifies the id of the reference ClassificationNodeType instance
ancestorLevels integer
Specifies how many levels to match ancestors of reference node
descendantLevels integer
Specifies how many levels to match descendants of reference node
includeSelf boolean
Specifies whether to include the reference ClassificationNodeType in-
stance or not
delimiter string
The value of this parameter specifies the delimiter string to be used as
separator between the tokens representing the ids matched by the
function
template string
The value of this parameter specifies a template to contain each id re-
turned by the function. The template may contain one or more occur-
rences of template parameter string “${id}” as placeholder for the id of a
matched ClassificationNode
640 ● The string MUST be “rs:null” if no ClassificationNode is found that matches the function paramet-
641 ers
642 ● The string MUST consist of a set of substrings separated by the appropriate delimiter character
643 when any ClassificationNode's are found that match the function parameters:
644 ○ There MUST be a substring for each ClassificationNode matched by the function
645 ○ Each substring MUST conform to the specified template such that all occurrences of ${id} are
646 replaced by the id of a ClassificationNode matched by the function
647 ● The id of the reference ClassificationNode MUST be included if and only if the includeSelf para-
648 meter value is true
649 ● A ancestorLevels value of N where N > 0 matches all ClassificationNodes upto the Nth level an-
650 cestors of the reference ClassificationNode. A value of 1 matches the immediate parents of the
651 reference ClassificationNode while a value of 2 matches the parents and grandparents of the ref-
652 erence ClassificationNode. A value of -1 matches all ancestors of the reference Classification-
653 Node
654 ● A descendantsLevels value of N where N > 0 matches all ClassificationNodes upto the Nth level
655 descendants of the reference ClassificationNode. A value of 1 matches the immediate children of
656 the reference ClassificationNode while a value of 2 matches the children and grandchildren of
657 the reference ClassificationNode. A value of -1 matches all descendants of the reference Classi-
658 ficationNode
680 A client initiates the SubmitObjects protocol by sending a SubmitObjectsRequest message to the Life-
681 cycleManager endpoint.
683
<element name="SubmitObjectsRequest">
<complexType>
<complexContent>
<extension base="rs:RegistryRequestType">
<sequence>
<element ref="rim:RegistryObjectList" minOccurs="0" maxOccurs="1"/>
</sequence>
692 ● Attribute checkReferences – Specifies the reference checking behavior expected of the server
693 ○ true - Specifies that a server MUST check submitted objects and make sure that all refer-
694 ences via reference attributes and slots to other RegistryObjects are resolvable. If a reference
695 does not resolve then the server MUST return UnresolvedReferenceException
696 ○ false (default) – Specifies that a server MUST NOT check submitted objects to make sure
697 that all references via reference attributes and slots to other RegistryObjects are resolvable. If
698 a reference does not resolve then the server MUST NOT return UnresolvedReferenceExcep-
699 tion
700 ● Attribute mode – Specifies the semantics for how the server should handle RegistryObjects being
701 submitted when they already exist in the server:
702 ○ CreateOrReplace (default) - If an object does not exist, server MUST create it as a new ob-
703 ject. If an object already exists, server MUST replace the existing object with the submitted
704 object
705 ○ CreateOrVersion - If an object does not exist, server MUST create it as a new object. If an
706 object already exists, server MUST not alter the existing object and instead it MUST create a
707 new version of the existing object using the state of the submitted object
708 ○ CreateOnly - If an object does not exist, server MUST create it as a new object. If an object
709 already exists, the server MUST return an ObjectExistsException fault message
713
714
725 ○ If RegistryObjects were updated by the request, it contain a single Action sub-element with
726 eventType Updated for all the RegistryObjects updated during processing of the request
727 ● The server SHOULD create AuditableEvents after successfully processing the request in a separ-
728 ate transaction from the request
732
<lcm:SubmitObjectsRequest>
<rim:RegistryObjectList>
<rim:RegistryObject xsi:type="rim:OrganizationType" lid="${LOGICAL_ID}"
id="${ID}" ...>
...
</rim:RegistryObject>
</rim:RegistryObjectList>
</SubmitObjectsRequest>
738 A server MUST return InvalidRequestException fault message if the client attempts to update the id, lid or
739 objectType attribute of a RegistryObject.
740
757 ● Element UpdateAction – Specifies the details of how to update the target objects
758 ● Attribute checkReferences – Specifies the reference checking behavior expected of the server
759 ○ true - Specifies that a server MUST check updated objects and make sure that all references
760 via reference attributes and slots to other RegistryObjects are resolvable. If a reference does
761 not resolve then the server MUST return UnresolvedReferenceException
762 ○ false (default) – Specifies that a server MUST NOT check updated objects to make sure that
763 all references via reference attributes and slots to other RegistryObjects are resolvable. If a
764 reference does not resolve then the server MUST NOT return UnresolvedReferenceExcep-
765 tion
766 ● Attribute mode – Specifies the semantics for how the server should handle RegistryObjects being
767 updated in the server:
768 ○ CreateOrReplace (default) - If an object does not exist, server MUST return ObjectNotFoun-
769 dException. If an object already exists, server MUST update the existing object without creat-
770 ing a new version
771 ○ CreateOrVersion - If an object does not exist, server MUST return ObjectNotFoundException.
772 If an object already exists, server MUST create a new version of the existing object before
773 applying the requested update action
<!--
Specifies whether to insert, update or delete a node from
target document.
-->
<attribute name="mode" use="required">
<simpleType>
<restriction base="NCName">
<enumeration value="Insert"/>
<enumeration value="Update"/>
<enumeration value="Delete"/>
</restriction>
</simpleType>
</attribute>
</complexType>
811 ● Element ValueHolder - This element contains the value to be written to the target object. If the
812 mode attribute is "Insert" or "Update" then this element MUST be present. If the mode is "Delete"
813 then this element MUST NOT be present.
814 ● Attribute mode – This attribute specifies the semantics for how the server should update target
815 objects:
816 ○ Insert - Indicates that the value provided by ValueHolder MUST be added to the target object.
817 If the selector targets a repeated element (maxOccurs > 1), the node MUST be added at the
818 end. If the selector targets a non-repeated element (maxOccurrs = 1) that already exists, the
819 resource MUST generate an InvalidRequestException with a fault detail of NodeAlreadyExist-
820 sException. If the selector targets an existing item of a repeated element, the value provided
821 by ValueHolder MUST be added before the existing item.
822 ○ Update – Indicates that the node identified by selector MUST be replaced by value by the
823 ValueHolder in its place. If the selector resolves to nothing then there should be no change to
824 the target object.
825 ○ Delete - indicates that the node identified by selector MUST be deleted from the target object
826 if it is present.
829 ○ If RegistryObjects were updated by the request, it contain a single Action sub-element with
830 eventType Updated for all the RegistryObjects updated during processing of the request
831 ● The server SHOULD create AuditableEvents after successfully processing the request in a separ-
832 ate transaction from the request
<rim:Value>./rim:Name</rim:Value>
</Selector>
</UpdateAction>
</UpdateObjectsRequest>
843 A client initiates the RemoveObjects protocol by sending a RemoveObjectsRequest message to the Life-
844 cycleManager endpoint.
846
854 ○ true - Specifies that a server MUST check objects being removed and make sure that there
855 are no references to them from other objects via reference attributes and slots. If a reference
856 exists then the server MUST return ReferencesExistsException
857 ○ false (default) – Specifies that a server MUST NOT check objects being removed to make
858 sure that there are no references to them from other objects via reference attributes and
859 slots. If a reference exists then the server MUST NOT return ReferencesExistsException
860 ● Attribute deleteChildren – This attribute specifies whether or not to delete children of the objects
861 being deleted according to the following behavior:
862 ○ false – Specifies the server MUST NOT delete the children of objects that are specified to be
863 deleted
864 ○ true – Specifies the server MUST delete children of objects being deleted if and only if those
865 children are not children of any other parent objects
866 ● Attribute deletionScope - This attribute specifies the scope of impact of the RemoveObjects-
867 Request. The value of the deletionScope attribute MUST be a reference to a ClassificationNode
868 within the canonical DeletionScopeType ClassificationScheme as described in ebRIM. A server
869 MUST support the deletionScope types as defined by the canonical DeletionScopeType Classific-
870 ationScheme. The canonical DeletionScopeType ClassificationScheme may be extended by
871 adding additional ClassificationNodes to it.
872
873 The following canonical ClassificationNodes are defined for the DeletionScopeType Classifica-
874 tionScheme:
875 ○ DeleteRepositoryItemOnly - Specifies that the server MUST delete the RepositoryItem for the
876 specified ExtrinsicObjects but MUST NOT delete the specified ExtrinsicObjects
877 ○ DeleteAll (default) - Specifies that the request MUST delete both the RegistryObject and the
878 RepositoryItem (if any) for the specified objects
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 50 of 95
879 ● Element Query - Specifies a query to be invoked. A server MUST remove all objects that match
880 the specified query in addition to any other objects identified by the ObjectRefList element.
888 ● UnresolvedReferenceException - Indicates that the requestor referenced an object within the re-
889 quest that was not resolved during the processing of the request.
896 ○ If RegistryObjects were removed by the request, it contain a single Action sub-element with
897 eventType Deleted for all the RegistryObjects removed during processing of the request
898 ● The server SHOULD create AuditableEvents after successfully processing the request in a separ-
899 ate transaction from the request
904 Versioning of a RegistryObjectType instance is the process of updating the object in such a way that the
905 original instance remains unchanged while a new instance is created as a new version of the original in-
906 stance. Any specific version of an object may itself be versioned. Thus in general the versions of an ob-
907 ject form a tree structure referred to as the Version Tree for that object.
912 ● Each version is created from a parent version and is represented in the version tree as a child
913 node of the node representing the parent version node for that version
915 Illustration 5 visualizes the version tree concept. In this non-normative example the object TestRegister
916 has 8 versions. Each node's version is identified by the parenthesized string suffix like “(1.2.2)”. Version 1
917 is the original version. Version 1 was versioned twice to create versions 1.1 and 1.2. Version 1.1 was ver-
918 sioned twice to create versions 1.1.1 and 1.1.2. Version 1.2 was versioned twice to create versions 1.2.1
919 and 1.2.2. Version 1.2.1 was versioned once to create version 1.2.1.1. Note that this example uses a ver-
920 sion naming convention for ease of understanding only. This specification does not prescribe a specific
921 version naming convention for server to use when assigning version names.
922 The terms “logical object” or “logical RegistryObject” are used to refer to all version of a RegistryObject in
923 a version independent manner. The terms “object version” or “RegistryObject version” are used to refer to
924 a specific version of the logical object. The terms “RegistryObject instance” and “RegistryObjectType in-
925 stance” imply a specific object version.
926 Illustration 5 visualizes a single logical object TestRegister with 8 object versions.
929 All repository items in an ebXML RegRep are implicitly version-controlled resources as defined by section
930 2.2.1 of [DeltaV]. No explicit action is required to make them a version-controlled resource.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 52 of 95
931 Instances of RegistryObjectType types are also implicitly version-controlled resources. The only excep-
932 tions are those sub-types of RegistryObjectType that are composed 1 types and their instances do not
933 have independent lifecycles that are separate from the lifecycle of their parent objects. Some example of
934 such composed types are:
935 ● ClassificationType
936 ● ExternalIdentifierType
937 ● ExternalLinkType
938 ● ServiceEndpointType
939 A server MAY further limit specific non-composed types from being version-controlled resources based
940 upon server specific policies.
959 An ExtrinsicObject that has an associated repository item MUST have a contentVersionInfo element
960 whose type is VersionInfoType defined by ebRIM. The contentVersionInfo attributes identifies the version
961 information for that repository item instance.
965 The following rules apply to versioning of all RegistryObjectType instances that are not instances of Ex-
966 trinsicObjectType type. It assumes that versioning is enabled for such RegistryObjectType types:
1
Composed object types are identified in class diagrams in [regrep-rim-v4.0] as classes with composi-
tion or “solid diamond” relationship with a RegistryObject type.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 53 of 95
967 ● A server MUST create a new version of a version-controlled, non-composed RegistryObjectType
968 instance in the following cases:
969 ○ An existing object is replaced using the submitObjects protocol with mode of CreateOrVer-
970 sion
971 ○ An existing object is updated using the updateObjects protocol with mode of CreateOrVersion
972 ● A server MUST NOT create a new version of a composed RegistryObjectType instance when it is
973 updated.
974 ● When creating a new version for a non-composed RegistryObjectType instance, a server MUST
975 create new logical objects for any composed logical objects within the new version of the com-
976 posed object. Any such new logical object for composed objects MUST have a new server gener-
977 ated universally unique id and lid attribute.
981 The following rules apply to versioning of ExtrinsicObjectType instances assuming that a server has ver-
982 sioning enabled for the ExtrinsicObjectType type:
983 ● A server MUST create a new version of an existing ExtrinsicObjectType instance and assign it a
984 new unique versionName within its VersionInfo element when either the ExtrinsicObjectType in-
985 stance or its RepositoryItem are updated using the submitObjects or updateObjects protocol and
986 the mode is CreateOrVersion
987 ○ A server MUST create a new version of an ExtrinsicObjectType instance and assign it a new
988 unique versionName within its VersionInfo element when the previous version had a Reposit-
989 oryItem and the new version does not have one (RepositoryItem was deleted).
990 ○ A server MUST create a new version of an ExtrinsicObjectType instance and assign it a new
991 unique versionName within its VersionInfo element when the previous version did not have
992 RepositoryItem and the new version has one (RepositoryItem was added). In such cases the
993 server MUST also create a new version of the RepositoryItem and assign it a new unique ver-
994 sionName within the ContentVersionInfo element.
995 ○ A server MUST create a new version of the RepositoryItem for an existing ExtrinsicObject-
996 Type instance and assign it a new unique versionName within the ContentVersionInfo ele-
997 ment when the RepositoryItem is updated using the submitObjects or updateObjects protocol
998 and the mode is CreateOrVersion
1005 A special case is when a SubmitObjectsRequest contains an object that is being versioned by the server
1006 and the request contains other objects that reference the object being versioned. In such case, the server
1007 MUST update all references within the submitted objects to the object being versioned such that those
1008 objects now reference the new version of the object being created by the request.
1014 ● The copied Associations MUST be new versions of their original Association (MUST have the
1015 same lid)
1016 ● The sourceObject of the copied Associations MUST reference the new version of the RegistryP-
1017 ackage rather than the older version
1018
1022 ● A server MUST return an InvalidRequestException fault message if a client attempts to publish
1023 more than one version of the same logical object as member of the same RegistryPackage in-
1024 stance
1025
1030 ● A server MUST automatically link each new version in the version tree for a RegistryObject to its
1031 predecessor using an Association between the two versions
1032 ● The type attribute value of the Association MUST reference the canonical AssociationType “Su-
1033 persedes”
1034 ● The sourceObject attribute value of the Association MUST reference the new version
1035 ● The targetObject attribute value of the Association MUST reference the old version
1036 Note that this section is functionally equivalent to the predecessor-set successor-set elements of the Ver-
1037 sion Properties as defined by [DeltaV].
1041 ● A server MAY allow authorized clients to remove specified versions of a RegistryObject
1042 ● A server MAY prune older versions of RegistryObjects based upon server specific administrative
1043 policies in order to manage storage resources
1044 ● When a non-leaf version within a version tree is deleted, a server MUST implicitly delete the en-
1045 tire version sub-tree under that non-leaf version such that no versions created directly or indirectly
1046 from the specified remain in the registry
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 55 of 95
1047 4.11 Locking and Concurrent Modifications
1048 This specification does not define explicit checkin and checkout capabilities as defined by [DeltaV]. A
1049 server MAY support such features in an implementation specific manner.
1050 This specification does not prescribe a locking model. An implementation may choose to support a lock-
1051 ing model in an implementation specific manner. A future specification may address these capabilities.
1062 A server MUST implement the Validator interface as an endpoint. The Validator interface validates ob-
1063 jects using Validator Plugins specific to the type of object being validated.
1087 ● Element OriginalObjects - Specifies a collection of RegistryObject instances. A server MUST val-
1088 idate all objects that are contained in this element. This element is typically used when a server
1089 initiates the validateObjects protocol during the processing of a submitObjects or updateObjects
1090 protocol request or when it is delegating a client initiated validateObjects protocol request to a
1091 Validator plugin.
1092 ● Element Query - Specifies a query to be invoked. A server MUST validate all objects that match
1093 the specified query. This element is typically used when a client initiates the validateObjects pro-
1094 tocol.
● ValidationException: signifies that an exception was encountered during the validateObjects operation
1110 ● The server selects the RegistryObjects that are the target of the validateObjects operations using
1111 the <spi:Query> and <rim:ObjectRefList> elements. Any objects specified by the OriginalObjects
1112 element MUST be ignored by the server.
1113 ● The server partitions the set of target objects into multiple sets based upon the objectType attrib-
1114 ute value for the target objects
1115 ● The server determines whether there is a Validator plugin configured for each objectType for
1116 which there is a set of target objects
1117 ● For each set of target objects that share a common objectType and for which there is a con-
1118 figured Validator plugin, the server MUST invoke the Validator plugin. The Validator plugin invoc-
1119 ation MUST specify the target objects for that set using the OriginalObjects element. The server
1120 MUST NOT specify <spi:Query> and <rim:ObjectRefList> elements when invoking validateOb-
1121 jects operation on a Validator plugin
1122 ● Each Validator plugin MUST process the ValidateObjectsRquest and return a ValidateObjects-
1123 Response or fault message to the server's Validator endpoint.
1124 ● The server's Validator endpoint MUST then combine the results of the individual ValidateObjects-
1125 Request to Validator plugins into a single unified ValidateObjectsResponse and return it to the cli-
1126 ent.
1137 A server MUST implement the Cataloger interface as an endpoint. The Cataloger interface catalogs ob-
1138 jects using Cataloger Plugins specific to the type of object being cataloged.
1142 The CatalogObjects protocol is initiated by sending an CatalogObjectsRequest message to the Cataloger
1143 endpoint.
1144
1146 The Cataloger endpoint sends a CatalogObjectsResponse back to the client as response.
1169 ● Element Query - Specifies a query to be invoked. A server MUST catalog all objects that match
1170 the specified query. This element is typically used when a client initiates the catalogObjects pro-
1171 tocol.
1172
● CatalogingException: signifies that an exception was encountered during the catalogObjects operation
1184
<CatalogObjectsResponse status="urn:oasis:names:tc:ebxml-
regrep:ResponseStatusType:Success">
<rim:RegistryObjectList>
<rim:RegistryObject xsi:type="rim:ExtrinsicObjectType"
mimeType="text/xml"
status="urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted"
objectType="urn:oasis:names:tc:ebxml-
regrep:ObjectType:RegistryObject:ExtrinsicObject:XML:WSDL"
lid="urn:acme:wsdl:purchaseOrder.wsdl"
id="urn:acme:wsdl:purchaseOrder.wsdl">
<rim:Slot
name="urn:oasis:names:tc:ebxml-
regrep:profile:wsdl:slot:targetNamespace">
<rim:SlotValue xsi:type="rim:StringValueType">
<rim:Value>urn:acme:Service:PurchaseOrder</rim:Value>
</rim:SlotValue>
</rim:Slot>
<rim:RepositoryItem>...binary encoded content...</rim:RepositoryItem>
</rim:RegistryObject>
</rim:RegistryObjectList>
</CatalogObjectsResponse>
1187 ● Element RegistryObjectList (Inherited) – Contains the RegistryObjects that are produced as out-
1188 put of the catalogObjects operation. Typically this list contains the objects that were input to the
1189 catalogObjects operation, as well as new objects that were the output of the catalogObjects oper-
1190 ation. The input objects MAY be modified by the cataloger as a result of the catalogObjects oper-
1191 ation.
1192 ○ A cataloger MUST create AssociationType instance between the source object for the cata-
1193 logObjects operation (specified by OriginalObjects element in CatalogRequest) and each of
1194 the cataloged RegistryObjectType instances generated by the cataloger. Each such Associ-
1195 ationType instance
1196 ■ MUST have its type attribute reference the canonical AssociationType
1197 “urn:oasis:names:tc:ebxml-regrep:AssociationType:HasCatalogedMetadata”
1198 ■ MUST have its sourceObject attribute reference the source object for the catalogObjects
1199 operation
1202 ○ A cataloger SHOULD assign the same accessControlPolicy to cataloged objects as their
1203 source object. A cataloger MAY use a different strategy for assigning access control policy to
1204 cataloged objects.
1205 ○ A server MUST delete all cataloged metadata generated by a cataloger when the source ob-
1206 ject is deleted.
1207 ○ A server MUST update all cataloged metadata generated by a cataloger when the source ob-
1208 ject is updated without creating a new version.
1212 A specific instance of a Cataloger plugin is designed and configured to catalog a specific type of object.
1213 For example, the canonical XML Cataloger plugin is designed and configured to catalog XML Objects us-
1214 ing XSLT documents as InvocationControlFile.
1218 ● The server selects the RegistryObjects that are the target of the catalogObjects operations using
1219 the <spi:Query> and <rim:ObjectRefList> elements. Any objects specified by the OriginalObjects
1220 element MUST be ignored by the server.
1221 ● The server partitions the set of target objects into multiple sets based upon the objectType attrib-
1222 ute value for the target objects
1223 ● The server determines whether there is a Cataloger plugin configured for each objectType for
1224 which there is a set of target objects
1225 ● For each set of target objects that share a common objectType and for which there is a con-
1226 figured Cataloger plugin, the server MUST invoke the Cataloger plugin. The Cataloger plugin in-
1227 vocation MUST specify the target objects for that set using the OriginalObjects element. The
1228 server MUST NOT specify <spi:Query> and <rim:ObjectRefList> elements when invoking cata-
1229 logObjects operation on a Cataloger plugin
1230 ● Each Cataloger plugin MUST process the CatalogObjectsRquest and return a CatalogObjects-
1231 Response or fault message to the server's Cataloger endpoint.
1232 ● The server's Cataloger endpoint MUST then combine the results of the individual CatalogObjects-
1233 Request to Cataloger plugins and commit these objects as part of the transaction associated with
1234 the request. It MUST then combine the individual CatalogObjectsResponse messages into a
1235 single unified CatalogObjectsResponse and return it to the client.
1245 ● Support an XML RepositoryItem for the ExtrinsicObject object as a secondary input
1246 ● The secondary input is specified using an <xsl:param> with name “repositoryItem” and with value
1247 that is the id of the ExtrinsicObject for which it is a RepositoryItem
1248 A server MUST implement the Canonical XML Cataloger with the following constraints:
1249 ● Uses an XSLT processor with the XSLT file specified as InvocationControlFile
1250 ● Specifies the ExtrinsicObject being cataloged as the primary input to the XSLT processor
1251 ● Specifies the RepositoryItem for the ExtrinsicObject object being cataloged by setting the para-
1252 meter named “repositoryItem” with a value that is the id of the ExtrinsicObject for which it is a Re-
1253 positoryItem
1254 ● Resolves references to the RepositoryItem via the $repositoryItem parameter value within the
1255 XSLT file specified as InvocationControlFile
1256
1293 Outside the bounds of the valid period, a Subscription MAY exist in an expired state within the server. A
1294 server MAY remove an expired Subscription at any time.
1295 A server MUST NOT deliver notifications for an event to an expired Subscriptions. An expired Subscrip-
1296 tion MAY be renewed by updating the startTime and / or endTime for the Subscription using the
1297 UpdateObjects protocol.
1302 A server MUST process AuditableEvents and determine which Subscriptions match the event using the
1303 algorithm illustrated by the following pseudo-code fragment:
1304
//Get objects that match selector query
List<RegistryObjectType> objectsOfInterest =
getObjectsMatchingSelectorQuery(selectorQuery);
if (objectsOfInterest.size() > 0) {
if (eventsOfInterest.size() > 0) {
//Now create Notification on objectsOfInterest.
//Notification will include eventsOfInterest that only include objects
//that are affected by the event and are also in objectsOfInterest
NotificationType notification = createNotification(
objectsOfInterest, eventsOfInterest);
1305
1306 ● Objects of interest MUST be those objects that match the selector query for the subscription
1307 ● Events of interest MUST have affected at least one object of interest
1308 ● Events of interest MUST contain all objects of interest (or references to them) that were affected
1309 by the event
1310 ● Events of interest MUST NOT contain an object or reference to an object that is not an object of
1311 interest
1353 A server initiates the Notification protocol by sending a Notification message to the NotificationListener
1354 endpoint registered within the Subscription for which the Notification is being delivered.
1367 Pulling a Notification leaves the Notification intact on the server for any potential pushing of the Notifica-
1368 tion to endpoints defined in DeliveryInfo elements of the Subscription.
1376 ● Remote Object Reference – Allows references between objects residing in different servers
1377 ● Object Replication – Allows replication of objects residing in a remote server to a local server
1378 ● Federated Queries – Allows queries that execute against, and return results from multiple servers
1385
1392 A server that replicates a remote object locally is referred to as the local server for the replication. The
1393 server that contains the remote object being replicated is referred to as the remote server for the replica-
1394 tion.
1397 ● A server MUST match local replicas of remote objects in the same manner as local objects within
1398 the Query protocol.
1399 ● A client MUST NOT perform update operations via SubmitObjects and UpdateObjects operations
1400 on a local replica of a remote object.
1401 ● A server MUST return an InvalidRequestException fault message if a client attempts to update a
1402 replica via SubmitObjects and UpdateObjects operations.
1403 ● A server MUST delete a replica if a client uses RemoveObjects operation to remove the replica.
1404 ● Objects MAY be replicated from any server to any other server without any requirement that the
1405 registries belong to the same federation.
1409 ● A client submits a Subscription to the remote server on behalf of the local server.
1410 ○ The subscription is published like any other RegistryObjectType instance using the Submit
1411 Objects protocol with the LifecycleManager endpoint of the remote server.
1412 ○ This typically requires that the client is registered with the remote server and can authenticate
1413 with it.
1414 ● The Subscription defines a Selector query that matches one or more objects that need to be rep-
1415 licated from remote server to local server.
1416 ○ Selector query may match any number of objects using any selection criteria supported by
1417 the query.
1418 ● The Subscription specifies the address of a NotificationListener endpoint implemented by the
1419 local server where the remote server may send Notifications regarding the objects that need to be
1420 replicated.
1423 ○ A server MUST NOT create a local replica for an object if a local object exists with the same
1424 id. In such case the server MUST return an ObjectExistsException fault message.
1425 ● Whenever the remote server send Notifications to the local server for the same Subscription, the
1426 local server synchronizes the local replica with the remote object.
1427 ○ A server MUST delete a local replica when its source object is deleted at the remote server.
1428 ○ A server MUST NOT delete a local object that is not a replica of a remote object if a notifica-
1429 tion arrives regarding the deletion of a remote object with the same id as the local object. In
1430 such case the server MUST return an InvalidRequestException fault message.
1431 A server MUST use standard QueryManager interface to read the state of a remote object. No prior regis-
1432 tration or contract is needed for a server to read the state of a remote object if that object is readable by
1433 anyone, as is the case with the default access control policy.
1434 Once the state of the remote object has been read, a server MAY use server specific means to create a
1435 local replica of the remote object.
1460 ● A Federation is created by submitting a Federation instance to a server using the SubmitObjects
1461 protocol
1462 ● The server where the Federation is created is referred to as the federation home
1466 ● Each server SHOULD have exactly one local RegistryType instance. Each server MAY have mul-
1467 tiple remote RegistryType instances
1468 ● A server MAY join an existing federation by submitting an instance of an Association that associ-
1469 ates the Federation instance as sourceObject, to the Registry instance representing the server as
1470 targetObject, using a type of HasFederationMember. The home server for the Association and
1471 the Federation objects MUST be the same
1472 ● A Federation (child federation) MAY join an existing federation (parent federation) by submitting
1473 an instance of an Association that associates the Federation instance representing the parent
1474 federation as sourceObject, to the Federation instance representing the child federation as tar-
1475 getObject, using a type of HasFederationMember. The home server for the Association and the
1476 parent Federation objects MUST be the same
1479 ● A server or a federation MAY leave a federation at any time by removing the HasFederationMem-
1480 ber Association instance for its RegistryType or FederationType instance that links it with the par-
1481 ent FederationType instance. This is done using the standard RemoveObjects protocol.
1484 ● A federation is dissolved using the standard RemoveObjects protocol against the Federation's
1485 home server and removing its FederationType instance
1486 ● The removal of a FederationType instance is governed by Access Control Policies like any other
1487 RegistryObject
1495 A local QueryRequest is only processed by the server that receives the request.
1498 A server MUST route a federated query received by it to all servers that are represented by RegistryType
1499 instances in the membership tree of the federation(s) that is the target of the federated query on a best at-
1500 tempt basis.
1501 If an exception is encountered while dispatching a query to a federation member the server MUST return
1502 a QueryResponse as follows:
1503 ● The status of the QueryResponse MUST reference the canonical “PartialSuccess” Classification-
1504 Node within the canonical ResponseStatusType ClassificationScheme
1505 ● The QueryResponse MUST have a set of Exception sub-elements of type rs:RegistryException-
1506 Type, one for each exception encountered while dispatching a query to a remote server
1507 When a server routes a federated query to a federation member server then it MUST set the federated at-
1508 tribute value of the QueryRequest to false and the federation attribute value to null to avoid infinite loops.
1509 A federated query operates on data that is distributed across all the members of the target federation.
1510 When a client submits a federated query to a server and no federations exist in the server, then the server
1511 MUST treat it as a local query.
1512 The following rules apply to the treatment of iterative queries when the query is federated:
1516 ● A server MUST return the same result in a deterministic manner for the same federated
1517 QueryRequest if no changes have been made in between the request to the federation member
1518 servers and their collective state.
1519 ● A server MAY choose any implementation specific algorithm to select results from its federation
1520 members for each iteration of an iterative query as long as the algorithm is deterministic and re-
1521 peatably produces the same results for the same set of federation members and their collective
1522 state. For example a server MAY use a sequential algorithm that gets as many results from each
1523 of its server sequentially until it satisfies the maxResults parameter or until there are no more res-
1524 ults. Alternatively, a server MAY use a parallel algorithm that balances the amount of data re-
1525 trieved from each of its federation members.
1530 The federation member MUST keep the cached federation configuration synchronized with the original
1531 object in the Federation home.
1538 Governance is defined as the enforcement of business processes and policies defined by a Community of
1539 Practice, that guide, direct, and control how its members collaborate to achieve its business goals.
1540 Within this specification, governance is defined as the enforcement of collaborative business processes
1541 and policies defined by a Community of Practice to manage the end-to-end life cycle of RegistryObjects
1542 within the server. Such collaborative business processes will be referred to as “governance collabora-
1543 tions”.
1548 ● How a server uses the representation of governance collaborations assigned to a RegistryOb-
1549 jects to govern them
1550
1554 ● Uses BPMN 2.0 diagram notation to pictorially represent business collaborations
1555 ● Uses BPMN 2.0 XML format to declaratively represent business collaborations in a machine pro-
1556 cessable syntax
1557 A governance collaboration consists of one or more participants where each participant's activities within
1558 the collaboration is described by a separate BPMN process and the interaction between the participants'
1559 processes is described by a single BPMN collaboration.
1560 Detailed specification of how to describe governance collaborations in BPMN 2.0 XML format and how a
1561 server executes them in a BPMN process engine are provided later in this chapter.
1562 Illustration 12 below provides an example of the Default Governance Collaboration represented by a
1563 BPMN 2.0 diagram notation. The Default Governance Collaboration is provided as a standard gov-
1564 ernance collaboration readily available for use in any server. It is described in detail later in this chapter.
2
At the time of this writing BPMN 2.0 is not final yet. This specification uses the BPMN 2.0 Beta 2 spe-
cification as a reference at this time since BPMN 2.0 is not final yet.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 75 of 95
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 76 of 95
1566 9.1.1 Content of Governance Collaboration BPMN Files
1567 The collective content of the Governance Collaboration BPMN files, whether organized as a set of related
1568 modular files or a single monolithic file, MUST meet the following requirements:
1570 ● The collaboration element MUST have at least one participant element
1571 ● At least once participant element MUST have id value of “registryPartcipant” and represents the
1572 RegRep server as a participant within the governance collaboration
1574 ● There MUST be a process element for each processRef attribute in each participant element
1575 ● The process element for other participants than the “registryPartcipant” participant MAY conform
1576 to “Descriptive Conformance Sub-Class ”3 or “Analytic Conformance Sub-Class ”4 in [BPMN2] and
1577 need not be executed within a BPMN process engine
1578 ● The process element for the “registryPartcipant” participant's process MUST conform to “Com-
1579 mon Executable Conformance Sub-Class”5 in [BPMN2] and MUST be executed by the server in a
1580 BPMN process engine
1581 ● The process elements SHOULD use tasks that conform to canonical task patterns defined later in
1582 this specification whenever possible
1583
1592 ● The RegistryPackage MUST have a canonical slot with name “urn:oasis:names:tc:ebxml-
1593 regrep:rim:RegistryPackage:packageType”
1594 ● The value of the packageType slot MUST be a unique identifier for the type of package of which
1595 the group of related objects are an instance
1596 A server MUST treat RegistryPackages with a canonical slot with name “urn:oasis:names:tc:ebxml-re-
1597 grep:rim:RegistryPackage:packageType” as the governed object.
3
This is also referred to as a “Layer 1”, representation layer or presentation layer
4
This is also referred to as a “Layer 2” or analytical layer
5
This is also referred to as a “Layer 3” or executable layer
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 77 of 95
1598 9.3 Assigning a Governance Collaboration
1599 A governance collaboration as represented by a BPMN2 XML file is not directly assigned to a RegistryOb-
1600 ject. Instead it is assigned to a RegistryPackage and is implicitly applicable to RegistryObjects that are
1601 members of the RegistryPackage.
1602 Governance collaboration MAY be assigned to a specific RegistryPackage using a “GovernedBy” Associ-
1603 ation as follows:
1604 ● The type attribute value of Association MUST reference the canonical “GovernedBy” Classifica-
1605 tionNode within the canonical AssociationType ClassificationScheme whose id is
1606 “urn:oasis:names:tc:ebxml-regrep:AssociationType:GovernedBy”
1607 ● The targetObject attribute value of Association MUST reference an ExtrinsicObject with object-
1608 Type “urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExtrinsicObject:XML:BPMN2”
1609 ● The repository item for the ExtrinsicObject MUST be an XML document conforming to the
1610 BPMN2 model XML Schema. If the modular approach to BPMN description is used then this file
1611 MUST be the collaboration BPMN file. The file MUST import or contain the BPMN process for the
1612 “Registry” participant
1613 ● The sourceObject attribute value of Association MUST reference the RegistryPackage instance to
1614 which the governance collaboration is being assigned
1615 ● The RegistryPackage MUST NOT have a canonical slot with name “urn:oasis:names:tc:ebxml-re-
1616 grep:rim:RegistryPackage:packageType”
1620 1. Check if objects is an immediate member of a RegistryPackage that has a canonical slot with
1621 name “urn:oasis:names:tc:ebxml-regrep:rim:RegistryPackage:packageType”.
1622 a) If it is so, then the object is not governed directly and instead its parent RegistryObjects is the
1623 governed object
1625 2. Check if there is a governance collaboration assigned to a RegistryPackage ancestor using the
1626 canonical “HasGovernance” Association as follows:
1627 a) Do a breadth-first traversal of the tree consisting of all RegistryPackage ancestors of the ob-
1628 ject and for each RegistryPackage see if it has a governance collaboration assigned to it
1629 b) Stop when you find the first such governance collaboration
1631 3. If no RegistryPackage-specific governance collaboration is found then the object is not governed
1632 by any governance collaboration
1633
1638 2. Find the processRef attribute of the “registryParticipant” and use the referenced process as the
1639 Registry process
1650 ● The sourceRef attribute of the messageFlow references a task that conforms to the
1651 SendWorkflowAction task template described later in this chapter
1652 ● The targetRef attribute of the messageFlow references a task that conforms to the
1653 ReceiveWorkflowAction task template described later in this chapter
1654 ● The messageRef attribute of the messageFlow is defined and references a message whose item-
1655 Definition has attribute structureRef="rim:WorkflowActionType"
1656
1668 The following table provides a brief summary each of the canonical tasks defined by this specification.
1669 Subsequent sections specify these tasks in more detail.
1670
Task Pattern Task Type Used Description
In
ReceiveWorkflow receiveTask Registry Pro- Waits until a WorkflowAction message is received from a non-
Action cess Registry process
ReceiveNotification receiveTask Non-Registry Receives a Notification message from the Registry process
Process
SetStatus scriptTask Registry Pro- Sets the status of the specified RegistryObject
cess
1671
1676 Task Inputs: The task has the following inputs as defined by dataInput elements in its ioSpecification:
1677 ● A dataInput that has an itemSubjectRef attribute that references an itemDefinition element whose
1678 structureRef attribute value is “rim:WorkflowActionType”
1680 Task Actors: This task SHOULD be performed by a role other than Registry role to indicate that some
1681 external action (e.g. “approval”) has been performed on the targetObject specified by the WorkflowAction.
1682 Description: To perform this task the actor submits a WorkflowAction to the server using the standard
1683 SubmitObjects protocol. The name of the task SHOULD reflect the action being performed by the task
1684 (e.g. name='SendWorkflowAction(RequestForReview)'. The WorkflowAction MUST specify:
1686 ● A targetObject attribute identifying the object that is the target of the action. Typically, this is the
1687 governed object
1691
WorkflowActionType workflowAction = ...;
Collaboration collaboration =
getApplicableGovernanceCollaboration(workflowAction.getTargetObject());
if (collaboration != null) {
Process registryProcess = collaboration.getRegistryProcess();
if (registryProcess != null) {
1692
1693 1. Determine and get the applicable Governance Collaboration (as defined in 10.3 Determining
1694 Applicable Governance Collaboration)
1695 2. Determine and get the applicable Registry process for the collaboration (as defined in 10.4
1696 Determining the Registry Process in a Governance Collaboration)
1697 3. If the Registry process has not yet been started then start it within the BPMN process engine
1698 4. Deliver the WorkflowAction message to the Registry process where presumably a receiveTask
1699 based on the ReceiveWorkflowAction task pattern is waiting for it
1700
1705 Task Inputs: The task has the following inputs as defined by dataInput elements in its ioSpecification:
1706 ● A dataInput that has an itemSubjectRef attribute that references an itemDefinition element whose
1707 structureRef attribute value is “rim:WorkflowActionType”
1709 Task Actors: This task MUST be performed by the Registry role to wait until some external action (e.g.
1710 “approval”) has been performed on the targetObject specified by the WorkflowAction.
1711 Description: This task waits until the server delivers a WorkflowAction message to the Registry process.
1712 The name of the task SHOULD reflect the action being performed (e.g.
1713 name='ReceiveWorkflowAction(RequestForReview)'. The task is typically followed by sequenceFlow ele-
1714 ments that have a conditionExpression that predicate on the value of the action attribute of the Work-
1715 flowAction.
1723 Task Actors: This task MUST be performed by the Registry role to keep governance roles for the gov-
1724 erned object informed of important changes (e.g. status attribute changes) during the course of the life
1725 cycle of the governed object.
1733 Task Inputs: The task has the following inputs as defined by dataInput elements in its ioSpecification:
1734 ● A dataInput that has an itemSubjectRef attribute that references an itemDefinition element whose
1735 structureRef attribute value is “rim:NotificationType”
1738 Description: This task waits until the server delivers a Notification message. The name of the task
1739 SHOULD reflect the nature of the notification being received by the task (e.g.
1740 name='ReceiveNotification(Accept)'.
1746 Task Actors: This task MUST be performed by the Registry role to reflect changes in life cycle status
1747 during the course of the life cycle of the governed object.
1748 Description: To perform this task the actor uses the setStatus canonical XPATH extension function
1749 defined later in this chapter. The name of the task SHOULD reflect the status being set by the task (e.g.
1750 name='SendStatus(Approved)'.
1755 Task Actors: This task SHOULD be performed by the Registry role in response to the creation or updat-
1756 ing of the governed object.
1757 Description: To perform this task the actor validates the governed object using the standard ValidateOb-
1758 jects protocol. The name of the task SHOULD be 'Validate' or an equivalent native language translation.
1763 Task Actors: This task SHOULD be performed by the Registry role in response to the creation or updat-
1764 ing of the governed object.
1765 Description: To perform this task the actor catalogs the governed object using the standard CatalogOb-
1766 jects protocol. The name of the task SHOULD be 'Catalog' or an equivalent native language translation.
1771 These functions MAY be used within XPATH expressions in a BPMN file wherever a tExpression type is
1772 supported by the BPMN schema.
1775
XPATH Extension Function Description
rs:getRegistryObject(id as xs:string) as element() Returns the RegistryObject element for the RegistryOb-
ject that matches the specified id after retrieving it from
the server. This is typically used to get the governed ob-
ject.
rs:setStatus(targetObject as xs:string, status as Sets the status of the object matching targetObject with
xs:string) as none the specified status. Used by the SetStatus task pattern.
This function returns no value.
1776
1777 In addition to the functions described in table above, all canonical query functions supported by the server
1778 MUST also be supported by the server as XPATH functions.
1783 The Default Governance Collaboration is represented by a canonical ExtrinsicObjectType instance with id
1784 “urn:oasis:names:tc:ebxml-regrep:collaboration:DefaultGovernanceCollaboration”.
1785 A BPMN diagram for the Default Governance Collaboration has been provided in Illustration 12 earlier.
regrep-core-rs-v4.0-os 25 January 2012
Standards Track Work Product Copyright © OASIS Open 2012. All Rights Reserved. Page 83 of 95
1786 The Default Governance Collaboration is summarized as follows:
1787 ● The submitter requests review and approval of the governed object using SendWorkflowAction
1788 canonical task pattern with action “RequestForReview”
1789 ● The server receives the “RequestForReview” WorkflowAction and notifies the reviewer roles of
1790 the request for review using Notify canonical task pattern
1791 ● A reviewer accepts the request for review using SendWorkflowAction canonical task with Work-
1792 flowAction “Accept”
1793 ● The server notifies submitter roles that the governed object is under review using the using Notify
1794 canonical task
1795 ● The reviewer approves or rejects the governed objects using SendWorkflowAction canonical task
1796 and actions “Approve” or “Reject”
1797 ● The server notifies the submitter of the outcome of the review using the using Notify canonical
1798 task
1828 The [WSS-CORE] has several profiles for supporting various types of security tokens in a standard man-
1829 ner. A server MUST support at least one of the following types of security token:
1852 ● The identity associated with the client as well as any roles assigned to that identity
1853 A server MUST provide an access control and authorization mechanism based upon chapter titled “Ac-
1854 cess Control Information Model” in [regrep-rim-v4.0]. This model defines a default access control policy
1855 that MUST be supported by the server. In addition it also defines a binding to [XACML] that allows fine-
1856 grained access control policies to be defined.
1861 A server MUST create an audit trail for each request that affected the state of server resources. A server
1862 MUST create this audit trail using AuditableEventType instances as define by the chapter title “Event In-
1863 formation Model” of [regrep-rim-v4.0].
1864 Details of how a server maintains an Audit Trail of client requests is described in the chapter title “Event
1865 Information Model” of [regrep-rim-v4.0].
Coded Character Set (CCS) CCS is a mapping from a set of abstract characters to a
set of integers. [RFC 2130]. Examples of CCS are ISO-
10646, US-ASCII, ISO-8859-1, and so on.
Character Encoding Scheme (CES) CES is a mapping from a CCS (or several) to a set of
octets. [RFC 2130]. Examples of CES are ISO-2022,
UTF-8.
Character Set (charset) • Charset is a set of rules for mapping from a se-
quence of octets to a sequence of characters.
[RFC 2277],[RFC 2278]. Examples of character
set are ISO-2022-JP, EUC-KR.
• A list of registered character sets can be found
at [IANA].
1870
1874 A client SHOULD specify charset parameter in MIME header when they specify text/xml as Content-Type.
1875 The following is an example of specifying the character set in the MIME header.
1876
1877 If a server receives a protocol message with the charset parameter omitted then it MUST use the default
1878 charset value of "us-ascii" as defined in [RFC 3023].
1879 Also, when an application/xml entity is used, the charset parameter is optional, and client and server
1880 MUST follow the requirements in Section 4.3.3 of [REC-XML] which directly address this contingency.
1881 If another Content-Type is used, then usage of charset MUST follow [RFC 3023].
1885
1886
1887 An InternationalStringType may contain zero or more rim:LocalizedString elements within it where each
1888 LocalizedString contain a string value is a specified local language.
1889
<complexType name="LocalizedStringType">
<attribute ref="xml:lang" use="optional" default="en-US"/>
<attribute name="value" type="tns:FreeFormText" use="required"/>
</complexType>
1890
1891 Examples of such elements are the “Name” and “Description” elements of the RegistryObject class
1892 defined by [regrep-rim-v4.0].
1893 An element InternationalString is capable of supporting multiple locales within its collection of Localized-
1894 Strings.
1895 The schema allows a single RegistryObject instance to include values for any NLS sensitive element in
1896 multiple locales.
1897 The following example illustrates how a single RegistryObject can contain NLS sensitive <rim:Name> and
1898 “<rim:Description> elements with their value specified in multiple locales. Note that the <rim:Name> and
1899 <rim:Description> use the rim:InternationalStringType as their type.
<rim:RegistryObject xsi:type="rim:ExtrinsicObjectType"...>
<rim:Name>
<rim:LocalizedString xml:lang="en-US" value="customACP1.xml"/>
<rim:LocalizedString xml:lang="fi-FI" value="customACP1.xml"/>
<rim:LocalizedString xml:lang="pt-BR" value="customACP1.xml"/>
</rim:Name>
<rim:Description>
<rim:LocalizedString xml:lang="en-US" value="A sample custom ACP"/>
<rim:LocalizedString xml:lang="fi-FI" value="Esimerkki custom ACP"/>
<rim:LocalizedString xml:lang="pt-BR" value="Exemplo de ACP customizado"/>
</rim:Description>
</rim:RegistryObjectType>
1900
1901 Since locale information is specified at the sub-element level there is no language associated with a spe-
1902 cific RegistryObject instance.
1912 Clients SHOULD specify UTF-8 or UTF-16 as the value of the charset attribute of LocalizedStrings for
1913 maximum interoperability. A server MUST preserve the charset of a repository item as it is originally spe-
1914 cified when it is submitted to the server.
1925
1926 A server MUST preserve the charset of a repository item as it is originally specified when it is submitted to
1927 the server.
1931 This document currently specifies only the method of sending the information of character set and lan-
1932 guage, and how it is stored in a server. However, the language information MAY be used as one of the
1933 query criteria, such as retrieving only DTD written in French. Furthermore, a language negotiation proced-
1934 ure, like client asking a preferred language for messages from server, could be functionality for a future
1935 revision of this document.
1950
1951 The following are examples of valid canonical URLs for RegistryObjectType instances. Note that for read-
1952 ability we do not encode special characters in the id attribute value.
1953
//Get RegistryObject with id: urn:acme:pictures:danyal.jpg
GET http://acme.com/myregistry/rest/registryObjects/urn:acme:pictures:danyal.jpg
1954
1957
1958 The following are examples of valid canonical URLs for RegistryObjectType instances. Note that for read-
1959 ability we do not encode special characters in the id attribute value.
1960
//Get repository item associated with
//ExtrinsicObject with id: urn:acme:pictures:danyal.jpg
GET http://acme.com/myregistry/rest/repositoryItems/urn:acme:pictures:danyal.jpg
1961
1966 The URL pattern or template for the parameterized query invocation is as follows:
1967
#Template URL for parameterized query invocation
<server base url>/rest/search?queryId={the query id}(&{<param-name>=<param-
value>})*
1968
1969 The following example shows the use of the FindObjectsByIdAndType canonical query using the REST
1970 binding.
#Get RegistryObject with id: urn:acme:pictures:danyal.jpg
GET http://acme.com/myregistry/rest/search?queryId=urn:oasis:names:tc:ebxml-
regrep:query:FindObjectById&id=urn:acme:pictures:danyal.jpg
1971
1982 In addition to query-specific parameters, every query invocation URL MUST also support one or more ca-
1983 nonical query parameters. These are described in subsequent sections.
2025 For example a query parameter “#@'@#rs:currentTime#@'@#” would evaluate to the current time as a
2026 quoted timestamp string in ISO 8601 format such as “#@'@#2010-08-05T17:14:18.866#@'@#”. Such a
2027 query parameter in REST interface would have to be URL encoded to be as shown in the following ex-
2028 ample:
http://localhost:8080/omar-server/rest/search?
queryId=urn:ogc:specification:regrep:profile:ISO19139:query:DatasetDiscoveryQu
ery&title=%23%40%%2740%23ebrs:currentTime%28%29%23%40%%2740%23
2033
2039 The following additional requirements are defined by this specification for the SOAP binding:
2040 ● A server MUST use WS-Addressing SOAP Headers when sending a Notification message to a
2041 SOAP endpoint as defined here.
2046 ● A server MUST set the content of the wsa:MessageID element to a unique id. A server SHOULD
2047 generate a universally unique id value that conform to the format of a URN that specifies a DCE
2048 128 bit UUID as specified in [UUID] (e.g. urn:uuid:a2345678-1234-1234-123456789012).
2050 ○ The wsa:Address elements content MUST be set to the base URL for the server.
2051 ● A server MUST set the content of the wsa:To element to the SOAP endpoint URL where the mes-
2052 sage is being sent to.
2053 ● A server MUST set the content of the wsa:Action element to the value of the soapAction attribute
2054 of the soap:operation element for the operation defined for the SOAP binding for the interface's
2055 WSDL.
2056 The following example shows a SOAP message containing a Notification intended for a Notification-
2057 Listener SOAP endpoint.
2058
<env:Envelope>
<env:Header>
<wsa:MessageID>
urn:uuid:3e79348f-d696-4fac-a015-a4bae0bf83c5
</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://www.acme.com/regrep</wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://www.client.com/notificationListener</wsa:To>
<wsa:Action>urn:oasis:names:tc:ebxml-
regrep:wsdl:NotificationListener:bindings:4.0:NotificationListener:onNotificat
ion</wsa:Action>
</env:Header>
<env:Body>
<rim:Notification .../>
</env:Body>
</env:Envelope>
AuthenticationException Generated by server when a client sends a request with authentication creden-
tials and the authentication fails for any reason.
AuthorizationException Generated by server when a client sends a request to the server for which it is
not authorized.
InvalidRequestException Generated by server when a client sends a request that is syntactically or se-
mantically invalid.
ObjectNotFoundException Generated by the server when a QueryRequest expects an object but it is not
found in server.
QueryException Generated by server when when a problem is encountered during the pro-
cessing of a QueryRequest.
QuotaExceededException
Generated by server when a a request exceeds a server specific quota
for the client.
ReferencesExistException
Generated by server when a RemoveObjectRequest attempts to re-
move a RegistryObject while references to it still exist.
TimeoutException
Generated by server when a the processing of a request exceeds a
server specific timeout period.
UnresolvedReferenceException Generated by the server when a request references an object that cannot be
resolved within the request or to an existing object in the server.
UnsupportedCapabilityException Generated by server when when a request attempts to use an optional feature
or capability that the server does not support.
2064