public void CreateWorkflowDefinition(WfWorkflowDefinition workflowDefinition) { int generatedId = Interlocked.Increment(ref memoryWorkflowDefinitionSequenceGenerator); workflowDefinition.WfwdId = generatedId; inMemoryWorkflowDefinitionStore[generatedId] = workflowDefinition; }
public void MoveActivity(WfWorkflowDefinition wfWorkflowDefinition, int src, int dst, bool after) { WfActivityDefinition wfActivityDefinitionFrom = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, src); WfActivityDefinition wfActivityDefinitionTo = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, dst); MoveActivity(wfWorkflowDefinition, wfActivityDefinitionFrom, wfActivityDefinitionTo, after); }
public int CountDefaultTransitions(WfWorkflowDefinition wfWorkflowDefinition) { Debug.Assert(wfWorkflowDefinition != null); //-- int?idActivityDefinition = wfWorkflowDefinition.WfadId; if (idActivityDefinition == null) { //The workflow don't have a starting activity return(0); } WfTransitionDefinition transitionNext; transitionsNext.TryGetValue(idActivityDefinition + "|" + WfCodeTransition.Default.ToString(), out transitionNext); int count = 0; while (transitionNext != null) { WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo]; idActivityDefinition = wfNextActivityDefinition.WfadId; transitionsNext.TryGetValue(idActivityDefinition + "|" + WfCodeTransition.Default.ToString(), out transitionNext); count++; } return(count); }
public int CountDefaultTransitions(WfWorkflowDefinition wfWorkflowDefinition) { var cmd = GetSqlServerCommand("CountDefaultTransactions.sql"); cmd.Parameters.AddWithValue(WfWorkflowDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId); return(cmd.ReadScalar <int>()); }
public WfActivityDefinition FindActivityDefinitionByPosition(WfWorkflowDefinition wfWorkflowDefinition, int position) { int?idActivity = wfWorkflowDefinition.WfadId; if (idActivity == null) { //The workflow don't have a starting activity return(null); } WfTransitionDefinition transitionNext = transitionsNext[idActivity + "|" + WfCodeTransition.Default.ToString()]; int i = 1; while (transitionNext != null && i < position) { WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo]; idActivity = wfNextActivityDefinition.WfadId; transitionNext = transitionsNext[wfNextActivityDefinition.WfadId + "|" + WfCodeTransition.Default.ToString()]; i++; } if (transitionNext == null) { return(null); } return(ReadActivityDefinition(transitionNext.WfadIdTo)); }
public void CreateActivityDefinition(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivityDefinition) { wfActivityDefinition.WfwdId = (int)wfWorkflowDefinition.WfwdId; int id = (int)BrokerManager.GetBroker <WfActivityDefinition>().Save(wfActivityDefinition); wfActivityDefinition.WfadId = id; }
public void CreateActivityDefinition(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivityDefinition) { int generatedId = Interlocked.Increment(ref memoryActivityDefinitionSequenceGenerator); wfActivityDefinition.WfadId = generatedId; inMemoryActivityDefinitionStore[generatedId] = wfActivityDefinition; }
public IList <WfActivityDefinition> FindAllDefaultActivityDefinitions(WfWorkflowDefinition wfWorkflowDefinition, int startingPos = 0) { Debug.Assert(wfWorkflowDefinition != null); //--- int?idStartActivity = wfWorkflowDefinition.WfadId; IList <WfActivityDefinition> retAllDefaultActivities = new List <WfActivityDefinition>(); if (idStartActivity != null) { WfActivityDefinition first = inMemoryActivityDefinitionStore[idStartActivity]; retAllDefaultActivities.Add(first); WfTransitionDefinition transitionNext; transitionsNext.TryGetValue(idStartActivity + "|" + WfCodeTransition.Default.ToString(), out transitionNext); while (transitionNext != null) { WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo]; retAllDefaultActivities.Add(wfNextActivityDefinition); transitionsNext.TryGetValue(wfNextActivityDefinition.WfadId + "|" + WfCodeTransition.Default.ToString(), out transitionNext); } } return(retAllDefaultActivities); }
public void UpdateWorkflowDefinition(WfWorkflowDefinition wfWorkflowDefinition) { Debug.Assert(wfWorkflowDefinition != null); Debug.Assert(wfWorkflowDefinition.WfwdId != null); Debug.Assert(inMemoryWorkflowDefinitionStore.ContainsKey(wfWorkflowDefinition.WfwdId), "This activity cannot be updated : It does not exist in the store"); //--- inMemoryWorkflowDefinitionStore[wfWorkflowDefinition.WfwdId] = wfWorkflowDefinition; }
public WfWorkflowDefinition Build() { WfWorkflowDefinition wfTransitionDefinition = new WfWorkflowDefinition(); wfTransitionDefinition.WfadId = myWfadId; wfTransitionDefinition.CreationDate = myCreationDate; wfTransitionDefinition.Name = myName; return(wfTransitionDefinition); }
public IList <WfDecision> FindAllDecisionsByWorkflowDefinitionId(WfWorkflowDefinition wfWorkflowDefinition) { Debug.Assert(wfWorkflowDefinition != null); //-- var cmd = GetSqlServerCommand("FindAllDecisionsByWorkflowDefinitionId.sql"); cmd.Parameters.AddWithValue(WfWorkflowDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId.Value); return(new List <WfDecision>(cmd.ReadList <WfDecision>())); }
public IList <WfWorkflow> FindActiveWorkflows(WfWorkflowDefinition wfWorkflowDefinition, bool isForUpdate) { Debug.Assert(wfWorkflowDefinition != null); //-- var cmd = GetSqlServerCommand("FindActiveWorkflowsForUpdate.sql"); cmd.Parameters.AddWithValue(WfWorkflow.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId); cmd.Parameters.AddWithValue(LOCK, isForUpdate); return(new List <WfWorkflow>(cmd.ReadList <WfWorkflow>())); }
public IList <WfActivityDefinition> FindAllDefaultActivityDefinitions(WfWorkflowDefinition wfWorkflowDefinition) { var cmd = GetSqlServerCommand("FindAllDefaultActivityDefinitions.sql"); cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId); cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.NAME, WfCodeTransition.Default.ToString()); IList <WfActivityDefinition> activities = new List <WfActivityDefinition>(cmd.ReadList <WfActivityDefinition>()); return(activities); }
public WfActivityDefinition FindActivityDefinitionByPosition(WfWorkflowDefinition wfWorkflowDefinition, int position) { var cmd = GetSqlServerCommand("FindActivityDefinitionByPosition.sql"); cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId); cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.LEVEL, position); WfActivityDefinition activity = cmd.ReadScalar <WfActivityDefinition>(); return(activity); }
public WfActivityDefinition FindActivityDefinitionByPosition(WfWorkflowDefinition wfWorkflowDefinition, int position) { var cmd = GetSqlServerCommand("FindActivityDefinitionByPosition.sql"); cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.WFWD_ID, wfWorkflowDefinition.WfwdId); cmd.Parameters.AddWithValue(WfActivityDefinition.Cols.LEVEL, position); WfActivityDefinition activity = CollectionBuilder <WfActivityDefinition> .ParseCommandForSingleObject(cmd, true); return(activity); }
public IList <WfWorkflow> FindActiveWorkflows(WfWorkflowDefinition wfWorkflowDefinition, bool isForUpdate) { IList <WfWorkflow> collect = new List <WfWorkflow>(); foreach (WfWorkflow wfWorkflow in inMemoryWorkflowInstanceStore.Values) { WfCodeStatusWorkflow status = (WfCodeStatusWorkflow)Enum.Parse(typeof(WfCodeStatusWorkflow), wfWorkflow.WfsCode, true); if (wfWorkflowDefinition.WfwdId.Equals(wfWorkflow.WfwId) && (status == WfCodeStatusWorkflow.Sta || status == WfCodeStatusWorkflow.Pau)) { collect.Add(wfWorkflow); } } return(collect); }
public IList <WfActivityDefinition> FindAllDefaultActivityDefinitions(WfWorkflowDefinition wfWorkflowDefinition) { Debug.Assert(wfWorkflowDefinition != null); //--- long?idStartActivity = wfWorkflowDefinition.WfadId; IList <WfActivityDefinition> retAllDefaultActivities = new List <WfActivityDefinition>(); WfTransitionDefinition transitionNext = transitionsNext[idStartActivity + "|" + WfCodeTransition.Default.ToString()]; while (transitionNext != null) { WfActivityDefinition wfNextActivityDefinition = inMemoryActivityDefinitionStore[transitionNext.WfadIdTo]; retAllDefaultActivities.Add(wfNextActivityDefinition); transitionNext = transitionsNext[wfNextActivityDefinition.WfadId + "|" + WfCodeTransition.Default.ToString()]; } return(retAllDefaultActivities); }
public void StartInstance(WfWorkflow wfWorkflow) { Debug.Assert(wfWorkflow == null); Debug.Assert(WfCodeStatusWorkflow.Sta.ToString().Equals(wfWorkflow.WfsCode), "A workflow must be started before pausing"); //--- wfWorkflow.WfsCode = WfCodeStatusWorkflow.Sta.ToString(); WfWorkflowDefinition wfWorkflowDefinition = _workflowStorePlugin.ReadWorkflowDefinition((int)wfWorkflow.WfwdId); WfActivity wfActivityCurrent = new WfActivity(); wfActivityCurrent.CreationDate = new DateTime(); wfActivityCurrent.WfadId = (int)wfWorkflowDefinition.WfadId; _workflowStorePlugin.CreateActivity(wfActivityCurrent); wfWorkflow.WfaId2 = wfActivityCurrent.WfaId; _workflowStorePlugin.UpdateWorkflowInstance(wfWorkflow); AutoValidateNextActivities(wfWorkflow, (int)wfWorkflowDefinition.WfadId); }
public WfWorkflow CreateWorkflowInstance(string definitionName, string user, bool userLogic, int item) { Debug.Assert(definitionName != null); Debug.Assert(user != null); //--- WfWorkflowDefinition wfWorkflowDefinition = _workflowStorePlugin.ReadWorkflowDefinition(definitionName); WfWorkflow wfWorkflow = new WfWorkflow(); wfWorkflow.CreationDate = new DateTime(); wfWorkflow.ItemId = item; wfWorkflow.WfsCode = WfCodeStatusWorkflow.Cre.ToString(); wfWorkflow.WfwdId = wfWorkflowDefinition.WfwdId; wfWorkflow.WfaId2 = wfWorkflowDefinition.WfadId; wfWorkflow.UserLogic = userLogic; wfWorkflow.User = user; _workflowStorePlugin.CreateWorkflowInstance(wfWorkflow); return(wfWorkflow); }
public void AddActivity(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivityDefinitionToAdd, int position) { WfActivityDefinition wfActivityDefinition = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, position); if (wfActivityDefinition == null) { // Inserting a activity in trail int size = _workflowStorePlugin.CountDefaultTransitions(wfWorkflowDefinition); Debug.Assert(size == Math.Max(0, position - 2), "Position is not valid"); wfActivityDefinitionToAdd.Level = position; _workflowStorePlugin.CreateActivityDefinition(wfWorkflowDefinition, wfActivityDefinitionToAdd); //Find the previous activity to add a link to the newly created if (position == 2) { WfTransitionDefinition wfTransitionDefinition = new WfTransitionBuilder(wfWorkflowDefinition.WfadId, wfActivityDefinitionToAdd.WfadId).build(); _workflowStorePlugin.AddTransition(wfTransitionDefinition); } else if (position > 2) { WfActivityDefinition wfActivityDefinitionPrevious = _workflowStorePlugin.FindActivityDefinitionByPosition(wfWorkflowDefinition, position - 2); WfTransitionDefinition wfTransitionDefinition = new WfTransitionBuilder(wfActivityDefinitionPrevious.WfadId, wfActivityDefinitionToAdd.WfadId).build(); _workflowStorePlugin.AddTransition(wfTransitionDefinition); } else { //Saving starting activity wfWorkflowDefinition.WfadId = wfActivityDefinitionToAdd.WfadId; _workflowStorePlugin.UpdateWorkflowDefinition(wfWorkflowDefinition); } } else { // Inserting an activity inside the default activities "linked list" _workflowStorePlugin.CreateActivityDefinition(wfWorkflowDefinition, wfActivityDefinitionToAdd); // Automatically move the next activity after the newly created MoveActivity(wfWorkflowDefinition, wfActivityDefinitionToAdd, wfActivityDefinition, false); } }
public IList <WfActivity> FindAllActivitiesByWorkflowDefinitionId(WfWorkflowDefinition wfWorkflowDefinition) { Debug.Assert(wfWorkflowDefinition != null); //--- IList <WfActivity> wfActivities = new List <WfActivity>(); IList <WfActivityDefinition> activityDefinitions = FindAllDefaultActivityDefinitions(wfWorkflowDefinition); foreach (WfActivity wfActivity in inMemoryActivityStore.Values) { foreach (WfActivityDefinition wdActivityDefinition in activityDefinitions) { if (wdActivityDefinition.WfadId.Equals(wfActivity.WfadId)) { wfActivities.Add(wfActivity); } } } return(wfActivities); }
public void CreateWorkflowDefinition(WfWorkflowDefinition workflowDefinition) { int id = (int)BrokerManager.GetBroker <WfWorkflowDefinition>().Save(workflowDefinition); workflowDefinition.WfwdId = id; }
public void UpdateWorkflowDefinition(WfWorkflowDefinition wfWorkflowDefinition) { BrokerManager.GetBroker <WfWorkflowDefinition>().Save(wfWorkflowDefinition); }
public IList <WfDecision> FindAllDecisionsByWorkflowDefinitionId(WfWorkflowDefinition wfWorkflowDefinition) { throw new NotImplementedException(); }
public void CreateWorkflowDefinition(WfWorkflowDefinition wfWorkflowDefinition) { _workflowStorePlugin.CreateWorkflowDefinition(wfWorkflowDefinition); }
public void MoveActivity(WfWorkflowDefinition wfWorkflowDefinition, WfActivityDefinition wfActivity, WfActivityDefinition wfActivityReferential, bool after) { ///TODO throw new NotImplementedException(); }