001 package com.hammurapi.eventbus;
002
003 import java.util.List;
004
005 /**
006 * Information about how conclusion was derived.
007 * @author Pavel Vlasov
008 *
009 */
010 public interface Derivation<E, P extends Comparable<P>, C> {
011
012 /**
013 * @return Handler which posted this event.
014 */
015 EventHandler<E, P, C, ?, ?> getHandler();
016
017 /**
018 * @return List of handler inputs which produced this event.
019 */
020 List<E> getInputs();
021
022 /**
023 * @param event
024 * @return True if the parameter event is source of this derivation or derivations of
025 * one of parameter event derivations.
026 */
027 boolean isDerivedFrom(E sourceEvent);
028
029 long timestamp();
030
031 /**
032 * This method is invoked by event bus, not to be invoked by client code.
033 */
034 void invalidate(InferenceContext<E,P,C,?,?,?> inferenceContext);
035
036 // /**
037 // * @return true if all source facts in this derivation
038 // * are valid (has not been removed from the knowledge base).
039 // */
040 // boolean isValid();
041 //
042 // /**
043 // * @return Length of the inference chain.
044 // */
045 // int getDepth();
046 //
047 // /**
048 // * @return Total number of handlers fired to come to this conclusion.
049 // */
050 // int getCardinality();
051
052 }