public CriteriaResult IsExitCriteriaSatisfied(BaseCasePlanItemInstance elt)
        {
            if (elt.ExitCriterions == null || !elt.ExitCriterions.Any())
            {
                return(CriteriaResult.NotSatisifed());
            }

            var res = elt.ExitCriterions.Select(c => IsCriteriaSatisfied(c)).FirstOrDefault(c => c.IsSatisfied);

            return(res == null?CriteriaResult.NotSatisifed() : res);
        }
Пример #2
0
        public CriteriaResult IsEntryCriteriaSatisfied(CaseEltInstance elt)
        {
            if (elt.EntryCriterions == null || !elt.EntryCriterions.Any())
            {
                return(CriteriaResult.Empty());
            }

            var res = elt.EntryCriterions.Select(_ => IsCriteriaSatisfied(_)).FirstOrDefault(_ => _.IsSatisfied);

            return(res == null?CriteriaResult.NotSatisifed() : res);
        }
        public CriteriaResult IsCriteriaSatisfied(Criteria criteria)
        {
            var data = new Dictionary <string, string>();

            if (criteria.SEntry.IfPart != null && criteria.SEntry.IfPart.Condition != null)
            {
                if (!ExpressionParser.IsValid(criteria.SEntry.IfPart.Condition, ExecutionContext))
                {
                    return(CriteriaResult.NotSatisifed());
                }
            }

            foreach (var planItemOnPart in criteria.SEntry.PlanItemOnParts)
            {
                if (!planItemOnPart.IsConsumed)
                {
                    return(CriteriaResult.NotSatisifed());
                }

                if (planItemOnPart.IncomingTokens != null)
                {
                    foreach (var kvp in planItemOnPart.IncomingTokens)
                    {
                        data.Add(kvp.Key, kvp.Value);
                    }
                }
            }

            foreach (var caseItemOnPart in criteria.SEntry.FileItemOnParts)
            {
                if (!caseItemOnPart.IsConsumed)
                {
                    return(CriteriaResult.NotSatisifed());
                }

                if (caseItemOnPart.IncomingTokens != null)
                {
                    foreach (var kvp in caseItemOnPart.IncomingTokens)
                    {
                        data.Add(kvp.Key, kvp.Value);
                    }
                }
            }

            return(CriteriaResult.Satisfied(data));
        }