Re: [rules-users] Drools and serialize
Sorry, I am new to java/drools. I have less than 1year practice. I know that my code it's bad, but my goal is to understand how it's work, then I can make some good stuff. I realise some improvement in this moment. (I have suppress the line that you are talking ;) ) Thank you for all tip. Serialize and de-serialize work fine. Have a nice day, Clement Pernot -- View this message in context: http://drools.46999.n3.nabble.com/Drools-and-serialize-tp3161882p3165175.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Drools and serialize
Thank you for all your tips. I think I have found the solution. (the project run) Now for test that, I try to make a project who can un-serialize this. There it is: package com.sample; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderError; import org.drools.builder.KnowledgeBuilderErrors; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.ResourceFactory; import org.drools.marshalling.Marshaller; import org.drools.marshalling.MarshallerFactory; import org.drools.marshalling.ObjectMarshallingStrategy; import org.drools.runtime.StatefulKnowledgeSession; /** * This is a sample class to launch a rule. */ public class test{ private static void compileRuleBase2( String drlPath, String rbPath ) throws Exception { KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kBuilder.add( ResourceFactory.newFileResource( drlPath ), ResourceType.DRL ); if( kBuilder.hasErrors() ){ for( KnowledgeBuilderError err: kBuilder.getErrors() ){ System.err.println( err.toString() ); } throw new IllegalStateException( "DRL errors" ); } KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() ); try { // load up the knowledge base KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); // go ! Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); ksession.insert(message); ObjectMarshallingStrategy oms = MarshallerFactory.newIdentityMarshallingStrategy(); Marshaller marshaller = MarshallerFactory.newMarshaller( ksession.getKnowledgeBase(), new ObjectMarshallingStrategy[]{ oms } ); OutputStream os = new FileOutputStream( rbPath ); ObjectOutputStream oos = new ObjectOutputStream( os ); marshaller.marshall( os, ksession ); oos.close(); ksession.fireAllRules(); } catch (Throwable t) { t.printStackTrace(); } } public static final void main(String[] args) { try{ compileRuleBase2("Sample.drl", "drools_compiled_file_with_fact" ); } catch (Exception e) { e.printStackTrace(); } } private static KnowledgeBase readKnowledgeBase() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL); KnowledgeBuilderErrors errors = kbuilder.getErrors(); if (errors.size() > 0) { for (KnowledgeBuilderError error: errors) { System.err.println(error); } throw new IllegalArgumentException("Could not parse knowledge."); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase; } public static class Message implements Serializable{ public static final int HELLO = 0; public static final int GOODBYE = 1; private String message; private int status; public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public int getStatus() { return this.status; } public void setStatus(int status) { this.status = status; } } } -- View this message in context: http://drools.46999.n3.nabble.com/Drools-and-serialize-tp3161882p3162316.html Sent from the Drool
Re: [rules-users] Drools and serialize
I have try what you say. This didn't work. here is my full code: package com.sample; import java.io.ByteArrayOutputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderError; import org.drools.builder.KnowledgeBuilderErrors; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.ResourceFactory; import org.drools.marshalling.Marshaller; import org.drools.marshalling.MarshallerFactory; import org.drools.marshalling.ObjectMarshallingStrategy; import org.drools.runtime.StatefulKnowledgeSession; public class test{ private static void compileRuleBase2( String drlPath, String rbPath ) throws Exception { KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kBuilder.add( ResourceFactory.newFileResource( drlPath ), ResourceType.DRL ); if( kBuilder.hasErrors() ){ for( KnowledgeBuilderError err: kBuilder.getErrors() ){ System.err.println( err.toString() ); } throw new IllegalStateException( "DRL errors" ); } KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() ); try { KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); ksession.insert(message); ObjectMarshallingStrategy oms = MarshallerFactory.newIdentityMarshallingStrategy(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Marshaller marshaller = MarshallerFactory.newMarshaller( ksession.getKnowledgeBase(), new ObjectMarshallingStrategy[]{ oms } ); marshaller.marshall( baos, ksession ); ObjectOutputStream out = new ObjectOutputStream( baos ); out.writeObject( marshaller ); out.close(); baos.close(); ksession.fireAllRules(); } catch (Throwable t) { t.printStackTrace(); } } public static final void main(String[] args) { try { compileRuleBase2("Sample.drl", "drools_compiled_file_with_fact" ); } catch (Exception e) { e.printStackTrace(); } } private static KnowledgeBase readKnowledgeBase() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL); KnowledgeBuilderErrors errors = kbuilder.getErrors(); if (errors.size() > 0) { for (KnowledgeBuilderError error: errors) { System.err.println(error); } throw new IllegalArgumentException("Could not parse knowledge."); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase; } public static class Message implements Serializable{ public static final int HELLO = 0; public static final int GOODBYE = 1; private String message; private int status; public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public int getStatus() { return this.status; } public void setStatus(int status) { this.status = status; } } } here is my error: java.io.NotSerializableException: org.drools.marshalling.impl.DefaultMarshaller at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) at com.sample.test.compileRuleBase2(test.java:59) at com.sample.test.main(test.java:73) Thank you fo
Re: [rules-users] Drools and serialize
Thank you for the hint, I will try that. I don't know how to do this for the moment, but I will found. -- View this message in context: http://drools.46999.n3.nabble.com/Drools-and-serialize-tp3161882p3161977.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Drools and serialize
Hi, I want to serialize a StatefulKnowledgeSession in drools (which have rule and fact) Actually i know how to serialize a KnowledgeBase. Here is my code for serialize a KnowledgeBase: KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kBuilder.add( ResourceFactory.newFileResource( "Sample.drl" ), ResourceType.DRL ); if( kBuilder.hasErrors() ){ for( KnowledgeBuilderError err: kBuilder.getErrors() ){ System.err.println( err.toString() ); } throw new IllegalStateException( "DRL errors" ); } KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() ); OutputStream os = new FileOutputStream( "droolsCompiledFile" ); ObjectOutputStream oos = new ObjectOutputStream( os ); oos.writeObject( kBase ); oos.close(); This work fine, no problem here. Here is my code for serialize a StatefulKnowledgeSession: KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kBuilder.add( ResourceFactory.newFileResource( "Sample.drl" ), ResourceType.DRL ); if( kBuilder.hasErrors() ){ for( KnowledgeBuilderError err: kBuilder.getErrors() ){ System.err.println( err.toString() ); } throw new IllegalStateException( "DRL errors" ); } KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() ); try { KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); ksession.insert(message); Marshaller marshaller = MarshallerFactory.newMarshaller( ksession.getKnowledgeBase(), new ObjectMarshallingStrategy[]{ MarshallerFactory.newSerializeMarshallingStrategy() } ); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectMarshallingStrategy oms = MarshallerFactory.newIdentityMarshallingStrategy(); marshaller.marshall( baos, ksession ); ObjectOutputStream out = new ObjectOutputStream( baos ); out.writeObject( marshaller ); out.close(); baos.close(); ksession.fireAllRules(); } catch (Throwable t) { t.printStackTrace(); } } But this didn't work. I get always the same error: "java.io.NotSerializableException" I have try to not implement the "marshall" but this didn't work. I don't know what I must do. Can someone help me? Thank. Best regards, Clement Pernot -- View this message in context: http://drools.46999.n3.nabble.com/Drools-and-serialize-tp3161882p3161882.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] OWL and drools expert
Hi, I want to use drools expert with OWL files and embedded this with a program. Is it possible? If yes, how it's possible? I have search and didn't find something, if someone can help, I will be grateful. I know that EulerGUI take OWL files and can compile with drools expert, but I want to embedded drools expert and OWL files in a program and I think that it's impossible to make this with EulerGUI. I don't know if a solution exist for embedded drools expert and OWL files but a search for it. Best Regards, Clément -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-OWL-and-drools-expert-tp3028816p3028816.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to run one example of drools in eclipse?
Thank you. With the drools-distribution-5.3.0-SNAPSHOT.zip, i can run the project. I don't understand why my first project, (download at http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-examples.zip) didn't work, but with your help, i have a project which work, thank you :) -- View this message in context: http://drools.46999.n3.nabble.com/How-to-run-one-example-of-drools-in-eclipse-tp2934660p2956114.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] How to run one example of drools in eclipse?
hi, I have download: "Drools Examples" on http://www.jboss.org/drools/downloads I use eclipse in order to build. I have follow this: https://github.com/droolsjbpm/droolsjbpm-build-bootstrap/blob/master/README.md in order to configure eclipse. I don't know what i must do. After one build i got this: Apache Maven 3.0.2 (r1056850; 2011-01-09 01:58:10+0100) Java version: 1.6.0_24, vendor: Sun Microsystems Inc. Java home: /home/newel/eclipse/jre Default locale: fr_FR, platform encoding: UTF-8 OS name: "linux", version: "2.6.35-28-generic", arch: "i386", family: "unix" [INFO] Error stacktraces are turned on. [DEBUG] Reading global settings from EMBEDDED/conf/settings.xml [DEBUG] Reading user settings from /home/newel/.m2/settings.xml [DEBUG] Using local repository at /home/newel/.m2/repository [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /home/newel/.m2/repository [INFO] Scanning for projects... [DEBUG] Verifying availability of /home/newel/.m2/repository/org/drools/drools/5.1.1/drools-5.1.1.pom from [central (http://repo1.maven.org/maven2, releases=true, snapshots=false, managed=false)] [DEBUG] Using connector AsyncRepositoryConnector with priority 100 for http://repo1.maven.org/maven2 [DEBUG] Reading resolution tracking file /home/newel/.m2/repository/org/drools/drools/5.1.1/drools-5.1.1.pom.lastUpdated [DEBUG] Writing resolution tracking file /home/newel/.m2/repository/org/drools/drools/5.1.1/drools-5.1.1.pom.lastUpdated [ERROR] The build could not read 1 project -> [Help 1] org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM: Could not find artifact org.drools:drools:pom:5.1.1 in central (http://repo1.maven.org/maven2) and 'parent.relativePath' points at wrong local POM @ line 5, column 11 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:325) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:632) at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:581) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:233) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) [ERROR] [ERROR] The project org.drools:drools-examples:5.1.1 (/home/newel/workspace/drools-5.1.1-examples/drools-examples/pom.xml) has 1 error [ERROR] Non-resolvable parent POM: Could not find artifact org.drools:drools:pom:5.1.1 in central (http://repo1.maven.org/maven2) and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2] org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact org.drools:drools:pom:5.1.1 in central (http://repo1.maven.org/maven2) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:183) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:819) at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:670) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:308) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:232) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:354) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:305) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:632) at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:581) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:233) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessor