Status: 2.1 Draft Specification - 19 February 2014
This Version
Latest Version
PreviousVersion
Authors
Contributors
Contents
Notation and Conventions
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC2119. Domain name examples use RFC2606.
Introduction
(this section is informative)
This specification builds on the OSLC Core Specification to define the resources and operations supported by an Open Services for Lifecycle Collaboration (OSLC) Automation provider.
Automation resources define automation plans, automation requests and automation results of the software development, test, deployment, and operations lifecycle. They represent individual resources as well as their relationships to other automation resources and to other linked resources outside of the automation domain. The intent of this specification is to define the set of HTTP-based RESTful interfaces in terms of HTTP methods: GET, POST, PUT and DELETE, HTTP response codes, MIME type handling and resource formats. The capabilities of the interface definitions are driven by key integration scenarios and therefore don’t represent a complete setup of operations on resources or resource types. The resource formats and operations may not match exactly the native models supported by automation service providers but are intended to be compatible with them.
Automation, as referenced in this specification, refers to the use of IT systems such as servers, workstations and smart hand-held devices to improve efficiency and reduce the need for manual human interactions in the software development, test, deployment, and operations lifecycle. See the Automation Scenarios page for examples from the build, test, deployment, and operations disciplines.
Terminology
Service Provider - an implementation of the OSLC Automation specification as a server. OSLC Automation clients consume these services
Automation Resource - A resource managed by the Automation service provider. The types of resources defined by this specification are Automation Plan, Automation Request and Automation Result.
Automation Plan - Defines the unit of automation which is available for execution.
Automation Request - Defines the submission of the information required to execute an Automation Plan and indicates the desired execution state.
Automation Result - Defines intermediate and final execution status of an Automation Request, along with contributions to the result.
Automation Parameter Definition - Defines an individual input parameter of an Automation Plan. Parameter Definitions provide an indication of the type of the parameter and range of allowed values.
Automation Parameter Instance - Defines an individual input or output parameter instance for an Automation Request or Result.
Base Requirements
Compliance
This specification is based on OSLC Core Specification. OSLC Automation consumers and service providers MUST be compliant with both the core specification and this Automation specification, and SHOULD follow all the guidelines and recommendations in both these specifications.
The following table summarizes the requirements from OSLC Core Specification as well as some (but not all) additional requirements specific to Automation. See the full content of the Automation specification for all requirements. Note that this specification further restricts some of the requirements for OSLC Core Specification as noted in the Origin column of the compliance table. See further sections in this specification or the OSLC Core Specification to get further details on each of these requirements.
Any consumer or service provider behaviors are allowed unless explicitly prohibited by this or dependent specifications; conditional permissive requirements, especially those qualified with “MAY”, are implicitly covered by the preceding clause. While technically redundant in light of that broad permission, OSLC specifications do still make explicit MAY-qualified statements in cases where the editors believe doing so is likely to add clarity.
Requirements on OSLC Consumers
Requirement |
Level |
Origin(s) |
Meaning |
Unknown properties and content |
MUST |
Core |
OSLC clients MUST preserve unknown content |
Unknown properties and content |
SHOULD |
Core |
OSLC clients SHOULD assume an OSLC service will discard unknown property values. |
Requirements on OSLC Service Providers
Requirement |
Level |
Origin(s) |
Meaning |
Unknown properties and content |
MUST |
Core |
OSLC service providers MUST return an error code if recognized content is invalid. |
Unknown properties and content |
SHOULD |
Core |
OSLC service providers SHOULD NOT return an error code for unrecognized content. |
Unknown properties and content |
MAY |
Core |
OSLC service providers MAY ignore unknown content |
Resource Operations |
MUST |
Core |
OSLC service providers MUST support resource operations via standard HTTP operations |
Resource Paging |
MAY |
Core |
OSLC services MAY provide paging for resources |
Partial Resource Representations |
SHOULD |
Core |
OSLC service providers SHOULD support HTTP GET requests for retrieval of a subset of a resource’s properties via the oslc.properties URL parameter |
Partial Resource Representations |
MAY |
Core |
OSLC service providers MAY support HTTP PUT requests for updating a subset of a resource’s properties via the oslc.properties URL parameter |
Service Provider Resources |
MAY |
Core |
OSLC service providers MAY provide a Service Provider Catalog resource |
Service Provider Resources |
MUST |
Core |
OSLC service providers MUST provide a Service Provider resource |
Creation Factories |
MAY |
Core |
OSLC service providers MAY provide creation factories to enable resource creation via HTTP POST |
Query Capabilities |
SHOULD 1 |
Automation, Core |
OSLC service providers SHOULD provide query capabilities to enable clients to query for resources |
Query Syntax |
MUST 2 |
Automation, Core |
If a service provider supports a OSLC query capabilities, the query capabilities MUST support the OSLC Core Query Syntax |
Query Syntax |
MAY |
Core |
OSLC query capabilities MAY support other query syntax |
Delegated UI Dialogs |
SHOULD |
Core |
OSLC service providers SHOULD allow clients to discover, via their service provider resources, any Delegated UI Dialogs they offer. |
Delegated UI Dialogs |
SHOULD |
Core |
OSLC service providers SHOULD offer delegated UI dialogs for resource creation |
Delegated UI Dialogs |
SHOULD |
Core |
OSLC service providers SHOULD offer delegated UI dialogs for resource selection |
UI Preview |
SHOULD |
Core |
OSLC Services SHOULD offer UI previews for resources that may be referenced by other resources |
HTTP Basic Authentication |
MAY |
Core |
OSLC Services MAY support Basic Auth |
HTTP Basic Authentication |
SHOULD |
Core |
OSLC Services SHOULD support Basic Auth only over HTTPS |
OAuth Authentication |
MAY |
Core |
OSLC service providers MAY support OAuth |
OAuth Authentication |
SHOULD |
Core |
OSLC service providers that support OAuth SHOULD allow clients to discover the required OAuth URLs via their service provider resource |
Error Responses |
MAY |
Core |
OSLC service providers MAY provide error responses using Core-defined error formats |
RDF/XML Representations |
MUST3 |
Automation, Core |
OSLC service providers MUST offer an RDF/XML representation for HTTP GET responses |
RDF/XML Representations |
MUST3 |
Automation, Core |
OSLC service providers MUST accept RDF/XML representations on PUT requests. |
RDF/XML Representations |
MUST3 |
Automation, Core |
RDF/XML representations on POST requests whose semantic intent is to create a new resource instance. |
XML Representations |
MAY3 |
Automation, Core |
OSLC service providers MAY provide a XML representation for HTTP GET, POST and PUT requests that conform to the Core Guidelines for XML. |
JSON Representations |
MAY3 |
Automation, Core |
OSLC service providers MAY provide JSON representations for HTTP GET, POST and PUT requests that conform to the Core Guidelines for JSON |
HTML Representations |
SHOULD3 |
Automation, Core |
OSLC service providers SHOULD provide HTML representations for HTTP GET requests |
- 1The OSLC Core Specifications indicates service providers MAY provide Query Capabilities. This specification for OSLC Automation makes Query Capability support a SHOULD requirement.
- 2The OSLC Core Specifications indicates service providers MAY support the OSLC Query Syntax. This specification for OSLC Automation makes OSLC Query Syntax support a MUST requirement for service providers providing query capabilities.
- 3For V2 of the OSLC Automation specification, support for all HTTP methods for all automation resources is not required. See the HTTP Method support table for details.
Specification Versioning
See OSLC Core Specification Versioning section.
Namespaces
In addition to the namespace URIs and namespace prefixes defined in the OSLC Core specification, OSLC Automation defines the namespace URI of http://open-services.net/ns/auto#
with a namespace prefix of oslc_auto
. This namespace URI and prefix are used to designate the resources defined in this specification and their properties.
In addition to the requirements for OSLC Defined Resource Representations, this section outlines further refinements and restrictions.
See HTTP Method support table for further clarification on support for HTTP methods and media types for each OSLC Automation resource.
For HTTP GET requests on all OSLC Automation and OSLC Core defined resource types,
- Automation Providers MUST provide RDF/XML representations. The RDF/XML representation SHOULD follow the guidelines outlined in the OSLC Core Representations Guidance for RDF/XML.
- Automation Providers MAY provide XML and JSON representations. If provided, the XML and JSON representations SHOULD follow the guidelines outlined in the OSLC Core Representations Guidance.
- Automation Consumers requesting RDF/XML SHOULD be prepared for any valid RDF/XML document. Automation Consumers requesting XML SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance.
- Automation Providers SHOULD support an [X]HTML representation and a user interface (UI) preview as defined by UI Preview Guidance
For HTTP PUT/POST request formats for Automation resources,
- Automation Providers MUST accept RDF/XML representations and MAY accept XML representations. Automation Providers accepting RDF/XML SHOULD be prepared for any valid RDF/XML document. If XML is accepted, Automation Providers SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance.
- Automation Providers MAY accept XML and JSON representations. Automation Providers accepting XML or JSON SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance.
For HTTP GET response formats for Query requests,
Automation Providers MUST provide RDF/XML and MAY provide JSON, XML, and Atom Syndication Format XML.
When Automation Consumers request:
application/rdf+xml
Automation Providers MUST respond with RDF/XML representation without restrictions.
application/xml
Automation Providers SHOULD respond with OSLC-defined abbreviated XML representation as defined in the OSLC Core Representations Guidance
application/atom+xml
Automation Providers SHOULD respond with Atom Syndication Format XML representation as defined in the OSLC Core Representations Guidance
- If supported, the Atom Syndication Format XML representation SHOULD use RDF/XML representation without restrictions for the atom:content entries representing the resource representations.
Authentication
See OSLC Core Authentication section. OSLC Automation puts no additional constraints on authentication.
Error Responses
See OSLC Core Error Responses section. OSLC Automation puts no additional constraints on error responses.
OSLC Automation service providers SHOULD support pagination of query results and MAY support pagination of a single resource’s properties as defined by the OSLC Core Specification.
Labels for Relationships
Automation relationships to other resources are represented as properties whose values are the URI of the object or target resource. When an Automation relationship property is to be presented in a user interface, it may be helpful to provide an informative and useful textual label for that relationship instance. (This in addition to the relationship property URI and the object resource URI, which are also candidates for presentation to a user.) To this end, OSLC providers MAY support a dcterms:title
link property in Automation resource representations, using the anchor approach outlined in the OSLC Core Links Guidance.
RDF/XML and XML example using reified statement:
<rdf:RDF
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:oslc_auto="http://open-services.net/ns/auto#">
<oslc_auto:AutomationResult rdf:about="http://example.com/results/4321">
<oslc_auto:reportsOnAutomationPlan rdf:ID="link1"
rdf:resource="http://example.com/plans/123" />
</oslc_auto:AutomationResult>
<rdf:Description rdf:about="#link1">
<dcterms:title>Build Definition 123: Pet Shop App production build</dcterms:title>
</rdf:Description>
</rdf:RDF>
Automation Resource Definitions
The Automation resource properties are not limited to the ones defined in this specification; service providers may provide additional properties. It is recommended that any additional properties exist in their own unique namespace and not use the namespaces defined in this specification.
A list of properties is defined for each type of resource. Most of these properties are identified in OSLC Core Appendix A: Common Properties. Any exceptions are noted. Relationship properties refer to other resources. These resources may be in any OSLC domain (including Automation).
The diagram below shows the relationships between Automation Resources.
For all resource types defined in this specification, all required properties (those defined with an occurrence of exactly-one or one-or-many) MUST exist for each resource and must be provided when requested. All other properties are optional, and might not exist on some or any resources; those that do not exist will not be present in the returned representation even if requested, while those that do exist MUST be provided if requested. Providers MAY define additional provider-specific properties; providers SHOULD use their own namespaces for such properties, or use standard Dublin Core or RDF namespaces and properties where appropriate.
If no specific set of properties is requested, all properties are returned - both those defined in this specification as well as any provider-specific ones. See Selective Property Values in OSLC Core Specification.
Consumers of OSLC Automation services should note that some resources may have a very large number of related resources, and that some resources may be very large and/or expensive to compute. For this reason, consumers are strongly encouraged to use the oslc.properties
parameter to limit the properties returned from a request to the subset required. See Selective Property Values in OSLC Core Specification.
Resource: AutomationPlan
- Name:
AutomationPlan
- Description: A resource representing the unit of automation which is available for execution.
- Type URI
http://open-services.net/ns/auto#AutomationPlan
AutomationPlan Properties
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
OSLC Core: Common Properties |
|
|
|
|
|
|
dcterms:contributor |
zero-or-many |
unspecified |
!AnyResource |
Either |
any |
Contributor or contributors to resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case. |
dcterms:created |
zero-or-one |
True |
DateTime |
n/a |
n/a |
Timestamp of resource creation (reference: Dublin Core) |
dcterms:creator |
zero-or-many |
unspecified |
AnyResource |
Either |
any |
Creator or creators of resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case. |
dcterms:description |
zero-or-one |
unspecified |
XMLLiteral |
n/a |
n/a |
Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML <div> element. |
dcterms:identifier |
exactly-one |
True |
String |
n/a |
n/a |
A unique identifier for a resource. Assigned by the service provider when a resource is created. Not intended for end-user display. |
dcterms:modified |
zero-or-one |
True |
DateTime |
n/a |
n/a |
Timestamp of latest resource modification (reference: Dublin Core) |
rdf:type |
zero-or-many |
unspecified |
Resource |
Reference |
n/a |
The resource type URIs. |
dcterms:subject |
zero-or-many |
unspecified |
String |
n/a |
n/a |
Tag or keyword for a resource. Each occurrence of a dc:subject property denotes an additional tag for the resource. |
dcterms:title |
exactly-one |
unspecified |
XMLLiteral |
n/a |
n/a |
Title (reference: Dublin Core) of the resource represented as rich text in XHTML content. |
oslc:instanceShape |
zero-or-one |
True |
Resource |
Reference |
oslc: ResourceShape |
Resource Shape that provides hints as to resource property value-types and allowed values. |
oslc:serviceProvider |
zero-or-many |
True |
Resource |
Reference |
oslc: ServiceProvider |
The scope of a resource is a link to the resource’s OSLC Service Provider. |
Prefixed Name |
Occurs |
Read-only |
Value-type |
Represen-tation |
Range |
Description |
OSLC Automation: Start of additional properties |
|
|
|
|
|
|
oslc_auto:parameterDefinition |
zero-or-many |
unspecified |
AnyResource |
Either |
oslc: Property |
The definition of a parameter for this Automation Plan. parameterDefinitions are either a local (inline) or referenced resource and use the attributes (the range) of the oslc:Property resource with one exception. When used in the context of an oslc_auto:parameterDefinition, the cardinality of oslc:propertyDefinition becomes zero-or-one instead of exactly-one. Automation consumers creating Automation Requests MUST use the oslc:occurs attribute of the parameterDefinition, if present, to determine if a given parameter is required when creating the Automation Request. If the oslc:occurs attribute indicates the parameter is required (exactly-one or one-or-more), the service provider must guarantee the named parameter will be present in the Automation Result either as an oslc_auto:inputParmeter when unmodified during execution, or as an oslc_auto:outputParameter when modified during execution. |
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
Relationship properties: This grouping of properties is used to identify relationships between resources managed by OSLC Service Providers |
|
|
|
|
|
|
oslc_auto:usesExecutionEnvironment |
zero-or-many |
Unspecified |
Resource |
Reference |
any |
A resource representing the environment(s) which this Automation Plan can be executed in. The execution environment resource could represent a grouping of environmental details such as operating system, database, browser, compiler, etc. |
NOTE Cardinality correct?
Resource: AutomationRequest
- Name:
AutomationRequest
- Description: A resource representing the intention to execute an Automation Plan. The Automation Request contains the information required to request that the provider execute an Automation Plan.
- Type URI
http://open-services.net/ns/auto#AutomationRequest
AutomationRequest Properties
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
OSLC Core: Common Properties |
|
|
|
|
|
|
dcterms:contributor |
zero-or-many |
unspecified |
AnyResource |
Either |
any |
Contributor or contributors to resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case. |
dcterms:created |
zero-or-one |
True |
DateTime |
n/a |
n/a |
Timestamp of resource creation (reference: Dublin Core) |
dcterms:creator |
zero-or-many |
unspecified |
AnyResource |
Either |
any |
Creator or creators of resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case. |
dcterms:description |
zero-or-one |
unspecified |
XMLLiteral |
n/a |
n/a |
Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML <div> element. |
dcterms:identifier |
exactly-one |
True |
String |
n/a |
n/a |
A unique identifier for a resource. Assigned by the service provider when a resource is created. Not intended for end-user display. |
dcterms:modified |
zero-or-one |
True |
DateTime |
n/a |
n/a |
Timestamp of latest resource modification (reference: Dublin Core) |
rdf:type |
zero-or-many |
unspecified |
Resource |
Reference |
n/a |
The resource type URIs. |
dcterms:title |
exactly-one |
unspecified |
XMLLiteral |
n/a |
n/a |
Title (reference: Dublin Core) of the resource represented as rich text in XHTML content. |
oslc:instanceShape |
zero-or-one |
True |
Resource |
Reference |
oslc: ResourceShape |
Resource Shape that provides hints as to resource property value-types and allowed values. |
oslc:serviceProvider |
zero-or-many |
True |
Resource |
Reference |
oslc: ServiceProvider |
The scope of a resource is a link to the resource’s OSLC Service Provider. |
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
OSLC Automation: Start of additional properties |
|
|
|
|
|
|
oslc_auto:state |
one-or-many |
True |
AnyResource |
Either |
n/a |
Used to indicate the state of the automation request based on values defined by the service provider. Most often a read-only property. It is expected that this will be a resource reference to a definition of a valid automation request state on the service provider. |
oslc_auto:desiredState |
zero-or-one |
False |
AnyResource |
n/a |
n/a |
Used to indicate the desired state of the Automation Request based on values defined by the service provider. It is expected that this will be a resource reference to a definition of a valid automation request state on the service provider. |
oslc_auto:inputParameter |
zero-or-many |
unspecified |
AnyResource |
Either |
oslc_auto:ParameterInstance |
Parameters provided when Automation Requests are created. These include parameters provided by the creator of the Automation Request (whether by delegated UI or HTTP POST) and MAY include additional parameters added by the service provider during Automation Request creation. See the definition of the oslc_auto:parameterDefinition attribute of the Automation Plan for additional guidance on determining which parameters are required. Creators of Automation Requests MAY provide parameters beyond those defined in the Automation Plan without guarantee the service provider will recognize or honor them. It is expected that this attribute is write-able on Automation Request creation and read-only thereafter. |
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
Relationship properties: This grouping of properties is used to identify relationships between resources managed by OSLC Service Providers |
|
|
|
|
|
|
oslc_auto:executesAutomationPlan |
exactly-one |
False |
Resource |
Reference |
any |
Automation Plan run by the Automation Request. It is likely that the target resource will be an oslc_auto:AutomationPlan but that is not necessarily the case. |
Resource: AutomationResult
- Name:
AutomationResult
- Description: A resource representing the intermediate and final execution state of an Automation Request, along with contributions to the result.
- Type URI
http://open-services.net/ns/auto#AutomationResult
AutomationResult Properties
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
OSLC Core: Common Properties |
|
|
|
|
|
|
dcterms:contributor |
zero-or-many |
unspecified |
AnyResource |
Either |
any |
Contributor or contributors to resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case. When the service provider or its agents is the contributor to the resource, a foaf:Agent could be used. |
dcterms:created |
zero-or-one |
True |
DateTime |
n/a |
n/a |
Timestamp of resource creation (reference: Dublin Core) |
dcterms:creator |
zero-or-many |
unspecified |
AnyResource |
Either |
any |
Creator or creators of the resource (reference: Dublin Core). It is likely that the target resource will be a foaf:Person, but that is not necessarily the case. The resource should represent the entity on whose behalf the automation is being created. When the provider itself or its agent is the initiator of the automation (perhaps in the case of a scheduled automation), an additional foaf:Agent resource could be used. |
dcterms:identifier |
exactly-one |
True |
String |
n/a |
n/a |
A unique identifier for a resource. Assigned by the service provider when a resource is created. Not intended for end-user display. |
dcterms:modified |
zero-or-one |
True |
DateTime |
n/a |
n/a |
Timestamp of latest resource modification (reference: Dublin Core) |
rdf:type |
zero-or-many |
unspecified |
Resource |
Reference |
n/a |
The resource type URIs. |
dcterms:subject |
zero-or-many |
unspecified |
String |
n/a |
n/a |
Tag or keyword for a resource. Each occurrence of a dc:subject property denotes an additional tag for the resource. |
dcterms:title |
exactly-one |
unspecified |
XMLLiteral |
n/a |
n/a |
Title (reference: Dublin Core) of the resource represented as rich text in XHTML content. |
oslc:instanceShape |
zero-or-one |
True |
Resource |
Reference |
oslc: ResourceShape |
Resource Shape that provides hints as to resource property value-types and allowed values. |
oslc:serviceProvider |
zero-or-many |
True |
Resource |
Reference |
oslc: ServiceProvider |
The scope of a resource is a link to the resource’s OSLC Service Provider. |
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
OSLC Automation: Start of additional properties |
|
|
|
|
|
|
oslc_auto:state |
one-or-many |
True |
AnyResource |
Either |
n/a |
Used to indicate the state of the automation result based on values defined by the service provider. Most often a read-only property. It is expected that this will be a resource reference to a definition of a valid automation result state on the service provider. |
oslc_auto:desiredState |
zero-or-one |
False |
AnyResource |
n/a |
n/a |
Used to indicate the desired state of the Automation Result based on values defined by the service provider. It is expected that this will be a resource reference to a definition of a valid automation request state on the service provider. |
oslc_auto:verdict |
one-or-many |
unspecified |
AnyResource |
Either |
n/a |
Used to indicate the verdict of the automation result based on values defined by the service provider. Most often a read-only property. It is expected that this will be a resource reference to a definition of a valid automation result verdict on the service provider. |
oslc_auto:contribution |
zero-or-many |
unspecified |
AnyResource |
Either |
n/a |
A result contribution associated with this automation result. It is recommended that the contribution be an inline resource which can be retrieved with the automation result. The recommended attributes beyond the contribution itself are dcterms:title, dcterms:description and dcterms:type to provide a description of the contribution which would be appropriate for display in a simple UI for an automation result. |
oslc_auto:inputParameter |
zero-or-many |
True |
AnyResource |
Either |
oslc_auto:ParameterInstance |
A copy of the parameters provided during creation of the Automation Request which produced this Automation Result (see oslc_auto:producedByAutomationRequest ). The oslc_auto:inputParameter resources on an Automation Result should be considered a point-in-time copy of the parameter at the time the Automation Request was created. |
oslc_auto:outputParameter |
zero-or-many |
unspecified |
AnyResource |
Either |
oslc_auto:ParameterInstance |
Automation Result output parameters are parameters associated with the automation execution which produced this Result. This includes the final value of all parameters used to initiate the execution and any additional parameters which may have been created during automation execution by the service provider or external agents. The value of a given oslc_auto:outputParameter MAY change as the execution proceeds. Point-in-time accuracy of the values of output parameters is not covered by this specification. Once the Automation Result is in a final state ( oslc_auto:complete or oslc_auto:canceled ), the oslc_auto:outputParameter values MUST NOT change. |
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
Relationship properties: This grouping of properties is used to identify relationships between resources managed by OSLC Service Providers |
|
|
|
|
|
|
oslc_auto:producedByAutomationRequest |
zero-to-one |
False |
Resource |
Reference |
any |
Automation Request which produced the Automation Result. It is likely that the target resource will be an oslc_auto:AutomationRequest but that is not necessarily the case. |
oslc_auto:reportsOnAutomationPlan |
exactly-one |
False |
Resource |
Reference |
any |
Automation Plan which the Automation Result reports on. It is likely that the target resource will be an oslc_auto:AutomationPlan but that is not necessarily the case. |
Resource: ParameterInstance
- Name:
ParameterInstance
- Description: A resource representing an individual input or output parameter instance for an Automation Request or Result. Automation Requests and Results may have 0 or more parameter instances.
- Type URI
http://open-services.net/ns/auto#ParameterInstance
ParameterInstance Properties
Prefixed Name |
Occurs |
Read-only |
Value-type |
Representation |
Range |
Description |
OSLC Core: Common Properties |
|
|
|
|
|
|
oslc:name |
exactly-one |
unspecified |
String |
n/a |
n/a |
The name of the parameter instance. |
rdf:value |
zero-or-one |
unspecified |
unspecified |
n/a |
n/a |
The value of the parameter. rdf:datatype SHOULD be used to indicate the type of the parameter instance value. |
dcterms:description |
zero-or-one |
unspecified |
XMLLiteral |
n/a |
n/a |
Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML <div> element. |
rdf:type |
zero-or-many |
unspecified |
Resource |
Reference |
n/a |
The resource type URIs. |
oslc:instanceShape |
zero-or-one |
True |
Resource |
Reference |
oslc: ResourceShape |
Resource Shape that provides hints as to resource property value-types and allowed values. |
oslc:serviceProvider |
zero-or-many |
True |
Resource |
Reference |
oslc: ServiceProvider |
The scope of a resource is a link to the resource’s OSLC Service Provider. |
Automation Service Provider Capabilities
Asynchronous and Synchronous Automation Execution
An OSLC Automation service provider is generally assumed to implement automation requests asynchronously. In this model, a client creates an automation request and then later queries a collection of automation results for the particular result(s) related to its request. For generality, it is also assumed that results may be contributed asynchronously by a set of distributed processes, where each contributor adds its contribution(s) to the result via HTTP PUT. When a provider creates an automation request, it can also include an automation result, which might or might not yet be finished at the point in time when the provider responds to the create request. Providers can persist automation results for as long as they deem reasonable. Consumers are assumed to poll for updates to automation results until they have finished. Once a request has finished, the provider may remove it at any time. An automation result is “finished” when it has an oslc_auto:state
predicate with an object of oslc_auto:complete
or oslc_auto:canceled
or an oslc_auto:verdict
property with a value other than oslc_auto:incomplete
.
Automation Provider Sub-Domains
An instance of an OSLC Automation service provider might provide services for one or more particular automation sub-domains (e.g. test or build automation). Automation service providers MAY declare sub-domain information in the Service Provider document by specifying a sub-domain value in the oslc:usage
attribute on the oslc:Service
resource in the Service Provider document. Valid sub-domain values are:
- http://open-services.net/ns/auto#Build: Indicates that the related service provider or services provide build automation capabilities - the process of converting source code artifacts into software artifacts such as executables, libraries and documentation.
- http://open-services.net/ns/auto#Test: Indicates that the related service provider or services provide test automation capabilities - the process of executing tests on a system under test and comparing the results of the tests to pass/fail conditions.
- http://open-services.net/ns/auto#Deploy: Indicates that the related service provider or services provide deployment capabilities - the process of executing processes and procedures to ready systems and software for use.
An automation service provider which is a general-purpose automation provider, or a provider not wanting to provide a sub-domain should provide an oslc:usage
value of http://open-services.net/ns/auto. If no oslc:usage
attribute indicating a sub-domain is present, the default is assumed to be http://open-services.net/ns/auto.
Sub-domain Example
Example of a service provider document fragment with a 2 Services which are identified as related to the Test and Deploy sub-domains:
<oslc:serviceProvider>
<oslc:ServiceProvider>
<oslc:service>
<oslc:Service>
<oslc:usage rdf:resource="http://open-services.net/ns/auto#Test">
<oslc:queryCapability>
...
</oslc:queryCapability>
<oslc:creationFactory>
...
</oslc:creationFactory>
...
</oslc:Service>
</oslc:service>
<oslc:service>
<oslc:Service>
<oslc:usage rdf:resource="http://open-services.net/ns/auto#Deploy">
...
</oslc:Service>
</oslc:service>
</oslc:ServiceProvider>
</oslc:serviceProvider>
Resource Shapes
OSLC Automation service providers MAY support Resource Shapes as defined in OSLC Core Specification Appendix A
Service Provider Resource
OSLC Automation service providers MUST provide a Service Provider Resource that can be retrieved at a implementation dependent URI.
OSLC Automation service providers MAY provide a Service Provider Catalog Resource that can be retrieved at a implementation dependent URI.
It is RECOMMENDED that OSLC Automation service providers provide a oslc:serviceProvider
property for their defined resources that will be the URI to a Service Provider Resource.
Creation Factories
If an OSLC Automation service provider supports the creation of resources, there MUST be at least one Creation Factories entry in the Services definition.
See HTTP Method support table for further clarification on support for HTTP methods and media types for each OSLC Automation resource.
Query Capabilities
OSLC Automation service providers SHOULD have at least one Query Capabilities entry in the its Services definition that allows a client to query !AutomationResults.
Note: OSLC Automation does not require providers to keep resources accessible forever. Clients should not expect automation results to be available for any particular length of time once the request has finished (has a state of completed or canceled). Some providers might respond to an AutomationRequest creation request with an AutomationRequest that is also an AutomationResult, and might make the result inaccessible immediately thereafter.
Note: If an OSLC Automation provider does expose a Query Capability that applies to AutomationResults, and if its AutomationRequest creation responses are not also AutomationResults, then its Query Capability is the only Automation-defined way for clients to find the corresponding AutomationResults.
The Query Capability MUST support these OSLC query parameters and MAY support others:
If shape information is NOT present with the Query Capability, service providers SHOULD use the default properties defined in OSLC Core RDF/XML Examples to contain the result.
Selective Property Values
OSLC Automation providers SHOULD support the oslc.properties
syntax for selective property value retrieval when a resource is accessible via its resource URI.
Delegated UIs
OSLC Automation service providers support the selection and creation of Automation resources as defined by Delegated UIs in OSLC Core.
The service providers supports requirements for delegated UIs is as follows:
Automation Resource |
Selection |
Creation |
AutomationPlan |
SHOULD |
MAY |
AutomationRequest |
MAY |
SHOULD |
AutomationResult |
SHOULD |
MAY |
This is new for 2.1: START
An “immediate-execution” creation dialog is one that creates an Automation Request and makes it eligible for execution as soon as it is created. This is the only form of creation dialog that was defined in OSLC Automation 2.0. OSLC Automation 2.1 defines the term “immediate-execution creation dialog” and the oslc:usage
URI http://open-services.net/ns/auto#ImmediateExecution
(oslc_auto:ImmediateExecution
) to distinguish them from deferred-execution creation dialogs.
OSLC Automation 2.1 consumers MUST interpret an oslc_auto:AutomationRequest
creation dialog that has neither oslc:usage oslc_auto:ImmediateExecution
set nor oslc:usage oslc_auto:DeferredExecution
set as being an “immediate-execution creation dialog”. This is to maintain compatibility with OSLC Automation 2.0 providers.
If an OSLC Automation provider offers both immediate-execution and deferred-execution creation dialogs, it MUST provide oslc_auto:ImmediateExecution
or oslc_auto:DeferredExecution
as a oslc:usage
value (respectively) on the oslc:Dialog
creation dialog resources. Such a provider SHOULD also set oslc:default
as a oslc:usage
value on the immediate-execution dialogs, to guide OSLC Automation 2.0 consumers to use those dialogs and not the deferred-execution ones.
Deferred-Execution Creation Dialog
A Deferred-Execution Creation Dialog is a resource creation delegated user interface dialog that creates an Automation Request but does not make it eligible for execution. A deferred-execution creation dialog MUST comply with all Core requirements on resource creation delegated user interface dialogs. One important consequence of this is that all facilities available on resource creation delegated user interface dialogs, for example pre-filling, apply equally to deferred-execution creation dialogs.
Non-normative note: The Automation 2.0 specification only provided a standard way to create Automation Requests that are eligible for execution once they are created; Automation 2.1 adds deferred-execution creation dialogs to allow creation without execution eligibility in a standard way. This meets Automation 2.1’s template scenarios, while retaining compatibility with Automation 2.0 clients by keeping the behavior of oslc:creationDialog
resources unchanged from 2.0.
This specification defines the oslc:usage
URI http://open-services.net/ns/auto#DeferredExecution
(oslc_auto:DeferredExecution
) to allow clients to discover deferred-execution creation dialogs that an Automation provider supplies, amongst any other dialogs in their oslc:Service
resources.
Should 2.1 also define oslc:usage
URI oslc_auto:ImmediateExecution
, and say that if a SP exposes both immediate and deferred then it MUST explicitly type all its dialogs one way or the other? Doing would only help 2.1 clients, but it should aid debug of 2.1 providers (which is the only place this confusion would arise). We’d also have to require 2.1 clients to assume immediate for unlabeled ones, to be complete.
Martin: Sounds like a good idea to me.
Martin: Done, above.
It bothers Arwe (a bit) that this does not cover creation factories in general (those other than dialogs). I don’t think we have any scenarios where the goal is to create ‘a template’ without a user present. As things now stand, if such a scenario comes up later we have to define more new syntax, and that is ugly too. We could use oslc:usage
instead of rdf:type
; usages apply to both. But then we’re no longer on the oslc:binding\rdf:type
path for Action bindings - it appears impossible to be consistent on both.
Martin: As we haven’t gone down the road of requiring a single predicate/value check for pattern recognition, we could revert deferred execution dialogs to oslc:usage rather than rdf:type. However, the main problem is 2.0 consumers have no way of determining that these are not immediate-execution creation dialogs. Perhaps we add a best practice for 2.1 consumers not only have an “oslc_auto:ImmediateExecution” usage but also “oslc:default” on the immediate one, so well-coded consumers should pick that one over the deferred execution one?
Based on subsequent discussion, I suspect we need a resource shape here (or a link to one) for this new type, since it re-uses oslc:binding
.
Martin: Would a resource shape also include the oslc:usage
values? Do we need them defined somewhere more formal (read: in a table) than in the paragraphs above?
Martin: Should we also have an oslc:usage value for dialogs where the created resources are “especially likely to be short-lived”? All deferred execution dialogs right now should have it, but it provides flexibility going forwards. Although I’m not sure what consumers would do with it right now…
TODO: ? should we add an example of oslc:Service resource showing creation dialog and the new one side by side
One anticipated usage of deferred execution dialogs is to create AutomationRequest
s for later scheduling: a template AutomationRequest
is created (but never actually executed) during a configuration phase, a copy is saved by the client, and then the copy is used at future point(s) in time as pre-fill input to a standard 2.0 Automation Request creation factory or dialog. “Template” in this context refers to the client’s usage of the AutomationRequest
resource, rather than implying anything about its content (see also the section in Core Actions. Clients typically store templates as opaque representations; this specification does nothing to force or discourage any particular behavior.
Any AutomationRequest
created by a deferred-execution creation dialog is especially likely to be short-lived (cleaned up by the server shortly after creation); while this can be true of resources in general, for historical reasons (the 2.0 creation factory behavior described above) it is particularly important in this case as a common usage pattern. As a consequence, the consumer SHOULD get its representation immediately after creating it.
Non-normative note: we suggest that providers allow these resources to exist for at least 15 minutes, but the actual value used is implementation-dependent.
Executing a previously constructed Automation Request
TODO - the standard operation is to treat the template as text (or bytes). If the consumer changes anything they have to know what they are doing. - Umberto
Arwe: see if that’s now adequately covered in the first paragraph of “One anticipated usage…” above.
Martin: Yes, I believe it is.
Holding for Umberto, since it was his to-do.
When a deferred-execution creation dialog creates an Automation Request, it is not queued for execution unless the client takes some explicit further action; it is the responsibility of the consumer to decide when it is ready to be executed. OSLC defines options to initiate execution that include the following:
Provide it as input to a standard (immediately execution-eligible) Automation creation factory.
Provide it as input to a standard (immediately execution-eligible) Automation creation dialog that supports pre-fill.
Note: assuming that the request is successful, it is important to recognize that the cases above all result in the creation of a new Automation Request, with a different URI than anything provided as an input. The provider may provide other ways, in addition to or in place of these, for the consumer to use when it is ready to have the Automation Request executed. OSLC currently has no scenarios requiring the definition of a way to change the state to make the same (input) request eligible for execution.
OSLC defines options for locating those immediate-execution resources, for example creation factories and delegated creation dialogs, that include the following:
Consumers can examine an OSLC Service Provider document’s oslc:Service
resources. In many scenarios, they will only need to implement the Creation Factory interaction pattern to initiate execution, although other possibilities exist.
Consumers can use oslc:binding
properties on the oslc_auto:DeferredExecution
dialog resource to simplify the process of locating appropriate immediate-execution resources. Those consumers choose at least one specification profile from the Actions specification, and implement the interaction patterns described in that profile. They are only able to consume deferred-execution dialogs whose bindings use an interaction pattern that the consumer implements.
The Automation provider MUST describe how to immediately execute an Automation Request created by a deferred-execution dialog using one or more oslc:binding
properties on the oslc_auto:DeferredExecution
dialog resource. The preceding duplicates information in the interaction pattern; do we need it here to/should we replace it with a link?
The target of this property MAY use any Core Actions interaction pattern regardless of its defining specification, but if the deferred-execution dialog is discoverable from a Service in a Service Provider, then the provider MUST supply at least one oslc:binding
property whose target uses the Creation Factory interaction pattern.
If multiple oslc:binding
properties are present, they MUST be equivalent alternatives to each other, as defined by Core Actions.
When a the second class of consumer from the list above is ready for an Automation Request acting as a template to be executed, it uses one of the oslc:binding
properties on the deferred-execution dialog to create a new Automation Request (with a different URI) on the provider. The consumer does this by following the selected binding’s instructions; its interaction pattern might be defined by this specification, or might be defined by another specification.
A consumer chooses which oslc:binding
value to use based on which interaction patterns it understands.
If there are no oslc:binding
values whose interaction patterns are understood by the consumer then the Automation Request acting as a template cannot be used by this consumer and the consumer SHOULD indicate this to the user instead of allowing them to use the deferred-execution dialog.
Deferred execution sample
@base <http://example.com/> .
@prefix oslc <http://open-services.net/ns/core#> .
@prefix oslc_auto <http://open-services.net/ns/auto#> .
@prefix dcterms <http://purl.org/dc/terms/> .
@prefix http <http://www.w3.org/2011/http#> .
@prefix http-methods <http://www.w3.org/2011/http-methods#> ;
<actions/1>
a oslc:Action ;
dcterms:title "Perform action X" ;
oslc:binding <actions/1/bindings/http> ;
oslc:binding <actions/1/bindings/dialog> ;
oslc:binding <actions/1/bindings/dialog-deferred> ;
.
<actions/1/bindings/http>
a http:Request ;
http:httpVersion "1.1" ;
http:mthd http-methods:POST ;
http:requestURI <actions/1/bindings/http> ;
# Multi-valued http:body predicate allows either of the following interaction patterns:
# HTTP request with empty body, or HTTP request with fixed body.
http:body rdf:nil ;
http:body [
a oslc:ContentFromRepresentation ;
rdf:value <actions/1/bindings/http/body.txt> ; # Some opaque body contents
]
.
<actions/1/bindings/dialog>
a oslc:Dialog ;
oslc:usage oslc:ActionDialog;
oslc:usage oslc_auto:ImmediateExecution ;
dcterms:title "Perform action X..." ;
oslc:dialog <actions/1/bindings/dialog.html> ;
.
<actions/1/bindings/dialog-deferred>
a oslc:Dialog ;
oslc:usage oslc_auto:DeferredExecution ;
dcterms:title "Configure action X for later execution..." ;
oslc:dialog <actions/1/bindings/dialog-deferred.html> ; # Used in configuration phase
# Bindings used during the execution phase
# - This dialog re-uses the immediate-execution bindings from the action above.
# - The deferred-execution binding (actions/1/bindings/dialog-deferred) is not re-used.
oslc:binding <actions/1/bindings/dialog> ; # A dialog in case the user is present and wants to tweak the values
oslc:binding <actions/1/bindings/http> ; # For the consumer to replace the fixed body with the result of this dialog
.
This is new for 2.1: END
State and Verdict properties
OSLC Automation service providers can identify the state and verdict using references to property values in the OSLC Automation vocabulary or to property values that are not in the Automation vocabulary (i.e. in the service provider’s own vocabulary). It is expected that the state and verdict values will be URI references to property values, but inline resources defining the state and verdict property values are also valid. Automation service providers MUST use at least one verdict (Automation Results) and state (Automation Requests and Results) defined in the OSLC automation vocabulary in addition to any states or verdicts not in the Automation vocabulary.
The additional property values for oslc_auto:state
are:
http://open-services.net/ns/auto#new
- used to indicate an automation request or result has just been created in the service provider and has not yet been acted upon.
http://open-services.net/ns/auto#queued
- primarily used to indicate an automation request or result is queued for additional actions by the service provider
http://open-services.net/ns/auto#inProgress
- used to indicate an automation request or result is active in the service provider.
http://open-services.net/ns/auto#canceling
- used to indicate the service provider is in the process of canceling an automation request or result.
http://open-services.net/ns/auto#canceled
- used to indicate that an automation request or result has been canceled.
http://open-services.net/ns/auto#complete
- used to indicate that an automation request or result is complete.
The additional property values for oslc_auto:verdict
are:
http://open-services.net/ns/auto#unavailable
- used to indicate an automation result is in a state where a final verdict such as oslc_auto:passed
or oslc_auto:failed
is not yet available. Usually used when the result is in a state other than oslc_auto:complete
.
http://open-services.net/ns/auto#passed
- used to indicate an automation result represents a successful execution.
http://open-services.net/ns/auto#warning
- used to indicate an automation result represents an execution which encountered conditions which prevented successful execution but did not result in a failed execution.
http://open-services.net/ns/auto#failed
- used to indicate an automation result represents a failed execution.
http://open-services.net/ns/auto#error
- used to indicate an automation result has completed but did not run successfully due to some error. This could be a timeout, automation coding error, network problem or other error which prevented the automation from running successfully to a passed, warning or failed verdict as described above.
This is new for 2.1: START
OSLC Actions and Automation
This specification defines extensions to the OSLC Actions 2.0 specification. Actions provide “a means of advertising actions (or operations) that can be performed on (or in the context of) a specific resource”. This relates to Automation in two ways: firstly, Automation Requests can be used as an interaction pattern by which actions can be executed, and secondly, Actions can provide a way to aid management and the lifecycle of automation resources.
The Actions specification reuses Automation resources to define an Automation Request interaction pattern, which can be used to execute actions. Actions also defines a specification profile that implementations can use, which provides interoperability based on providers and consumers both using a common interaction pattern. This specification extends the Actions specification by defining interaction patterns which are useful in the management of automation resources.
Discovering actions and choosing bindings
Discovering executable actions and choosing bindings
For information on how to discover actions on resources and how to choose which binding to use for execution, see the OSLC Actions 2.0 specification.
Discovering actions that will be executable after an Automation Request completes
One Automation use of Core’s actions is to advertise actions that become available after an Automation Request completes: for example, tearing down a deployed system, promoting or deleting a build. If the Automation Request resulted in a new resource being created (e.g. a resource representing the deployed system, or a resource representing the build) then it is expected that newly created resource would be linked to as an oslc_auto:contribution
on the Automation Result, and any action in the context of that new resource would be linked to as an oslc:action
on that resource. However, consumers may not know which contributions to check for action, so any actions that would make sense to follow up the execution of an Automation Request - whether immediately or at a later time - SHOULD be advertised on the Automation Result in addition to (or instead of) on a contribution.
Future actions
It is sometimes useful to know what actions will be available before an Automation Request is completed (for example, for scheduling automated processes that will execute in their entirety without user intervention). Users might prefer such Automation Plans over otherwise equivalent ones that lack the ability to automate cleanup after themselves, so in fact it can be useful to know about future actions when selecting a Plan, before any Automation Request has even been created.
To enable this, providers MAY include future actions on an Automation Plan using the oslc_auto:futureAction
predicate. These SHOULD point to resources of type oslc:Action
which describe an action that may be executed after an execution of the Automation Plan has completed. As such, these oslc:Action
resources SHOULD NOT contain any bindings that can be executed immediately.
Non-normative note: Bindings using the “deferred execution dialog interaction pattern” may be present, but this specification does not define how to use them for future actions. It would not make sense to specify a deferred execution dialog execution binding for a future action, because its mandatory immediate-execution binding cannot become available until after an Automation Request has been created.
These future action resources describe what kind of actions are available on the Automation Result, so consumers can present these to users in preparation for when the execution has completed, and so the oslc:Action
resources SHOULD include all the properties needed to render a display of the action. These oslc:Action
resources SHOULD NOT be anonymous (RDF blank) nodes, so they can be linked to by the executable actions on the results using the predicate below.
The execution of these future actions requires an immediately executable action on an Automation Result. When an Automation Plan containing future actions is executed, each action applicable to the generated result SHOULD have an equivalent immediately executable action, linked to using the oslc:action
predicate, from the Automation Result. Each of these actions SHOULD use the oslc_auto:executes
predicate to link to the future action on the Plan that it relates to. This allows consumers to map a user selection of a future action on the plan to an executable action on the result. Each future action SHOULD have at most one executable action linking to it from each Result. (Note: If a Plan’s future action PFA
specifies a binding using the deferred execution dialog interaction pattern, then the corresponding Result’s action bindings linking back to PFA
might be intended as immediate-execution bindings for the deferred execution dialog (see below), but this specification does not require that usage).
See the Temporary deployment scenarios for a worked example of future actions.
Deciding how to use Actions and Automation together
This section is non-normative.
When implementing a provider of Automation Plans, you can decide whether to expose those plans through Actions or not. This section addresses that decision.
There are two main issues that come into play: discovery and execution. In the Automation 2.0 specification, which predated the OSLC Actions specification, Automation Plans were discovered through query capabilities or selection dialogs on a service provider. This was the only way to discover them. Actions provide an additional option for discovery, in the context of any given resource. That is, if a given Automation Plan “acts on” another resource, it makes sense for that resource to point to that Automation Plan, including information on what executing that plan will achieve. (Plans discovered via Actions can still be made discoverable through the normal means as well, for consumers who don’t want to browse other resources, but instead just want to directly list or select an Automation Plan).
Automation Plans have a well-defined means of requesting execution. Automation Plans are one option for how providers can allow their actions to be executed. However, unlike plain Automation Plans discovered from a query capability or selection dialog, actions allow providers to specify other means of execution in addition to or instead of Automation Plans (while still supporting predictable iteroperability through being implemented against “specification profiles”). See the information on “interaction patterns” and “specification profiles” in the OSLC Actions 2.0 specification for more information.
|
Discovery |
Execution |
Automation Plans only |
Query capabilities/Selection dialogs |
Creation of Automation Request |
Actions |
On other resources (which will be the context of the execution) |
Creation of Automation Request |
|
(Actions’ Automation Plans can also be made available through query capabilities or selection dialogs as with other plans) |
(Actions can also provide other non-Automation Plan bindings that the consumer can choose as an alternative) |
OSLC Actions Extensions
Teardown action type
This specification defines the RDF class oslc_auto:TeardownAction
, as an rdfs:subClassOf
oslc:Action
, with the meaning that any action of this type MUST have the semantics of tearing down some deployed resource. It is likely that such a deployed resource was deployed using an OSLC Automation deployment plan, but this MAY not be the case. That is, a tear-down action typically has the opposite semantics from a oslc_auto:Deploy
sub-domain Automation Plan or Request, even if the service provider offers no equivalents in its Automation Plan collection.
Automation Request interaction pattern
This interaction pattern is defined by the OSLC Actions 2.0 specification (for reuse by other domain specifications).
Creation Factory interaction pattern
This section defines OSLC Core’s Creation Factories as an Actions 2.0 interaction pattern.
Pattern recognition rule
For any action binding that uses this interaction pattern:
- at least one
rdf:type
property MUST have the value oslc:CreationFactory
.
A binding is deemed to use this pattern if it meets these restrictions.
Additional provider constraints
The binding MUST adhere to the requirements on Creation Factories as defined by the OSLC Core 2.0 specification.
Execution
To execute an action using this interaction pattern, a consumer MUST follow the instructions for Creating an OSLC Defined Resource in the OSLC Core 2.0 specification.
This interaction pattern does not define how the consumer forms the representation that is sent to the creation factory in the create request.
If a consumer does not know how to construct or locate such a representation, then it MUST NOT execute a binding using this interaction pattern.
The deferred execution dialog interaction pattern defines one way to construct such a representation.
Deferred execution dialog interaction pattern
This section defines the Deferred-Execution Creation Dialog interaction pattern as an Actions 2.0 interaction pattern designed to address scheduling scenarios. This interaction pattern consists of the following stages:
- Configuration: The consumer displays a deferred-execution creation dialog to a user for them to configure an action.
An arbitrary time delay occurs. This accommodates use cases like calendar-schedule execution and manual approval cycles.
- Execution: One or more executions of the configured action. Each execution uses a new resource with a separate lifecycle from the previously configured action, and might either require a user (to supply final configuration values) or might be fully automated.
In this interaction pattern, the consumer is in charge of when the action is executed. (If the provider needs to be in charge of when the action becomes executable, the standard “delegated UI dialog for immediate execution” interaction pattern can be used, with provider exercising whatever degree of control it needs to; for example, creating it immediately an internally holding it, or deferring its creation internally.)
Pattern recognition rule
For any action binding that uses this interaction pattern:
- at least one
rdf:type
property MUST have the value oslc:Dialog
.
- at least one
rdf:type
property MUST have the value oslc_auto:DeferredExecution
.
A binding is deemed to use this pattern if it meets these restrictions.
Additional provider constraints
In addition, Action bindings using this interaction pattern:
- MUST adhere to the requirements on Deferred-Execution Creation Dialog as defined by this specification.
- MUST have at least one
oslc:binding
property on the deferred-execution creation dialog resource, as required by that section. Each of these properties binds the deferred-execution creation dialog to one or more immediate-execution resources, which are used in the Execution stage to immediately execute a copy of the configured previously action created by the deferred-execution dialog. Hence, they are called immediate-execution bindings.
If an immediate-execution binding uses more than one interaction pattern, then at least one of them MUST be in the list of permitted immediate-execution bindings below.
Execution
To execute an action binding using this interaction pattern, a consumer does the following:
- Configuation stage
- The consumer MUST follow the requirements in the OSLC Core Delegated UI specification to display the deferred-execution creation dialog (recall that deferred-execution creation dialogs are also standard creation dialogs). The dialog will either return a URI or an error code.
- If the dialog returns a URI, then the consumer SHOULD perform an HTTP GET request on that URI immediately and store the result representation to be used at the later time to execute the action.
- Execution stage
- If and when the consumer comes to execute the action at a later time, then the consumer MUST follow the instructions of the interaction pattern of one of the immediate-execution bindings for the deferred-execution creation dialog (see Additional provider constraints above), but with the changes as described under the immediate-execution bindings section below. If any of the execution bindings use more than one interaction pattern and any of these interaction patterns are not allowed for deferred execution dialog execution bindings, then the consumer MUST NOT use that interaction pattern – but they MAY use that binding with another interaction pattern that it supports where that other interaction pattern supports use for deferred execution dialog execution bindings.
Arwe: it’s likely that we can simplify the preceding paragraph by saying that the pattern must be ‘permitted’ (listed below)
in an immediate-execution binding in order for a compliant client to use it.
Immediate-execution bindings
Arwe: it’s a little disconcerting not to have extensibility by default here, but I left it that way for now.
I don’t see any way to prevent someone from defining a new interaction pattern, forgetting to mention how it
relates (is it permitted or not), clients coding to use it, a later spec adding MUST NOT, and then clients are
non-compliant.
The “changes” (profile?) below - it seems like we’re trying to say (in all cases?) that the consumer uses some pattern, and substitutes the configured action resource for any body that the pattern’s instructions would otherwise have led to. Could we just Must that, and make the mappings below non-normative?
Immediate-execution bindings MAY use any of the following interaction patterns for the execution of this interaction pattern, by following the associated instruction:
Consumers MUST NOT use these interaction patterns on immediate-execution bindings, even if the binding meets the pattern’s recognition rule:
Other specifications that define new interaction patterns MAY state whether or not those interaction patterns can be used as immediate-execution bindings, and if they are allowed, then how to use the template to execute them.
This is new for 2.1: END
Automation Service Provider HTTP method support
For V2 of the OSLC Automation specification, support for all HTTP methods in the compliance table is not required for all Automation resources. The following table summarizes the requirements for each resource type, HTTP method and for each media type.
Resource |
RDF/XML |
XML |
JSON |
OSLC |
HTML |
Unspecified |
|
|
|
|
Compact |
|
|
|
|
|
|
|
|
|
Automation Plan |
|
|
|
|
|
|
GET |
MUST |
MAY |
SHOULD |
SHOULD |
SHOULD |
N/A |
PUT |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
POST |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
DELETE |
N/A |
N/A |
N/A |
N/A |
N/A |
MAY |
|
|
|
|
|
|
|
Automation Request |
|
|
|
|
|
|
GET |
MUST |
MAY |
SHOULD |
SHOULD |
SHOULD |
N/A |
PUT |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
POST |
MUST |
MAY |
SHOULD |
N/A |
N/A |
N/A |
DELETE |
N/A |
N/A |
N/A |
N/A |
N/A |
MAY |
|
|
|
|
|
|
|
Automation Result |
|
|
|
|
|
|
GET |
MUST |
MAY |
MAY |
SHOULD |
SHOULD |
N/A |
PUT |
SHOULD |
MAY |
SHOULD |
N/A |
N/A |
N/A |
POST |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
DELETE |
N/A |
N/A |
N/A |
N/A |
N/A |
MAY |
|
|
|
|
|
|
|
Parameter Definition |
|
|
|
|
|
|
GET |
MAY |
MAY |
MAY |
MAY |
MAY |
N/A |
PUT |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
POST |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
DELETE |
N/A |
N/A |
N/A |
N/A |
N/A |
MAY |
|
|
|
|
|
|
|
Parameter Instance |
|
|
|
|
|
|
GET |
MAY |
MAY |
MAY |
MAY |
MAY |
N/A |
PUT |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
POST |
MAY |
MAY |
MAY |
N/A |
N/A |
N/A |
DELETE |
N/A |
N/A |
N/A |
N/A |
N/A |
MAY |
OSLC Automation service providers SHOULD support deletion of any resources for which it allows creation.
Automation Specification Guidance
This section is informative.
Canceling the execution of an automation request
The Automation Request and Automation Result resources have an oslc_auto:desiredState
attribute. A consumer can indicate a desire to cancel the execution of an automation by doing a PUT to the artifact with this attribute set to a value of http://open-services.net/ns/auto#canceled
. If the service provider supports cancelation of automation executions, the receipt of a PUT with this attribute set should trigger the necessary provider processing. If the cancelation is successful, the service provider should set the appropriate artifact oslc_auto:state
to http://open-services.net/ns/auto#canceled
.
- When only an Automation Request is active (Automation Result not created yet), the consumer should request cancelation by setting
oslc_auto:desiredState
on the Automation Request.
- When Automation Requests and Automation Results are active (in an
oslc_auto:state
other than oslc_auto:canceled
or oslc_auto:complete
), the consumer should request cancelation by setting oslc_auto:desiredState
on the Automation Request.
- When only an Automation Result is active (Automation Request completed, canceled or no longer exists), the consumer should request cancelation by setting
oslc_auto:desiredState
on the Automation Result.
- Consumers are responsible for checking the status code of the response to the request for cancelation and for checking the
oslc_auto:state
of the resource.
Responses to Cancelation Requests
If a service provider does not support cancelation of an automation, or if an error occurs preventing successful cancelation, the service provider should respond to the PUT request with an HTTP status code 500 and an OSLC Error Resource detailing the cause for the failed cancelation.
State consistency
The Automation Request and Automation Result resources have an oslc_auto:state
attribute. Automation service providers should, where possible, enforce state consistency for related Automation Requests and Results. In general, this means an Automation Result in a final state (completed, canceled) should not have a related Automation Request in a non-final state. Other contradictions such as completed Automation Result with a new Automation Request should also be avoided. Suggested consistent (C) and inconsistent (I) states are:
|
|
|
Automation Result |
|
|
|
AutoRequest |
new |
queued |
inProgress |
canceling |
canceled |
complete |
new |
C |
I |
I |
I |
I |
I |
queued |
C |
C |
I |
I |
I |
I |
inProgress |
C |
C |
C |
I |
I |
I |
canceling |
C |
C |
C |
C |
C |
C |
canceled |
I |
I |
I |
C |
C |
I |
complete |
C |
C |
C |
C |
C |
C |
Parameters Added During Execution
When Automation Requests are created for an Automation Plan, the creator of the request supplies oslc_auto:inputParameter
attributes based on the oslc_auto:parameterDefinition
attributes found in the Automation Plan instance. There are scenarios where a provider may add additional parameters during the course of execution and a consumer of Automation Results might wish to discover what these added parameters will be. One method of discovery is for the consumer to simply examine the oslc_auto:outputParameter
attributes of the Automation Result. This may not be sufficient for consumers who have a need to know the added parameters prior to executing the Automation Plan.
Service providers can advertise which parameters will be added during the course of execution using the oslc:readOnly
attribute of the oslc:Property
resource which is the basis for the oslc_auto:parameterDefinition
in the Automation Plan. By setting oslc:readOnly
to true, the provider indicates that this parameter is not available for the consumer to set, but will or may be added to the Automation Result’s oslc_auto:outputParameters
. Whether it is guaranteed to be added to the Result is based on the value of oslc:occurs
for the specific parameterDefinition.
Example 1: An Automation Plan parameterDefinition fragment showing a parameter guaranteed to be added during execution
<oslc_auto:parameterDefinition>
<oslc:name>DeployedIPAddress</oslc:name>
<oslc:readOnly>true</oslc:readOnly>
<oslc:occurs>http://open-services.net/ns/core#Exactly-one</oslc:occurs>
<oslc:propertyDefinition rdf:resource="http://open-services.net/ns/auto#ParameterDefinition" />
<oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</oslc_auto:parameterDefinition>
Example 1: An Automation Plan parameterDefinition fragment showing a parameter which may be added during execution
<oslc_auto:parameterDefinition>
<oslc:name>FailedTestName</oslc:name>
<oslc:readOnly>true</oslc:readOnly>
<oslc:occurs>http://open-services.net/ns/core#Zero-or-many</oslc:occurs>
<oslc:propertyDefinition rdf:resource="http://open-services.net/ns/auto#ParameterDefinition" />
<oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</oslc_auto:parameterDefinition>
Appendix A: Samples
(this section is informative)
See OSLC Automation Version 2.0 Samples
Appendix B: Resource Shapes
(this section is informative)
See OSLC Automation Version 2.0 Resource Shapes
Appendix C: Notices and References
License and Intellectual Property
We make this specification available under the terms and conditions set forth in the site Terms of Use, IP Policy, and the Workgroup Participation Agreement for this Workgroup.
Reporting Issues on the Specification
The working group participants who author and maintain this working draft specification, monitor a distribution list where issues or questions can be raised, see Automation Mailing List
Also the issues found with this specification and their resolution can be found at Automation Specification Version 2.0 Issues.
START NEW FOR 2.1
Appendix D: Changes
TODO: Spec changes
Vocabulary changes
New terms
- oslc_auto:ImmediateExecution
- Description: “A resource that creates an Automation Request that is eligible for execution as soon as it is created, as defined by the OSLC Automation specification. For example, when used as an oslc:usage value on an oslc:Dialog, it indicates that it is a creation dialog for Automation Requests that are eligible for execution. oslc:Dialog resources that use this as an oslc:usage value are compatible with Automation request creation dialog behaviour from OSLC Automation 2.0.”
- oslc_auto:DeferredExecution
- Description: “A resource that creates an Automation Request that is ineligible for immediate execution, as defined by the OSLC Automation specification. For example, when used on as an oslc:usage value an oslc:Dialog, it indicates that it is a creation dialog for Automation Requests that are not eligible for execution.”
- See also: http://open-services.net/wiki/core/Actions-2.0
- TODO: Actions terms
Changed terms
- oslc_auto:desiredState
- Description changed to: “The intended (domain- or provider-dependant) value of a resource’s (domain-dependant) ‘state’ property after some (future, present or past) process, transition or change. It is expected that this will be a resource reference to a definition of a valid state on the service provider. For example, in the OSLC Automation domain this is used to indicate the desired state of the Automation Request based on values defined in the OSLC Automation specification and, optionally, by the service provider.”
END NEW FOR 2.1
Intellectual Property Covenant
The members of the Working Group (or as appropriate, their employers) have documented a Patent Non-Assertion Covenant for implementations of the Automation 2.0 Specification, as described in the open-services.net Terms of Use. Details of the Covenant may be found here.
References