コード例 #1
0
        protected internal virtual bool evaluateCondition(ConditionSet conditionSet, ActivityImpl activity)
        {
            ExecutionEntity temporaryExecution = new ExecutionEntity();

            if (conditionSet.Variables != null)
            {
                temporaryExecution.initializeVariableStore(conditionSet.Variables);
            }
            temporaryExecution.setProcessDefinition(activity.ProcessDefinition);

            ConditionalEventDefinition conditionalEventDefinition = activity.Properties.get(BpmnProperties.CONDITIONAL_EVENT_DEFINITION);

            if (string.ReferenceEquals(conditionalEventDefinition.VariableName, null) || conditionSet.Variables.containsKey(conditionalEventDefinition.VariableName))
            {
                return(conditionalEventDefinition.tryEvaluate(temporaryExecution));
            }
            else
            {
                return(false);
            }
        }
コード例 #2
0
        protected internal virtual IList <ConditionHandlerResult> evaluateConditionStartByProcessDefinitionId(CommandContext commandContext, ConditionSet conditionSet, string processDefinitionId)
        {
            DeploymentCache         deploymentCache   = commandContext.ProcessEngineConfiguration.DeploymentCache;
            ProcessDefinitionEntity processDefinition = deploymentCache.findDeployedProcessDefinitionById(processDefinitionId);

            IList <ConditionHandlerResult> results = new List <ConditionHandlerResult>();

            if (processDefinition != null && !processDefinition.Suspended)
            {
                IList <ActivityImpl> activities = findConditionalStartEventActivities(processDefinition);
                if (activities.Count == 0)
                {
                    throw LOG.exceptionWhenEvaluatingConditionalStartEventByProcessDefinition(processDefinitionId);
                }
                foreach (ActivityImpl activity in activities)
                {
                    if (evaluateCondition(conditionSet, activity))
                    {
                        results.Add(new ConditionHandlerResult(processDefinition, activity));
                    }
                }
            }
            return(results);
        }
コード例 #3
0
        protected internal virtual IList <EventSubscriptionEntity> findConditionalStartEventSubscriptions(CommandContext commandContext, ConditionSet conditionSet)
        {
            EventSubscriptionManager eventSubscriptionManager = commandContext.EventSubscriptionManager;

            if (conditionSet.isTenantIdSet)
            {
                return(eventSubscriptionManager.findConditionalStartEventSubscriptionByTenantId(conditionSet.TenantId));
            }
            else
            {
                return(eventSubscriptionManager.findConditionalStartEventSubscription());
            }
        }
コード例 #4
0
        protected internal virtual IList <ConditionHandlerResult> evaluateConditionStartByEventSubscription(CommandContext commandContext, ConditionSet conditionSet)
        {
            IList <EventSubscriptionEntity> subscriptions = findConditionalStartEventSubscriptions(commandContext, conditionSet);

            if (subscriptions.Count == 0)
            {
                throw LOG.exceptionWhenEvaluatingConditionalStartEvent();
            }
            IList <ConditionHandlerResult> results = new List <ConditionHandlerResult>();

            foreach (EventSubscriptionEntity subscription in subscriptions)
            {
                ProcessDefinitionEntity processDefinition = subscription.ProcessDefinition;
                if (!processDefinition.Suspended)
                {
                    ActivityImpl activity = subscription.Activity;

                    if (evaluateCondition(conditionSet, activity))
                    {
                        results.Add(new ConditionHandlerResult(processDefinition, activity));
                    }
                }
            }

            return(results);
        }
コード例 #5
0
 public virtual IList <ConditionHandlerResult> evaluateStartCondition(CommandContext commandContext, ConditionSet conditionSet)
 {
     if (string.ReferenceEquals(conditionSet.ProcessDefinitionId, null))
     {
         return(evaluateConditionStartByEventSubscription(commandContext, conditionSet));
     }
     else
     {
         return(evaluateConditionStartByProcessDefinitionId(commandContext, conditionSet, conditionSet.ProcessDefinitionId));
     }
 }