private static StageElementInstance BuildStage(string id, tStage stage, string casePlanInstanceId) { var planItems = BuildPlanItems(stage, casePlanInstanceId); var result = new StageElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, stage.id, 0), Name = stage.name, EltId = id }; foreach (var planItem in planItems) { result.AddChild(planItem); } if (!result.ExitCriterions.Any() && stage.exitCriterion != null) { foreach (var exitCriteria in stage.exitCriterion) { var sEntry = stage.sentry.First(s => s.id == exitCriteria.sentryRef); result.ExitCriterions.Add(new Criteria(exitCriteria.name) { SEntry = BuildSEntry(sEntry) }); } } return(result); }
private static BaseCasePlanItemInstance BuildPlanItem(string id, string name, tPlanItemDefinition planItemDef, string casePlanInstanceId) { if (string.IsNullOrWhiteSpace(name)) { name = planItemDef.name; } if (planItemDef is tHumanTask) { var humanTask = planItemDef as tHumanTask; List <tHumanTaskParameter> pars = new List <tHumanTaskParameter>(); if (humanTask.implementation == CMMNConstants.UserTaskImplementations.WSHUMANTASK) { var parameters = humanTask.extensionElements?.Any.FirstOrDefault(_ => _.Name == "cmg:parameters"); if (parameters != null) { var xmlSerializer = new XmlSerializer(typeof(tHumanTaskParameter), "https://github.com/simpleidserver/CaseManagement"); foreach (XmlNode child in parameters.ChildNodes) { using (var txtReader = new StringReader(child.OuterXml)) { pars.Add((tHumanTaskParameter)xmlSerializer.Deserialize(txtReader)); } } } } return(new HumanTaskElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name, FormId = humanTask.formId, Implemention = humanTask.implementation, InputParameters = pars.ToDictionary(kvp => kvp.key, kvp => kvp.value), PerformerRef = humanTask.performerRef }); } if (planItemDef is tTask) { return(new EmptyTaskElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name }); } if (planItemDef is tTimerEventListener) { var timer = planItemDef as tTimerEventListener; CMMNExpression expression = new CMMNExpression { Body = timer.timerExpression.Text.First(), Language = timer.timerExpression.language }; return(new TimerEventListener { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name, TimerExpression = expression }); } if (planItemDef is tMilestone) { return(new MilestoneElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name }); } if (planItemDef is tStage) { return(BuildStage(id, planItemDef as tStage, casePlanInstanceId)); } return(null); }
private static BaseCasePlanItemInstance BuildPlanItem(string id, string name, tPlanItemDefinition planItemDef, string casePlanInstanceId) { if (string.IsNullOrWhiteSpace(name)) { name = planItemDef.name; } if (planItemDef is tHumanTask) { var humanTask = planItemDef as tHumanTask; return(new HumanTaskElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name, FormId = humanTask.caseFormRef, PerformerRef = humanTask.performerRef }); } if (planItemDef is tTask) { return(new EmptyTaskElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name }); } if (planItemDef is tTimerEventListener) { var timer = planItemDef as tTimerEventListener; CMMNExpression expression = new CMMNExpression { Body = timer.timerExpression.Text.First(), Language = timer.timerExpression.language }; return(new TimerEventListener { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name, TimerExpression = expression }); } if (planItemDef is tMilestone) { return(new MilestoneElementInstance { Id = BaseCasePlanItemInstance.BuildId(casePlanInstanceId, id, 0), EltId = id, NbOccurrence = 0, Name = name }); } if (planItemDef is tStage) { return(BuildStage(planItemDef as tStage, casePlanInstanceId)); } return(null); }