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