[jboss-jira] [JBoss JIRA] (DROOLS-5358) Add a way to define ResourceType inside kiebase

Mario Fusco (Jira) issues at jboss.org
Wed Jun 3 12:00:01 EDT 2020


     [ https://issues.redhat.com/browse/DROOLS-5358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Fusco resolved DROOLS-5358.
---------------------------------
    Resolution: Won't Do


We discussed this and at the moment we couldn't find a better way other than doing a huge refactor which we cannot afford now.

> Add a way to define ResourceType inside kiebase
> -----------------------------------------------
>
>                 Key: DROOLS-5358
>                 URL: https://issues.redhat.com/browse/DROOLS-5358
>             Project: Drools
>          Issue Type: Task
>            Reporter: Gabriele Cardosi
>            Assignee: Mario Fusco
>            Priority: Major
>
> Step to reproduce
> 1) create a project with multiple pmml files, each in its own package (eg. resources/package_name/file.pmml)
> 2) create a kmodule xml and define one kiebase for each package
> 3) compile the kjar
> 4) in the kjar the files/classes are all in the proper place (i.e. in the expected package)
> 5) add the kjar in a new project
> 6) in the new project invoke
> KieServices.get().newKieClasspathContainer().getKieBase(kbaseName);
> The jar packages are inside the kieBase.getPackages(), but they are not marked as "PMMLType" packages - so it is necessary to invoke the (PMML)AssemblerService to wrap the content of the (jar) packages inside correct PMMLType packages and put them in the knowledge base
> The following snippet is a temporary workaround (inside CanonicalKieModule.createKieBase(KieBaseModelImpl, KieProject, ResultsImpl, KieBaseConfiguration)) 
> {code:java}
> for (KiePackage pk : pkgs) {
>                 // Workaround to "mark" already compiled packages (as found inside the kjar and retrieved by createKiePackages(kieProject, kBaseModel, messages, kBaseConf))
>                 // as "PMML" packages
>                 boolean isInternalKnowldgePackage = pk instanceof InternalKnowledgePackage;
>                 final InternalKnowledgePackage originalPackage = kieBase.getPackage(pk.getName());
>                 if (originalPackage != null && isInternalKnowldgePackage && ((InternalKnowledgePackage) pk).getResourceTypePackages().get(ResourceType.PMML) != null) {
>                     originalPackage.getResourceTypePackages().put(ResourceType.PMML, ((InternalKnowledgePackage) pk).getResourceTypePackages().get(ResourceType.PMML));
>                 } else if (originalPackage == null) {
>                     kieBase.addPackages(pkgs);
>                 }
>             }
> {code}
> The idea is to get the "type" information from newly compiled package and put it in the existing one (that also contains al the other compiled classes).
> Ideally, we should be able to completely skip the (PMML)AssemblerService invocation (that recreate new packages)



--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the jboss-jira mailing list