public void CreateDecision(WfDecision wfDecision) { int generatedId = Interlocked.Increment(ref memoryDecisionSequenceGenerator); wfDecision.Id = generatedId; inMemoryDecisionStore[generatedId] = wfDecision; }
public void AddActivityDecision(WfActivity wfAct, WfDecision wfDecision) { ActivitiesDecisions.Add(new WfActivityDecision() { Activity = wfAct, Decision = wfDecision }); }
public void UpdateDecision(WfDecision wfDecision) { Debug.Assert(wfDecision != null); Debug.Assert(wfDecision.Id != null); Debug.Assert(inMemoryDecisionStore.ContainsKey(wfDecision.Id), "This workflow cannot be updated : It does not exist in the store"); //--- inMemoryDecisionStore[wfDecision.Id] = wfDecision; }
public void SaveDecision(WfWorkflow wfWorkflow, WfDecision wfDecision) { Debug.Assert(WfCodeStatusWorkflow.Sta.ToString().Equals(wfWorkflow.WfsCode), "A workflow must be started before saving decision"); //--- WfActivity currentActivity = _workflowStorePlugin.ReadActivity((int)wfWorkflow.WfaId2); // Attach decision to the activity wfDecision.WfaId = (int)currentActivity.WfaId; _workflowStorePlugin.CreateDecision(wfDecision); }
private WfActivity AutoValidateActivity(WfActivityDefinition wfNextActivityDefinition) { //Automatic validation of this activity DateTime now = new DateTime(); WfActivity wfActivityCurrent = new WfActivity(); wfActivityCurrent.CreationDate = now; wfActivityCurrent.WfadId = (int)wfNextActivityDefinition.WfadId; _workflowStorePlugin.CreateActivity(wfActivityCurrent); WfDecision decision = new WfDecision(); decision.User = USER_AUTO; decision.DecisionDate = now; return(wfActivityCurrent); }
public void CreateDecision(WfDecision wfDecision) { int id = (int)BrokerManager.GetBroker <WfDecision>().Save(wfDecision); wfDecision.Id = id; }
public void DeleteDecision(WfDecision wfDecision) { inMemoryDecisionStore.Remove(wfDecision.Id); }
public void SaveDecisionAndGoToNextActivity(WfWorkflow wfWorkflow, string transitionName, WfDecision wfDecision) { Debug.Assert(WfCodeStatusWorkflow.Sta.ToString().Equals(wfWorkflow.WfsCode), "A workflow must be started before saving decision"); //--- WfActivity currentActivity = _workflowStorePlugin.ReadActivity((int)wfWorkflow.WfaId2); // Updating the decision SaveDecision(wfWorkflow, wfDecision); WfActivityDefinition currentActivityDefinition = _workflowStorePlugin.ReadActivityDefinition(currentActivity.WfadId); WfCodeMultiplicityDefinition wfCodeMultiplicityDefinition = (WfCodeMultiplicityDefinition)Enum.Parse(typeof(WfCodeMultiplicityDefinition), currentActivityDefinition.WfmdCode); bool canGoToNextActivity = false; if (wfCodeMultiplicityDefinition == WfCodeMultiplicityDefinition.Mul) { IList <WfDecision> wfDecisions = _workflowStorePlugin.FindAllDecisionByActivity(currentActivity); object obj = _itemStorePlugin.ReadItem((int)wfWorkflow.ItemId); RuleConstants ruleConstants = _ruleManager.GetConstants((int)wfWorkflow.WfwdId); IList <AccountUser> accounts = _ruleManager.SelectAccounts(currentActivity.WfadId, obj, ruleConstants); //TODO : better impl than O(n²) int match = 0; foreach (AccountUser account in accounts) { foreach (WfDecision decision in wfDecisions) { if (account.Id.Equals(decision.User)) { match++; break; } } } if (match == accounts.Count) { canGoToNextActivity = true; } } else { canGoToNextActivity = true; } if (canGoToNextActivity) { if (_workflowStorePlugin.HasNextActivity(currentActivity, transitionName)) { WfActivityDefinition nextActivityDefinition = _workflowStorePlugin.FindNextActivity(currentActivity, transitionName); //Autovalidating next activities AutoValidateNextActivities(wfWorkflow, (int)nextActivityDefinition.WfadId); WfActivity lastAutoValidateActivity = _workflowStorePlugin.ReadActivity((int)wfWorkflow.WfaId2); WfActivityDefinition nextActivityDefinitionPrepare = _workflowStorePlugin.FindNextActivity(lastAutoValidateActivity); DateTime now = new DateTime(); // Creating the next activity to validate. WfActivity nextActivity = new WfActivity(); nextActivity.CreationDate = now; nextActivity.WfadId = (int)nextActivityDefinitionPrepare.WfadId; nextActivity.WfwId = (int)wfWorkflow.WfwId; _workflowStorePlugin.CreateActivity(nextActivity); wfWorkflow.WfaId2 = nextActivity.WfaId; _workflowStorePlugin.UpdateWorkflowInstance(wfWorkflow); } else { // No next activity to go. Ending the workflow wfWorkflow.WfsCode = WfCodeStatusWorkflow.End.ToString(); _workflowStorePlugin.UpdateWorkflowInstance(wfWorkflow); } } }
public void SaveDecisionAndGoToNextActivity(WfWorkflow wfWorkflow, WfDecision wfDecision) { SaveDecisionAndGoToNextActivity(wfWorkflow, WfCodeTransition.Default.ToString(), wfDecision); }
public void DeleteDecision(WfDecision wfDecision) { BrokerManager.GetBroker <WfDecision>().Delete(wfDecision.Id.Value); }
public void UpdateDecision(WfDecision wfDecision) { BrokerManager.GetBroker <WfDecision>().Save(wfDecision); }