コード例 #1
0
        public bool IsCriteriaSatisfied(Criteria criteria, int nbOccurrence)
        {
            if (criteria.SEntry.IfPart != null && criteria.SEntry.IfPart.Condition != null)
            {
                if (!ExpressionParser.IsValid(criteria.SEntry.IfPart.Condition, ExecutionContext))
                {
                    return(false);
                }
            }

            foreach (var planItemOnPart in criteria.SEntry.PlanItemOnParts)
            {
                var id     = BaseCasePlanItemInstance.BuildId(AggregateId, planItemOnPart.SourceRef, nbOccurrence);
                var source = GetCasePlanItem(id);
                if (planItemOnPart.StandardEvent != source.LatestTransition)
                {
                    return(false);
                }
            }

            foreach (var caseItemOnPart in criteria.SEntry.FileItemOnParts)
            {
                var id     = CaseFileItemInstance.BuildId(AggregateId, caseItemOnPart.SourceRef);
                var source = GetCaseFileItem(id);
                if (caseItemOnPart.StandardEvent != source.LatestTransition)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public static CasePlanInstanceAggregate New(string id, CasePlanAggregate caseplan, ICollection <CasePlanInstanceRole> permissions, Dictionary <string, string> parameters)
        {
            var result = new CasePlanInstanceAggregate();
            var roles  = caseplan.Roles.Select(_ => new CasePlanInstanceRole
            {
                Id   = _.Id,
                Name = _.Name
            }).ToList();
            var files = caseplan.Files.Select(_ => new CaseFileItemInstance
            {
                DefinitionType = _.DefinitionType,
                EltId          = _.Id,
                Id             = CaseFileItemInstance.BuildId(id, _.Id),
                Name           = _.Name
            }).ToList();
            var stage = CMMNParser.ExtractStage(caseplan.XmlContent, id);
            var json  = stage.ToJson();
            var evt   = new CasePlanInstanceCreatedEvent(Guid.NewGuid().ToString(), id, 0, caseplan.CaseOwner, roles, permissions, json, DateTime.UtcNow, caseplan.AggregateId, caseplan.Name, parameters, files);

            result.Handle(evt);
            result.DomainEvents.Add(evt);
            return(result);
        }