Пример #1
0
        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);
        }
Пример #2
0
        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);
        }