public virtual IDmnDecisionResult GenerateDecisionResult(IDmnDecisionLogicEvaluationEvent @event)
        {
            var evaluationResult = (IDmnDecisionTableEvaluationEvent)@event;

            IList <IDmnDecisionResultEntries> ruleResults = new List <IDmnDecisionResultEntries>();

            if (!ReferenceEquals(evaluationResult.CollectResultName, null) ||
                (evaluationResult.CollectResultValue != null))
            {
                var ruleResult = new DmnDecisionResultEntriesImpl();
                ruleResult.PutValue(evaluationResult.CollectResultName, evaluationResult.CollectResultValue);
                ruleResults.Add(ruleResult);
            }
            else
            {
                foreach (var evaluatedRule in evaluationResult.MatchingRules)
                {
                    var ruleResult = new DmnDecisionResultEntriesImpl();
                    foreach (var evaluatedOutput in evaluatedRule.OutputEntries.Values)
                    {
                        ruleResult.PutValue(evaluatedOutput.OutputName, evaluatedOutput.Value);
                    }
                    ruleResults.Add(ruleResult);
                }
            }

            return(new DmnDecisionResultImpl(ruleResults));
        }
Example #2
0
 protected internal virtual void notifyCollector(IDmnDecisionLogicEvaluationEvent evaluationEvent)
 {
     if (evaluationEvent is IDmnDecisionTableEvaluationEvent)
     {
         collector.Notify((IDmnDecisionTableEvaluationEvent)evaluationEvent);
     }
     // ignore other evaluation events since the collector is implemented as decision table evaluation listener
 }
        public virtual IDmnDecisionResult GenerateDecisionResult(IDmnDecisionLogicEvaluationEvent @event)
        {
            var evaluationEvent = (IDmnDecisionLiteralExpressionEvaluationEvent)@event;

            var result = new DmnDecisionResultEntriesImpl();

            result.Add(evaluationEvent.OutputName, evaluationEvent.OutputValue);

            return(new DmnDecisionResultImpl(new List <IDmnDecisionResultEntries> {
                result
            }));
        }
Example #4
0
        protected internal virtual HistoricDecisionInstanceEntity CreateDecisionEvaluatedEvt(
            IDmnDecisionLogicEvaluationEvent evaluationEvent, ExecutionEntity execution)
        {
            // create event instance
            var @event = NewDecisionInstanceEventEntity(execution, evaluationEvent);

            // initialize event
            InitDecisionInstanceEvent(@event, evaluationEvent, HistoryEventTypes.DmnDecisionEvaluate);
            SetReferenceToProcessInstance(@event, execution);
            // set current time as evaluation time
            @event.EvaluationTime = ClockUtil.CurrentTime;

            var decisionDefinition = (IDecisionDefinition)evaluationEvent.Decision;
            var tenantId           = execution.TenantId;

            if (ReferenceEquals(tenantId, null))
            {
                tenantId = ProvideTenantId(decisionDefinition, @event);
            }
            @event.TenantId = tenantId;
            return(@event);
        }
Example #5
0
        protected internal virtual void InitDecisionInstanceEvent(HistoricDecisionInstanceEntity @event,
                                                                  IDmnDecisionLogicEvaluationEvent evaluationEvent, HistoryEventTypes eventType)
        {
            throw new NotImplementedException();
            //@event.EventType = eventType.EventName;

            //var decision = (IDecisionDefinition) evaluationEvent.Decision;
            //@event.DecisionDefinitionId = decision.Id;
            //@event.DecisionDefinitionKey = decision.Key;
            //@event.DecisionDefinitionName = decision.Name;

            //if (!ReferenceEquals(decision.DecisionRequirementsDefinitionId, null))
            //{
            //    @event.DecisionRequirementsDefinitionId = decision.DecisionRequirementsDefinitionId;
            //    @event.DecisionRequirementsDefinitionKey = decision.DecisionRequirementsDefinitionKey;
            //}

            //if (evaluationEvent is DmnDecisionTableEvaluationEvent)
            //    InitDecisionInstanceEventForDecisionTable(@event, (DmnDecisionTableEvaluationEvent) evaluationEvent);
            //else if (evaluationEvent is DmnDecisionLiteralExpressionEvaluationEvent)
            //    InitDecisionInstanceEventForDecisionLiteralExpression(@event,
            //        (DmnDecisionLiteralExpressionEvaluationEvent) evaluationEvent);
        }
Example #6
0
        //protected internal virtual HistoricDecisionInstanceEntity CreateDecisionEvaluatedEvt(
        //    DmnDecisionLogicEvaluationEvent evaluationEvent, CaseExecutionEntity execution)
        //{
        //    // create event instance
        //    var @event = NewDecisionInstanceEventEntity(execution, evaluationEvent);
        //    // initialize event
        //    InitDecisionInstanceEvent(@event, evaluationEvent, HistoryEventTypes.DmnDecisionEvaluate);
        //    SetReferenceToCaseInstance(@event, execution);
        //    // set current time as evaluation time
        //    @event.EvaluationTime = ClockUtil.CurrentTime;

        //    var decisionDefinition = (IDecisionDefinition) evaluationEvent.Decision;
        //    var tenantId = execution.TenantId;
        //    if (ReferenceEquals(tenantId, null))
        //        tenantId = ProvideTenantId(decisionDefinition, @event);
        //    @event.TenantId = tenantId;
        //    return @event;
        //}

        protected internal virtual HistoricDecisionInstanceEntity CreateDecisionEvaluatedEvt(
            IDmnDecisionLogicEvaluationEvent evaluationEvent)
        {
            // create event instance
            var @event = NewDecisionInstanceEventEntity(evaluationEvent);

            // initialize event
            InitDecisionInstanceEvent(@event, evaluationEvent, HistoryEventTypes.DmnDecisionEvaluate);
            // set current time as evaluation time
            @event.EvaluationTime = ClockUtil.CurrentTime;
            // set the user id if there is an authenticated user and no process instance
            UserId = @event;

            var decisionDefinition = (IDecisionDefinition)evaluationEvent.Decision;
            var tenantId           = decisionDefinition.TenantId;

            if (ReferenceEquals(tenantId, null))
            {
                tenantId = ProvideTenantId(decisionDefinition, @event);
            }
            @event.TenantId = tenantId;
            return(@event);
        }
Example #7
0
        protected internal virtual void generateDecisionEvaluationEvent(
            IList <IDmnDecisionLogicEvaluationEvent> evaluatedEvents)
        {
            IDmnDecisionLogicEvaluationEvent rootEvaluatedEvent = null;
            var decisionEvaluationEvent  = new DmnDecisionEvaluationEventImpl();
            var executedDecisionElements = 0L;

            foreach (var evaluatedEvent in evaluatedEvents)
            {
                executedDecisionElements += evaluatedEvent.ExecutedDecisionElements;
                rootEvaluatedEvent        = evaluatedEvent;
            }

            decisionEvaluationEvent.DecisionResult           = rootEvaluatedEvent;
            decisionEvaluationEvent.ExecutedDecisionElements = executedDecisionElements;

            evaluatedEvents.Remove(rootEvaluatedEvent);
            decisionEvaluationEvent.RequiredDecisionResults = evaluatedEvents;

            foreach (var evaluationListener in evaluationListeners)
            {
                evaluationListener.Notify(decisionEvaluationEvent);
            }
        }
Example #8
0
 public virtual HistoricDecisionInstanceEntity CreateHistoricDecisionInstance(
     IDmnDecisionLogicEvaluationEvent evaluationEvent)
 {
     return(_outerInstance.CreateDecisionEvaluatedEvt(evaluationEvent));
 }
Example #9
0
 public virtual HistoricDecisionInstanceEntity CreateHistoricDecisionInstance(
     IDmnDecisionLogicEvaluationEvent evaluationEvent)
 {
     throw new NotImplementedException();
     //return _outerInstance.createDecisionEvaluatedEvt(evaluationEvent, (CaseExecutionEntity) _execution);
 }
Example #10
0
        //protected internal virtual HistoricDecisionInstanceEntity NewDecisionInstanceEventEntity(
        //    CaseExecutionEntity executionEntity, DmnDecisionLogicEvaluationEvent evaluationEvent)
        //{
        //    return new HistoricDecisionInstanceEntity();
        //}

        protected internal virtual HistoricDecisionInstanceEntity NewDecisionInstanceEventEntity(
            IDmnDecisionLogicEvaluationEvent evaluationEvent)
        {
            return(new HistoricDecisionInstanceEntity());
        }