You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by bf...@apache.org on 2010/12/23 03:44:31 UTC

svn commit: r1052143 [1/11] - in /oodt/branches/wengine-branch: ./ src/ src/main/ src/main/assembly/ src/main/bin/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/oodt/ src/main/java/org/apache/oodt/cas/ src/main/ja...

Author: bfoster
Date: Thu Dec 23 02:44:23 2010
New Revision: 1052143

URL: http://svn.apache.org/viewvc?rev=1052143&view=rev
Log:
wengine branch

Added:
    oodt/branches/wengine-branch/pom.xml
    oodt/branches/wengine-branch/src/
    oodt/branches/wengine-branch/src/main/
    oodt/branches/wengine-branch/src/main/assembly/
    oodt/branches/wengine-branch/src/main/assembly/assembly.xml
    oodt/branches/wengine-branch/src/main/bin/
    oodt/branches/wengine-branch/src/main/bin/engine
    oodt/branches/wengine-branch/src/main/bin/engine-client
    oodt/branches/wengine-branch/src/main/bin/engine-server
    oodt/branches/wengine-branch/src/main/java/
    oodt/branches/wengine-branch/src/main/java/org/
    oodt/branches/wengine-branch/src/main/java/org/apache/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngine.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClientFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineLocal.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineLocalFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/queue/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/queue/QueueManager.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/EngineRunner.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/EngineRunnerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/LocalEngineRunner.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/LocalEngineRunnerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceJobInput.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceJobInstance.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceRunner.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/runner/ResourceRunnerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/DeleteWorkflowsByCategory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/DeleteWorkflowsByState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/GeneratePerformanceReport.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/StartWorkflowsEvent.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/WorkflowEngineEvent.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/repo/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/repo/SpringBasedEngineEventRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/repo/SpringBasedEngineEventRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/repo/WorkflowEngineEventRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/event/repo/WorkflowEngineEventRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/exceptions/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/exceptions/EngineException.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/exceptions/WorkflowTaskInstanceException.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/HelloWorldInstance.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/RequiredMetadata.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/RunScriptInstance.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/TaskInstance.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/ValidateMetadataInstance.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/WorkflowInstanceRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/WorkflowInstanceRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/WorkflowManagerDataSourceIndex.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/WorkflowManagerDataSourceIndexFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/WorkflowManagerDictionary.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/instance/repo/WorkflowManagerDictionaryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/listener/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/listener/ChangeType.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/listener/WorkflowProcessorListener.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/metadata/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/metadata/ControlMetadata.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/metadata/ResourceMetKeys.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/metadata/WorkflowMetKeys.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/WorkflowGraph.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/WorkflowModel.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/WorkflowModelFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/repo/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/repo/WorkflowModelRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/repo/WorkflowModelRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/repo/XmlWorkflowModelRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/model/repo/XmlWorkflowModelRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/page/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/page/PageFilter.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/page/QueryPage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/page/QueuePage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/page/RunnablesPage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/precondition/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/precondition/EnsureServerFullyLoaded.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/precondition/PreConditionedComponent.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/precondition/WorkflowPreCondition.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/FILOPriorityManager.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/FILOPriorityManagerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/HighestPriorityFIFOManager.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/HighestPriorityFIFOManagerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/HighestPriorityFirstManager.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/HighestPriorityFirstManagerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/Priority.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/PriorityManager.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/priority/PriorityManagerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/ConditionProcessor.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/ParallelProcessor.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/ProcessorInfo.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/ProcessorSkeleton.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/ProcessorStub.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/SequentialProcessor.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/TaskProcessor.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/WorkflowProcessor.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/map/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/map/WorkflowProcessorMap.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/map/WorkflowProcessorMapFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/map/XmlBasedProcessorMap.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/map/XmlBasedProcessorMapFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/repo/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/repo/WorkflowProcessorRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/repo/WorkflowProcessorRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/repo/XStreamWorkflowProcessorRepository.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/processor/repo/XStreamWorkflowProcessorRepositoryFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/CommandLineClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/ServerLauncher.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/ChangeWorkflowPriority.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/ChangeWorkflowState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/DeleteWorkflow.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/DeleteWorkflows.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/DescribeWorkflow.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/FilteredAction.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetExecutingPage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetPage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetPercentLoaded.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetRunnablesPage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetSortedPage.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetStatusByCategory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetStatusByState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetSupportedStates.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/GetSupportedWorkflows.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/MultiStartWorkflowByDate.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/PagedQuery.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/PauseRunner.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/PrintSupportedEvents.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/PrintWorkflow.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/ResumeRunner.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/Shutdown.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/StartWorkflow.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/TriggerEvent.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/action/WorkflowEngineServerAction.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/AbstractCommunicationChannelClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/AbstractCommunicationChannelServer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/CommunicationChannelClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/CommunicationChannelClientFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/CommunicationChannelServer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/CommunicationChannelServerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/MultiCommunicationChannelClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/MultiCommunicationChannelClientFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/MultiCommunicationChannelServer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/MultiCommunicationChannelServerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/RmiCommunicationChannelClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/RmiCommunicationChannelClientFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/RmiCommunicationChannelServer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/RmiCommunicationChannelServerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/RmiCommunicationChannelServerInterface.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/rmi/RmiCommunicationChannelServerMBean.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/xmlrpc/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/xmlrpc/XmlRpcCommunicationChannelClient.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/xmlrpc/XmlRpcCommunicationChannelClientFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/xmlrpc/XmlRpcCommunicationChannelServer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/xmlrpc/XmlRpcCommunicationChannelServerFactory.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/channel/xmlrpc/XmlRpcCommunicationServerInterface.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/option/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/option/PrintSupportedActionsHandler.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/option/PrintSupportedClientsHandler.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/server/option/PrintSupportedServersHandler.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/RevertableWorkflowState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/StateUtils.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/WorkflowState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/done/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/done/FailureState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/done/OFFState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/done/StoppedState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/done/SuccessState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/holding/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/holding/PausedState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/holding/UnknownState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/initial/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/initial/LoadedState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/initial/NullState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/results/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/results/ResultsBailState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/results/ResultsFailureState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/results/ResultsState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/results/ResultsSuccessState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/running/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/running/ExecutingState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/running/PostConditionEvalState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/running/PreConditionEvalState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/transition/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/transition/ExecutionCompleteState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/transition/PreConditionSuccessState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/waiting/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/waiting/BlockedState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/waiting/QueuedState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/state/waiting/WaitingOnResourcesState.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/util/
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/util/CasPropertyPlaceholderConfigurer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/util/PluginClassLoader.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/util/ScriptFile.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/util/Serializer.java
    oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/util/WorkflowUtils.java
    oodt/branches/wengine-branch/src/main/resources/
    oodt/branches/wengine-branch/src/main/resources/REMOVE.log
    oodt/branches/wengine-branch/src/main/resources/documentation/
    oodt/branches/wengine-branch/src/main/resources/documentation/UserGuide.doc   (with props)
    oodt/branches/wengine-branch/src/main/resources/logging.properties
    oodt/branches/wengine-branch/src/main/resources/policy/
    oodt/branches/wengine-branch/src/main/resources/policy/action-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/catserv-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/engine-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/engine-client-cmd-line-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/engine-client-config.xml
    oodt/branches/wengine-branch/src/main/resources/policy/engine-properties.xml
    oodt/branches/wengine-branch/src/main/resources/policy/engine-server-cmd-line-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/engine-server-config.xml
    oodt/branches/wengine-branch/src/main/resources/policy/event-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/in-memory-index-cat.sql
    oodt/branches/wengine-branch/src/main/resources/policy/in-memory-ingest-mapper.sql
    oodt/branches/wengine-branch/src/main/resources/policy/precondition-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflow-catalog-beans.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/GranuleMaps.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/Workflow2Test.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/WorkflowModelTestFile.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/WorkflowProcessorMapping.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/properties.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_Defaults.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_MoaGPolygon.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_MoaMap.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_MoaOrbits.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_NamingConv.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_PGETaskMetadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/config/PgeConfig_ProductionLocMapping.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/AllProducts_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/CAS_PGE_LOG_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/DailyProduct_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/MoaGPolygonProduct_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/MoaMapProduct_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/MoaOrbitsProduct_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/SCI_PGE_CONF_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/metout/SCI_PGE_LOG_metadata.xml
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/xslt/
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/xslt/Xslt_MoaGPolygonOrbits.xsl
    oodt/branches/wengine-branch/src/main/resources/policy/workflows/v3_1_1/xslt/Xslt_MoaMap.xsl
    oodt/branches/wengine-branch/src/site/
    oodt/branches/wengine-branch/src/site/resources/
    oodt/branches/wengine-branch/src/site/resources/css/
    oodt/branches/wengine-branch/src/site/resources/css/maven-theme.css
    oodt/branches/wengine-branch/src/site/resources/css/site.css
    oodt/branches/wengine-branch/src/site/resources/images/
    oodt/branches/wengine-branch/src/site/resources/images/almost-complete-lifecycle.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/grocery-store-workflow-1.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/grocery-store-workflow-2.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/grocery-store-workflow-3.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/grocery-store-workflow-4.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/parallel-split-diagram.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/parallel-split-into-synchronization-diagram.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/simplified-lifecycle.png   (with props)
    oodt/branches/wengine-branch/src/site/resources/images/synchronization-diagram.png   (with props)
    oodt/branches/wengine-branch/src/site/xdoc/
    oodt/branches/wengine-branch/src/site/xdoc/advanced/
    oodt/branches/wengine-branch/src/site/xdoc/site.xml
    oodt/branches/wengine-branch/src/site/xdoc/tech/
    oodt/branches/wengine-branch/src/site/xdoc/tech/index.xml
    oodt/branches/wengine-branch/src/site/xdoc/user/

Added: oodt/branches/wengine-branch/pom.xml
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/pom.xml?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/pom.xml (added)
+++ oodt/branches/wengine-branch/pom.xml Thu Dec 23 02:44:23 2010
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.oodt</groupId>
+		<artifactId>oodt-core</artifactId>
+		<version>0.2-incubating</version>
+	</parent>
+	<groupId>org.apache.oodt</groupId>
+	<artifactId>cas-wengine</artifactId>
+	<name>Catalog and Archive Workflow Management Engine</name>
+	<version>0.2-branch</version>
+	<description>The workflow management engine of a Catalog and Archive Service. This component
+		purposefully separates workflow repositories and workflow engines standard interfaces, and
+		provides some out of the box backend implementations of them (including one based on the
+		javax.sql.DataSource interface). This component provides everything that you need to execute
+		workflows, and science processing pipelines.</description>
+	<ciManagement>
+		<notifiers>
+			<notifier>
+				<configuration>
+					<address>chris.mattmann@jpl.nasa.gov</address>
+				</configuration>
+			</notifier>
+		</notifiers>
+	</ciManagement>
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.4</version>
+				<configuration>
+					<forkMode>pertest</forkMode>
+					<useSystemClassLoader>false</useSystemClassLoader>
+					<systemProperties>
+						<property>
+							<name>java.util.logging.config.file</name>
+							<value>${basedir}/src/testdata/test.logging.properties</value>
+						</property>
+					</systemProperties>
+					<forkedProcessTimeoutInSeconds>0</forkedProcessTimeoutInSeconds>
+					<redirectTestOutputToFile>true</redirectTestOutputToFile>
+					<includes>
+						<include>**/*Test*.java</include>
+					</includes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.2-beta-2</version>
+				<configuration>
+					<descriptors>
+						<descriptor>src/main/assembly/assembly.xml</descriptor>
+					</descriptors>
+					<archive>
+						<manifest>
+							<mainClass>org.apache.oodt.cas.resource.system.XmlRpcWorkflowManagerClient</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.oodt</groupId>
+			<artifactId>oodt-commons</artifactId>
+			<version>0.2-incubating</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.oodt</groupId>
+			<artifactId>cas-catalog</artifactId>
+			<version>0.2-incubating</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.oodt</groupId>
+			<artifactId>cas-metadata</artifactId>
+			<version>0.2-incubating</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.oodt</groupId>
+			<artifactId>cas-resource</artifactId>
+			<version>0.2-incubating</version>
+		</dependency>
+		<dependency>
+			<groupId>concurrent</groupId>
+			<artifactId>concurrent</artifactId>
+			<version>1.3.4</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-lang</groupId>
+			<artifactId>commons-lang</artifactId>
+			<version>2.3</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>1.2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-collections</groupId>
+			<artifactId>commons-collections</artifactId>
+			<version>2.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-httpclient</groupId>
+			<artifactId>commons-httpclient</artifactId>
+			<version>3.0</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.0.3</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>1.3</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-pool</groupId>
+			<artifactId>commons-pool</artifactId>
+			<version>1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>xmlrpc</groupId>
+			<artifactId>xmlrpc</artifactId>
+			<version>2.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.lucene</groupId>
+			<artifactId>lucene-core</artifactId>
+			<version>2.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.safehaus.jug</groupId>
+			<artifactId>jug</artifactId>
+			<version>2.0.0</version>
+			<classifier>asl</classifier>
+		</dependency>
+		<dependency>
+			<groupId>hsqldb</groupId>
+			<artifactId>hsqldb</artifactId>
+			<version>1.8.0.7</version>
+		</dependency>
+		<dependency>
+			<groupId>com.thoughtworks.xstream</groupId>
+			<artifactId>xstream</artifactId>
+			<version>1.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>xerces</groupId>
+			<artifactId>xercesImpl</artifactId>
+			<version>2.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.2</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>

Added: oodt/branches/wengine-branch/src/main/assembly/assembly.xml
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/assembly/assembly.xml?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/assembly/assembly.xml (added)
+++ oodt/branches/wengine-branch/src/main/assembly/assembly.xml Thu Dec 23 02:44:23 2010
@@ -0,0 +1,67 @@
+<!-- 
+Copyright 2008 California Institute of Technology. ALL RIGHTS
+RESERVED. U.S. Government Sponsorship acknowledged.
+
+$Id$
+-->
+<assembly>
+  <id>dist</id>
+  <formats>
+    <format>tar.gz</format>
+    <format>zip</format>
+  </formats>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>  
+  <includeSiteDirectory>false</includeSiteDirectory>
+  <fileSets>
+    <fileSet>
+      <directory>${basedir}</directory>
+      <outputDirectory>.</outputDirectory>
+      <includes>
+        <include>LICENSE.txt</include>
+        <include>CHANGES.txt</include>
+      </includes>
+    </fileSet>
+    <fileSet>
+      <directory>${basedir}/src/main/bin</directory>
+      <outputDirectory>bin</outputDirectory>
+      <includes/>
+      <fileMode>755</fileMode>
+    </fileSet>
+    <fileSet>
+      <directory>${basedir}/src/main/resources</directory>
+      <outputDirectory>etc</outputDirectory>
+      <includes>
+        <include>**.properties</include>
+      </includes>
+    </fileSet>
+    <fileSet>
+      <directory>${basedir}/src/main/resources</directory>
+      <outputDirectory>logs</outputDirectory>
+      <includes>
+        <include>REMOVE.log</include>
+      </includes>
+    </fileSet>
+    <fileSet>
+      <directory>${basedir}/src/main/resources</directory>
+      <outputDirectory>etc</outputDirectory>
+      <includes>
+        <include>**.properties</include>
+      </includes>
+    </fileSet>
+    <fileSet>
+      <directory>${basedir}/src/main/resources/policy</directory>
+      <outputDirectory>policy</outputDirectory>
+      <includes/>
+    </fileSet>
+  </fileSets>
+  <dependencySets>
+    <dependencySet>
+      <outputDirectory>lib</outputDirectory>
+      <unpack>false</unpack>
+      <useProjectArtifact>true</useProjectArtifact>
+      <useTransitiveDependencies>true</useTransitiveDependencies>
+      <unpackOptions/>
+    </dependencySet>
+  </dependencySets>
+</assembly>

Added: oodt/branches/wengine-branch/src/main/bin/engine
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/bin/engine?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/bin/engine (added)
+++ oodt/branches/wengine-branch/src/main/bin/engine Thu Dec 23 02:44:23 2010
@@ -0,0 +1,28 @@
+#!/bin/csh
+# Copyright (c) 2009 California Institute of Technology.
+# ALL RIGHTS RESERVED. U.S. Government Sponsorship acknowledged.
+
+set operation
+
+if ( $#argv < 1 ) then
+   echo "Usage: $0 {start|debug|stop|restart}"
+        exit 1;
+else
+        set operation = "$1"
+endif
+
+if ( ${operation} == "start" ) then
+        ./engine-server &
+else if ( ${operation} == "debug" ) then
+        ./engine-server -d &
+else if ( ${operation} == "stop" ) then
+        ./engine-client -a Shutdown
+else if ( ${operation} == "restart" ) then
+        ./engine-client -a Shutdown
+        sleep 7
+        ./engine-server &
+else
+        echo "Usage: $0 {start|debug|stop|restart}"
+        exit 1;
+endif
+

Added: oodt/branches/wengine-branch/src/main/bin/engine-client
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/bin/engine-client?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/bin/engine-client (added)
+++ oodt/branches/wengine-branch/src/main/bin/engine-client Thu Dec 23 02:44:23 2010
@@ -0,0 +1,18 @@
+#!/bin/csh
+
+set args
+
+if ( $#args > 0 ) then
+	set args = "$*"
+endif
+
+${JAVA_HOME}/bin/java \
+	-Djava.ext.dirs=../lib:../../pge/lib \
+	-Djava.util.logging.config.file=../etc/logging.properties \
+	-Dorg.apache.oodt.cas.workflow.client.config.file=../policy/engine-client-config.xml \
+	-Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl \
+	-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
+	-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
+	-Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration \
+   	org.apache.oodt.cas.workflow.server.CommandLineClient ${args}
+

Added: oodt/branches/wengine-branch/src/main/bin/engine-server
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/bin/engine-server?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/bin/engine-server (added)
+++ oodt/branches/wengine-branch/src/main/bin/engine-server Thu Dec 23 02:44:23 2010
@@ -0,0 +1,18 @@
+#!/bin/csh
+
+set args
+
+if ( $#args > 0 ) then
+	set args = "$*"
+endif
+
+${JAVA_HOME}/bin/java \
+   -Djava.ext.dirs=../lib:../../pge/lib \
+   -Djava.util.logging.config.file=../etc/logging.properties \
+   -Dorg.apache.oodt.cas.workflow.server.config.file=../policy/engine-server-config.xml \
+   -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl \
+   -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
+   -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
+   -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration \
+   org.apache.oodt.cas.workflow.server.ServerLauncher ${args}
+   

Added: oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngine.java
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngine.java?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngine.java (added)
+++ oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngine.java Thu Dec 23 02:44:23 2010
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oodt.cas.workflow.engine;
+
+//JDK imports
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+//OODT imports
+import org.apache.oodt.cas.catalog.page.PageInfo;
+import org.apache.oodt.cas.catalog.query.QueryExpression;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.event.WorkflowEngineEvent;
+import org.apache.oodt.cas.workflow.exceptions.EngineException;
+import org.apache.oodt.cas.workflow.instance.repo.WorkflowInstanceRepository;
+import org.apache.oodt.cas.workflow.model.WorkflowGraph;
+import org.apache.oodt.cas.workflow.model.WorkflowModel;
+import org.apache.oodt.cas.workflow.page.PageFilter;
+import org.apache.oodt.cas.workflow.page.QueryPage;
+import org.apache.oodt.cas.workflow.page.QueuePage;
+import org.apache.oodt.cas.workflow.page.RunnablesPage;
+import org.apache.oodt.cas.workflow.priority.Priority;
+import org.apache.oodt.cas.workflow.processor.ProcessorInfo;
+import org.apache.oodt.cas.workflow.processor.ProcessorSkeleton;
+import org.apache.oodt.cas.workflow.processor.ProcessorStub;
+import org.apache.oodt.cas.workflow.state.WorkflowState;
+
+/**
+ * @author mattmann
+ * @author bfoster
+ * @version $Revision$
+ * 
+ * <p>
+ * The engine that executes and monitors {@link TaskInstance}s, which are
+ * the physical executing representation of the abtract {@link WorkflowModel}s
+ * provided.
+ * </p>
+ * 
+ */
+public interface WorkflowEngine {
+	
+	public void shutdown() throws EngineException;
+	
+	public void pauseRunner() throws EngineException;
+	
+	public void resumeRunner() throws EngineException;
+	
+	public Date getLaunchDate() throws EngineException;
+	
+    public String startWorkflow(WorkflowGraph workflow, Metadata inputMetadata) throws EngineException;
+
+    public String startWorkflow(WorkflowGraph workflow, Metadata inputMetadata, Priority priority) throws EngineException;
+
+    public String startWorkflow(String modelId, Metadata inputMetadata) throws EngineException;
+
+    public String startWorkflow(String modelId, Metadata inputMetadata, Priority priority) throws EngineException;
+    
+    public void deleteWorkflow(String instanceId) throws EngineException;
+    
+    public void stopWorkflow(String instanceId) throws EngineException;
+
+    public void pauseWorkflow(String instanceId) throws EngineException;
+
+    public void resumeWorkflow(String instanceId) throws EngineException;
+    
+    public WorkflowModel getModel(String modelId) throws EngineException;
+    
+    public Set<String> getSupportedProcessorIds() throws EngineException;
+    
+    public List<WorkflowModel> getModels() throws EngineException;
+    
+    public WorkflowGraph getWorkflowGraph(String modelId) throws EngineException;
+
+    public List<WorkflowGraph> getWorkflowGraphs() throws EngineException;
+    
+    public WorkflowInstanceRepository getInstanceRepository() throws EngineException;
+
+    public ProcessorInfo getProcessorInfo(String instanceId, String modelId) throws EngineException;
+    
+    public void updateWorkflowMetadata(String instanceId, String modelId, Metadata metadata) throws EngineException;
+    
+    public void updateInstanceMetadata(String jobId, Metadata metadata) throws EngineException;
+
+    public void updateWorkflowAndInstance(String instanceId, String modelId, WorkflowState state, Metadata metadata, String jobId, Metadata instanceMetadata) throws EngineException;
+    
+    public void setWorkflowState(String instanceId, String modelId, WorkflowState state) throws EngineException;
+
+    public void setWorkflowPriority(String instanceId, String modelId, Priority priority) throws EngineException;
+    
+    public Metadata getWorkflowMetadata(String instanceId, String modelId) throws EngineException;
+    
+    public Metadata getInstanceMetadata(String jobId) throws EngineException;
+        
+    public void registerEvent(WorkflowEngineEvent event) throws EngineException;
+    
+    public void triggerEvent(String eventId, Metadata inputMetadata) throws EngineException;
+    
+    public List<WorkflowEngineEvent> getRegisteredEvents() throws EngineException;
+    
+    public List<WorkflowState> getSupportedStates() throws EngineException;
+
+    public int getNumOfLoadedProcessors() throws EngineException;
+    
+    public int getNumOfWorkflows() throws EngineException;
+
+    public RunnablesPage getExecutingPage(PageInfo pageInfo) throws EngineException;
+
+    public RunnablesPage getRunnablesPage(PageInfo pageInfo) throws EngineException;
+    
+    public QueuePage getPage(PageInfo pageInfo) throws EngineException;
+
+    public QueuePage getPage(PageInfo pageInfo, PageFilter filter) throws EngineException;
+
+    public QueuePage getPage(PageInfo pageInfo, Comparator<ProcessorStub> comparator) throws EngineException;
+     
+    public QueuePage getPage(PageInfo pageInfo, WorkflowState state) throws EngineException;
+
+    public QueuePage getPage(PageInfo pageInfo, WorkflowState.Category category) throws EngineException;
+
+    public QueuePage getPage(PageInfo pageInfo, String modelId) throws EngineException;
+
+    public QueuePage getPage(PageInfo pageInfo, Map<String, List<String>> keyValPairs) throws EngineException;
+    
+    public QueuePage getNextPage(QueuePage page) throws EngineException;
+
+    public ProcessorSkeleton getWorkflow(String instanceId) throws EngineException;
+
+	public QueryPage getNextPage(QueryPage page) throws EngineException;
+	
+	public QueryPage getPage(PageInfo pageInfo, QueryExpression queryExpression) throws EngineException;
+	
+	public List<Metadata> getMetadata(QueryPage page) throws EngineException;
+	
+}

Added: oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClient.java
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClient.java?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClient.java (added)
+++ oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClient.java Thu Dec 23 02:44:23 2010
@@ -0,0 +1,447 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.workflow.engine;
+
+//JDK imports
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+//OODT imports
+import org.apache.oodt.cas.catalog.page.PageInfo;
+import org.apache.oodt.cas.catalog.query.QueryExpression;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.event.WorkflowEngineEvent;
+import org.apache.oodt.cas.workflow.exceptions.EngineException;
+import org.apache.oodt.cas.workflow.instance.repo.WorkflowInstanceRepository;
+import org.apache.oodt.cas.workflow.model.WorkflowGraph;
+import org.apache.oodt.cas.workflow.model.WorkflowModel;
+import org.apache.oodt.cas.workflow.page.PageFilter;
+import org.apache.oodt.cas.workflow.page.QueryPage;
+import org.apache.oodt.cas.workflow.page.QueuePage;
+import org.apache.oodt.cas.workflow.page.RunnablesPage;
+import org.apache.oodt.cas.workflow.priority.Priority;
+import org.apache.oodt.cas.workflow.processor.ProcessorInfo;
+import org.apache.oodt.cas.workflow.processor.ProcessorSkeleton;
+import org.apache.oodt.cas.workflow.processor.ProcessorStub;
+import org.apache.oodt.cas.workflow.server.channel.CommunicationChannelClient;
+import org.apache.oodt.cas.workflow.server.channel.xmlrpc.XmlRpcCommunicationChannelClientFactory;
+import org.apache.oodt.cas.workflow.state.WorkflowState;
+
+/**
+ * 
+ * @author bfoster
+ * @version $Revision$
+ *
+ * WorkflowEngine client for interfacing with server WorkflowEngine
+ *
+ */
+public class WorkflowEngineClient implements WorkflowEngine {
+
+	protected CommunicationChannelClient client;
+	
+	public WorkflowEngineClient() {
+		this.client = new XmlRpcCommunicationChannelClientFactory().createCommunicationChannelClient();
+	}
+	
+	public void setCommunicationChannelClient(CommunicationChannelClient client) {
+		this.client = client;
+	}
+
+	public void shutdown() throws EngineException {
+		try {
+			this.client.shutdown();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public void pauseRunner() throws EngineException {
+		try {
+			this.client.pauseRunner();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public void resumeRunner() throws EngineException {
+		try {
+			this.client.resumeRunner();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public Date getLaunchDate() throws EngineException {
+		try {
+			return this.client.getLaunchDate();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public void deleteWorkflow(String instanceId)
+			throws EngineException {
+		try {
+			this.client.deleteWorkflow(instanceId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public Metadata getInstanceMetadata(String jobId)
+			throws EngineException {
+		try {
+			return this.client.getInstanceMetadata(jobId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public WorkflowInstanceRepository getInstanceRepository()
+			throws EngineException {
+		try {
+			return this.client.getInstanceRepository();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public WorkflowModel getModel(String modelId) throws EngineException {
+		try {
+			return this.client.getModel(modelId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public Set<String> getSupportedProcessorIds() throws EngineException {
+		try {
+			return this.client.getSupportedProcessorIds();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+	public List<WorkflowModel> getModels() throws EngineException {
+		try {
+			return this.client.getModels();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public WorkflowGraph getWorkflowGraph(String modelId) throws EngineException {
+		try {
+			return this.client.getWorkflowGraph(modelId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public List<WorkflowGraph> getWorkflowGraphs() throws EngineException {
+		try {
+			return this.client.getWorkflowGraphs();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public ProcessorInfo getProcessorInfo(String instanceId, String modelId) throws EngineException {
+		try {
+			return this.client.getProcessorInfo(instanceId, modelId);
+		}catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+    }
+	
+	public Metadata getWorkflowMetadata(String instanceId,
+			String modelId) throws EngineException {
+		try {
+			return this.client.getWorkflowMetadata(instanceId, modelId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public void pauseWorkflow(String instanceId)
+			throws EngineException {
+		try {
+			this.client.pauseWorkflow(instanceId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public void resumeWorkflow(String instanceId)
+			throws EngineException {
+		try {
+			this.client.resumeWorkflow(instanceId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public void setWorkflowState(String instanceId,
+			String modelId, WorkflowState state) throws EngineException {
+		try {
+			this.client.setWorkflowState(instanceId, modelId, state);
+		}catch (Exception e) {
+			throw new EngineException("Failed to update workflow state : " + e.getMessage(), e);
+		}
+	}
+
+    public void setWorkflowPriority(String instanceId, String modelId, Priority priority) throws EngineException {
+		try {
+			this.client.setWorkflowPriority(instanceId, modelId, priority);
+		}catch (Exception e) {
+			throw new EngineException("Failed to update workflow priority : " + e.getMessage(), e);
+		}
+    }
+	
+	public String startWorkflow(WorkflowGraph workflow, Metadata inputMetadata)
+			throws EngineException {
+		try {
+			return this.client.startWorkflow(workflow, inputMetadata);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public String startWorkflow(WorkflowGraph workflow, Metadata inputMetadata, Priority priority) throws EngineException {
+		try {
+			return this.client.startWorkflow(workflow, inputMetadata, priority);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+	public String startWorkflow(String modelId, Metadata inputMetadata)
+			throws EngineException {
+		try {
+			return this.client.startWorkflow(modelId, inputMetadata);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public String startWorkflow(String modelId, Metadata inputMetadata, Priority priority) throws EngineException {
+		try {
+			return this.client.startWorkflow(modelId, inputMetadata, priority);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+
+	public void stopWorkflow(String instanceId)	throws EngineException {
+		try {
+			this.client.stopWorkflow(instanceId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public void updateInstanceMetadata(String jobId, Metadata metadata)
+			throws EngineException {
+		try {
+			this.client.updateInstanceMetadata(jobId, metadata);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+
+	public void updateWorkflowMetadata(String instanceId,
+			String modelId, Metadata metadata) throws EngineException {
+		try {
+			this.client.updateWorkflowMetadata(instanceId, modelId, metadata);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public void updateWorkflowAndInstance(String instanceId, String modelId, WorkflowState state, Metadata metadata, String jobId, Metadata instanceMetadata) throws EngineException {
+		try {
+			this.client.updateWorkflowAndInstance(instanceId, modelId, state, metadata, jobId, instanceMetadata);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public void registerEvent(WorkflowEngineEvent event) throws EngineException {
+		try {
+			this.client.registerEvent(event);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public void triggerEvent(String eventId, Metadata inputMetadata) throws EngineException {
+		try {
+			this.client.triggerEvent(eventId, inputMetadata);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public List<WorkflowEngineEvent> getRegisteredEvents() throws EngineException {
+		try {
+			return this.client.getRegisteredEvents();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+    public List<WorkflowState> getSupportedStates() throws EngineException {
+		try {
+			return this.client.getSupportedStates();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public int getNumOfLoadedProcessors() throws EngineException {
+		try {
+			return this.client.getNumOfLoadedProcessors();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public int getNumOfWorkflows() throws EngineException {
+		try {
+			return this.client.getNumOfWorkflows();
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+	public ProcessorSkeleton getWorkflow(String instanceId) throws EngineException {
+		try {
+			return this.client.getWorkflow(instanceId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+    public RunnablesPage getExecutingPage(PageInfo pageInfo) throws EngineException {
+		try {
+			return this.client.getExecutingPage(pageInfo);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+	
+    public RunnablesPage getRunnablesPage(PageInfo pageInfo) throws EngineException {
+		try {
+			return this.client.getRunnablesPage(pageInfo);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+	
+    public QueuePage getPage(PageInfo pageInfo) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public QueuePage getPage(PageInfo pageInfo, PageFilter filter) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, filter);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, Comparator<ProcessorStub> comparator) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, comparator);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, WorkflowState state) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, state);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, WorkflowState.Category category) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, category);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, String modelId) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, modelId);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+    
+    public QueuePage getPage(PageInfo pageInfo, Map<String, List<String>> keyValPairs) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, keyValPairs);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+    }
+   
+    public QueuePage getNextPage(QueuePage page) throws EngineException {
+		try {
+			return this.client.getNextPage(page);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public QueryPage getNextPage(QueryPage page) throws EngineException {
+		try {
+			return this.client.getNextPage(page);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public QueryPage getPage(PageInfo pageInfo, QueryExpression queryExpression) throws EngineException {
+		try {
+			return this.client.getPage(pageInfo, queryExpression);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+	
+	public List<Metadata> getMetadata(QueryPage page) throws EngineException {
+		try {
+			return this.client.getMetadata(page);
+		}catch (Exception e) {
+			throw new EngineException(e);
+		}
+	}
+}

Added: oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClientFactory.java
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClientFactory.java?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClientFactory.java (added)
+++ oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineClientFactory.java Thu Dec 23 02:44:23 2010
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.workflow.engine;
+
+//OODT imports
+import org.apache.oodt.cas.workflow.server.channel.CommunicationChannelClientFactory;
+
+/**
+ * 
+ * @author bfoster
+ * @version $Revision$
+ *
+ * Factory for creating client WorkflowEngine
+ * 
+ */
+public class WorkflowEngineClientFactory implements WorkflowEngineFactory {
+
+	private CommunicationChannelClientFactory communicationChannelClientFactory;
+	private int autoPagerSize;
+	
+	public WorkflowEngineClient createEngine() {
+		WorkflowEngineClient client = new WorkflowEngineClient();
+		client.setCommunicationChannelClient(this.communicationChannelClientFactory.createCommunicationChannelClient());
+		return client;
+	}
+
+	public CommunicationChannelClientFactory getCommunicationChannelClientFactory() {
+		return this.communicationChannelClientFactory;
+	}
+
+	public void setCommunicationChannelClientFactory(CommunicationChannelClientFactory communicationChannelClientFactory) {
+		this.communicationChannelClientFactory = communicationChannelClientFactory;
+	}
+
+	public int getAutoPagerSize() {
+		return autoPagerSize;
+	}
+
+	public void setAutoPagerSize(int autoPagerSize) {
+		this.autoPagerSize = autoPagerSize;
+	}
+	
+	public String getServerUrl() {
+		return this.communicationChannelClientFactory.getServerUrl();
+	}
+	
+}

Added: oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineFactory.java
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineFactory.java?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineFactory.java (added)
+++ oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineFactory.java Thu Dec 23 02:44:23 2010
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.workflow.engine;
+
+/**
+ * 
+ * @author bfoster
+ * @version $Revision$
+ *
+ */
+public interface WorkflowEngineFactory {
+
+	public WorkflowEngine createEngine();
+	
+}

Added: oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineLocal.java
URL: http://svn.apache.org/viewvc/oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineLocal.java?rev=1052143&view=auto
==============================================================================
--- oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineLocal.java (added)
+++ oodt/branches/wengine-branch/src/main/java/org/apache/oodt/cas/workflow/engine/WorkflowEngineLocal.java Thu Dec 23 02:44:23 2010
@@ -0,0 +1,472 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.workflow.engine;
+
+//JDK imports
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+//OODT imports
+import org.apache.oodt.cas.catalog.page.PageInfo;
+import org.apache.oodt.cas.catalog.query.QueryExpression;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.workflow.engine.queue.QueueManager;
+import org.apache.oodt.cas.workflow.engine.runner.EngineRunner;
+import org.apache.oodt.cas.workflow.event.WorkflowEngineEvent;
+import org.apache.oodt.cas.workflow.event.repo.WorkflowEngineEventRepository;
+import org.apache.oodt.cas.workflow.exceptions.EngineException;
+import org.apache.oodt.cas.workflow.instance.TaskInstance;
+import org.apache.oodt.cas.workflow.instance.repo.WorkflowInstanceRepository;
+import org.apache.oodt.cas.workflow.model.WorkflowGraph;
+import org.apache.oodt.cas.workflow.model.WorkflowModel;
+import org.apache.oodt.cas.workflow.model.repo.WorkflowModelRepository;
+import org.apache.oodt.cas.workflow.page.PageFilter;
+import org.apache.oodt.cas.workflow.page.QueryPage;
+import org.apache.oodt.cas.workflow.page.QueuePage;
+import org.apache.oodt.cas.workflow.page.RunnablesPage;
+import org.apache.oodt.cas.workflow.priority.Priority;
+import org.apache.oodt.cas.workflow.priority.PriorityManager;
+import org.apache.oodt.cas.workflow.processor.ProcessorInfo;
+import org.apache.oodt.cas.workflow.processor.ProcessorSkeleton;
+import org.apache.oodt.cas.workflow.processor.ProcessorStub;
+import org.apache.oodt.cas.workflow.processor.WorkflowProcessor;
+import org.apache.oodt.cas.workflow.processor.map.WorkflowProcessorMap;
+import org.apache.oodt.cas.workflow.processor.repo.WorkflowProcessorRepository;
+import org.apache.oodt.cas.workflow.server.channel.CommunicationChannelClient;
+import org.apache.oodt.cas.workflow.state.WorkflowState;
+import org.apache.oodt.cas.workflow.state.done.FailureState;
+import org.apache.oodt.cas.workflow.state.done.OFFState;
+import org.apache.oodt.cas.workflow.state.done.StoppedState;
+import org.apache.oodt.cas.workflow.state.done.SuccessState;
+import org.apache.oodt.cas.workflow.state.holding.PausedState;
+import org.apache.oodt.cas.workflow.state.holding.UnknownState;
+import org.apache.oodt.cas.workflow.state.initial.LoadedState;
+import org.apache.oodt.cas.workflow.state.initial.NullState;
+import org.apache.oodt.cas.workflow.state.running.ExecutingState;
+import org.apache.oodt.cas.workflow.state.running.PostConditionEvalState;
+import org.apache.oodt.cas.workflow.state.running.PreConditionEvalState;
+import org.apache.oodt.cas.workflow.state.transition.ExecutionCompleteState;
+import org.apache.oodt.cas.workflow.state.transition.PreConditionSuccessState;
+import org.apache.oodt.cas.workflow.state.waiting.BlockedState;
+import org.apache.oodt.cas.workflow.state.waiting.QueuedState;
+import org.apache.oodt.cas.workflow.state.waiting.WaitingOnResourcesState;
+import org.apache.oodt.cas.workflow.util.WorkflowUtils;
+
+/**
+ * @author mattmann
+ * @author bfoster
+ * @version $Revision$
+ * 
+ * <p>
+ * The engine that executes and monitors {@link TaskInstance}s, which are
+ * the physical executing representation of the abtract {@link WorkflowModel}s
+ * provided.
+ * </p>
+ * 
+ */
+public class WorkflowEngineLocal implements WorkflowEngine {
+	
+	private static final Logger LOG = Logger.getLogger(WorkflowEngineLocal.class.getName());
+	
+	protected WorkflowModelRepository modelRepo;
+	protected WorkflowProcessorMap processorMap;
+	protected WorkflowInstanceRepository instanceRepo;
+	protected EngineRunner runner;
+	protected WorkflowEngineClient weClient;
+	protected QueueManager queueManager;
+	protected WorkflowEngineEventRepository eventRepo;
+	protected Date launchDate;
+	
+	protected Map<String, WorkflowGraph> workflowGraphs;
+	protected Map<String, Class<? extends WorkflowProcessor>> modelToProcessorMap;
+	
+	protected Thread runnerThread;
+	protected boolean allowRunnerToWork;
+	protected boolean pauseRunner;
+	
+	public WorkflowEngineLocal(WorkflowModelRepository modelRepo, WorkflowProcessorRepository processorRepo, WorkflowInstanceRepository instanceRepo, WorkflowEngineEventRepository eventRepo, WorkflowProcessorMap processorMap, PriorityManager priorityManager, EngineRunner runner, CommunicationChannelClient client, List<String> metadataKeysToCache, boolean debug) throws Exception {
+		this.modelRepo = modelRepo;
+		this.instanceRepo = instanceRepo;
+		this.processorMap = processorMap;
+		this.eventRepo = eventRepo;
+		this.runner = runner;
+		this.refreshModelToProcessorMapping();
+		this.refreshModels();
+		this.weClient = new WorkflowEngineClient();
+		this.weClient.setCommunicationChannelClient(client);
+		this.queueManager = new QueueManager(processorRepo, priorityManager, metadataKeysToCache, debug);
+		this.allowRunnerToWork = true;
+		this.launchDate = new Date();
+		this.pauseRunner = false;
+		
+		// Task RUNNER thread
+		runnerThread = new Thread(new Runnable() {
+			public void run() {
+				while(allowRunnerToWork) {
+					TaskInstance nextTask = null;
+					try {
+						while (!pauseRunner && allowRunnerToWork && WorkflowEngineLocal.this.runner.hasOpenSlots() && (nextTask = WorkflowEngineLocal.this.queueManager.getNext()) != null) {
+							nextTask.setNotifyEngine(WorkflowEngineLocal.this.weClient);
+							WorkflowEngineLocal.this.runner.execute(nextTask);
+							
+							//take a breather
+							try {
+								synchronized(this) {
+									this.wait(1);
+								}
+							}catch (Exception e){
+							}
+						}
+					}catch (Exception e) {
+						LOG.log(Level.SEVERE, "Engine failed while submitting jobs to its runner : " + e.getMessage(), e);
+						if (nextTask != null)
+							WorkflowEngineLocal.this.queueManager.setState(nextTask.getInstanceId(), nextTask.getModelId(), new FailureState("Failed while submitting job to Runner : " + e.getMessage()));
+					}
+					
+					try {
+						synchronized(this) {
+							do {
+								this.wait(2000);
+							}while (WorkflowEngineLocal.this.pauseRunner);
+						}
+					}catch (Exception e){}
+				}
+			}
+			
+		});
+		if (!debug)
+			runnerThread.start();
+	}
+	
+	public void shutdown() throws EngineException {
+		this.allowRunnerToWork = this.pauseRunner = false;
+		try {
+			runnerThread.join(5000);
+		}catch(Exception e) {}
+		this.queueManager.shutdown();
+	}
+	
+	public void pauseRunner() throws EngineException {
+		this.pauseRunner = true;
+	}
+	
+	public void resumeRunner() throws EngineException {
+		this.pauseRunner = false;
+	}
+	
+	public Date getLaunchDate() throws EngineException {
+		return this.launchDate;
+	}
+	
+	public void refreshModels() {
+		try {
+			this.workflowGraphs = this.modelRepo.loadGraphs(this.getSupportedProcessorIds());
+		}catch (Exception e) {
+    		LOG.log(Level.SEVERE, "Failed to refresh models : " + e.getMessage(), e);
+		}
+	}
+	
+	public void refreshModelToProcessorMapping() {
+		try {
+			this.modelToProcessorMap = this.processorMap.loadMapping();
+		}catch (Exception e) {
+    		LOG.log(Level.SEVERE, "Failed to refresh model to processor mapping : " + e.getMessage(), e);
+		}
+	}
+	
+	public Set<String> getSupportedProcessorIds() {
+		return this.modelToProcessorMap.keySet();
+	}
+	
+    public String startWorkflow(String modelId, Metadata inputMetadata) throws EngineException {
+    	return this.startWorkflow(modelId, inputMetadata, null);
+    }
+    
+	
+    public String startWorkflow(String modelId, Metadata inputMetadata, Priority priority) throws EngineException {
+    	try {    			
+	    	WorkflowGraph graph = this.workflowGraphs.get(modelId);
+	    	if (graph == null)
+	    		throw new Exception("Server does not understand ModelId = '" + modelId + "'");
+	    	return this.startWorkflow(graph, inputMetadata, priority);
+    	}catch (Exception e) {
+    		LOG.log(Level.SEVERE, "Failed to start workflow [modelId=" + modelId + "] : " + e.getMessage(), e);
+    		return null;
+    	}
+    }
+
+	public String startWorkflow(WorkflowGraph workflow, Metadata inputMetadata)
+			throws EngineException {
+		return this.startWorkflow(workflow, inputMetadata, null);
+	}
+	
+    public String startWorkflow(WorkflowGraph workflow, Metadata inputMetadata, Priority priority) throws EngineException {
+    	try {
+			WorkflowProcessor processor = WorkflowUtils.buildProcessor(UUID
+					.randomUUID().toString(), workflow, modelToProcessorMap);
+			processor.setDynamicMetadataRecur(inputMetadata);
+			if (priority != null)
+				processor.setPriorityRecur(priority);
+			this.queueManager.addToQueue(processor);
+			LOG.log(Level.INFO, "Added instanceId = "
+					+ processor.getInstanceId() + " for modelId = "
+					+ workflow.getModel().getId() + " to queue");
+			return processor.getInstanceId();
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, "Failed to start workflow [modelId="
+					+ workflow.getModel().getId() + "] : " + e.getMessage(), e);
+			return null;
+		}
+    }
+    
+	public void setWorkflowState(String instanceId, String modelId, WorkflowState state) throws EngineException {
+		this.queueManager.setState(instanceId, modelId, state);
+	}
+	
+    public void setWorkflowPriority(String instanceId, String modelId, Priority priority) throws EngineException {
+		this.queueManager.setPriority(instanceId, modelId, priority);
+    }
+
+	public void deleteWorkflow(String instanceId) throws EngineException {
+		try {
+			if (!this.queueManager.containsWorkflow(instanceId)) 
+				throw new EngineException("Workflow '" + instanceId + "' is not managed by this engine");
+			
+			LOG.log(Level.INFO, "Deleting workflow '" + instanceId + "'");
+			this.instanceRepo.removeInstanceMetadatas(instanceId);
+			this.queueManager.deleteWorkflowProcessor(instanceId);
+		}catch (Exception e) {
+			throw new EngineException("Failed to delete workflow '" + instanceId + "' : " + e.getMessage(), e);
+		}
+	}
+
+	public Metadata getInstanceMetadata(String jobId)
+			throws EngineException {
+		try {
+			return this.instanceRepo.getInstanceMetadata(jobId);
+		} catch (Exception e) {
+			throw new EngineException("Failed to get instance metadata for " + jobId + " : " + e.getMessage(), e);
+		}
+	}
+
+	public WorkflowInstanceRepository getInstanceRepository()
+			throws EngineException {
+		return this.instanceRepo;
+	}
+
+	public WorkflowModel getModel(String modelId) throws EngineException {
+		WorkflowGraph graph = this.workflowGraphs.get(modelId);
+		if (graph != null)
+			return graph.getModel();
+		 throw new EngineException("Model " + modelId + " is not understood by this engine");
+	}
+	
+	public WorkflowGraph getWorkflowGraph(String modelId) throws EngineException {
+		return this.workflowGraphs.get(modelId);
+	}
+
+	public List<WorkflowModel> getModels() throws EngineException {
+		List<WorkflowModel> models = new Vector<WorkflowModel>();
+		for (WorkflowGraph graph : this.workflowGraphs.values())
+			models.add(graph.getModel());
+		return models;
+	}
+	
+    public List<WorkflowGraph> getWorkflowGraphs() throws EngineException {
+		return new Vector<WorkflowGraph>(this.workflowGraphs.values());
+    }
+    
+    public ProcessorInfo getProcessorInfo(String instanceId, String modelId) throws EngineException {
+    	WorkflowProcessor wp = WorkflowUtils.findProcessor(this.queueManager.getWorkflowProcessor(instanceId), modelId);
+    	return wp.getProcessorInfo();
+    }
+
+	public Metadata getWorkflowMetadata(String instanceId,
+			String modelId) throws EngineException {
+		return WorkflowUtils.findProcessor(this.queueManager.getWorkflowProcessor(instanceId), modelId).getDynamicMetadata();
+	}
+
+	public void pauseWorkflow(String instanceId) throws EngineException {
+		this.queueManager.setState(instanceId, null, new PausedState(""));
+	}
+
+	public void resumeWorkflow(String instanceId) throws EngineException {
+		this.queueManager.revertState(instanceId, null);
+	}
+
+	public void stopWorkflow(String instanceId)	throws EngineException {
+		this.queueManager.setState(instanceId, null, new StoppedState(""));		
+	}
+
+	public void updateInstanceMetadata(String jobId, Metadata metadata)
+			throws EngineException {
+		try {
+			this.instanceRepo.storeInstanceMetadata(jobId, metadata);
+		} catch (Exception e) {
+			LOG.log(Level.WARNING, "Failed to update instance metadata for " + jobId + " : " + e.getMessage(), e);
+			throw new EngineException("Failed to update instance metadata for " + jobId + " : " + e.getMessage(), e);
+		}
+	}
+
+	public void updateWorkflowMetadata(String instanceId,
+			String modelId, Metadata metadata) throws EngineException {
+		this.queueManager.setMetadata(instanceId, modelId, metadata);
+	}
+
+    public void updateWorkflowAndInstance(String instanceId, String modelId, WorkflowState state, Metadata metadata, String jobId, Metadata instanceMetadata) throws EngineException {
+    	this.updateWorkflowMetadata(instanceId, modelId, metadata);
+    	this.setWorkflowState(instanceId, modelId, state);
+    	this.updateInstanceMetadata(jobId, instanceMetadata);
+    }
+	
+    public void registerEvent(WorkflowEngineEvent event) throws EngineException {
+    	try {
+    		this.eventRepo.storeEvent(event);
+    	}catch (Exception e) {
+			throw new EngineException("Failed to register event " + event + " : " + e.getMessage(), e);
+    	}
+    }
+    
+    public void triggerEvent(String eventId, Metadata inputMetadata) throws EngineException {
+    	try {
+	    	WorkflowEngineEvent event = this.eventRepo.getEventById(eventId);
+	    	if (event == null) {
+	    		throw new Exception("Event " + eventId + " not registered with this server");
+	    	}else {
+	    		if (event.passesPreConditions(this)) {
+					LOG.log(Level.INFO, "Tiggering event " + eventId + " with inputMetadata = " + inputMetadata.getHashtable());
+					event.performAction(WorkflowEngineLocal.this, inputMetadata);
+	    		}else {
+	    			throw new EngineException("Event " + eventId + " failed to pass preconditions with inputMetadata = " + inputMetadata.getHashtable());
+	    		}
+	    	}
+    	}catch (Exception e) {
+			throw new EngineException("Failed to trigger event " + eventId + " : " + e.getMessage(), e);
+    	}
+    }
+    
+    public List<WorkflowEngineEvent> getRegisteredEvents() throws EngineException {
+    	try {
+    		List<WorkflowEngineEvent> events = new Vector<WorkflowEngineEvent>();
+	    	for (String eventId : this.eventRepo.getEventIds())
+	    		events.add(this.eventRepo.getEventById(eventId));
+	    	return events;
+		}catch (Exception e) {
+			throw new EngineException("Failed to get supported events : " + e.getMessage(), e);
+		}
+    }
+
+    public List<WorkflowState> getSupportedStates() throws EngineException {
+    	return Arrays.asList(new NullState(), new LoadedState(""), new FailureState(""), new OFFState(""), new StoppedState(""), new SuccessState(""), new PausedState(""), new UnknownState(""), new ExecutingState(""), new PostConditionEvalState(""), new PreConditionEvalState(""), new ExecutionCompleteState(""), new PreConditionSuccessState(""), new BlockedState(""), new QueuedState(""), new WaitingOnResourcesState(""));
+    }
+    
+    public int getNumOfLoadedProcessors() throws EngineException {
+    	return this.queueManager.getNumOfLoadedProcessors();
+    }
+    
+    public int getNumOfWorkflows() throws EngineException {
+    	return this.queueManager.getNumOfProcessors();
+    }
+    
+    public RunnablesPage getExecutingPage(PageInfo pageInfo) throws EngineException {
+    	return this.queueManager.getExecutingPage(pageInfo);
+    }
+    
+    public RunnablesPage getRunnablesPage(PageInfo pageInfo) throws EngineException {
+    	return this.queueManager.getRunnablesPage(pageInfo);
+    }
+    
+    public QueuePage getPage(PageInfo pageInfo) throws EngineException {
+    	return this.queueManager.getPage(pageInfo);
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, PageFilter filter) throws EngineException {
+    	return this.queueManager.getPage(pageInfo, filter);
+    }
+    
+    public QueuePage getPage(PageInfo pageInfo, Comparator<ProcessorStub> comparator) throws EngineException {
+    	return this.queueManager.getPage(pageInfo, comparator);
+    }
+    
+    public QueuePage getPage(PageInfo pageInfo, WorkflowState state) throws EngineException {
+    	return this.queueManager.getPage(pageInfo, state);
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, WorkflowState.Category category) throws EngineException {
+    	return this.queueManager.getPage(pageInfo, category);
+    }
+
+    public QueuePage getPage(PageInfo pageInfo, String modelId) throws EngineException {
+    	return this.queueManager.getPage(pageInfo, modelId);
+    }
+    
+    public QueuePage getPage(PageInfo pageInfo, Map<String, List<String>> keyValPairs) throws EngineException {
+    	return this.queueManager.getPage(pageInfo, keyValPairs);
+    }
+
+	public QueuePage getNextPage(QueuePage page) throws EngineException {
+		if (page.getFilter() instanceof PageFilter)
+			return this.getPage(new PageInfo(page.getPageInfo().getPageSize(), page.getPageInfo().getPageNum() + 1), (PageFilter) page.getFilter());
+		else if (page.getFilter() instanceof Comparator)
+			return this.getPage(new PageInfo(page.getPageInfo().getPageSize(), page.getPageInfo().getPageNum() + 1), (Comparator<ProcessorStub>) page.getFilter());
+		else if (page.getFilter() instanceof WorkflowState)
+			return this.getPage(new PageInfo(page.getPageInfo().getPageSize(), page.getPageInfo().getPageNum() + 1), (WorkflowState) page.getFilter());
+		else if (page.getFilter() instanceof WorkflowState.Category)
+			return this.getPage(new PageInfo(page.getPageInfo().getPageSize(), page.getPageInfo().getPageNum() + 1), (WorkflowState.Category) page.getFilter());
+		else if (page.getFilter() instanceof String)
+			return this.getPage(new PageInfo(page.getPageInfo().getPageSize(), page.getPageInfo().getPageNum() + 1), (String) page.getFilter());
+		else
+			return this.getPage(new PageInfo(page.getPageInfo().getPageSize(), page.getPageInfo().getPageNum() + 1));
+	}
+	
+    public ProcessorSkeleton getWorkflow(String instanceId) throws EngineException {
+    	return this.queueManager.getWorkflowProcessor(instanceId).getSkeleton();
+    }
+
+	public QueryPage getNextPage(QueryPage page) throws EngineException {
+		try {
+			return this.instanceRepo.getNextPage(page);
+		}catch (Exception e) {
+			throw new EngineException("Failed to get next page : " + e.getMessage(), e);
+		}
+	}
+	
+	public QueryPage getPage(PageInfo pageInfo, QueryExpression queryExpression) throws EngineException {
+		try {
+			return this.instanceRepo.getPage(pageInfo, queryExpression);
+		}catch (Exception e) {
+			throw new EngineException("Failed to get page : " + e.getMessage(), e);
+		}
+	}
+	
+	public List<Metadata> getMetadata(QueryPage page) throws EngineException {
+		try {
+			return this.instanceRepo.getMetadata(page);
+		}catch (Exception e) {
+			throw new EngineException("Failed to get metadata for page : " + e.getMessage(), e);
+		}
+	}
+    
+}