public void SaveGlobalParameter <T>(string type, string name, T value)
        {
            using (OracleConnection connection = new OracleConnection(ConnectionString))
            {
                var parameter = WorkflowGlobalParameter.SelectByTypeAndName(connection, type, name).FirstOrDefault();

                if (parameter == null)
                {
                    parameter = new WorkflowGlobalParameter()
                    {
                        Id    = Guid.NewGuid(),
                        Type  = type,
                        Name  = name,
                        Value = JsonConvert.SerializeObject(value)
                    };

                    parameter.Insert(connection);
                }
                else
                {
                    parameter.Value = JsonConvert.SerializeObject(value);

                    parameter.Update(connection);
                }

                WorkflowProcessInstance.Commit(connection);
            }
        }
 public void DeleteGlobalParameters(string type, string name = null)
 {
     using (OracleConnection connection = new OracleConnection(ConnectionString))
     {
         WorkflowGlobalParameter.DeleteByTypeAndName(connection, type, name);
         WorkflowProcessInstance.Commit(connection);
     }
 }
        public void DeleteProcess(Guid processId)
        {
            using (OracleConnection connection = new OracleConnection(ConnectionString))
            {
                WorkflowProcessInstance.Delete(connection, processId);
                WorkflowProcessInstanceStatus.Delete(connection, processId);
                WorkflowProcessInstancePersistence.DeleteByProcessId(connection, processId);
                WorkflowProcessTransitionHistory.DeleteByProcessId(connection, processId);
                WorkflowProcessTimer.DeleteByProcessId(connection, processId);

                WorkflowProcessInstance.Commit(connection);
            }
        }
        public void BindProcessToNewScheme(ProcessInstance processInstance, bool resetIsDeterminingParametersChanged)
        {
            using (OracleConnection connection = new OracleConnection(ConnectionString))
            {
                var oldProcess = WorkflowProcessInstance.SelectByKey(connection, processInstance.ProcessId);
                if (oldProcess == null)
                {
                    throw new ProcessNotFoundException();
                }

                oldProcess.SchemeId = processInstance.SchemeId;
                if (resetIsDeterminingParametersChanged)
                {
                    oldProcess.IsDeterminingParametersChanged = false;
                }
                oldProcess.Update(connection);
                WorkflowProcessInstance.Commit(connection);
            }
        }
 public void InitializeProcess(ProcessInstance processInstance)
 {
     using (OracleConnection connection = new OracleConnection(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,
             RootProcessId   = processInstance.RootProcessId,
             ParentProcessId = processInstance.ParentProcessId
         };
         newProcess.Insert(connection);
         WorkflowProcessInstance.Commit(connection);
     }
 }