public bool IsProcessExists(Guid processId) { using (var connection = new NpgsqlConnection(ConnectionString)) { return(WorkflowProcessInstance.SelectByKey(connection, processId) != null); } }
private WorkflowProcessInstance GetProcessInstance(Guid processId) { using (var connection = new NpgsqlConnection(ConnectionString)) { var processInstance = WorkflowProcessInstance.SelectByKey(connection, processId); if (processInstance == null) { throw new ProcessNotFoundException(processId); } return(processInstance); } }
public void BindProcessToNewScheme(ProcessInstance processInstance, bool resetIsDeterminingParametersChanged) { using (var connection = new NpgsqlConnection(ConnectionString)) { var oldProcess = WorkflowProcessInstance.SelectByKey(connection, processInstance.ProcessId); if (oldProcess == null) { throw new ProcessNotFoundException(processInstance.ProcessId); } oldProcess.SchemeId = processInstance.SchemeId; if (resetIsDeterminingParametersChanged) { oldProcess.IsDeterminingParametersChanged = false; } oldProcess.Update(connection); } }
public void InitializeProcess(ProcessInstance processInstance) { using (NpgsqlConnection connection = new NpgsqlConnection(ConnectionString)) { var oldProcess = WorkflowProcessInstance.SelectByKey(connection, processInstance.ProcessId); if (oldProcess != null) { throw new ProcessAlredyExistsException(); } var newProcess = new WorkflowProcessInstance { Id = processInstance.ProcessId, SchemeId = processInstance.SchemeId, ActivityName = processInstance.ProcessScheme.InitialActivity.Name, StateName = processInstance.ProcessScheme.InitialActivity.State }; newProcess.Insert(connection); } }
public SchemeDefinition <XElement> GetProcessSchemeByProcessId(Guid processId) { using (var connection = new NpgsqlConnection(ConnectionString)) { var processInstance = WorkflowProcessInstance.SelectByKey(connection, processId); if (processInstance == null) { throw new ProcessNotFoundException(processId); } if (!processInstance.SchemeId.HasValue) { throw SchemeNotFoundException.Create(processId, SchemeLocation.WorkflowProcessInstance); } var schemeDefinition = GetProcessSchemeBySchemeId(processInstance.SchemeId.Value); schemeDefinition.IsDeterminingParametersChanged = processInstance.IsDeterminingParametersChanged; return(schemeDefinition); } }
public void UpdatePersistenceState(ProcessInstance processInstance, TransitionDefinition transition) { var paramIdentityId = processInstance.GetParameter(DefaultDefinitions.ParameterIdentityId.Name); var paramImpIdentityId = processInstance.GetParameter(DefaultDefinitions.ParameterImpersonatedIdentityId.Name); var identityId = paramIdentityId == null ? string.Empty : (string)paramIdentityId.Value; var impIdentityId = paramImpIdentityId == null ? identityId : (string)paramImpIdentityId.Value; using (var connection = new NpgsqlConnection(ConnectionString)) { var inst = WorkflowProcessInstance.SelectByKey(connection, processInstance.ProcessId); if (inst != null) { if (!string.IsNullOrEmpty(transition.To.State)) { inst.StateName = transition.To.State; } inst.ActivityName = transition.To.Name; inst.PreviousActivity = transition.From.Name; if (!string.IsNullOrEmpty(transition.From.State)) { inst.PreviousState = transition.From.State; } if (transition.Classifier == TransitionClassifier.Direct) { inst.PreviousActivityForDirect = transition.From.Name; if (!string.IsNullOrEmpty(transition.From.State)) { inst.PreviousStateForDirect = transition.From.State; } } else if (transition.Classifier == TransitionClassifier.Reverse) { inst.PreviousActivityForReverse = transition.From.Name; if (!string.IsNullOrEmpty(transition.From.State)) { inst.PreviousStateForReverse = transition.From.State; } } inst.ParentProcessId = processInstance.ParentProcessId; inst.RootProcessId = processInstance.RootProcessId; inst.Update(connection); } var history = new WorkflowProcessTransitionHistory() { ActorIdentityId = impIdentityId, ExecutorIdentityId = identityId, Id = Guid.NewGuid(), IsFinalised = transition.To.IsFinal, ProcessId = processInstance.ProcessId, FromActivityName = transition.From.Name, FromStateName = transition.From.State, ToActivityName = transition.To.Name, ToStateName = transition.To.State, TransitionClassifier = transition.Classifier.ToString(), TransitionTime = _runtime.RuntimeDateTimeNow, TriggerName = string.IsNullOrEmpty(processInstance.ExecutedTimer) ? processInstance.CurrentCommand : processInstance.ExecutedTimer }; history.Insert(connection); } }