Search in sources :

Example 26 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class KieCDIExtension method addKSessionBean.

public void addKSessionBean(AfterBeanDiscovery abd, KieCDIEntry entry) {
    ReleaseId releaseId = entry.getReleaseId();
    // default to classpath, but allow it to be overriden
    KieContainerImpl kieContainer = classpathKContainer;
    if (releaseId != null) {
        kieContainer = (KieContainerImpl) gavs.get(releaseId);
        if (kieContainer == null) {
            log.error("Unable to create KSession({}), could not retrieve KieContainer for ReleaseId {}", entry.getValue(), releaseId.toString());
            return;
        }
    }
    KieProject kProject = kieContainer.getKieProject();
    String kSessionName = entry.getValue();
    KieSessionModel kSessionModel = null;
    if (StringUtils.isEmpty(kSessionName)) {
        kSessionModel = (entry.getType() == KieSession.class) ? kProject.getDefaultKieSession() : kProject.getDefaultStatelessKieSession();
    } else {
        kSessionModel = kProject.getKieSessionModel(kSessionName);
    }
    if (kSessionModel == null) {
        log.error("Annotation @KSession({}) found, but no KieSessionModel exists.\nEither the required kmodule.xml does not exist, is corrupted, or is missing the KieBase entry", kSessionName);
        return;
    }
    if (kSessionModel.getScope() != null && !kSessionModel.getScope().trim().equals(entry.getScope().getClass().getName())) {
        try {
            if (kSessionModel.getScope().indexOf('.') >= 0) {
                entry.setScope((Class<? extends Annotation>) Class.forName(kSessionModel.getScope()));
            } else {
                entry.setScope((Class<? extends Annotation>) Class.forName("javax.enterprise.context." + kSessionModel.getScope()));
            }
        } catch (ClassNotFoundException e) {
            log.error("KieBaseModule {} overrides default annotation, but it was not able to find it {}\n{}", new String[] { kSessionName, kSessionModel.getScope(), e.getMessage() });
        }
    }
    if (KieSessionType.STATELESS.equals(kSessionModel.getType())) {
        if (log.isDebugEnabled()) {
            InternalKieModule kModule = kProject.getKieModuleForKBase(((KieSessionModelImpl) kSessionModel).getKieBaseModel().getName());
            log.debug("Added Bean for Stateless @KSession({}) from: {}", kSessionName, kModule);
        }
        abd.addBean(new StatelessKSessionBean(kSessionModel, kieContainer, entry.getKReleaseId(), entry.getScope(), entry.getName(), entry.getInjectionPoints()));
    } else {
        InternalKieModule kModule = kProject.getKieModuleForKBase(((KieSessionModelImpl) kSessionModel).getKieBaseModel().getName());
        log.debug("Added Bean for Stateful @KSession({})  from: {}", kSessionName, kModule);
        abd.addBean(new StatefulKSessionBean(kSessionName, kSessionModel, kieContainer, entry.getKReleaseId(), entry.getScope(), entry.getName(), entry.getInjectionPoints()));
    }
}
Also used : KieSessionModelImpl(org.drools.compiler.kproject.models.KieSessionModelImpl) KieProject(org.drools.compiler.kie.builder.impl.KieProject) KieContainerImpl(org.drools.compiler.kie.builder.impl.KieContainerImpl) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) KReleaseId(org.kie.api.cdi.KReleaseId) ReleaseId(org.kie.api.builder.ReleaseId) KieSessionModel(org.kie.api.builder.model.KieSessionModel) InternalKieModule(org.drools.compiler.kie.builder.impl.InternalKieModule)

Example 27 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class SimulateTestBase method createKJar.

protected ReleaseId createKJar(String... pairs) throws IOException {
    KieServices ks = KieServices.Factory.get();
    KieModuleModel kproj = ks.newKieModuleModel();
    KieFileSystem kfs = ks.newKieFileSystem();
    for (int i = 0; i < pairs.length; i += 2) {
        String id = pairs[i];
        String rule = pairs[i + 1];
        kfs.write("src/main/resources/" + id.replaceAll("\\.", "/") + "/rule" + i + ".drl", rule);
        KieBaseModel kBase1 = kproj.newKieBaseModel(id).setEqualsBehavior(EqualityBehaviorOption.EQUALITY).setEventProcessingMode(EventProcessingOption.STREAM).addPackage(id);
        KieSessionModel ksession1 = kBase1.newKieSessionModel(id + ".KSession1").setType(KieSessionModel.KieSessionType.STATEFUL).setClockType(ClockTypeOption.get("pseudo"));
    }
    kfs.writeKModuleXML(kproj.toXML());
    // buildAll() automatically adds the module to the kieRepository
    KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll();
    assertTrue(kieBuilder.getResults().getMessages().isEmpty());
    KieModule kieModule = kieBuilder.getKieModule();
    return kieModule.getReleaseId();
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieFileSystem(org.kie.api.builder.KieFileSystem) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieServices(org.kie.api.KieServices) KieBuilder(org.kie.api.builder.KieBuilder) KieModule(org.kie.api.builder.KieModule) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Example 28 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class WireListenerTest method build.

private void build(KieServices ks, ReleaseId releaseId) throws IOException {
    KieModuleModel kproj = ks.newKieModuleModel();
    KieSessionModel ksession1 = kproj.newKieBaseModel("KBase1").newKieSessionModel("KSession1").setDefault(true);
    ksession1.newListenerModel(RecordingWorkingMemoryEventListener.class.getName(), ListenerModel.Kind.RULE_RUNTIME_EVENT_LISTENER);
    KieFileSystem kfs = ks.newKieFileSystem();
    kfs.writeKModuleXML(kproj.toXML()).writePomXML(generatePomXml(releaseId)).write("src/main/resources/KBase1/rules.drl", createDRL());
    KieBuilder kieBuilder = ks.newKieBuilder(kfs);
    assertTrue(kieBuilder.buildAll().getResults().getMessages().isEmpty());
}
Also used : KieFileSystem(org.kie.api.builder.KieFileSystem) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieBuilder(org.kie.api.builder.KieBuilder) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Example 29 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class ChangeSetBuilderTest method createKieProjectWithPackages.

private KieModuleModel createKieProjectWithPackages(KieServices ks, ReleaseId releaseId) {
    KieModuleModel kproj = ks.newKieModuleModel();
    KieBaseModel kieBaseModel1 = kproj.newKieBaseModel("KBase1").setEqualsBehavior(EqualityBehaviorOption.EQUALITY).setEventProcessingMode(EventProcessingOption.STREAM).addPackage("org.pkg1");
    KieSessionModel ksession1 = kieBaseModel1.newKieSessionModel("KSession1").setType(KieSessionType.STATEFUL).setClockType(ClockTypeOption.get("realtime"));
    return kproj;
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Example 30 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class PMML4Compiler method buildResourceFromSegment.

protected PMMLResource buildResourceFromSegment(PMML pmml_origin, MiningSegment segment, ClassLoader classLoader, KieModuleModel module) {
    PMML pmml = new PMML();
    DataDictionary dd = pmml_origin.getDataDictionary();
    pmml.setDataDictionary(dd);
    pmml.setHeader(pmml_origin.getHeader());
    pmml.getAssociationModelsAndBaselineModelsAndClusteringModels().add(segment.getModel().getRawModel());
    addMissingFieldDefinition(pmml, segment.getOwner(), segment);
    // PMML4Helper.pmmlDefaultPackageName()+".mining.segment_"+segment.getSegmentId());
    helper.setPack(segment.getModel().getModelPackageName());
    String rules = this.compile(pmml, classLoader);
    KieBaseModel kbModel = module.newKieBaseModel(segment.getOwner().getOwner().getModelId() + "_" + segment.getOwner().getSegmentationId() + "_SEGMENT_" + segment.getSegmentId());
    kbModel.addPackage(helper.getPack()).setDefault(false).setEventProcessingMode(EventProcessingOption.CLOUD);
    KieSessionModel ksm = kbModel.newKieSessionModel("SEGMENT_" + segment.getSegmentId());
    ksm.setDefault(true);
    PMMLResource resource = new PMMLResource(helper.getPack());
    resource.setKieBaseModel(kbModel);
    resource.addRules(segment.getModel().getModelId(), rules);
    return resource;
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) PMMLResource(org.drools.compiler.compiler.PMMLResource) PMML(org.kie.dmg.pmml.pmml_4_2.descr.PMML) DataDictionary(org.kie.dmg.pmml.pmml_4_2.descr.DataDictionary) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Aggregations

KieSessionModel (org.kie.api.builder.model.KieSessionModel)31 KieModuleModel (org.kie.api.builder.model.KieModuleModel)25 KieBaseModel (org.kie.api.builder.model.KieBaseModel)24 KieServices (org.kie.api.KieServices)18 Test (org.junit.Test)15 ReleaseId (org.kie.api.builder.ReleaseId)15 KieContainer (org.kie.api.runtime.KieContainer)14 KieSession (org.kie.api.runtime.KieSession)11 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)10 KieFileSystem (org.kie.api.builder.KieFileSystem)8 KieBuilder (org.kie.api.builder.KieBuilder)6 InternalKieContainer (org.drools.core.impl.InternalKieContainer)5 KieModule (org.kie.api.builder.KieModule)5 InternalKieModule (org.drools.compiler.kie.builder.impl.InternalKieModule)4 PseudoClockScheduler (org.drools.core.time.impl.PseudoClockScheduler)4 MBeanServer (javax.management.MBeanServer)3 ObjectName (javax.management.ObjectName)3 KieBase (org.kie.api.KieBase)3 StringReader (java.io.StringReader)2 ArrayList (java.util.ArrayList)2