public IProcessInstance StartProcessInstance(long processDefinitionId, IDictionary attributeValues = null, string transitionName = null, Relations relations = null) { ProcessInstanceImpl processInstance = null; IOrganisationService organisationService = null; using (ISession session = NHibernateHelper.OpenSession()) { using (var tran = session.BeginTransaction()) { DbSession dbSession = new DbSession(session); ProcessDefinitionImpl processDefinition = myProcessDefinitionService.GetProcessDefinition(processDefinitionId, dbSession); processInstance = new ProcessInstanceImpl(ActorId, processDefinition); processInstanceRepository.Save(processInstance, dbSession);//到這裏應該存了ProcessInstance,RootFlow ExecutionContext executionContext = new ExecutionContext(); //logRepository.CreateLog(); processDefinition.StartState.CheckAccess(attributeValues); attributeService = new AttributeService((FlowImpl)processInstance.RootFlow, dbSession); attributeService.StoreAttributeValue(attributeValues);//儲存傳入的欄位值 attributeService.StoreRole(organisationService.FindActorById(ActorId), (ActivityStateImpl)processDefinition.StartState); //flow的node推進到下一關卡 //flow的actor=解析出來的actor.Id transitionService = new TransitionService(ActorId, dbSession); TransitionImpl transitionTo = transitionService.GetTransition(transitionName, processDefinition.StartState, dbSession); transitionService.ProcessTransition(transitionTo, (FlowImpl)processInstance.RootFlow, dbSession); session.Flush(); tran.Commit(); } } return(processInstance); }
public ProcessInstanceImpl GetProcessInstance(Int64 processInstanceId, Relations relations, DbSession dbSession) { ProcessInstanceImpl processInstance = null; log.Debug("searching for process instances..."); processInstance = (ProcessInstanceImpl)dbSession.Load(typeof(ProcessInstanceImpl), processInstanceId); Resolve((FlowImpl)processInstance.RootFlow, relations, dbSession); return(processInstance); }
public virtual IProcessInstance GetProcessInstance(Int64 processInstanceId, Relations relations) { ProcessInstanceImpl processInstance = null; DbSession dbSession = null; dbSession = OpenSession(); processInstance = implementation.GetProcessInstance(processInstanceId, relations, dbSession); return(processInstance); }
private IAuthorizationHandler GetHandlerFromProcessInstanceId(Int64 processInstanceId, DbSession dbSession) { ProcessInstanceImpl processInstance = null; ; try { processInstance = (ProcessInstanceImpl)dbSession.Load(typeof(ProcessInstanceImpl), processInstanceId); } catch (ObjectNotFoundException e) { throw new ArgumentException("couldn't check authorization : process instance with id '" + processInstanceId + "' does not exist : " + e.Message); } return(GetAuthorizationHandler((ProcessDefinitionImpl)processInstance.ProcessDefinition)); }
public void Save(ProcessInstanceImpl processInstance, DbSession dbSession) { dbSession.Save(processInstance); }