[Oslc-Automation] Advertising actions on the Result from the Plan

Martin P Pain martinpain at uk.ibm.com
Thu Oct 17 06:47:15 EDT 2013


Comments inline in red
Your comments prefixed with ">" (for those viewing in text-only mode)




From:   John Arwe <johnarwe at us.ibm.com>
To:     oslc-automation at open-services.net, 
Date:   16/10/2013 22:54
Subject:        [Oslc-Automation] Advertising actions on the Result from 
the Plan
Sent by:        "Oslc-Automation" 
<oslc-automation-bounces at open-services.net>



> Looking at 
http://open-services.net/wiki/automation/Exposing-arbitrary-actions-on-RDF-resources/#Advertising-actions-on-the-Result-from-the-Plan 
, some comments. 

> Without the parameterised plan: 

> - there's not enough here for a client to know it is capable of knowing 
> how to invoke the future Action. Automation would have to add that 
> requirement; i.e. that the action on the result MUST at least support 
> the Automation Plan implementation type, using the current terms. If we 
> do so, not much practical difference between these two options that I 
> can see. 

The automation wiki page says "If a provider is providing Actions for 
consumption by Automation consumers.... It MUST include one AutomationPlan 
implementation of each action." - so we already have that requirement.
Having said that, replying on the spec for this information is subject to 
the same problems as if the actions spec said "it's always POST" rather 
than encoding that in the data - namely, lack of extensibility.


> - the Result might offer multiple Actions, with duplicate rdf:type sets, 

> some supporting the Automation Plan implementation type and others not 
> supporting it. I'm allowing, for example, that the Plan and Result are 
> owned by different providers, which is a case I remember at least one 
> implementation saying they had; the Result provider could offer a stop 
> action (that the Plan provider somehow knows about - how, I don't care) 
> and a second stop action implemented by a third provider. This seems 
> like a stretch, but if the Result provider allows updates (put/patch) 
> that add actions, there you are. We don't have to solve that, but if 
> there's an option that clearly does/not it would be useful to keep in 
> mind. 

If those duplicate actions are semantically equivalent, they should be 
multiple requests on a single action. Then as long as one of those 
Requests uses the AutoPlan impl type, we're fine - the 
minimal-implementation consumers just identify and use the AutoPlan one. 
The PUT/PATCH to add actions is interesting - using the spec as-is they 
would have to identify if any of the existing actions are semantically 
equivalent, which would be difficult. But if they're adding an action onto 
an AutoResult, then they ought to be subject to the Automation profile of 
Actions anyway, which would require an AutoPlan implementation of the 
Action.
> With the parameterised plan: 

> - the "orchestration composition time" problem I think is that the 
> requestURI value is unknown on the Plan. Reusing core:Action with 
> requestURI 0:1 (or 0:0) seems right to solve that. 

I don't understand what you mean. It sounds like you're talking about 
"without the parameterised plan". Are you saying we don't need to allow 
for a parameterised plan? I'm happy to leave it out of the spec, as long 
as we think we have a reasonable chance of adding it in later if someone 
comes up with the need later (which feels very unlikely at this point).
If you're saying that we don't know the requestURI for the parameterised 
plan, my intention of allowing parameterised actionOnResult plans is to 
allow clients with provider-specific knowledge to insert the context for 
the action as an AutoRequest parameter value. In other words, instead of 
giving the context-specific requestURI and AutoPlan URI that will be in 
the Result's Action, we provide a contextless requestURI and AutoPlan URI, 
with the context provided by the parameter. The provider-specific 
knowledge is required to know how to find the value of that "context" 
parameter, and which parameter it should be the value of.
As I said, I'm happy to leave this out of the spec, especially due to this 
provider-specific knowledge being required.

There is a separate case for when the action has required parameters other 
than the context... that's a whole other problem. That's not the problem I 
was trying to address here.

> - dcterms:identifier is only going to be useful if both Plan-Action and 
> Result-Action are somehow known to come from the same Provider, which 
> Automation does not guarantee (tolerable) but also does not give the 
> client any iron-clad always-available way to know (less attractive - I 
> don't think we Require oslc:serviceProvider links).

Does the same dcterms:identifier value explicitly mean different things 
from different providers? As the provider of the Result really should know 
about the Plan, it can perhaps pull those identifiers from the Plan 
provider. This would likely need provider-specific logic to know which 
identifier to use, but if the Plan provider is advertising actionOnResult 
in this case then it would have to have Result-provider specific knowledge 
to know that the actions will be available anyway. So as long as it 
doesn't contradict dcterms' definition of dcterms:identifier to say that 
they can be used to match actions even across providers (ONLY between a 
Result and its Plan when they are on different providers), I don't believe 
there's a problem here. They would check the identifier between the Plan 
and the Result, and not have to know if they are on the same provider or 
not.

> It really wants to 
> be a URI, but it seems likely that (ala requestURI) the correct URI (to 
> the Result-Action of interest, which is inherently scoped to 1 request) 
> cannot be reliably known from the Plan (which is scoped to 0:n Results). 

> In cases where the resource context is supplied outside the request URI 
> (e.g. in a fixed body), I can see a URI working. 

My feeling on this is that we have a URI - it's the value(s) of rdf:type. 
So one option would be to say that separate actions on the AutoResult MUST 
have distinct value sets for rdf:type (possibly only applying this 
requirement in the case of the action being advertised through 
actionOnResult). If the provider has two actions that map to 
core:StopAction, then they must define their own type for each of them (in 
addition to Action and StopAction) to differentiate them. In other words, 
they give this action a URL that applies to both its parameterised and 
non-parameterised forms, and include that in the rdf:type values.

...


> "without" + adding the MUST support AP implementation type seems like 
> the minimum that Could work, so I'm tempted to start there and say any 
> improvements in robustness/reliability are implementation extensions. 
> Which is vaguely unsatisfying. 

Do either of my comments about dcterms:identifier or rdf:type above help 
give robustness/reliability to this case?

> I wonder out loud: if the Result-Actions (as in the "with" option, fully
> fleshed out with the final requestURI) were linked via actionOnResult 
from
> the Request, would that satisfy the scenario? ....

No, as even the Request is not created when the orchestration Plan is 
authored. And as the orchestration Plan may be executed multiple times 
(possible even concurrently in different environments managed by the same 
provider) there may be multiple Requests existing over time, so even 
fixing the "don't execute on Request creation" 'problem' wouldn't make 
this work.

...

> Net: I do see how some particular implementations could accomplish this. 

> I do not see how it can be done using Automation alone by *all* the 
> implementations I remember us discussing in the past as being either 
> permissible or real. Simply too many degrees of freedom in the general 
> case. 

Does anything I've said change that?

Best Regards, John

Voice US 845-435-9470  BluePages 
Tivoli OSLC Lead - Show me the Scenario 
_______________________________________________
Oslc-Automation mailing list
Oslc-Automation at open-services.net
http://open-services.net/mailman/listinfo/oslc-automation_open-services.net



Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20131017/e24250d7/attachment-0003.html>


More information about the Oslc-Automation mailing list