Abstract Request Manager Service (ARMS)
// This passes a request to service. The request contains
// a AbstractRequest object and extra information. This call
// returns an int ID to later refer to request.
int create (AbstractRequest request) throws RequestException
// Check to see if abstract request can run, but doesn’t
// communicate with any other service.
// Maybe should return more complex type
// FeaturesNotSupportedList checkSupportedFeatures
boolean isRequestSupported(int requestID) throws RequestException
// Actually runs or executes abstract request is true and if false
// it asks service to analyze the time that abstract request
// will take and maybe other information and returns
// a complex info object. Actually executes resource
// broker algorthm.
AbstractRequestInfo submit(int requestID, boolean simulate) throws RequestException
// Gets overall global run information. An AbstractRequestInfo object contains list of elemental request IDs.
AbstractRequestInfo[ ] getAbstractStatus(int abstractRequestID) throws RequestException
// Gets info on particular sub request, so that overall run info doesn’t have
// to go through each sub request and get info.
AbstractRequestInfo getElementalStatus(int elementalRequestID) throws RequestException
// Removes all reference of abstract request on service
void destroy (int requestID) throws RequestException
// Need control methods???
restart / resume
EXAMPLES OF TYPICAL CALL ORDERING
1) create, submit, destroy
2) create, isRequestSupported, destroy
3) create, isRequestSupported, submit, destroy
4) create, isRequestSupported, estimate, destroy
5) create, estimate, destroy
6) create, isRequestSupported, estimate, submit, destroy
All custom (non-Sun) package objects are in a package like net.ppdg.cjs