[ogsa-wg] Modeling State: Technical Questions
Ian Foster
foster at mcs.anl.gov
Sun Mar 6 22:47:15 CST 2005
Dear All:
In an effort to move forward this debate about "OGSA plumbing", I thought
I'd attempt to describe the different positions that I've seen expressed.
Perhaps people can read this quickly, and provide feedback as to where I
have not captured things correctly. I'll be happy to collate responses sent
directly to me and forward them, if there is interest.
CONTEXT
The context is that OGSA-WG needs to develop some low-level specifications,
such as execution management services, that require modeling interactions
that involve server-side state. E.g., in the following pseudo-code example,
we request the creation of a "job":
send "create(jsdl-specification)" to job-factory-web-service
receive "job-handle" from job-factory-web-service
I think that everyone accept that this sort of interaction is needed. (Let
me know if not.)
Where people differ in their views is with respect to what the "job-handle"
should be and how we should represent operations on the job. I've heard
three views expressed, as follows.
OPTIONS
1) (WSRF)
The job handle is an EPR to a WS-Resource, in which case the case the WSRF
operations can be used to get status and delete:
send "GetResourceProperty(status)" to job-handle
send "Destroy" to job-handle
In addition, one will probably also want to be able to send requests to the
job-factory, which is straightforward as there is no strong encapsulation
in WSRF. E.g.:
send "destroy(all-jobs-owned-by-ian)" to job-factory-web-service
This approach exploits the standardized syntax and semantics for the
various operations (GetResourceProperty, Destroy, etc.) defined by the
WSRF/WSN specifications.
2) (WS-Transfer)
The job-handle is an EPR to a WS-Transfer resource, in which case the
appropriate WS-Transfer operations can be used to get status and delete.
send "Get" to job-handle
send "Delete" to job-handle
Assuming that there is no strong encapsulation in WS-Transfer either, one
can also contact the job-factory directly when required:
send "destroy(jobs-owned-by-ian)" to job-factory
This approach exploits the syntax and semantics for the various operations
(GetResourceProperty, Destroy, etc.) defined by the WS-Transfer specification.
#2 is very similar to #1. One can argue the pros and cons of the two
approaches. I'm concerned that you have to return the whole resource state,
not just a single component (e.g., the status field). But that's a
relatively minor issue.
3) (Job id) The job-handle is a job-factory-specific string, and we define
job-factory-specific operations for manipulating the job, e.g.:
send "check-job-status(job-handle)" to job-factory
send "terminate-job(job-handle)" to job-factory
#3 is very similar to #1 and #2: the message sent over the wire in each
case contains the same information (operation name + Web service address +
job-id-info). What is different about #3 is that you have to manage this
job-handle separately from the job-factory EPR. Also, you don't use the
standardized WSRF/WSN operations.
Have I captured all of the options that people think we should be considering?
WHAT OGSA-WG SHOULD DO
Given this characterization, I'd also be interested in people's views as to
how OGSA-WG should proceed when considering specifications that involve
this sort of interaction pattern.
The majority of active participants OGSA-WG participants seem to favor
option #1, but I've also heard people argue in favor of approaches #2 and #3.
Tony Hey proposed, I think, that we should define specifications like job
management in terms of some more abstract interface that can then be mapped
to each of the approaches above, as desired.
Frank Seibenlist observed that we can use WSRF/WSN as such an abstract
interface: given an interface defined in terms of WSRF/WSN specifications,
one can derive, via straightforward transformations, a concrete
specification in the style of approach #2 or #3.
Regards -- Ian.
More information about the ogsa-wg
mailing list