Hi;
I
have to admit that I had to read up on WS-Transfer. It makes more
sense
where you're coming from now. It's a very different philosophy of
how
resource state should be managed. Considering this I think we should
still
make this activity description a resource state property/element
and
leave it ambiguous as to how it is accessed. Unfortunately if we
don't
define the Activity interface we can't define the state item.
...
And
here is where I have the biggest problem with WS-Transfer. I think
an
activity's progress state should be a property that is modeled as
desired
(i.e. either WS-Transfer or WSRF) as long as there are multiple,
popular
ways to do so; but as you say, getting the entire state for one
item
is excessive. That's my personal opinion in general after reading
about
WS-Transfer. I don't think we should be sacrificing good design
just
because some implementation detail (I consider this implementation
because
it's left ambiguous in the spec) doesn't play nice. If you don't
like
it, don't use WS-Transfer in your implementation.
Now
then, there is a potentially serious problem here in that if the
public
state model is not standardized in the spec then how do you know
what
WS interface to use to manipulate it? In that case I would say we
need
an operation that specifically targets interop data (kind of like
the
FTP "FEAT" command). This is yet another reason in support of
defining
the activity interface. Each activity ought to be exposing via
such
a method what kind of public state model it uses.
I agree that we should define the activity
interface since we’re implicitly doing so at the BES level now. Leaving
the access method ambiguous unfortunately doesn’t yield an interface that
actual implementations can interoperate through. So the HPC profile work
will need to define one or more concrete interfaces one way or the other.
One approach is to reflect the schism
between WSRF and WS-Transfer and define two separate (but equal J) interfaces that each employ one or the
other approach. Unfortunately that will make interoperability in practice
much harder to achieve. To interoperate with BES services in general
would require that either services export both interfaces or clients implement
both interfaces. We’ve effectively doubled the cost of creating BES
interfaces, including all the interop testing that has to go with it. Consider
also that currently the main development tool options support either WSRF or
WS-Transfer or neither. So developers would need to implement compliant
implementations of either WSRF or WS-Transfer or both on their own. If
you’ve followed the interop workshop process that Microsoft and IBM have
been using for achieving interoperable tooling and implementations of even
basic Web Service concepts and protocols, you’ll know that that’s a
seriously expensive commitment to impose on developers. When you consider
that in a couple years’ time the world will have converged on a merged
alternative to both of these protocol suites (and associated tooling), it seems
even more questionable to pursue this avenue at this point in time.
The alternative that I would advocate is
to define a placeholder interface for version 1 that skirts the issue
altogether. That was the intent behind my straw man proposal of GetActivity
and GetActivityState methods. Using these would allow BES and the HPC
profile work to get off the ground quickly without requiring that all parties
first create compliant implementations of both WSRF and WS-Transfer. Interoperability
testing would be confined strictly to these few methods in the BES/HPC-profile
context and hence would be much
simpler. Whether these methods should be replaced by the convergent
replacement for WSRF/WS-Transfer in a later version of BES is something that
could be examined at a later time when that convergence has actually occurred
and things like tooling are broadly available for it.
To
summarize what is essentially a counter proposal, I think we need
to...
1)
Expose public state as it was intended to be exposed (i.e. in state
properties/elements
within the state document)
2)
Leave the public state model ambiguous
3)
Define the Activity interface
4)
Include an interop data fetch operation, say "GetInteropData", on
both
the BES interface and the Activity interface. The returned data
should
be well defined but extensible, and include what type of public
state
model is being used.
I’m not sure I understand what you
mean by “leave the public state model ambiguous”. Are you
referring to the fact that BES has decided to move to an extensible state model
and you’d like to use your proposed GetInteropData to return –
among other things – a description of which state model extensions the
service implements (including, of course, the base state model)? If that’s
the case then I totally agree with the need for that information.
So I suspect that we’re in agreement
that, one-way-or-the-other, an activity should expose at least the following
state elements for querying by clients:
·
Description of which state model
extensions the service implements.
·
Activity state.
·
Full (extensible) description of
the activity’s state.
See my previous comments about not wanting
to expose more than one way to retrieve the public state of an activity. Please
also note that, whereas one can argue about the pros and cons of the WSRF and
WS-Transfer approaches, the reality I have to deal with is that there are two camps and there is no good tooling that supports both, so
the choice the HPC profile WG has to make is arguably one of the following:
1. Go
with both WSRF and WS-Transfer-based versions of BES and force everyone to
implement compliant versions of both. That’s too expensive in my
opinion.
2. Wait
for the convergent follow-on specs and define BES in terms of those. That
doesn’t meet the time-line requirements that the HPC profile WG faces.
3. Define
a single interface that employs neither WSRF nor WS-Transfer in order to get a
version 1 HPC profile done now rather than in a couple of years time; then
consider for version 2 whether it makes sense to move to the convergent
WSRF/WS-Transfer follow-on specs.
To me, option 3 seems by-far the most preferable one.
Marvin.