private KieSessionModel findKieSessionModel(boolean stateless) { KieSessionModel defaultKieSessionModel = stateless ? kProject.getDefaultStatelessKieSession() : kProject.getDefaultKieSession(); if (defaultKieSessionModel == null) { throw new RuntimeException( stateless ? "Cannot find a default StatelessKieSession" : "Cannot find a default KieSession"); } return defaultKieSessionModel; }
private boolean isFileInKBase( InternalKieModule kieModule, KieBaseModel kieBase, String fileName) { if (filterFileInKBase(kieModule, kieBase, fileName)) { return true; } for (String include : kProject.getTransitiveIncludes(kieBase)) { InternalKieModule includeModule = kProject.getKieModuleForKBase(include); if (includeModule != null && filterFileInKBase(includeModule, kProject.getKieBaseModel(include), fileName)) { return true; } } return false; }
public StatelessKieSession newStatelessKieSession( String kSessionName, KieSessionConfiguration conf) { KieSessionModelImpl kSessionModel = (KieSessionModelImpl) kProject.getKieSessionModel(kSessionName); if (kSessionModel == null) { log.error("Unknown KieSession name: " + kSessionName); return null; } if (kSessionModel.getType() == KieSessionModel.KieSessionType.STATEFUL) { throw new RuntimeException( "Trying to create a stateless KieSession from a stateful KieSessionModel: " + kSessionName); } KieBase kBase = getKieBase(kSessionModel.getKieBaseModel().getName()); if (kBase == null) { log.error("Unknown KieBase name: " + kSessionModel.getKieBaseModel().getName()); return null; } StatelessKieSession statelessKieSession = kBase.newStatelessKieSession( conf != null ? conf : getKnowledgeSessionConfiguration(kSessionModel)); wireListnersAndWIHs(kSessionModel, statelessKieSession); registerLoggers(kSessionModel, statelessKieSession); statelessKSessions.put(kSessionName, statelessKieSession); return statelessKieSession; }
private KieBaseModelImpl getKieBaseModelImpl(String kBaseName) { KieBaseModelImpl kBaseModel = (KieBaseModelImpl) kProject.getKieBaseModel(kBaseName); if (kBaseModel == null) { throw new RuntimeException("The requested KieBase \"" + kBaseName + "\" does not exist"); } return kBaseModel; }
public KieBase getKieBase() { KieBaseModel defaultKieBaseModel = kProject.getDefaultKieBaseModel(); if (defaultKieBaseModel == null) { throw new RuntimeException("Cannot find a default KieBase"); } return getKieBase(defaultKieBaseModel.getName()); }
public KieBase newKieBase(KieBaseConfiguration conf) { KieBaseModel defaultKieBaseModel = kProject.getDefaultKieBaseModel(); if (defaultKieBaseModel == null) { throw new RuntimeException("Cannot find a default KieBase"); } return newKieBase(defaultKieBaseModel.getName(), conf); }
private KieBase createKieBase( KieBaseModelImpl kBaseModel, KieProject kieProject, ResultsImpl messages, KieBaseConfiguration conf) { ClassLoader cl = kieProject.getClassLoader(); InternalKieModule kModule = kieProject.getKieModuleForKBase(kBaseModel.getName()); Collection<KnowledgePackage> pkgs = kModule.getKnowledgePackagesForKieBase(kBaseModel.getName()); if (pkgs == null) { KnowledgeBuilder kbuilder = buildKnowledgePackages(kBaseModel, kieProject, messages); if (kbuilder.hasErrors()) { // Messages already populated by the buildKnowlegePackages return null; } } // if we get to here, then we know the pkgs is now cached pkgs = kModule.getKnowledgePackagesForKieBase(kBaseModel.getName()); if (kBaseModel.getEventProcessingMode() == EventProcessingOption.CLOUD && (conf == null || conf.getOption(EventProcessingOption.class) == EventProcessingOption.CLOUD)) { for (KnowledgePackage kpkg : pkgs) { if (((KnowledgePackageImpl) kpkg).needsStreamMode()) { throw new RuntimeException( "The requested KieBase \"" + kBaseModel.getName() + "\" has been set to run in CLOUD mode but requires features only available in STREAM mode"); } } } if (conf == null) { conf = getKnowledgeBaseConfiguration(kBaseModel, cl); } else if (conf instanceof RuleBaseConfiguration) { ((RuleBaseConfiguration) conf).setClassLoader(cl); } InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(conf); kBase.addKnowledgePackages(pkgs); return kBase; }
public KieBaseModel getKieBaseModel(String kBaseName) { return kProject.getKieBaseModel(kBaseName); }
public KieModule getKieModuleForKBase(String kBaseName) { return kProject.getKieModuleForKBase(kBaseName); }
public InputStream getPomAsStream() { return kProject.getPomAsStream(); }
public Collection<String> getKieSessionNamesInKieBase(String kBaseName) { KieBaseModel kieBaseModel = kProject.getKieBaseModel(kBaseName); return kieBaseModel != null ? kieBaseModel.getKieSessionModels().keySet() : Collections.<String>emptySet(); }
public Collection<String> getKieBaseNames() { return kProject.getKieBaseNames(); }
private Results update(final InternalKieModule currentKM, final ReleaseId newReleaseId) { final InternalKieModule newKM = (InternalKieModule) kr.getKieModule(newReleaseId); ChangeSetBuilder csb = new ChangeSetBuilder(); final KieJarChangeSet cs = csb.build(currentKM, newKM); final List<String> modifiedClasses = getModifiedClasses(cs); final List<String> dslFiles = getUnchangedDslFiles(newKM, cs); ((KieModuleKieProject) kProject).updateToModule(newKM); final ResultsImpl results = new ResultsImpl(); List<String> kbasesToRemove = new ArrayList<String>(); for (Entry<String, KieBase> kBaseEntry : kBases.entrySet()) { String kbaseName = kBaseEntry.getKey(); final KieBaseModel kieBaseModel = kProject.getKieBaseModel(kbaseName); // if a kbase no longer exists, just remove it from the cache if (kieBaseModel == null) { // have to save for later removal to avoid iteration errors kbasesToRemove.add(kbaseName); } else { final InternalKnowledgeBase kBase = (InternalKnowledgeBase) kBaseEntry.getValue(); boolean locked = kBase.tryLock(); if (locked) { try { updateKBase( kBase, currentKM, newReleaseId, newKM, cs, modifiedClasses, dslFiles, results, kieBaseModel); } finally { kBase.unlock(); } } else { kBase.enqueueModification( new Runnable() { @Override public void run() { updateKBase( kBase, currentKM, newReleaseId, newKM, cs, modifiedClasses, dslFiles, results, kieBaseModel); } }); } } } for (String kbaseToRemove : kbasesToRemove) { kBases.remove(kbaseToRemove); } for (Iterator<Entry<String, KieSession>> it = this.kSessions.entrySet().iterator(); it.hasNext(); ) { Entry<String, KieSession> ksession = it.next(); if (kProject.getKieSessionModel(ksession.getKey()) == null) { // remove sessions that no longer exist it.remove(); } } for (Iterator<Entry<String, StatelessKieSession>> it = this.statelessKSessions.entrySet().iterator(); it.hasNext(); ) { Entry<String, StatelessKieSession> ksession = it.next(); if (kProject.getKieSessionModel(ksession.getKey()) == null) { // remove sessions that no longer exist it.remove(); } } return results; }
public long getCreationTimestamp() { return kProject.getCreationTimestamp(); }
public KieSessionModel getKieSessionModel(String kSessionName) { return kProject.getKieSessionModel(kSessionName); }
public KieContainerImpl(KieProject kProject, KieRepository kr) { this.kr = kr; this.kProject = kProject; kProject.init(); }
public ReleaseId getReleaseId() { return kProject.getGAV(); }