private void CopyCustomizedVariableConfigurations(VariableBase customizedVar, VariableBase originalVar) { //keep original description values VariableBase originalCopy = (VariableBase)originalVar.CreateCopy(false); //ovveride original variable configurations with user customizations RepositoryItemBase.ObjectsDeepCopy(customizedVar, originalVar);//need to replace 'ObjectsDeepCopy' with AutoMapper and to map on it which values should be overiden originalVar.DiffrentFromOrigin = customizedVar.DiffrentFromOrigin; originalVar.MappedOutputVariable = customizedVar.MappedOutputVariable; //Restore original description values originalVar.Name = originalCopy.Name; originalVar.Description = originalCopy.Description; originalVar.Tags = originalCopy.Tags; originalVar.SetAsInputValue = originalCopy.SetAsInputValue; originalVar.SetAsOutputValue = originalCopy.SetAsOutputValue; originalVar.LinkedVariableName = originalCopy.LinkedVariableName; originalVar.Publish = originalCopy.Publish; //temp solution for release, find better way, issue is with the RepositoryItemBase.ObjectsDeepCopy which causing duplicated optional values if (originalVar is VariableSelectionList) { for (int indx = 0; indx < ((VariableSelectionList)originalVar).OptionalValuesList.Count; indx++) { if (((VariableSelectionList)originalVar).OptionalValuesList.Where(x => x.Value == ((VariableSelectionList)originalVar).OptionalValuesList[indx].Value).ToList().Count > 1) { ((VariableSelectionList)originalVar).OptionalValuesList.RemoveAt(indx); indx--; } } } }
public void InitRunner(GingerRunner runner) { //Configure Runner for execution runner.Status = eRunStatus.Pending; ConfigureRunnerForExecution(runner); //Set the Apps agents foreach (ApplicationAgent appagent in runner.ApplicationAgents.ToList()) { if (appagent.AgentName != null) { ObservableList <Agent> agents = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <Agent>(); appagent.Agent = (from a in agents where a.Name == appagent.AgentName select a).FirstOrDefault(); } } //Load the biz flows ObservableList <BusinessFlow> runnerFlows = new ObservableList <BusinessFlow>(); foreach (BusinessFlowRun businessFlowRun in runner.BusinessFlowsRunList.ToList()) { ObservableList <BusinessFlow> businessFlows = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <BusinessFlow>(); BusinessFlow businessFlow = (from x in businessFlows where x.Guid == businessFlowRun.BusinessFlowGuid select x).FirstOrDefault(); //Fail over to try and find by name if (businessFlow == null) { businessFlow = (from x in businessFlows where x.Name == businessFlowRun.BusinessFlowName select x).FirstOrDefault(); } if (businessFlow == null) { Reporter.ToLog(eLogLevel.ERROR, string.Format("Can not find the '{0}' {1} for the '{2}' {3}", businessFlowRun.BusinessFlowName, GingerDicser.GetTermResValue(eTermResKey.BusinessFlow), mRunSetConfig.Name, GingerDicser.GetTermResValue(eTermResKey.RunSet))); continue; } else { // Very slow BusinessFlow BFCopy = (BusinessFlow)businessFlow.CreateCopy(false); BFCopy.ContainingFolder = businessFlow.ContainingFolder; BFCopy.Reset(); BFCopy.Active = businessFlowRun.BusinessFlowIsActive; BFCopy.Mandatory = businessFlowRun.BusinessFlowIsMandatory; if (businessFlowRun.BusinessFlowInstanceGuid == Guid.Empty) { BFCopy.InstanceGuid = Guid.NewGuid(); } else { BFCopy.InstanceGuid = businessFlowRun.BusinessFlowInstanceGuid; } if (businessFlowRun.BusinessFlowCustomizedRunVariables != null && businessFlowRun.BusinessFlowCustomizedRunVariables.Count > 0) { foreach (VariableBase varb in BFCopy.GetBFandActivitiesVariabeles(true)) { VariableBase runVar = businessFlowRun.BusinessFlowCustomizedRunVariables.Where(v => v.ParentGuid == varb.ParentGuid && v.ParentName == varb.ParentName && v.Name == varb.Name).FirstOrDefault(); if (runVar == null)//for supporting dynamic run set XML in which we do not have GUID { runVar = businessFlowRun.BusinessFlowCustomizedRunVariables.Where(v => v.ParentName == varb.ParentName && v.Name == varb.Name).FirstOrDefault(); if (runVar == null) { runVar = businessFlowRun.BusinessFlowCustomizedRunVariables.Where(v => v.Name == varb.Name).FirstOrDefault(); } } if (runVar != null) { RepositoryItemBase.ObjectsDeepCopy(runVar, varb); varb.DiffrentFromOrigin = runVar.DiffrentFromOrigin; varb.MappedOutputVariable = runVar.MappedOutputVariable; } else { varb.DiffrentFromOrigin = false; varb.MappedOutputVariable = null; } } } BFCopy.RunDescription = businessFlowRun.BusinessFlowRunDescription; BFCopy.BFFlowControls = businessFlowRun.BFFlowControls; runnerFlows.Add(BFCopy); } } runner.IsUpdateBusinessFlowRunList = true; runner.BusinessFlows = runnerFlows; }
public void InitRunner(GingerRunner runner) { //Configure Runner for execution runner.Status = Amdocs.Ginger.CoreNET.Execution.eRunStatus.Pending; ConfigureRunnerForExecution(runner); //Set the Apps agents foreach (ApplicationAgent p in runner.ApplicationAgents) { if (p.AgentName != null) { p.Agent = (from a in WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <Agent>() where a.Name == p.AgentName select a).FirstOrDefault(); } } //Load the biz flows runner.BusinessFlows.Clear(); foreach (BusinessFlowRun bf in runner.BusinessFlowsRunList) { ObservableList <BusinessFlow> businessFlows = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <BusinessFlow>(); BusinessFlow BF1 = (from bfr in businessFlows where bfr.Guid == bf.BusinessFlowGuid select bfr).FirstOrDefault(); if (BF1 == null) { BF1 = (from bfr in businessFlows where bfr.Name == bf.BusinessFlowName select bfr).FirstOrDefault(); } if (BF1 == null) { Reporter.ToUser(eUserMsgKeys.CannontFindBusinessFlow, bf.BusinessFlowName); continue; } else { // Very slow BusinessFlow BFCopy = (BusinessFlow)BF1.CreateCopy(false); BFCopy.Reset(); BFCopy.Active = bf.BusinessFlowIsActive; BFCopy.Mandatory = bf.BusinessFlowIsMandatory; BFCopy.AttachActivitiesGroupsAndActivities(); if (bf.BusinessFlowInstanceGuid == Guid.Empty) { BFCopy.InstanceGuid = Guid.NewGuid(); } else { BFCopy.InstanceGuid = bf.BusinessFlowInstanceGuid; } if (bf.BusinessFlowCustomizedRunVariables != null && bf.BusinessFlowCustomizedRunVariables.Count > 0) { foreach (VariableBase varb in BFCopy.GetBFandActivitiesVariabeles(true)) { VariableBase runVar = bf.BusinessFlowCustomizedRunVariables.Where(v => v.ParentGuid == varb.ParentGuid && v.ParentName == varb.ParentName && v.Name == varb.Name).FirstOrDefault(); if (runVar != null) { RepositoryItemBase.ObjectsDeepCopy(runVar, varb); varb.DiffrentFromOrigin = runVar.DiffrentFromOrigin; varb.MappedOutputVariable = runVar.MappedOutputVariable; } else { varb.DiffrentFromOrigin = false; varb.MappedOutputVariable = null; } } } BFCopy.RunDescription = bf.BusinessFlowRunDescription; BFCopy.BFFlowControls = bf.BFFlowControls; runner.BusinessFlows.Add(BFCopy); } } }