@Override public String getPMMLStringFromInputStream(InputStream is) throws IOException { String xml = new String(IoUtils.readBytesFromInputStream(is), IoUtils.UTF8_CHARSET); ScoreCardModel model = GuidedScoreCardXMLPersistence.getInstance().unmarshall(xml); PMML pmml = GuidedScoreCardDRLPersistence.createPMMLDocument(model); checkCharacteristics(pmml); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PMML4Compiler compiler = new PMML4Compiler(); compiler.dumpModel(pmml, baos); return new String(baos.toByteArray()); }
public String getDRL() { if (pmmlDocument != null) { PMML4Unit pmmlUnit = new PMML4UnitImpl(pmmlDocument); compiler.getHelper().setPack(pmmlUnit.getRootPackage()); } String drl = compiler.generateTheory(pmmlDocument); if (!compiler.getResults().isEmpty()) { for (KnowledgeBuilderResult res : compiler.getResults()) { logger.error(res.getMessage()); } compiler.clearResults(); } return drl; }
public String compile(PMML pmml, ClassLoader classLoader) { helper.setResolver(classLoader); if (getResults().isEmpty()) { return generateTheory(pmml); } else { return null; } }
boolean annotation = false; PMML4Compiler compiler = new PMML4Compiler(); compiler.getHelper().setPack( "org.kie.pmml.pmml_4_2.test" ); String theory = compiler.compile( source, null ); BufferedReader reader = new BufferedReader(new StringReader(theory)); try {
KieModuleModel module = services.newKieModuleModel(); this.results = new ArrayList<KnowledgeBuilderResult>(); PMML pmml = loadModel(PMML, stream); helper.setResolver(classLoader); PMML4Unit unit = new PMML4UnitImpl(pmml); if (unit.containsMiningModel()) { Miningmodel rootModel = unit.getRootMiningModel(); resources = buildResourcesFromModel(pmml, rootModel, null, classLoader, module); } else { PMML4Model rootModel = unit.getRootModel(); .setEventProcessingMode(EventProcessingOption.CLOUD); PMMLResource resource = new PMMLResource(helper.getPack()); StringBuilder bldr = new StringBuilder(this.compile(pmml, classLoader)); String extBeanMiningRules = unit.getModelExternalMiningBeansRules(rootModel.getModelId()); if (extBeanMiningRules != null) {
public Resource[] transform(Resource resource, ClassLoader classLoader) { String theory = null; try { theory = compile(resource.getInputStream(), classLoader); } catch (IOException e) { results.add(new PMMLError(e.toString())); e.printStackTrace(); return new Resource[0]; } return new Resource[]{buildOutputResource(resource, theory)}; }
Map<String, String> modelSources = null; try { modelSources = compiler.getJavaClasses(resource.getInputStream()); } catch (IOException e) { kbuilder.addBuilderResult(new SrcError(resource, e.getMessage())); if (compiler.getResults().isEmpty()) { if (modelSources != null && !modelSources.isEmpty()) { javaSources.putAll(modelSources);
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); helper.setPack(segment.getModel().getModelPackageName());//PMML4Helper.pmmlDefaultPackageName()+".mining.segment_"+segment.getSegmentId()); StringBuilder rules = new StringBuilder(this.compile(pmml, classLoader)); String extBeanMiningRules = segment.getModel().getExternalBeansMiningRules(); if (extBeanMiningRules != null) { rules.append(extBeanMiningRules); } 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.toString()); return resource; }
public boolean compileFromPMML(final InputStream stream) { pmmlDocument = compiler.loadModel(PMML.class.getPackage().getName(), stream); return pmmlDocument != null; }
public String getPMML() { if (pmmlDocument == null) { return null; } ByteArrayOutputStream baos = new ByteArrayOutputStream(); PMML4Compiler.dumpModel(pmmlDocument, baos); return new String(baos.toByteArray(), IoUtils.UTF8_CHARSET); }
public String compile(String resource, ClassLoader classLoader) { String theory = null; Resource cpr = new ClassPathResource(resource); try { theory = compile(cpr.getInputStream(), classLoader); } catch (IOException e) { results.add(new PMMLError(e.toString())); e.printStackTrace(); } return theory; }
/** * This method does the work of calling the PMML compiler and then assembling the results * into packages that are added to the KnowledgeBuilder * @param resource * @throws DroolsParserException * @throws IOException */ private void addPackage(Resource resource) throws DroolsParserException, IOException { if (pmmlCompiler != null) { if (pmmlCompiler.getResults().isEmpty()) { addPMMLPojos(pmmlCompiler, resource); if (pmmlCompiler.getResults().isEmpty()) { List<PackageDescr> packages = getPackageDescrs(resource); if (packages != null && !packages.isEmpty()) { for (PackageDescr descr : packages) { this.kbuilder.addPackage(descr); } } } } } }
protected List<PMMLResource> getChildResources(PMML pmml_origin, Miningmodel parent, List<PMMLResource> resourceList, ClassLoader classLoader, KieModuleModel module) { if (parent != null && parent.getSegmentation() != null) { MiningSegmentation segmentation = parent.getSegmentation(); if (segmentation.getMiningSegments() != null) { List<MiningSegment> segments = segmentation.getMiningSegments(); for (MiningSegment segment : segments) { if (segment.getModel() instanceof Miningmodel) { buildResourcesFromModel(pmml_origin, (Miningmodel) segment.getModel(), resourceList, classLoader, module); } else { resourceList.add(buildResourceFromSegment(pmml_origin, segment, classLoader, module)); } } } } return resourceList; }
assertTrue( PMMLGeneratorUtils.streamPMML( net, baos ) ); ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() ); PMML4Compiler compiler = new PMML4Compiler();
public Map<String, String> getJavaClasses(InputStream stream) { Map<String, String> javaClasses = new HashMap<>(); PMML pmml = loadModel(PMML, stream); if (pmml != null && results.isEmpty()) { PMML4Unit unit = new PMML4UnitImpl(pmml); if (unit != null) { List<PMML4Model> models = unit.getModels(); models.forEach(model -> { Map.Entry<String, String> inputPojo = model.getMappedMiningPojo(); Map.Entry<String, String> ruleUnit = model.getMappedRuleUnit(); Map.Entry<String, String> outcome = null; if (model.getModelType() == PMML4ModelType.TREE) { outcome = ((Treemodel) model).getTreeNodeJava(); } if (inputPojo != null) { javaClasses.put(inputPojo.getKey(), inputPojo.getValue()); } if (ruleUnit != null) { javaClasses.put(ruleUnit.getKey(), ruleUnit.getValue()); } if (outcome != null) { javaClasses.put(outcome.getKey(), outcome.getValue()); } }); } } return javaClasses; }