[Oslc-Automation] action metadata at resource type (shape) level

John Arwe johnarwe at us.ibm.com
Wed Jul 16 11:58:43 EDT 2014


>> Also I would like to hear any comments on the choice of predicates 
>> that we have for replacing spi:instanceActions. I am not sure if 
>> oslc-automation:futureActions is the right one for this - but will 
>> like to hear back from the group. I would rather not come up with 
>> our own - if there is something already defined for the same purpose. 

> With this proposed defintion of oslc_auto;futureAction, I believe it
> would make sense within that definition to use that predicate on the
> type or resource shape to point to actions that may be available on 
> resources of that type/shape. (However, this is just my individual 
> opinion - I'd appreciate other working group members weighing in too). 

Perfectly reasonable.  Suggested it myself privately a few weeks back, 
although given the listserv SNAFU I'm not sure if that was before or after 
Anamitra's email was sent.
Even if we made no other changes in 2.1 based on his usage, this seems 
reasonable to me to add a scenario for, and legitimize the usage in the 
spec text as another known usage.  I.e. as an example, no normative 
changes required.  I don't see any value yet in adding a new 
shape-specific predicate for this purpose.

> 3) ... just to allow the mobile 
> app to list all the actions available on a given resource instance 
> and allow the user to select any of them. RDF is capable of 

My sense is that this was done for efficiency (send less content to the 
client over the "narrow" connection).  If so, it's debatable where to 
place optimizations.  Historically, the OSLC domain spec approach has been 
described to me as "what's the simplest possible way to support the 
scenarios in scope" ... simplest, not most efficient.  "Efficient" will 
vary based on the variables being optimized, and those are a function of 
"things as they are now" in most cases, rather than "laws of physics".  I 
have seen many attempts at local optimization (here, in the sense of 
"what's under my control") that turn out not to matter in the larger 
system.  For example, if there's a gzip content coding being used on these 
requests, all that "common stuff" compresses well so the "extra" on the 
wire is much less than you'd think.

What this might be getting at is a need to create bindings at run time by 
merging "what's unique to the resource" (in his case, the request URI) and 
"what's the same across many resources" (method, version, ...).  Something 
like the Plan/Request model with default parameter values on the Plan, in 
its own way.  If that's the case, one way to approach it might be:

- There is one Plan per action per shape, linked to support the 
design-time introspection.
- The HTTP version and method properties are unneeded as parameters, since 
the Automation Request interaction pattern is being used ... which, in the 
end, means that the method WILL be POST and the version is left 
unspecified by Automation (any sane implementation today would use 1.1).
- The Plan has whatever parameters it has, including zero.  Any parameters 
either have defaults, or not.... vanilla Automation 2.0.
- The server implementation always responds with the synchronous style 
from Automation, which perfectly matches a vanilla HTTP request.

The example Anamitra provided appears to have a body on his post requests 
(from the shape), which sounds like a fixed body interaction pattern 
rather than Automation Request; the mapping from fixed to AutoReq is 
pretty trivial though.

Aside from Plan/Request, another place in existing OSLC where there's a 
type/instance dichotomy is in resource shapes.  Actions 2.0 defines an 
interaction pattern that uses a shape to describe the request body, but 
here the spi:instanceAction is being used to describe the content (not 
shape) of an action binding (ow, my head).  Future actions with >0 
bindings is outside the territory we've been thinking about up to now too.

Yet another place is the "template" notion in Automation 2.1.  It's not 
too much of a stretch, once you understand Automation Request templates, 
to see what Anamitra's got in his shape as a binding template.  Just like 
creating an Auto Req from a template involves potentially modifying 
(merging) inputs (the non-scheduled case when a human is involved), 
creating a client-useful binding in Anamitra's example involves merging 
instance and shape (class) data.

> that allows you to do that - there is no explicit support in there 
> for URI templates (as used in your example). 

That line is commented out, so I'm not sure to what degree it's relevant. 
Anamitra?
I will note that URI templates are basically about name/value parameters 
in this example, which directly maps to Automation Parameters 
conceptually.

>> As you can notice - http:requestURI - which is marked in the spec as 
>> Exactly-One - would be something that we would have no need of at 
>> this "blue-print" stage. 
> 6) Also, if you were to use oslc_auto:futureAction (or follow the 
> same pattern), then your action on the reosurce shape would require a 
URI: 

Seems like feedback at 2 levels.

1: Should the spec say 1:1 or 0:1?  We did debate that before, and (memory 
vague) it came out 1:1 due to an absence of scenarios needing 0:1.  I.e. 
if we were to add a new scenario (now or in the future) that required the 
request URI to be optional, we'd change the spec to say 0:1 instead.

2: (meta) I won't be 'compliant' with Auto-2.1 and/or Actions-2.0 if I 
omit the request URI.  As the previous comment shows, the 1:1 is more 
about client expectations within the scope of *current* scenarios than 
compliance (which, as a term of art, is intentionally undefined in OSLC). 
It would be true that a client only coded to Actions 2.0's HTTP 
interaction patterns would be unable to execute an httpRequest Action 
lacking a request URI.  If the Plan-based alternative outlined above pans 
out, a client only coded to Actions 2.0's AutoReq interaction pattern 
*would* be able to execute his actions, though.

> 5) And finally, a small point: the Actions specification suggests 
> that you identify what the action does by using an rdf:type value In
> your examples you use oslc:usage. So to follow that suggestion your 

+1



Best Regards, John

Voice US 845-435-9470  BluePages
Cloud and Smarter Infrastructure OSLC Lead

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20140716/164adf88/attachment-0003.html>


More information about the Oslc-Automation mailing list