package hu.bme.mit.incquery.cep.tests.evm.integration.main; import hu.bme.mit.incquery.cep.api.evm.ObservedComplexEventPattern; import hu.bme.mit.incquery.cep.tests.evm.integration.evmspecific.CepActivationStates; import hu.bme.mit.incquery.cep.tests.evm.integration.evmspecific.CepEventFilter; import hu.bme.mit.incquery.cep.tests.evm.integration.evmspecific.CepEventSourceSpecification; import hu.bme.mit.incquery.cep.tests.evm.integration.evmspecific.CepEventType; import hu.bme.mit.incquery.cep.tests.evm.integration.evmspecific.CepRealm; import java.util.Set; import org.apache.log4j.Level; import org.eclipse.incquery.runtime.evm.api.Activation; import org.eclipse.incquery.runtime.evm.api.ActivationLifeCycle; import org.eclipse.incquery.runtime.evm.api.Context; import org.eclipse.incquery.runtime.evm.api.EventDrivenVM; import org.eclipse.incquery.runtime.evm.api.Job; import org.eclipse.incquery.runtime.evm.api.RuleEngine; import org.eclipse.incquery.runtime.evm.api.RuleSpecification; import org.eclipse.incquery.runtime.evm.api.event.EventType.RuleEngineEventType; import org.junit.Test; import com.google.common.collect.Sets; public class EvmIntegration { @Test public void testEvmIntegration2() { CepRealm cepRealm = new CepRealm(); RuleEngine engine = EventDrivenVM.createRuleEngine(cepRealm); engine.getLogger().setLevel(Level.DEBUG); ActivationLifeCycle lifeCycle = ActivationLifeCycle.create(CepActivationStates.IS_NOT); lifeCycle.addStateTransition(CepActivationStates.IS_NOT, CepEventType.APPEARED, CepActivationStates.IS); lifeCycle.addStateTransition(CepActivationStates.IS, RuleEngineEventType.FIRE, CepActivationStates.IS_NOT); Job<ObservedComplexEventPattern> job = new Job<ObservedComplexEventPattern>(CepActivationStates.IS) { @Override protected void execute(Activation<? extends ObservedComplexEventPattern> activation, Context context) { System.out.println("Complex event pattern observed:" + activation.getAtom().getObservableEventPattern().getId()); } @Override protected void handleError(Activation<? extends ObservedComplexEventPattern> activation, Exception exception, Context context) { // not gonna happen } }; CepEventSourceSpecification sourceSpec = new CepEventSourceSpecification(); @SuppressWarnings("unchecked") Set<Job<ObservedComplexEventPattern>> jobs = Sets.newHashSet(job); RuleSpecification<ObservedComplexEventPattern> ruleSpec = new RuleSpecification<ObservedComplexEventPattern>( sourceSpec, lifeCycle, jobs); CepEventFilter filter = new CepEventFilter(); engine.addRule(ruleSpec, filter); cepRealm.generateEvent(CepEventType.APPEARED); engine.getNextActivation().fire(Context.create()); } }