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); }
public override void AddListenerToParent(ActivitiListener listener, BaseElement parentElement) { if (parentElement is UserTask) { ((UserTask)parentElement).TaskListeners.Add(listener); } }
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); } }
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); } }
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()); }
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)); }
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); }
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); }
public virtual ITransactionDependentExecutionListener CreateTransactionDependentDelegateExpressionExecutionListener(ActivitiListener activitiListener) { return(new DelegateExpressionTransactionDependentExecutionListener(expressionManager.CreateExpression(activitiListener.Implementation))); }
public virtual IExecutionListener CreateDelegateExpressionExecutionListener(ActivitiListener activitiListener) { return(new DelegateExpressionExecutionListener(expressionManager.CreateExpression(activitiListener.Implementation), CreateFieldDeclarations(activitiListener.FieldExtensions))); }
public virtual IExecutionListener CreateExpressionExecutionListener(ActivitiListener activitiListener) { return(new ExpressionExecutionListener(expressionManager.CreateExpression(activitiListener.Implementation))); }
public virtual IExecutionListener CreateClassDelegateExecutionListener(ActivitiListener activitiListener) { return(classDelegateFactory.Create(activitiListener.Implementation, CreateFieldDeclarations(activitiListener.FieldExtensions))); }
public virtual ICustomPropertiesResolver CreateDelegateExpressionCustomPropertiesResolver(ActivitiListener activitiListener) { return(new DelegateExpressionCustomPropertiesResolver(expressionManager.CreateExpression(activitiListener.CustomPropertiesResolverImplementation))); }
public virtual ICustomPropertiesResolver CreateClassDelegateCustomPropertiesResolver(ActivitiListener activitiListener) { return(classDelegateFactory.Create(activitiListener.CustomPropertiesResolverImplementation, null)); }
public abstract void AddListenerToParent(ActivitiListener listener, BaseElement parentElement);