public string StartProcess(string definitionId, Dictionary <string, object> inputData) { string ret = null; RunProcessTransaction(this.DefaultPersistenceMode, ps => { var pd = this.GetProcessDef(definitionId); var pscript = this.GetProcessScriptRuntime(definitionId); string instanceId = Guid.NewGuid().ToString("N"); ProcessInstance pi = new ProcessInstance { InstanceId = instanceId, ProcessDefinitionId = definitionId, ProcessInstanceId = instanceId, TaskId = pd.Body.Id }; pi.Activate(ps, pd, pscript); ps.PersisterSession.SaveNew(pi); pi.Enable(inputData); pi.Deactivate(); ps.PersisterSession.Update(pi); ret = pi.InstanceId; }); return(ret); }
public string StartProcess(string definitionId, Dictionary <string, object> inputData) { string ret = null; RunProcessTransaction(this.DefaultPersistenceMode, ps => { var pd = this.GetProcessDef(definitionId); var pscript = this.GetProcessScriptRuntime(definitionId); var instanceId = Guid.NewGuid().ToString("N"); var pi = new ProcessInstance { InstanceId = instanceId, ProcessDefinitionId = definitionId, ProcessInstanceId = instanceId, TaskId = pd.Body.Id }; pi.Activate(ps, pd, pscript); ps.TaskPersister.SaveNew(pi); log.Info( $"\n --- Created process {pi.ProcessDefinitionId} instance {pi.InstanceId}. Data: {Jsonizer.ToJsonString(inputData)}"); pi.Enable(inputData); pi.Deactivate(); ps.TaskPersister.Update(pi); ret = pi.InstanceId; }); return(ret); }
public string StartProcessInstance(string definitionId, string inputXml, string processCorrelationId) { try { ProcessDefinition pd = PackageRepository.GetProcess(definitionId); if (pd == null) throw new ApplicationException("Process definition not found: " + definitionId); pd.ValidateProcessInputXml(inputXml); using (TransactionScope ts = new TransactionScope(_transactionOption)) { ProcessInstance pi = new ProcessInstance(); pi.StartDate = DateTime.Now; pi.StartedBy = System.Threading.Thread.CurrentPrincipal.Identity.Name; pi.InstanceId = Guid.NewGuid().ToString("N"); pi.ProcessDefinitionId = definitionId; pi.Environment = this; pi.Activate(); log.Info("Created new process instance for process {0}.{1}: {2}", pd.Name, pd.Version, pi.InstanceId); pi.SetProcessInputData(inputXml); pi.CreateStartToken(); pi.Passivate(); InstanceRepository.InsertNewProcessInstance(pi); ts.Complete(); NotifyReadyProcessSaved(); return pi.InstanceId; } } catch (Exception ex) { log.Error(string.Format("Error starting process: {0}", ex)); throw; } }