Package org.jbpm.pvm.internal.model

Examples of org.jbpm.pvm.internal.model.EventImpl


            }
        }
    }

    private void addEventListener(JpdlProcessDefinition processDefinition, String eventName) {
        EventImpl event = processDefinition.getEvent(eventName);
        if (event == null) {
            event = processDefinition.createEvent(eventName);
        }
        boolean found = false;
        if (event.getListenerReferences() != null) {
            for (EventListenerReference start : event.getListenerReferences()) {
                if (start.getEventListener() == listener) {
                    found = true;
                    break;
                }
            }
        }
        if (!found) {
            event.createEventListenerReference(listener);
        }
    }
View Full Code Here


 
  private static Log log = Log.getLog(ExecuteEventListener.class.getName());
 
  public boolean isAsync(ExecutionImpl execution) {
    int eventListenerIndex = execution.getEventListenerIndex();
    EventImpl event = execution.getEvent();
   
    if ( (eventListenerIndex==0)
         && (event.isAsync())
       ) {
      return true;
    }
   
    List<EventListenerReference> eventListenerReferences = event.getListenerReferences();
    if ( (eventListenerReferences==null)
         || (eventListenerReferences.isEmpty())
       ) {
      return false;
    }
View Full Code Here

    EventListenerReference eventListenerReference = eventListenerReferences.get(eventListenerIndex);
    return eventListenerReference.isAsync();
  }

  public void perform(ExecutionImpl execution) {
    EventImpl event = execution.getEvent();
    ObservableElementImpl observableElement = event.getObservableElement();
    int eventListenerIndex = execution.getEventListenerIndex();
    List<EventListenerReference> eventListenerReferences = event.getListenerReferences();
    if ( (eventListenerReferences!=null)
         && (!eventListenerReferences.isEmpty())
       ) {
      EventListenerReference eventListenerReference = eventListenerReferences.get(eventListenerIndex);
      ObservableElement eventSource = execution.getEventSource();
      if ((eventSource == observableElement) || (eventListenerReference.isPropagationEnabled())) {
        EventListener eventListener = eventListenerReference.get();
        log.trace("executing " + eventListener + " for " + event);
        try {
          // TODO can/should this invocation be unified with the exception handler invocation of the event notification method?
          eventListener.notify(execution);
        } catch (Exception e) {
          log.trace("exception during action: " + e);
          execution.handleException((ObservableElementImpl) observableElement, event, eventListenerReference, e, "couldn't run action " + eventListener);
        }
      }
      // increment the event listener index
      eventListenerIndex++;
      execution.setEventListenerIndex(eventListenerIndex);
    }
   
    // if there are more listeners in this event
    if ( (eventListenerReferences!=null)
         && (eventListenerIndex < eventListenerReferences.size())
       ) {
      // execute the next listener
      execution.performAtomicOperation(AtomicOperation.EXECUTE_EVENT_LISTENER);

    } else {
      // there are no more listeners in this event

      ObservableElementImpl parent = observableElement.getParent();
      // find the next event with listeners
      EventImpl propagatedEvent = ExecutionImpl.findEvent(parent, event.getName());

      // if there is an propagated event with listeners
      if (propagatedEvent != null) {
        // propagate to the that event
        execution.setEvent(propagatedEvent);
View Full Code Here

     
    } else if (eventSource instanceof TransitionImpl) {
      asyncExecutionInfo.put(KEY_EVENT_SOURCE_TRANSITION, null);
    }

    EventImpl event = execution.getEvent();
    asyncExecutionInfo.put(KEY_EVENT_OBSERVABLE_PARENT_LEVEL, getEventObservableParentLevel(eventSource, event.getObservableElement()));
    asyncExecutionInfo.put(KEY_EVENT_NAME, event.getName());
   
    asyncExecutionInfo.put(KEY_EVENT_LISTENER_INDEX, execution.getEventListenerIndex());
   
    AtomicOperation eventCompletedOperation = execution.getEventCompletedOperation();
    String eventCompletedOperationText = null;
View Full Code Here

    for (int i=0; i<parentLevel; parentLevel++) {
      observableElement = observableElement.getParent();
    }
   
    String eventName = (String) asyncExecutionInfo.get(KEY_EVENT_NAME);
    EventImpl event = observableElement.getEvent(eventName);
    execution.setEvent(event);
   
    Integer eventListenerIndex = (Integer) asyncExecutionInfo.get(KEY_EVENT_LISTENER_INDEX);
    execution.setEventListenerIndex(eventListenerIndex);
View Full Code Here

    }
  }

  public void parseOnEvent(Element element, Parse parse, ObservableElementImpl observableElement, String eventName) {
    if (eventName!=null) {
      EventImpl event = observableElement.getEvent(eventName);
      if (event==null) {
        event = observableElement.createEvent(eventName);
      }
     
      String continuationText = XmlUtil.attribute(element, "continue");
      if (continuationText!=null) {
        if ("async".equals(continuationText)) {
          event.setContinuation(Continuation.ASYNCHRONOUS);
        } else if ("exclusive".equals(continuationText)) {
          event.setContinuation(Continuation.EXCLUSIVE);
        }
      }

      for (Element eventListenerElement: XmlUtil.elements(element)) {
        JpdlBinding eventBinding = (JpdlBinding) getBinding(eventListenerElement, CATEGORY_EVENT_LISTENER);
        if (eventBinding!=null) {
          EventListener eventListener = (EventListener) eventBinding.parse(eventListenerElement, parse, this);
          EventListenerReference eventListenerReference = event.createEventListenerReference(eventListener);
         
          if (XmlUtil.attributeBoolean(eventListenerElement, "propagation", false, parse, false)) {
            eventListenerReference.setPropagationEnabled(true);
          }
         
View Full Code Here

  }

  public static void parseMailEvent(Element element, Parse parse,
      ObservableElementImpl observableElement, String eventName) {
    // obtain assign event
    EventImpl event = observableElement.getEvent(eventName);
    if (event == null) {
      event = observableElement.createEvent(eventName);
    }
    // register event listener
    MailListener eventListener = new MailListener();
    EventListenerReference eventListenerRef = event.createEventListenerReference(eventListener);
    // set continuation mode
    String continuationText = XmlUtil.attribute(element, "continue");
    if ("async".equals(continuationText)) {
      eventListenerRef.setContinuation(Continuation.ASYNCHRONOUS);
    }
View Full Code Here

     
    } else if (eventSource instanceof TransitionImpl) {
      asyncExecutionInfo.put(KEY_EVENT_SOURCE_TRANSITION, null);
    }

    EventImpl event = execution.getEvent();
    asyncExecutionInfo.put(KEY_EVENT_OBSERVABLE_PARENT_LEVEL, getEventObservableParentLevel(eventSource, event.getObservableElement()));
    asyncExecutionInfo.put(KEY_EVENT_NAME, event.getName());
   
    asyncExecutionInfo.put(KEY_EVENT_LISTENER_INDEX, execution.getEventListenerIndex());
   
    AtomicOperation eventCompletedOperation = execution.getEventCompletedOperation();
    String eventCompletedOperationText = null;
View Full Code Here

    for (int i=0; i<parentLevel; parentLevel++) {
      observableElement = observableElement.getParent();
    }
   
    String eventName = (String) asyncExecutionInfo.get(KEY_EVENT_NAME);
    EventImpl event = observableElement.getEvent(eventName);
    execution.setEvent(event);
   
    Integer eventListenerIndex = (Integer) asyncExecutionInfo.get(KEY_EVENT_LISTENER_INDEX);
    execution.setEventListenerIndex(eventListenerIndex);
View Full Code Here

 
  private static Log log = Log.getLog(ExecuteEventListener.class.getName());
 
  public boolean isAsync(ExecutionImpl execution) {
    int eventListenerIndex = execution.getEventListenerIndex();
    EventImpl event = execution.getEvent();
   
    if ( (eventListenerIndex==0)
         && (event.isAsync())
       ) {
      return true;
    }
   
    List<EventListenerReference> eventListenerReferences = event.getListenerReferences();
    if ( (eventListenerReferences==null)
         || (eventListenerReferences.isEmpty())
       ) {
      return false;
    }
View Full Code Here

TOP

Related Classes of org.jbpm.pvm.internal.model.EventImpl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.