Re: [rules-users] How to execute a Process API result?
Hi All I am also trying to build a dynamic process to be used. I am having some difficulties in the build where I having this exception below is the sample code that I am using: java.lang.NoClassDefFoundError: sample/Process_sample_0 at sample.Process_sample_0Action0Invoker.execute(Process_sample_0Action0Invoker.java:20) Also I have a question can I use this dynamic process inside the GWT web console? and How? Please help in this issue public static final void main(String[] args) { try { KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); org.drools.rule.Package p = new org.drools.rule.Package(sample); RuleFlowProcess process = createProcess(); p.addProcess(process); KnowledgePackageImp kpi = new KnowledgePackageImp(); kpi.pkg = p; ListKnowledgePackage list = new ArrayListKnowledgePackage(); list.add(kpi); org.drools.compiler.PackageBuilder pbuilder = new PackageBuilder(); pbuilder.addPackage(p); org.drools.compiler.ProcessBuilder builder = new ProcessBuilder(pbuilder); builder.buildProcess(process, null); kbase.addKnowledgePackages(list); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); System.out.println(=== process.getId() [+process.getId()+]); // starting the process ksession.startProcess( process.getId() ); ksession.fireAllRules(); } catch (Throwable t) { t.printStackTrace(); } } public static RuleFlowProcess createProcess() { String processName = org.drools.HelloWorldJoinSplit; RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(processName); factory // Header .name(HelloWorldJoinSplit) .version(1.0) .packageName(sample) // Nodes .startNode(1).name(Start).done() .actionNode(2).name(Action 1) .action(java, System.out.println(\Inside Action 1\)).done() .endNode(3).name(End).done() // Connections .connection(1, 2) .connection(2, 3); RuleFlowProcess process = factory.validate().getProcess(); System.out.println( == [+process.getId()+]); return process; } -- View this message in context: http://old.nabble.com/How-to-execute-a-Process-API-result--tp26169577p26433405.html Sent from the drools - user 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 execute a Process API result?
This is how I ran my dynamic process: Public static final void main(String[] args) { String xml = XmlRuleFlowProcessDumper.INSTANCE.dump(createProcess()); System.out.println(xml); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource(xml.getBytes()), ResourceType.DRF ); 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()); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); WorkflowProcessInstance pi = (WorkflowProcessInstance) ksession.startProcess(com.datacert.workflow.dynamic); } -Scott -Original Message- From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of ramram8 Sent: Friday, November 20, 2009 3:19 AM To: rules-users@lists.jboss.org Subject: Re: [rules-users] How to execute a Process API result? Hi All I am also trying to build a dynamic process to be used. I am having some difficulties in the build where I having this exception below is the sample code that I am using: java.lang.NoClassDefFoundError: sample/Process_sample_0 at sample.Process_sample_0Action0Invoker.execute(Process_sample_0Action0Inv oker.java:20) Also I have a question can I use this dynamic process inside the GWT web console? and How? Please help in this issue public static final void main(String[] args) { try { KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); org.drools.rule.Package p = new org.drools.rule.Package(sample); RuleFlowProcess process = createProcess(); p.addProcess(process); KnowledgePackageImp kpi = new KnowledgePackageImp(); kpi.pkg = p; ListKnowledgePackage list = new ArrayListKnowledgePackage(); list.add(kpi); org.drools.compiler.PackageBuilder pbuilder = new PackageBuilder(); pbuilder.addPackage(p); org.drools.compiler.ProcessBuilder builder = new ProcessBuilder(pbuilder); builder.buildProcess(process, null); kbase.addKnowledgePackages(list); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); System.out.println(=== process.getId() [+process.getId()+]); // starting the process ksession.startProcess( process.getId() ); ksession.fireAllRules(); } catch (Throwable t) { t.printStackTrace(); } } public static RuleFlowProcess createProcess() { String processName = org.drools.HelloWorldJoinSplit; RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(processName); factory // Header .name(HelloWorldJoinSplit) .version(1.0) .packageName(sample) // Nodes .startNode(1).name(Start).done() .actionNode(2).name(Action 1) .action(java, System.out.println(\Inside Action 1\)).done() .endNode(3).name(End).done() // Connections .connection(1, 2) .connection(2, 3); RuleFlowProcess process = factory.validate().getProcess(); System.out.println( == [+process.getId()+]); return process; } -- View this message in context: http://old.nabble.com/How-to-execute-a-Process-API-result--tp26169577p26 433405.html Sent from the drools - user 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 mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
Sorry, can't help you there. I don't have any experience with GWT. -Original Message- From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of ramram8 Sent: Friday, November 20, 2009 2:07 PM To: rules-users@lists.jboss.org Subject: Re: [rules-users] How to execute a Process API result? Thanks Scott for the help After using the code you provided the process worked fine. I just have another question : 1-Can we use the Dynamic process with the GWT web console? 2-If we can, How? and If we cant, Is there an alternative to use dynamic process with GWT web console? -- View this message in context: http://old.nabble.com/How-to-execute-a-Process-API-result--tp26169577p26 446500.html Sent from the drools - user 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 mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
Got it! Thanks Kris and Mauricio for your guidance on this. -Original Message- From: Kris Verlaenen [mailto:kris.verlae...@cs.kuleuven.be] Sent: Monday, November 02, 2009 6:01 PM To: Rules Users List; Scott Stevenson Subject: Re: [rules-users] How to execute a Process API result? Scott, A process is also compiled before it is executable. To load a process constructed using the API, either: * load it as any other process by transforming it to XML first using the XmlRuleFlowProcessDumper * compile the process before adding it to your rulebase, using ProcessBuilder.buildProcess(..) Kris Quoting Scott Stevenson scott.steven...@datacert.com: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] How to execute a Process API result?
I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
Are you working just with the Drools 4 version? Or you can jump to the Drools 5 version? On Mon, Nov 2, 2009 at 5:41 PM, Scott Stevenson scott.steven...@datacert.com wrote: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
I'm working with Drools 5. From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:45 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Are you working just with the Drools 4 version? Or you can jump to the Drools 5 version? On Mon, Nov 2, 2009 at 5:41 PM, Scott Stevenson scott.steven...@datacert.com wrote: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
Ok, so you need to start using the Drools 5 APIs. Please take a look at the Drools 5 documentation: http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-flow/html_single/index.html#d0e1375 In the section 3.2 Using a Process in Your Application you will find the correct api's. Greetings. 2009/11/2 Scott Stevenson scott.steven...@datacert.com I’m working with Drools 5. *From:* rules-users-boun...@lists.jboss.org [mailto: rules-users-boun...@lists.jboss.org] *On Behalf Of *Mauricio Salatino *Sent:* Monday, November 02, 2009 1:45 PM *To:* Rules Users List *Subject:* Re: [rules-users] How to execute a Process API result? Are you working just with the Drools 4 version? Or you can jump to the Drools 5 version? On Mon, Nov 2, 2009 at 5:41 PM, Scott Stevenson scott.steven...@datacert.com wrote: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
I read that section but I'm still not clear how to add my process (created like the section just before) to the KnowledgeBase. Section 3.2 shows adding an existing .rf file. I have this code: RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(org.drools.sample.workflow.dynamic ); factory .name(HelloWorldRuleSet) .version(1.0) .packageName(org.drools) .startNode(1).name(Start).done() .actionNode(2) .name(Action) .action(java, System.out.println(\Inside Action 1\);).done() .endNode(3).name(End).done() .connection(1, 2) .connection(2, 3); factory.validate().getProcess(); How does the getProcess() result get added to a KnowledgeBase? Thanks, Scott From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:57 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Ok, so you need to start using the Drools 5 APIs. Please take a look at the Drools 5 documentation: http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-flow/htm l_single/index.html#d0e1375 In the section 3.2 Using a Process in Your Application you will find the correct api's. Greetings. 2009/11/2 Scott Stevenson scott.steven...@datacert.com I'm working with Drools 5. From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:45 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Are you working just with the Drools 4 version? Or you can jump to the Drools 5 version? On Mon, Nov 2, 2009 at 5:41 PM, Scott Stevenson scott.steven...@datacert.com wrote: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] How to execute a Process API result?
Right, I want to use the Fluent API to create dynamic processes. From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 2:14 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? That are only the fluent api to create processes. I recommend you the other approach: KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource(MyProcess.rf), ResourceType.DRF ); 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()); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); ksession.startProcess(com.sample.MyProcess); If you need the reference to the process instance you can do: WorkFlowProcessInstance processInstance = ksession.startProcess(...); Work 2009/11/2 Scott Stevenson scott.steven...@datacert.com I read that section but I'm still not clear how to add my process (created like the section just before) to the KnowledgeBase. Section 3.2 shows adding an existing .rf file. I have this code: RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(org.drools.sample.workflow.dynamic ); factory .name(HelloWorldRuleSet) .version(1.0) .packageName(org.drools) .startNode(1).name(Start).done() .actionNode(2) .name(Action) .action(java, System.out.println(\Inside Action 1\);).done() .endNode(3).name(End).done() .connection(1, 2) .connection(2, 3); factory.validate().getProcess(); How does the getProcess() result get added to a KnowledgeBase? Thanks, Scott From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:57 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Ok, so you need to start using the Drools 5 APIs. Please take a look at the Drools 5 documentation: http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-flow/htm l_single/index.html#d0e1375 In the section 3.2 Using a Process in Your Application you will find the correct api's. Greetings. 2009/11/2 Scott Stevenson scott.steven...@datacert.com I'm working with Drools 5. From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:45 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Are you working just with the Drools 4 version? Or you can jump to the Drools 5 version? On Mon, Nov 2, 2009 at 5:41 PM, Scott Stevenson scott.steven...@datacert.com wrote: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino Salaboy Mauricio - ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- - http://salaboy.wordpress.com - http
Re: [rules-users] How to execute a Process API result?
Here is my attempt at using the Drools 5 API to execute my dynamically created Process: KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); org.drools.rule.Package p = new org.drools.rule.Package(sample); p.addProcess(createProcess()); KnowledgePackageImp kpi = new KnowledgePackageImp(); kpi.pkg = p; ListKnowledgePackage list = new ArrayListKnowledgePackage(); list.add(kpi); kbase.addKnowledgePackages(list); StatefulKnowledgeSession ksess = kbase.newStatefulKnowledgeSession(); ksess.startProcess(org.drools.sample.workflow.dynamic); I still get the same null pointer error. Perhaps the problem is in my implementation of the Process API? The code under createProcess is this: RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(com.datacert.workflow.dynamic); factory .name(HelloWorldRuleSet) .version(1.0) .packageName(org.drools) .startNode(1).name(Start).done() .actionNode(2) .name(Action) .action(java, System.out.println(\Inside Action 1\);).done() .endNode(3).name(End).done() .connection(1, 2) .connection(2, 3); return factory.validate().getProcess(); Thanks, Scott From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 2:14 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? That are only the fluent api to create processes. I recommend you the other approach: KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource(MyProcess.rf), ResourceType.DRF ); 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()); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); ksession.startProcess(com.sample.MyProcess); If you need the reference to the process instance you can do: WorkFlowProcessInstance processInstance = ksession.startProcess(...); Work 2009/11/2 Scott Stevenson scott.steven...@datacert.com I read that section but I'm still not clear how to add my process (created like the section just before) to the KnowledgeBase. Section 3.2 shows adding an existing .rf file. I have this code: RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(org.drools.sample.workflow.dynamic ); factory .name(HelloWorldRuleSet) .version(1.0) .packageName(org.drools) .startNode(1).name(Start).done() .actionNode(2) .name(Action) .action(java, System.out.println(\Inside Action 1\);).done() .endNode(3).name(End).done() .connection(1, 2) .connection(2, 3); factory.validate().getProcess(); How does the getProcess() result get added to a KnowledgeBase? Thanks, Scott From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:57 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Ok, so you need to start using the Drools 5 APIs. Please take a look at the Drools 5 documentation: http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-flow/htm l_single/index.html#d0e1375 In the section 3.2 Using a Process in Your Application you will find the correct api's. Greetings. 2009/11/2 Scott Stevenson scott.steven...@datacert.com I'm working with Drools 5. From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Mauricio Salatino Sent: Monday, November 02, 2009 1:45 PM To: Rules Users List Subject: Re: [rules-users] How to execute a Process API result? Are you working just with the Drools 4 version? Or you can jump to the Drools 5 version? On Mon, Nov 2, 2009 at 5:41 PM, Scott Stevenson scott.steven...@datacert.com wrote: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1
Re: [rules-users] How to execute a Process API result?
Scott, A process is also compiled before it is executable. To load a process constructed using the API, either: * load it as any other process by transforming it to XML first using the XmlRuleFlowProcessDumper * compile the process before adding it to your rulebase, using ProcessBuilder.buildProcess(..) Kris Quoting Scott Stevenson scott.steven...@datacert.com: I'm trying to execute the result of the Process API and running into problems most likely stemming from my ignorance. I'm creating a new process following the sample code from section 3.1.3.2 of the User Guide. My sample process consists of: 1. StartNode 2. ActionNode that prints Hello World 3. EndNode What I don't understand is how to get my new process into a KnowledgeBase and KnowledgeSession for execution. I've tried the following (Drools 4 method, I believe) as well: AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(); ruleBase.addProcess(createProcess()); InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase); workingMemory.startProcess(org.drools.sample.workflow.dynamic); The result of the previous code is a RuntimeException (unable to execute Action). Inner exception is null pointer from inside the ActionNodeInstance class. Where am going wrong in implementing the Process API? Thank you, Scott Stevenson ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users