The CAOS workflow system will be comprised of 3 core components:
- Workflow Manager (WM)
- Workflow Helper (WH)
- Graphical Workflow Authoring Tool
The workflow management service will have several core features. It MUST take in a workflow specification described in the BPEL language. It will first validate that the workflow is complete and can be processed correctly and securely if desired. It will then orchestrate the workflow across all the required grid containers which contain the participating grid services. It MUST be able to utilize the WSRF framework in that it should enable the user to create a "workflow" resource which the user will be able to contact through the workflow execution process and after to determine status, provide input, etc. In order to consistently provide the functionality required by this service Introduce MUST be used to generate the service(s).
The Workflow Management Service MUST use the WSRF factory pattern in order to utilize stateful resources for managing each instance of a workflow that is being managed asynchronously. This will enable the user to create a workflow and be returned a handle to it that can be used for managing the workflow instance. Then the workflow creator will have the ability to start stop etc. on their particular workflow instance. The Workflow Management Service Context MUST utilize the Introduce resource option providing WS-Notification support to enable the creator to subscribe for notifications on the status of the workflow. This implies that a required Status type resource property will need to be designed and added to the Workflow Management Service Context Resource as a resource property in Introduce. The Workflow Management Service Context MUST utilize the persistent resource option of Introduce so that it can survive container shutdown and restart.
The workflow helper will be comprised of three services, the WorkflowHelper, WorkflowInstanceHelper, and WorkflowInvocationHelper. The Workflow helper will be the factory service for creating WorkflowInstanceHelpers. A WorkflowInstanceHelper will be created for each instance of a workflow that this particular WorkflowHelper service will be participating in. A WorkflowManager service may use many WorkflowHelper services in order to appropriately balance the workflow. Once the WorkflowInstanceHelper is created it can then be used to factory a WorkflowInvocationHelper for each service-operation which will be participating in the workflow portions which the particular WorkflowHelper service is helping with. The WorkflowInstanceHelper MUST be responsible creating the WorkflowInvocationHelpers that are required to perform the invocations on the portion of the workflow that the particular WorkflowHelper is participating in. It MUST also be responsible for obtaining, managing, and enabling access to the required proxy certificates needed by the WorkflowInvocationHelper instances which it has created. It will obtain, from a Credential Delegation Service, the proxies required for the workflow with respect to what pieces of the workflow are being invoked from this WorkflowInstanceHelper and store them for use by the WorkflowInvocationHelpers. The WorkflowInvocationHelper MUST be responsible for the actual execution of an operation on a service participating in the workflow. This service need not actually reside in the container whom also contains the service which it will be invoking, however, performance benefits will lost if this is not the case. A WorkflowInvocationHelper MUST be able to invoke the service through the grid service axis call stack. This will ensure that the security constraints on the service are preserved and that all correct axis handlers are invoked prior to the invocation of the grid service. This service MUST also be able to work with WSRF resources, i.e., be able to invoke a service with an EPR and not just a URL. It also must support all the GSI invocation mechanisms which the current Globus project supports, i.e., secure communication, secure message, etc. In order to consistently provide the functionality required by this service Introduce MUST be used to generate the service(s).