Ejemplo n.º 1
0
        protected internal virtual IBaseTaskListener CreateTaskListener(ActivitiListener activitiListener)
        {
            IBaseTaskListener taskListener = null;

            IListenerFactory listenerFactory = Context.ProcessEngineConfiguration.ListenerFactory;

            if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                taskListener = listenerFactory.CreateClassDelegateTaskListener(activitiListener);
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                taskListener = listenerFactory.CreateExpressionTaskListener(activitiListener);
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                if (activitiListener.OnTransaction is object)
                {
                    taskListener = listenerFactory.CreateTransactionDependentDelegateExpressionTaskListener(activitiListener);
                }
                else
                {
                    taskListener = listenerFactory.CreateDelegateExpressionTaskListener(activitiListener);
                }
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_INSTANCE.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                taskListener = (ITaskListener)activitiListener.Instance;
            }
            return(taskListener);
        }
Ejemplo n.º 2
0
 public override void AddListenerToParent(ActivitiListener listener, BaseElement parentElement)
 {
     if (parentElement is UserTask)
     {
         ((UserTask)parentElement).TaskListeners.Add(listener);
     }
 }
Ejemplo n.º 3
0
 public override void AddListenerToParent(ActivitiListener listener, BaseElement parentElement)
 {
     if (parentElement is IHasExecutionListeners)
     {
         if (string.IsNullOrWhiteSpace(listener.Event) && parentElement is SequenceFlow)
         {
             // No event type on a sequenceflow = 'take' implied
             listener.Event = "take";
         }
         ((IHasExecutionListeners)parentElement).ExecutionListeners.Add(listener);
     }
 }
Ejemplo n.º 4
0
        protected internal virtual void AddTransactionListener(ActivitiListener activitiListener, ITransactionListener transactionListener)
        {
            ITransactionContext transactionContext = Context.TransactionContext;

            if (TransactionDependentExecutionListenerFields.ON_TRANSACTION_BEFORE_COMMIT.Equals(activitiListener.OnTransaction))
            {
                transactionContext.AddTransactionListener(TransactionState.COMMITTING, transactionListener);
            }
            else if (TransactionDependentExecutionListenerFields.ON_TRANSACTION_COMMITTED.Equals(activitiListener.OnTransaction))
            {
                transactionContext.AddTransactionListener(TransactionState.COMMITTED, transactionListener);
            }
            else if (TransactionDependentExecutionListenerFields.ON_TRANSACTION_ROLLED_BACK.Equals(activitiListener.OnTransaction))
            {
                transactionContext.AddTransactionListener(TransactionState.ROLLED_BACK, transactionListener);
            }
        }
Ejemplo n.º 5
0
        public override void ParseChildElement(XMLStreamReader xtr, BaseElement parentElement, BpmnModel model)
        {
            ActivitiListener listener = new ActivitiListener();

            BpmnXMLUtil.AddXMLLocation(listener, xtr);
            if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CLASS)))
            {
                listener.Implementation     = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CLASS);
                listener.ImplementationType = ImplementationType.IMPLEMENTATION_TYPE_CLASS;
            }
            else if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_EXPRESSION)))
            {
                listener.Implementation     = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_EXPRESSION);
                listener.ImplementationType = ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION;
            }
            else if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_DELEGATEEXPRESSION)))
            {
                listener.Implementation     = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_DELEGATEEXPRESSION);
                listener.ImplementationType = ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION;
            }
            listener.Event         = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_EVENT);
            listener.OnTransaction = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_ON_TRANSACTION);

            if (!string.IsNullOrWhiteSpace((xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CUSTOM_PROPERTIES_RESOLVER_CLASS))))
            {
                listener.CustomPropertiesResolverImplementation     = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CUSTOM_PROPERTIES_RESOLVER_CLASS);
                listener.CustomPropertiesResolverImplementationType = ImplementationType.IMPLEMENTATION_TYPE_CLASS;
            }
            else if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CUSTOM_PROPERTIES_RESOLVER_EXPRESSION)))
            {
                listener.CustomPropertiesResolverImplementation     = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CUSTOM_PROPERTIES_RESOLVER_EXPRESSION);
                listener.CustomPropertiesResolverImplementationType = ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION;
            }
            else if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CUSTOM_PROPERTIES_RESOLVER_DELEGATEEXPRESSION)))
            {
                listener.CustomPropertiesResolverImplementation     = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_LISTENER_CUSTOM_PROPERTIES_RESOLVER_DELEGATEEXPRESSION);
                listener.CustomPropertiesResolverImplementationType = ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION;
            }
            AddListenerToParent(listener, parentElement);
            ParseChildElements(xtr, listener, model, new FieldExtensionParser());
        }
Ejemplo n.º 6
0
        protected internal virtual void PlanTransactionDependentExecutionListener(IListenerFactory listenerFactory, IExecutionEntity execution, ITransactionDependentExecutionListener executionListener, ActivitiListener activitiListener)
        {
            IDictionary <string, object> executionVariablesToUse  = execution.Variables;
            ICustomPropertiesResolver    customPropertiesResolver = CreateCustomPropertiesResolver(activitiListener);
            IDictionary <string, object> customPropertiesMapToUse = InvokeCustomPropertiesResolver(execution, customPropertiesResolver);

            TransactionDependentExecutionListenerExecutionScope scope = new TransactionDependentExecutionListenerExecutionScope(execution.ProcessInstanceId, execution.Id, execution.CurrentFlowElement, executionVariablesToUse, customPropertiesMapToUse);

            AddTransactionListener(activitiListener, new ExecuteExecutionListenerTransactionListener(executionListener, scope));
        }
Ejemplo n.º 7
0
        protected internal virtual ICustomPropertiesResolver CreateCustomPropertiesResolver(ActivitiListener activitiListener)
        {
            ICustomPropertiesResolver customPropertiesResolver = null;
            IListenerFactory          listenerFactory          = Context.ProcessEngineConfiguration.ListenerFactory;

            if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.Equals(activitiListener.CustomPropertiesResolverImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                customPropertiesResolver = listenerFactory.CreateClassDelegateCustomPropertiesResolver(activitiListener);
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.Equals(activitiListener.CustomPropertiesResolverImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                customPropertiesResolver = listenerFactory.CreateExpressionCustomPropertiesResolver(activitiListener);
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.Equals(activitiListener.CustomPropertiesResolverImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                customPropertiesResolver = listenerFactory.CreateDelegateExpressionCustomPropertiesResolver(activitiListener);
            }
            return(customPropertiesResolver);
        }
Ejemplo n.º 8
0
        protected internal virtual IExecutionListener CreateExecutionListener(BpmnParse bpmnParse, ActivitiListener activitiListener)
        {
            IExecutionListener executionListener = null;

            if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                executionListener = bpmnParse.ListenerFactory.CreateClassDelegateExecutionListener(activitiListener);
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_EXPRESSION.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                executionListener = bpmnParse.ListenerFactory.CreateExpressionExecutionListener(activitiListener);
            }
            else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.Equals(activitiListener.ImplementationType, StringComparison.CurrentCultureIgnoreCase))
            {
                executionListener = bpmnParse.ListenerFactory.CreateDelegateExpressionExecutionListener(activitiListener);
            }
            return(executionListener);
        }
Ejemplo n.º 9
0
 public virtual ITransactionDependentExecutionListener CreateTransactionDependentDelegateExpressionExecutionListener(ActivitiListener activitiListener)
 {
     return(new DelegateExpressionTransactionDependentExecutionListener(expressionManager.CreateExpression(activitiListener.Implementation)));
 }
Ejemplo n.º 10
0
 public virtual IExecutionListener CreateDelegateExpressionExecutionListener(ActivitiListener activitiListener)
 {
     return(new DelegateExpressionExecutionListener(expressionManager.CreateExpression(activitiListener.Implementation), CreateFieldDeclarations(activitiListener.FieldExtensions)));
 }
Ejemplo n.º 11
0
 public virtual IExecutionListener CreateExpressionExecutionListener(ActivitiListener activitiListener)
 {
     return(new ExpressionExecutionListener(expressionManager.CreateExpression(activitiListener.Implementation)));
 }
Ejemplo n.º 12
0
 public virtual IExecutionListener CreateClassDelegateExecutionListener(ActivitiListener activitiListener)
 {
     return(classDelegateFactory.Create(activitiListener.Implementation, CreateFieldDeclarations(activitiListener.FieldExtensions)));
 }
Ejemplo n.º 13
0
 public virtual ICustomPropertiesResolver CreateDelegateExpressionCustomPropertiesResolver(ActivitiListener activitiListener)
 {
     return(new DelegateExpressionCustomPropertiesResolver(expressionManager.CreateExpression(activitiListener.CustomPropertiesResolverImplementation)));
 }
Ejemplo n.º 14
0
 public virtual ICustomPropertiesResolver CreateClassDelegateCustomPropertiesResolver(ActivitiListener activitiListener)
 {
     return(classDelegateFactory.Create(activitiListener.CustomPropertiesResolverImplementation, null));
 }
Ejemplo n.º 15
0
 public abstract void AddListenerToParent(ActivitiListener listener, BaseElement parentElement);