protected List<Object> extractJustificationList(RuleContext kcontext) { // Unlike kcontext.getMatch().getObjects(), this includes the matches of accumulate and exists return ((org.drools.core.spi.Activation) kcontext.getMatch()).getObjectsDeep(); }
protected boolean checkProcessInstance(Activation activation) { final Map<?, ?> declarations = activation.getSubRule().getOuterDeclarations(); for ( Iterator<?> it = declarations.values().iterator(); it.hasNext(); ) { Declaration declaration = (Declaration) it.next(); if ("processInstance".equals(declaration.getIdentifier()) || "org.kie.api.runtime.process.WorkflowProcessInstance".equals(declaration.getTypeName())) { Object value = declaration.getValue( ((StatefulKnowledgeSessionImpl) getProcessInstance().getKnowledgeRuntime()).getInternalWorkingMemory(), ((InternalFactHandle) activation.getTuple().get(declaration)).getObject()); if (value instanceof ProcessInstance) { return ((ProcessInstance) value).getId() == getProcessInstance().getId(); } } } return true; }
@Override public int getValue( KnowledgeHelper khelper, Rule rule, WorkingMemory workingMemory ) { if ( khelper == null ) { return 0; } InternalFactHandle h = (InternalFactHandle) khelper.getMatch().getFactHandles().get( 0 ); return ( (Person) h.getObject() ).getAge(); }
public final int compare(final Activation existing, final Activation adding) { final int s1 = existing.getSalience(); final int s2 = adding.getSalience(); if (s1 != s2) { return s1 - s2; } // we know that no two activations will have the same number return (int) (existing.getActivationNumber() - adding.getActivationNumber()); }
StatefulKnowledgeSession ksession= createKSession(); ksession.fireAllRules(new AgendaFilter() { public boolean accept(Activation activation) { Map<String, Object> metaData = activation.getRule().getMetaData(); if (metaData.containsKey("LegalRequirement")) { System.out.println(metaData.get("LegalRequirement")); } return true; } });
@Test public void testOptimised() { final Random random = new Random(); final List items = new LinkedList(); final BinaryHeapQueue queue = new BinaryHeapQueue( NaturalComparator.INSTANCE, 100000 ); for ( int i = 0; i < 100000; ++i ) { items.add( new LongQueueable( queue, random.nextLong() ) ); } final long startEnqueue = System.currentTimeMillis(); for ( final Iterator i = items.iterator(); i.hasNext(); ) { queue.enqueue( (Activation) i.next() ); } final long elapsedEnqueue = System.currentTimeMillis() - startEnqueue; final long startDequeue = System.currentTimeMillis(); for ( final Iterator i = items.iterator(); i.hasNext(); ) { ((Activation) i.next()).dequeue(); } // while (!queue.isEmpty()) { // queue.dequeue(); // } final long elapsedDequeue = System.currentTimeMillis() - startDequeue; // System.out.println( "elapsedEnqueue = " + elapsedEnqueue ); // System.out.println( "elapsedDequeue = " + elapsedDequeue ); }
protected boolean checkProcessInstance(Activation activation) { final Map<?, ?> declarations = activation.getSubRule().getOuterDeclarations(); for ( Iterator<?> it = declarations.values().iterator(); it.hasNext(); ) { Declaration declaration = (Declaration) it.next(); if ("processInstance".equals(declaration.getIdentifier()) || "org.kie.api.runtime.process.WorkflowProcessInstance".equals(declaration.getTypeName())) { Object value = declaration.getValue( ((StatefulKnowledgeSessionImpl) getProcessInstance().getKnowledgeRuntime()).getInternalWorkingMemory(), ((InternalFactHandle) activation.getTuple().get(declaration)).getObject()); if (value instanceof ProcessInstance) { return ((ProcessInstance) value).getId() == getProcessInstance().getId(); } } } return true; }