private void OnWorkflowInstanceTerminatedCleanup(Guid instanceId) { AbortedWorkflows.Remove(instanceId); WorkflowFlowToken flowToken = new WorkflowFlowToken(instanceId); TaskManagerFacade.CompleteTasks(flowToken); ReleaseAllLocks(instanceId); SetWorkflowInstanceStatus(instanceId, WorkflowInstanceStatus.Terminated, false); RemoveFlowControllerServicesContainer(instanceId); RemoveIfExistFormData(instanceId); RemovePersistingType(instanceId); DeletePersistedWorkflow(instanceId); DeletePersistedFormData(instanceId); using (ThreadDataManager.EnsureInitialize()) { FlowControllerFacade.FlowComplete(new WorkflowFlowToken(instanceId)); } }
public void AbortWorkflow(Guid instanceId) { DoInitialize(0); using (_resourceLocker.Locker) { if (AbortedWorkflows.Contains(instanceId)) { return; } AbortedWorkflows.Add(instanceId); if (_resourceLocker.Resources.WorkflowStatusDictionary.ContainsKey(instanceId)) { var workflowInstance = WorkflowRuntime.GetWorkflow(instanceId); workflowInstance.Abort(); if (_resourceLocker.Resources.ExceptionFromWorkflow.TryRemove(Thread.CurrentThread.ManagedThreadId, out var exception)) { throw exception; } } } }