I have spent a long time thinking about this (perhaps too long.) I have
gone back and reviewed the stuff that Swenson and Shenfield have
written.
First, I believe using the term "factory" has had tragic results. I
would like to propose the following terminology:
Asynchronous Service: A resource that accepts requests for
asynchronous response. Actual results (response) of the request
are managed by an asynchronous service instance.
Asynchronous Service Instance: This is the resource implemented
by the asynchronous service that is actually performing the
requested work. These resources allow for the actual monitoring
and controlling of the work.
Observer: Any resource that receives notification events from
the an asynchronous service instance.
Request data: The XML data sent to initiate the service.
Response data: The XML data created by the successful completion
of the service.
I believe that this is the minimum requirement to make ASAP work.
1. A service MUST accept a CreateInstanceRq
2. The service MUST accept an observer to be set in the
CreateInstanceRq
3. The service MUST respond to a CreateInstanceRq with a
CreateInstanceRs that contains the URI of an asynchronous
service instance
4. The service instance MAY accept SubscribeRq and UnsubscribeRq
5. An observer MUST accept CompletedRq and StateChangedRq. The
service instance will communicate any state other than completed
in a StateChangedRq.
6. A service instance MUST accept GetPropertiesRq so that observers
can query (poll) the state of the request.
Everything else is a MAY.
See attached Word document for further details.