Hi;
I still don't understand what you're getting at here.
I don't see this as the two interfaces are mutually exclusive. I just don't see
any point of having identical operations for both the BES/activity factory
service and the activity service. If the factory and activity service were the
same, then fine. If they are two distinct services then tailor the interfaces.
You mentioned "keeping them in sync". I still don't understand your
concern here. What is it that frightens you about the BES group being able to
keep the two (which are intimately related) in sync?
I’m just trying to advocate good software engineering principles here:
I would prefer to avoid having to keep two interfaces in sync with each other
across two different specifications. It’s not a big deal and I’m
religious about it. I believe that in a later email you suggest that both
interfaces be kept in the same spec. That seems like a good idea unless another
compelling reason should pop up that argues for keeping them separate.
I would rather see a generic property getter method
instead that takes an array of EPRs. This would model better w.r.t. WSRF's
getResourceProperty, etc... methods and avoid the precedent of providing
individual operations for each property.
The challenge here is the schism between the WSRF and the WS-Transfer
camps. Although that schism is now slated to be healed by the new
reconciliation effort that IBM, Microsoft, et al. announced recently, that
reconciliation won’t be finalized for another year or two. Recall
also that, although I’m proposing that the base case BES interface just
deal with individual activities, one of the extensions that I expect will get
added very quickly is an array interface for dealing with multiple activities
in a single interaction. For the latter interface, it does not make sense
to query the factory service’s resource properties (in the WSRF-oriented
world) or its EPR (in the WS-Transfer-oriented world) since the query is about
the state of a bunch of activities, not the factory. Since I’d like
to have the interface for dealing with arrays of activities and for dealing
with individual activities look as similar as possible – and given that
the reconciliation of WSRF and WS-Transfer has not yet been completed – I’ve
introduced named operations for the type of state I wish to see returned.
Now, you could argue that what I’ve done is expose a single “property”
– the activityState property – and a means of retrieving all “properties”
in something akin to WS-Transfer style. Based on that, you could argue
that we should expose query operations for “all” the individual “properties”
of an activity. Since that set is not completely defined and since we
will also (at least eventually) want to support extended sets of “properties”
and since there is not a reconciliation-approved way of exporting which “properties”
an activity exports, I advocate that the base case of BES should aim to export
a “minimal” query interface. To me, that’s a way to get
everything (including any extensions) and a way of getting the one common state
element that we know everyone always wants to query – namely the activityState
element. Please note that I have no problem with adding in additional query
operations in extensions, but I would argue that the BES base case should be
kept as simple as possible. (Along those lines, one might argue that we
should jettison the GetActivity operation that returns just the activity’s
state diagram state. However, retrieving all
the state that describes an activity just to get the activityState seems
excessive to me, especially when thinking about how that would behave when
dealing with large arrays of activities.)
It worries me that this is a non-WSRF-only operation.
We should try very hard to avoid branching the spec for two different resource
models. If we can't avoid it then there needs to be two separate specs IMHO.
What do the WSRF services do with this?
We may have to have two separate specs, if people feel they need a
WSRF-based version of the spec. Personally, I’d prefer a single
spec that uses neither WSRF nor WS-Transfer and thereby circumvented the
problem – but that’s my personal opinion. The interface I’ve
proposed essentially tries to circumvent the issue by employing named query and
modification operations.
I don't really understand what you're trying to
accomplish here. You say it's a non-WSRF operation and yet this description
says it's an aggregation of the WSRF RPs. Then you add that it might return
other stuff as well. This seems like a "give me the serialized resource
object" operation. My feeling is that if the necessary information were
exposed correctly you wouldn't need this operation.
This again comes down to the WSRF/WS-Transfer schism. I come from
the WS-Transfer side of the world and so think of returning state as a single
infoset. I’m trying to couch my descriptions in a manner that
allows bridging to how a WSRF-oriented person would think about things.
Marvin.