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