//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Activities { using System.Collections.Generic; using System.Runtime; using System.Activities; using System.ServiceModel; using System.ServiceModel.Activities.Description; [WorkflowContractBehaviorAttribute] [ServiceContract(Name = XD2.WorkflowInstanceManagementService.ContractName, Namespace = XD2.WorkflowServices.Namespace)] public interface IWorkflowInstanceManagement { // Non-Transacted operations [OperationContract(Name = XD2.WorkflowInstanceManagementService.Abandon)] [Fx.Tag.Throws(typeof(FaultException), "Instance not found")] void Abandon(Guid instanceId, string reason); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Abandon, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "Abandon")] IAsyncResult BeginAbandon(Guid instanceId, string reason, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Abandon")] void EndAbandon(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Cancel)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is supended or locked under transaction")] void Cancel(Guid instanceId); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Cancel, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "Cancel")] IAsyncResult BeginCancel(Guid instanceId, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Cancel")] void EndCancel(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Run)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is locked under transaction")] void Run(Guid instanceId); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Run, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "Run")] IAsyncResult BeginRun(Guid instanceId, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Run")] void EndRun(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Suspend)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is locked under transaction")] void Suspend(Guid instanceId, string reason); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Suspend, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "Suspend")] IAsyncResult BeginSuspend(Guid instanceId, string reason, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Suspend")] void EndSuspend(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Terminate)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is supended or locked under transaction")] void Terminate(Guid instanceId, string reason); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Terminate, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "Terminate")] IAsyncResult BeginTerminate(Guid instanceId, string reason, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Terminate")] void EndTerminate(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Unsuspend)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is locked under transaction")] void Unsuspend(Guid instanceId); [OperationContract(Name = XD2.WorkflowInstanceManagementService.Unsuspend, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "Unsuspend")] IAsyncResult BeginUnsuspend(Guid instanceId, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Unsuspend")] void EndUnsuspend(IAsyncResult result); //Transacted Operation // TODO, 21237, Post One-Way Tx flow support below operations should be changed to Oneway. [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedCancel)] [TransactionFlow(TransactionFlowOption.Allowed)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is supended or locked under transaction")] void TransactedCancel(Guid instanceId); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedCancel, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "TransactedCancel")] IAsyncResult BeginTransactedCancel(Guid instanceId, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "TransactedCancel")] void EndTransactedCancel(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedRun)] [TransactionFlow(TransactionFlowOption.Allowed)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is supended or locked under transaction")] void TransactedRun(Guid instanceId); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedRun, AsyncPattern = true)] [Fx.Tag.InheritThrows(From = "TransactedRun")] IAsyncResult BeginTransactedRun(Guid instanceId, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "TransactedRun")] void EndTransactedRun(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedSuspend)] [TransactionFlow(TransactionFlowOption.Allowed)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is supended or locked under transaction")] void TransactedSuspend(Guid instanceId, string reason); [OperationContract(AsyncPattern = true, Name = XD2.WorkflowInstanceManagementService.TransactedSuspend)] [Fx.Tag.InheritThrows(From = "TransactedSuspend")] IAsyncResult BeginTransactedSuspend(Guid instanceId, string reason, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "TransactedSuspend")] void EndTransactedSuspend(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedTerminate)] [TransactionFlow(TransactionFlowOption.Allowed)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is supended or locked under transaction")] void TransactedTerminate(Guid instanceId, string reason); [OperationContract(AsyncPattern = true, Name = XD2.WorkflowInstanceManagementService.TransactedTerminate)] [Fx.Tag.InheritThrows(From = "TransactedTerminate")] IAsyncResult BeginTransactedTerminate(Guid instanceId, string reason, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "TransactedTerminate")] void EndTransactedTerminate(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedUnsuspend)] [TransactionFlow(TransactionFlowOption.Allowed)] [Fx.Tag.Throws(typeof(FaultException), "Instance with specified identifier not found or it is locked under a transaction")] void TransactedUnsuspend(Guid instanceId); [OperationContract(AsyncPattern = true, Name = XD2.WorkflowInstanceManagementService.TransactedUnsuspend)] [Fx.Tag.InheritThrows(From = "TransactedUnsuspend")] IAsyncResult BeginTransactedUnsuspend(Guid instanceId, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "TransactedUnsuspend")] void EndTransactedUnsuspend(IAsyncResult result); } [WorkflowContractBehaviorAttribute] [ServiceContract(Name = XD2.WorkflowInstanceManagementService.ContractName, Namespace = XD2.WorkflowServices.Namespace, ConfigurationName = XD2.WorkflowInstanceManagementService.ConfigurationName)] public interface IWorkflowUpdateableInstanceManagement : IWorkflowInstanceManagement { [OperationContract(Name = XD2.WorkflowInstanceManagementService.Update)] [Fx.Tag.Throws(typeof(FaultException), "Instance not found, locked under transaction, or update unsuccessful")] void Update(Guid instanceId, WorkflowIdentity updatedDefinitionIdentity); [OperationContract(AsyncPattern = true, Name = XD2.WorkflowInstanceManagementService.Update)] [Fx.Tag.InheritThrows(From = "Update")] IAsyncResult BeginUpdate(Guid instanceId, WorkflowIdentity updatedDefinitionIdentity, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "Update")] void EndUpdate(IAsyncResult result); [OperationContract(Name = XD2.WorkflowInstanceManagementService.TransactedUpdate)] [TransactionFlow(TransactionFlowOption.Allowed)] [Fx.Tag.Throws(typeof(FaultException), "Instance not found, locked under transaction, or update unsuccessful")] void TransactedUpdate(Guid instanceId, WorkflowIdentity updatedDefinitionIdentity); [OperationContract(AsyncPattern = true, Name = XD2.WorkflowInstanceManagementService.TransactedUpdate)] [Fx.Tag.InheritThrows(From = "TransactedUpdate")] IAsyncResult BeginTransactedUpdate(Guid instanceId, WorkflowIdentity updatedDefinitionIdentity, AsyncCallback callback, object state); [Fx.Tag.InheritThrows(From = "TransactedUpdate")] void EndTransactedUpdate(IAsyncResult result); } }