[Oslc-Automation] OSLC Actions: URI to identify interaction patterns. Plus "templates" replacing "with RDF body" pattern
John Arwe
johnarwe at us.ibm.com
Tue Jan 14 13:24:28 EST 2014
wrt the draft
I wonder if Availability scenarios would motivate the "raw" creation
factory binding. Maybe Juergen/Tim can weigh in. I think they Can use
Automation for what they've discussed, but maybe a raw CF would be cleaner
for some pieces (e.g. if some of their interactions are just always synch,
and we think that is likely true for "all" reasonable implementations).
You have changed (in the odt strawman) Auto Request from an IP to a
request body type. But Automation requires a client to understand a
larger pattern of requests (and the Automation vocabulary) - the meaning
of 200 is *different* for a CM-style POST (action completed successfully)
than an Automation-style POST (action completed, look at oslc_auto:verdict
for success/failure). I don't think you can avoid making that a separate
IP (at least I cannot see how).
> (1) having a single URI to identify each interaction pattern
> (which means only having a single HTTP request pattern,
> identifying the different ways of building content separately)
With my client hat on, I don't see what this saves me. I don't think it
hurts me either, FWIW. Either factoring should work.
I think in terms of implementation effort. Moving from dead-simple
(relatively speaking) to maybe-harder-than-I-want-now is:
1: a single naked HTTP request - no request body, no special headers to
fuss with, blocking request.
2: #1 plus a fixed request body ... something I never crack open, I just
bitwise-copy from the binding. so the delta is I have to fish out the
content type header :-( from the binding
3: #2 plus I crack open (parse) the body, but I never modify it, just
serialize it (maybe with a different media type than the binding had) ...
may drag Accept header-style info, unless we say introspect at run time
which is fine.
4: #2 or #3 in a multi-request pattern, like Automation requests where I
have to create something, then monitor/poll until it reaches
&some-final-state
5: #2 or #4 where I modify the body, or construct it from scratch
Having one IP URI that covers several of those cases is functionally no
different than saying "look for X and then Y". I have to do that in the
end either way.
It's like saying "you have rdfs:Resource, why do you need any other
types?" Because rdfs:Resource is not always the granularity that a
client/app is interested in. It's fine for some purposes, not others.
There are a couple of degrees of freedom involved, in branches:
- body or not (branch: if body, how to construct it)
- single request or not (more generally: which request pattern do I need
to understand? single, Automation, ...)
With my RESTy-spec hat on, I react in ways like "an OSLC creation factory
isn't a HTTP request? really?" Yes, I can get past those, it's another
forest/trees problem. I won't be the only one asking though, as you go
through multiple reviews - assuming anyone reads them.
With my OSLC-spec hat on, I see places in this that would make
Core-Actions depend normatively on Automation (a domain spec), and Core
has said it wants to keep all dependencies ON core FROM domains, not the
reverse, less we end up in Dependency Hell. I'm talking about cases like
"Request body type: Resource template" line 476 ... whatever's needed
should be in Core. I'm not worried about cases where Core is just listing
and pointing at IPs/profiles known to exist elsewhere (it's not a
normative dependency), like line 552.
> (2) re-using the idea of "templates" from automation for the "with
> RDF body" case, to avoid solving the same problems (e.g.
> content-type) twice.
Conceptually, Automation's templates may be defined with some extra
restrictions, but the general idea sure is obviously valid once you adjust
the level of abstraction to the context. If the other emails have led
"you" to buy the "template is a role a resource can play" language, I'd
certainly go there over keeping template as some kind of "thing-ness". How
vs what.
> (3) Also, it brings the "creation factory" interaction pattern
> into Core, but John has now suggested we only define the
If defining it in Core makes it easier for Automation to define it's
version via layering, that could be cause to do it (I think emails earlier
today may have helped to clarify that). Aside from giving it a
Interaction Pattern name, I don't think it adds any new requirements.
Maybe it should, though. Maybe *if* you want to use a CF as an action
binding, *then* it Must advertise resource shape(s) it accepts. We are
allowed to add requirements for action bindings beyond those Core-2
defines for service providers. Such an action binding Might still be
incomplete/abstract: since it doesn't tell a client what type(s) are
created, as written it seems like it could be used either for immediate
execution or something else (like Automation requests). Given that those
are entirely different interaction patterns, I have a little bit harder
time seeing the value *if* it is considered fully specified as-is.
Best Regards, John
Voice US 845-435-9470 BluePages
Tivoli OSLC Lead - Show me the Scenario
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20140114/963fc873/attachment-0003.html>
More information about the Oslc-Automation
mailing list