You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2011/08/03 16:47:40 UTC
svn commit: r1153517 - in /incubator/airavata/trunk/modules/commons: ./
schemas/ schemas/workflow_tracking_schema.xsd
Author: smarru
Date: Wed Aug 3 14:47:40 2011
New Revision: 1153517
URL: http://svn.apache.org/viewvc?rev=1153517&view=rev
Log:
workflow tracking schema
Added:
incubator/airavata/trunk/modules/commons/
incubator/airavata/trunk/modules/commons/schemas/
incubator/airavata/trunk/modules/commons/schemas/workflow_tracking_schema.xsd
Added: incubator/airavata/trunk/modules/commons/schemas/workflow_tracking_schema.xsd
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/schemas/workflow_tracking_schema.xsd?rev=1153517&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/schemas/workflow_tracking_schema.xsd (added)
+++ incubator/airavata/trunk/modules/commons/schemas/workflow_tracking_schema.xsd Wed Aug 3 14:47:40 2011
@@ -0,0 +1,574 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<schema
+ targetNamespace="http://airavata.apache.org/schemas/workflow_tracking"
+ xmlns:wft="http://airavata.apache.org/schemas/workflow_tracking"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ attributeFormDefault="qualified"
+ elementFormDefault="qualified">
+
+ <annotation>
+ <documentation>
+ *) Workflows and services can be abstract (template) or concrete (instance).
+ Unless otherwise noted, we always refer to the concrete instance of the workflow/service below
+ *) All workflows are also services.
+ *) Services may be part of zero or more workflows
+ *) When Services execute in the context of a workflow,
+ an invocation of the service is associated with the workflowID of the workflow whose context
+ in which it is being invoked (also called parent workflow),
+ the timestep of this invocation in the parent workflow,
+ and the node ID that uniquely identifies this service within the parent workflow instance.
+ *) Workflows can also be invoked in the context of another parent workflow.
+ *) Workflow ID always refers to the "parent workflow ID". When refering to the invocation of a workflow,
+ its instance ID is called the Service ID.
+ *) Workflows that are not invoked from another workflow do not have a context of execution
+ (parent workflow is not present => Workflow ID is NULL)
+ *) Schema design notes
+ - This schema uses the "Venetian Blind" schema design pattern
+ - It uses Upper Camel Case for schema types and lower camel case for
+ element and attribute names
+ </documentation>
+ </annotation>
+
+ <simpleType name="ServiceIDType">
+ <annotation>
+ <documentation>
+ ID to uniquely identify the service instance.
+ This is usually formed from the targetnamespace and porttype name of the service's WSDL.
+ This ID may refer to the instance ID for a service or for a workflow.
+ </documentation>
+ </annotation>
+ <restriction base="anyURI"/>
+ </simpleType>
+
+ <simpleType name="WorkflowNodeIDType">
+ <annotation>
+ <documentation>
+ String that identifies uniquely a node in workflow graph.
+ The node ID is unique in the scope of a workflow ID.
+ </documentation>
+ </annotation>
+ <restriction base="string"/>
+ </simpleType>
+
+ <simpleType name="WorkflowTimestepType">
+ <annotation>
+ <documentation>
+ The timestep within workflow execution at which this invocation is made.
+ This is a logical time that monotonically increments for each invocation in a workflow.
+ </documentation>
+ </annotation>
+ <restriction base="int"/>
+ </simpleType>
+
+ <simpleType name="DataProductIDType">
+ <annotation>
+ <documentation>
+ Unique logical ID for a data product in the form of a UUID.
+ Physical URL for the data products can be resolved using this ID.
+ </documentation>
+ </annotation>
+ <restriction base="anyURI"/>
+ </simpleType>
+
+ <!-- ========================================================================================== -->
+
+ <complexType name="BaseIDType">
+ <attribute name="workflowID" type="wft:ServiceIDType" use="optional">
+ <annotation>
+ <documentation>
+ The workflow context within which this service is executing.
+ If this service is itself a workflow and not executing as part of another workflow
+ (i.e. this is the root of the invocation trace) then the workflow ID is absent.
+ Otherwise, this is the service ID of the workflow instance.
+ </documentation>
+ </annotation>
+ </attribute>
+
+ <attribute name="serviceID" type="wft:ServiceIDType" use="required">
+ <annotation>
+ <documentation>
+ ID to uniquely identify a service instance. The service instance can
+ be part of zero or more workflow.
+ This is formed from the targetnamespace of the service's CWSDL.
+ </documentation>
+ </annotation>
+ </attribute>
+
+ <attribute name="workflowNodeID" type="wft:WorkflowNodeIDType" use="optional">
+ <annotation>
+ <documentation>
+ Distinct ID of a node within a Workflow graph. unique within the workflowID,
+ not necessarily the order of execution.
+ </documentation>
+ </annotation>
+ </attribute>
+
+ <attribute name="workflowTimestep" type="wft:WorkflowTimestepType" use="optional">
+ <annotation>
+ <documentation>
+ The timestep within workflow execution at which this invocation is made.
+ 32bit integer. Timestep is a numerically ordered monotonically increasing sequence
+ within wf execution that allows relative ordering of invocations.
+ It is unique within the workflowID for each invocation in the workflow.
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+
+ <!-- base type for all notifications -->
+ <complexType name="BaseNotificationType">
+ <annotation>
+ <documentation>This is the base type for all notification activities that are produced</documentation>
+ </annotation>
+ <sequence>
+
+ <element name="notificationSource" type="wft:BaseIDType">
+ <annotation>
+ <documentation>
+ This identifies the entity/invocation context from which this notifcation is being sent.
+ </documentation>
+ </annotation>
+ </element>
+
+ <element name="timestamp" type="dateTime" />
+
+ <element name="description" type="string" minOccurs="0">
+ <annotation>
+ <documentation>Optional human friendly description of this notification.</documentation>
+ </annotation>
+ </element>
+
+ <element name="annotation" type="anyType" minOccurs="0">
+ <annotation>
+ <documentation>Optional additional metadata for this notification. See common.AnnotationConsts file.</documentation>
+ </annotation>
+ </element>
+
+ </sequence>
+
+ <attribute name="infoModelVersion"
+ form="unqualified"
+ type="NMTOKEN"
+ use="required">
+ <!-- we set form as unqualified to allow WS-Messenger YFilter to match it -->
+ <!-- NMToken := (Letter | Digit | '.' | '-' | '_' | ':')+ -->
+ <annotation>
+ <documentation>
+ String identifying notification schema version (used for verifying compatible schema and filtering).
+ </documentation>
+ </annotation>
+ </attribute>
+
+ </complexType>
+
+
+ <complexType name="MessageType">
+ <sequence>
+ <element name="header" type="anyType" minOccurs="0" /> <!-- e.g. soap:header -->
+ <element name="body" type="anyType" minOccurs="0" /> <!-- e.g. soap:body --> <!-- fixme: change to message -->
+ </sequence>
+ </complexType>
+
+ <complexType name="FaultMessageType">
+ <complexContent>
+ <extension base="wft:MessageType" />
+ </complexContent>
+ </complexType>
+
+ <complexType name="InvocationMessageType">
+ <complexContent>
+ <extension base="wft:MessageType" />
+ </complexContent>
+ </complexType>
+
+
+ <complexType name="FailureMessageType">
+ <sequence>
+ <element name="trace" type="anyType" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+
+
+ <!-- ========================================================================================== -->
+ <!-- workflow provenance types -->
+ <!-- ========================================================================================== -->
+
+ <!-- sent when the service is first created and is ready to accept invocations -->
+ <element name="serviceInitialized" type="wft:BaseNotificationType" />
+
+ <!-- sent when the service is terminated and will not accept any further invocations -->
+ <element name="serviceTerminated" type="wft:BaseNotificationType" />
+
+ <!-- sent when the workflow is first created and is ready to accept invocations -->
+ <!--element name="workflowInitialized" type="wft:BaseNotificationType"-->
+ <element name="workflowInitialized">
+ <complexType>
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="initialPriority" type="string" minOccurs="0" />
+ <element name="workflowTemplateId" type="wft:ServiceIDType" minOccurs="0" />
+ <element name="workflowCreatorDn" type="string" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <!-- sent when the workflow is terminated and will not accept any further invocations -->
+ <element name="workflowTerminated" type="wft:BaseNotificationType" />
+
+ <!-- sent when the workflow execution is paused: invocations will be accepted but no new messages will be sent by the workflow -->
+ <element name="workflowPaused" type="wft:BaseNotificationType" />
+
+ <!-- sent when the workflow execution is resumed -->
+ <element name="workflowResumed" type="wft:BaseNotificationType" />
+
+ <!-- workflow priority tracking -->
+ <element name="workflowPriorityChanged">
+ <complexType>
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="newPriority" type="string" />
+ <element name="oldPriority" type="string" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <!-- ========================================================================================== -->
+
+ <complexType name="InvocationRequestType" abstract="true">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="request" type="wft:InvocationMessageType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="RequestInitiatorType">
+ <complexContent>
+ <extension base="wft:InvocationRequestType">
+ <sequence>
+ <!-- used by wf (client) to set service info, when invoking service -->
+ <element name="receiver" type="wft:BaseIDType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="RequestReceiverType">
+ <complexContent>
+ <extension base="wft:InvocationRequestType">
+ <sequence>
+ <!-- used by service to set workflow(client) info, when invoked by workflow (client) -->
+ <element name="initiator" type="wft:BaseIDType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+
+ <!-- ========================================================================================== -->
+
+ <complexType name="AcknowledgementType" abstract="true">
+ <complexContent>
+ <extension base="wft:BaseNotificationType" >
+ <sequence>
+ <element name="receiver" type="wft:BaseIDType" minOccurs="0" /> <!-- target of the action that succeeded -->
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="AcknowledgeSuccessType">
+ <complexContent>
+ <extension base="wft:AcknowledgementType" />
+ </complexContent>
+ </complexType>
+
+ <complexType name="AcknowledgeFailureType">
+ <complexContent>
+ <extension base="wft:AcknowledgementType">
+ <sequence>
+ <element name="failure" type="wft:FailureMessageType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <!-- ========================================================================================== -->
+
+ <!-- sent by workflow when a service is invoked by it. -->
+ <element name="invokingService" type="wft:RequestInitiatorType" />
+
+
+ <!-- sent by workflow when it is invoked. -->
+ <element name="workflowInvoked" type="wft:RequestReceiverType" />
+
+ <!-- sent by service when it is invoked. -->
+ <element name="serviceInvoked" type="wft:RequestReceiverType" />
+
+
+ <!-- sent by workflow when it invoked a service successfully. -->
+ <element name="invokingServiceSucceeded" type="wft:AcknowledgeSuccessType" />
+
+ <!-- sent by workflow when it failed to invoke a service successfully. -->
+ <element name="invokingServiceFailed" type="wft:AcknowledgeFailureType" />
+
+
+ <!-- ========================================================================================== -->
+
+ <complexType name="InvocationResultType" abstract="true">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="result" type="wft:InvocationMessageType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="InvocationFaultType" abstract="true">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="fault" type="wft:FaultMessageType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="ResultReceiverType">
+ <complexContent>
+ <extension base="wft:InvocationResultType">
+ <sequence>
+ <!-- used by wf (client) to set service info, when receiving result from service -->
+ <element name="responder" type="wft:BaseIDType" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FaultReceiverType">
+ <complexContent>
+ <extension base="wft:InvocationFaultType">
+ <sequence>
+ <!-- used by wf (client) to set service info, when receiving result from service -->
+ <element name="responder" type="wft:BaseIDType" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="ResultResponderType">
+ <complexContent>
+ <extension base="wft:InvocationResultType">
+ <sequence>
+ <!-- used by service to set workflow(client) info, when returning result to workflow (client) -->
+ <element name="receiver" type="wft:BaseIDType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FaultResponderType">
+ <complexContent>
+ <extension base="wft:InvocationFaultType">
+ <sequence>
+ <!-- used by service to set workflow(client) info, when returning result to workflow (client) -->
+ <element name="receiver" type="wft:BaseIDType" minOccurs="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <!-- ========================================================================================== -->
+
+ <!-- sent by service when it returns the result for an invocation. -->
+ <element name="sendingResult" type="wft:ResultResponderType" /> <!-- add workflowSendingResult -->
+
+ <!-- sent by service when it returns a fault for an invocation. -->
+ <element name="sendingFault" type="wft:FaultResponderType" /> <!-- add workflowSendingFault -->
+
+
+ <!-- sent by workflow when it receives the result for an invocation. -->
+ <element name="receivedResult" type="wft:ResultReceiverType" /> <!-- add workflowReceivedResult -->
+
+ <!-- sent by workflow when it receives a fault for an invocation. -->
+ <element name="receivedFault" type="wft:FaultReceiverType" /> <!-- add workflowFaultResult -->
+
+
+ <!-- sent by service when it has successfully sent the result for an invocation. -->
+ <element name="sendingResponseSucceeded" type="wft:AcknowledgeSuccessType" />
+
+ <!-- sent by service when it has successfully sent a fault for an invocation. -->
+ <element name="sendingResponseFailed" type="wft:AcknowledgeFailureType" />
+
+ <!-- ========================================================================================== -->
+
+
+ <!-- ========================================================================================== -->
+ <!-- data provenance types -->
+ <!-- ========================================================================================== -->
+
+ <!-- general complex data types -->
+ <complexType name="DataProductType">
+ <sequence>
+ <element name="id" type="wft:DataProductIDType" />
+ <element name="location" type="anyURI" minOccurs="0" maxOccurs="unbounded" />
+ <element name="sizeInBytes" type="long" minOccurs="0" />
+ <element name="timestamp" type="dateTime" minOccurs="0" /> <!-- context sensitive. time at which data product was produced or consumed. -->
+ <element name="description" type="string" minOccurs="0">
+ <annotation>
+ <documentation>Optional human friendly description of this data product.</documentation>
+ </annotation>
+ </element>
+ <element name="annotation" type="anyType" minOccurs="0">
+ <annotation>
+ <documentation>Optional additional metadata for this data product.</documentation>
+ </annotation>
+ </element>
+ </sequence>
+ </complexType>
+
+ <complexType name="DataProductNotificationType">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="dataProduct" type="wft:DataProductType" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <!-- sent when a file is used by the jython app. -->
+ <element name="dataConsumed" type="wft:DataProductNotificationType" />
+
+ <!-- sent when a file is generated by the jython app. -->
+ <element name="dataProduced" type="wft:DataProductNotificationType" />
+
+
+ <!-- ========================================================================================== -->
+ <!-- performance audit types -->
+ <!-- ========================================================================================== -->
+
+
+ <!-- sent when the application launches a GRAM job, to facilitate -->
+ <!-- auditing and accounting of TeraGrid jobs -->
+ <!-- SJ The type name needed Type added at the end -->
+ <complexType name="ApplicationAuditType">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="name" type="string" />
+ <element name="jobHandle" type="anyURI"/>
+ <element name="host" type="string" />
+ <element name="queueName" type="string" minOccurs="0"/>
+ <element name="jobId" type="string" minOccurs="0"/>
+ <element name="distinguishedName" type="string" />
+ <element name="projectId" type="string" minOccurs="0"/>
+ <element name="rsl" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="applicationAudit" type="wft:ApplicationAuditType" />
+
+
+ <!-- sent at the end of a computational block in the jython app -->
+ <!-- with the time in milliseconds taken for that computational block -->
+ <element name="computationDuration">
+ <complexType>
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="durationInMillis" type="long" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <!-- sent at the end of sending a file to remote location (thro' gridftp?) by the jython app -->
+ <!-- with the time in milliseconds taken to send that file -->
+ <!-- TODO: later add support for time for multiple files in a single notification? -->
+ <complexType name="DataTransferDurationType">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="id" type="wft:DataProductIDType" />
+ <element name="source" type="anyURI" />
+ <element name="target" type="anyURI" />
+ <element name="sizeInBytes" type="long" minOccurs="0" default="-1" />
+ <element name="durationInMillis" type="long" default="-1" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="dataSendDuration" type="wft:DataTransferDurationType" />
+ <element name="dataReceiveDuration" type="wft:DataTransferDurationType" />
+
+ <!-- ========================================================================================== -->
+ <!-- generic log message types -->
+ <!-- ========================================================================================== -->
+
+
+ <!-- sent when an interesting file is created by the jython app that can be viewed thro' a URL -->
+ <!-- used to display as a link on the portal -->
+ <element name="publishURL">
+ <complexType>
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="title" type="string" minOccurs="0" />
+ <element name="location" type="anyURI" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <!-- generic log message at different levels of importance that can be produced by the jython app -->
+ <element name="logInfo" type="wft:BaseNotificationType" />
+ <element name="logException" type="wft:BaseNotificationType" />
+ <element name="logWarning" type="wft:BaseNotificationType" />
+ <element name="logDebug" type="wft:BaseNotificationType" />
+
+
+ <!-- ========================================================================================== -->
+ <!-- resource broker message types -->
+ <!-- ========================================================================================== -->
+
+ <complexType name="ResourceMappingType">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="mappedResource" type="string" />
+ <element name="retryStatusCount" type="int" default="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="JobStatusType">
+ <complexContent>
+ <extension base="wft:BaseNotificationType">
+ <sequence>
+ <element name="jobStatus" type="string" />
+ <element name="retryCount" type="int" default="0" />
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="resourceMapping" type="wft:ResourceMappingType" />
+ <element name="jobStatus" type="wft:JobStatusType" />
+
+</schema>