/** collects the full stack of parent in a list. This node is the * first element in the chain. The process definition will be the last element. * the chain will never be null. */ public List<ObservableElementImpl> getParentChain() { List<ObservableElementImpl> chain = new ArrayList<ObservableElementImpl>(); ObservableElementImpl processElement = this; while (processElement!=null) { chain.add(processElement); processElement = processElement.getParent(); } return chain; }
/** this method enables specific process languages to overwrite the event propagation behaviour */ protected void propagateEvent(String eventName, ObservableElement eventSource, ObservableElementImpl observableElement) { fire(eventName, eventSource, observableElement.getParent()); }
/** searches for an event up the process element parent hierarchy starting * from the given process element and returns an event or null if no such * event exists. */ EventImpl findEvent(String eventName, ObservableElementImpl observableElement) { EventImpl event = null; while ( (event==null) && (observableElement!=null) ) { event = (EventImpl) observableElement.getEvent(eventName); if (event==null) { observableElement = observableElement.getParent(); } } return event; }
observableElement = observableElement.getParent();