Search in sources :

Example 6 with NamedEntryPoint

use of org.drools.kiesession.entrypoints.NamedEntryPoint in project drools by kiegroup.

the class TraitHelperImpl method update.

public void update(final FactHandle handle, BitMask mask, Class<?> modifiedClass, Activation activation) {
    InternalFactHandle h = (InternalFactHandle) handle;
    ((NamedEntryPoint) h.getEntryPoint(workingMemory)).update(h, ((InternalFactHandle) handle).getObject(), mask, modifiedClass, activation);
    if (h.isTraitOrTraitable()) {
        workingMemory.updateTraits(h, mask, modifiedClass, activation);
    }
}
Also used : NamedEntryPoint(org.drools.kiesession.entrypoints.NamedEntryPoint) InternalFactHandle(org.drools.core.common.InternalFactHandle)

Example 7 with NamedEntryPoint

use of org.drools.kiesession.entrypoints.NamedEntryPoint in project drools by kiegroup.

the class TraitHelperImpl method updateManyTraits.

private void updateManyTraits(Object object, BitMask mask, Collection<Thing> originators, Class<?> modifiedClass, Collection<Thing> traits, Activation activation) {
    for (Thing t : traits) {
        if (!originators.contains(t)) {
            InternalFactHandle h = (InternalFactHandle) lookupFactHandle(t);
            if (h != null) {
                NamedEntryPoint nep = (NamedEntryPoint) h.getEntryPoint(workingMemory);
                PropagationContext propagationContext = nep.getPctxFactory().createPropagationContext(nep.getReteEvaluator().getNextPropagationIdCounter(), PropagationContext.Type.MODIFICATION, activation != null ? activation.getRule() : null, activation != null ? activation.getTuple().getTupleSink() : null, h, nep.getEntryPoint(), mask, modifiedClass, null);
                nep.update(h, t, t, nep.getObjectTypeConfigurationRegistry().getObjectTypeConf(t), propagationContext);
            }
        }
    }
}
Also used : PropagationContext(org.drools.core.spi.PropagationContext) NamedEntryPoint(org.drools.kiesession.entrypoints.NamedEntryPoint) InternalFactHandle(org.drools.core.common.InternalFactHandle) Thing(org.drools.core.factmodel.traits.Thing)

Example 8 with NamedEntryPoint

use of org.drools.kiesession.entrypoints.NamedEntryPoint in project drools by kiegroup.

the class FactHandleMarshallingTest method createEventFactHandle.

private InternalFactHandle createEventFactHandle(StatefulKnowledgeSessionImpl wm, InternalKnowledgeBase kBase) {
    // EntryPointNode
    Rete rete = kBase.getRete();
    NodeFactory nFacotry = CoreComponentFactory.get().getNodeFactoryService();
    RuleBasePartitionId partionId = RuleBasePartitionId.MAIN_PARTITION;
    EntryPointNode entryPointNode = nFacotry.buildEntryPointNode(1, partionId, false, rete, EntryPointId.DEFAULT);
    WorkingMemoryEntryPoint wmEntryPoint = new NamedEntryPoint(EntryPointId.DEFAULT, entryPointNode, wm);
    EventFactHandle factHandle = new EventFactHandle(1, new Person(), 0, (new Date()).getTime(), 0, wmEntryPoint);
    return factHandle;
}
Also used : EntryPointNode(org.drools.core.reteoo.EntryPointNode) Rete(org.drools.core.reteoo.Rete) NodeFactory(org.drools.core.reteoo.builder.NodeFactory) RuleBasePartitionId(org.drools.core.common.RuleBasePartitionId) NamedEntryPoint(org.drools.kiesession.entrypoints.NamedEntryPoint) EventFactHandle(org.drools.core.common.EventFactHandle) WorkingMemoryEntryPoint(org.drools.core.WorkingMemoryEntryPoint) Person(org.drools.mvel.compiler.Person) Date(java.util.Date)

Example 9 with NamedEntryPoint

use of org.drools.kiesession.entrypoints.NamedEntryPoint in project drools by kiegroup.

the class ConstraintNormalizationTest method testNormalizationForAlphaIndexing.

@Test
public void testNormalizationForAlphaIndexing() {
    final String str = "package org.drools.test;\n" + "import " + Person.class.getCanonicalName() + ";\n" + "rule R1 when \n" + " $p : Person(\"Toshiya\" == name)\n" + "then\n" + "end\n" + "rule R2 when \n" + " $p : Person(\"Mario\" == name)\n" + "then\n" + "end\n" + "rule R3 when \n" + " $p : Person(\"Luca\" == name)\n" + "then\n" + "end\n";
    final KieSession ksession = getKieSession(str);
    ObjectTypeNode otn = ((NamedEntryPoint) ksession.getEntryPoint("DEFAULT")).getEntryPointNode().getObjectTypeNodes().entrySet().stream().filter(e -> e.getKey().getClassName().equals(Person.class.getCanonicalName())).map(e -> e.getValue()).findFirst().get();
    ObjectSinkPropagator objectSinkPropagator = otn.getObjectSinkPropagator();
    CompositeObjectSinkAdapter sinkAdaptor = (CompositeObjectSinkAdapter) objectSinkPropagator;
    assertNotNull(sinkAdaptor.getHashedSinkMap());
    assertEquals(3, sinkAdaptor.getHashedSinkMap().size());
    final Person p = new Person("Toshiya", 45);
    ksession.insert(p);
    assertEquals(1, ksession.fireAllRules());
}
Also used : ObjectSinkPropagator(org.drools.core.reteoo.ObjectSinkPropagator) Assert.assertNotNull(org.junit.Assert.assertNotNull) Address(org.drools.modelcompiler.domain.Address) HashMap(java.util.HashMap) Test(org.junit.Test) Toy(org.drools.modelcompiler.domain.Toy) FactType(org.kie.api.definition.type.FactType) AlphaNode(org.drools.core.reteoo.AlphaNode) CompositeObjectSinkAdapter(org.drools.core.reteoo.CompositeObjectSinkAdapter) ArrayList(java.util.ArrayList) BigDecimal(java.math.BigDecimal) List(java.util.List) Map(java.util.Map) Assertions(org.assertj.core.api.Assertions) Person(org.drools.modelcompiler.domain.Person) NamedEntryPoint(org.drools.kiesession.entrypoints.NamedEntryPoint) KieSession(org.kie.api.runtime.KieSession) ObjectTypeNode(org.drools.core.reteoo.ObjectTypeNode) Assert.assertEquals(org.junit.Assert.assertEquals) ObjectSinkPropagator(org.drools.core.reteoo.ObjectSinkPropagator) ObjectTypeNode(org.drools.core.reteoo.ObjectTypeNode) KieSession(org.kie.api.runtime.KieSession) CompositeObjectSinkAdapter(org.drools.core.reteoo.CompositeObjectSinkAdapter) Person(org.drools.modelcompiler.domain.Person) Test(org.junit.Test)

Example 10 with NamedEntryPoint

use of org.drools.kiesession.entrypoints.NamedEntryPoint in project drools by kiegroup.

the class ProtobufOutputMarshaller method writeTruthMaintenanceSystem.

public static void writeTruthMaintenanceSystem(MarshallerWriteContext context, EntryPoint wmep, ProtobufMessages.EntryPoint.Builder _epb) throws IOException {
    TruthMaintenanceSystem tms = TruthMaintenanceSystemFactory.get().getOrCreateTruthMaintenanceSystem((NamedEntryPoint) wmep);
    ObjectHashMap justifiedMap = tms.getEqualityKeyMap();
    if (!justifiedMap.isEmpty()) {
        EqualityKey[] keys = new EqualityKey[justifiedMap.size()];
        org.drools.core.util.Iterator it = justifiedMap.iterator();
        int i = 0;
        for (org.drools.core.util.ObjectHashMap.ObjectEntry entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next(); entry != null; entry = (org.drools.core.util.ObjectHashMap.ObjectEntry) it.next()) {
            EqualityKey key = (EqualityKey) entry.getKey();
            keys[i++] = key;
        }
        Arrays.sort(keys, EqualityKeySorter.instance);
        ProtobufMessages.TruthMaintenanceSystem.Builder _tms = ProtobufMessages.TruthMaintenanceSystem.newBuilder();
        // write the assert map of Equality keys
        for (EqualityKey key : keys) {
            ProtobufMessages.EqualityKey.Builder _key = ProtobufMessages.EqualityKey.newBuilder();
            _key.setStatus(key.getStatus());
            _key.setHandleId(key.getFactHandle().getId());
            if (key.size() > 1) {
                // add all the other key's if they exist
                FastIterator keyIter = key.fastIterator();
                for (DefaultFactHandle handle = key.getFirst().getNext(); handle != null; handle = (DefaultFactHandle) keyIter.next(handle)) {
                    _key.addOtherHandle(handle.getId());
                }
            }
            if (((TruthMaintenanceSystemEqualityKey) key).getBeliefSet() != null) {
                writeBeliefSet(context, ((TruthMaintenanceSystemEqualityKey) key).getBeliefSet(), _key);
            }
            _tms.addKey(_key.build());
        }
        _epb.setTms(_tms.build());
    }
}
Also used : TruthMaintenanceSystem(org.drools.core.common.TruthMaintenanceSystem) ObjectHashMap(org.drools.core.util.ObjectHashMap) WorkingMemoryEntryPoint(org.drools.core.WorkingMemoryEntryPoint) NamedEntryPoint(org.drools.kiesession.entrypoints.NamedEntryPoint) EntryPoint(org.kie.api.runtime.rule.EntryPoint) DefaultFactHandle(org.drools.core.common.DefaultFactHandle) TruthMaintenanceSystemEqualityKey(org.drools.tms.TruthMaintenanceSystemEqualityKey) EqualityKey(org.drools.core.common.EqualityKey) FastIterator(org.drools.core.util.FastIterator)

Aggregations

NamedEntryPoint (org.drools.kiesession.entrypoints.NamedEntryPoint)18 Test (org.junit.Test)9 KieSession (org.kie.api.runtime.KieSession)8 ArrayList (java.util.ArrayList)6 InternalFactHandle (org.drools.core.common.InternalFactHandle)6 List (java.util.List)5 TruthMaintenanceSystemEqualityKey (org.drools.tms.TruthMaintenanceSystemEqualityKey)5 FactHandle (org.kie.api.runtime.rule.FactHandle)5 WorkingMemoryEntryPoint (org.drools.core.WorkingMemoryEntryPoint)4 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)4 ObjectHashMap (org.drools.core.util.ObjectHashMap)4 ObjectTypeConf (org.drools.core.reteoo.ObjectTypeConf)3 ObjectEntry (org.drools.core.util.ObjectHashMap.ObjectEntry)3 Person (org.drools.mvel.compiler.Person)3 BigDecimal (java.math.BigDecimal)2 Date (java.util.Date)2 ClassObjectType (org.drools.core.base.ClassObjectType)2 DefaultFactHandle (org.drools.core.common.DefaultFactHandle)2 EventFactHandle (org.drools.core.common.EventFactHandle)2 TruthMaintenanceSystem (org.drools.core.common.TruthMaintenanceSystem)2