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); }