Hi, Yes, it is fixed in the latest snapshot releases. Thanks very much. Regards, Nesta
在2009-11-24,"Kris Verlaenen" <[email protected]> 写道: >I believe there used to be an issue with action class generation (where >there could be a clash between actions of different processes), but this >was fixed quite some time ago. Could you verify whether the problem >still exists on the latest snapshot releases? >http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/ > >Kris > >Quoting "nesta.fdb" <[email protected]>: > >> Hi, >> >> As my understanding, drools will generate java classes for action of >> rule flow. It seems that if there are two rule flows, and they are in >> one package, drools thinks that it's dirty to load generated java >> class of second package, so drools will reload it. >> >> Thanks very much. >> >> Full stack trace: >> Exception in thread "main" java.lang.NoSuchMethodError: >> >sample.Process_sample_0.action0(Lorg/drools/spi/KnowledgeHelper;Lorg/drools/spi/ProcessContext;)V >> at >> >sample.Process_sample_0Action0Invoker.execute(Process_sample_0Action0Invoker.java:20) >> at >> >org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:54) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128) >> at >> >org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49) >> at >> >org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:16) >> at >> >org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:185) >> at >> >org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:230) >> at >> >org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1639) >> at >> >org.drools.workflow.instance.node.SubProcessNodeInstance.internalTrigger(SubProcessNodeInstance.java:83) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128) >> at >> >org.drools.workflow.instance.node.JoinInstance.triggerCompleted(JoinInstance.java:152) >> at >> >org.drools.workflow.instance.node.JoinInstance.internalTrigger(JoinInstance.java:52) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128) >> at >> >org.drools.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:62) >> at >> >org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:58) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141) >> at >> >org.drools.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:74) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:128) >> at >> >org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49) >> at >> >org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41) >> at >> >org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:111) >> at >> >org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:16) >> at >> >org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:185) >> at >> >org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:230) >> at >> >org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1639) >> at >> >org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1604) >> at >> >org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:267) >> at >> drools.ruleflow.xiayu.XiaYuSubflowTest.main(XiaYuSubflowTest.java:32) >> >> >> >> >> >> ÔÚ2009-11-23£¬"Kris Verlaenen" <[email protected]> дµÀ£º >> >What do you mean by "NoSuchMethod error is thrown" ? Could you >> provide >> >the full stack trace? In theory, you should simply be able to call >> any >> >other process, whether it is in the same package or not. >> > >> >Kris >> > >> >Quoting "nesta.fdb" <[email protected]>: >> > >> >> Drools version: 5.0.1 >> >> I defined two flows, one is main flow and the other is sub flow. >> >> These two flows have same package name, and are built and added >> into >> >> one knowledge base. >> >> When I start the main flow process, the NoSuchMethod error is >> thrown >> >> out. >> >> >> >> I also test with two unrelated flows, and I can't get correct >> result. >> >> >> >> >> >> So my question is that whether there is the constraint which two >> >> flows must not have same package name? >> >> >> >> main.rf >> >> <?xml version="1.0" encoding="UTF-8"?> >> >> <process xmlns="http://drools.org/drools-5.0/process" >> >> xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" >> >> xs:schemaLocation="http://drools.org/drools-5.0/process >> >> drools-processes-5.0.xsd" >> >> type="RuleFlow" name="flow" id="process_plan" >> >> package-name="sample" version="" > >> >> >> >> <header> >> >> <variables> >> >> <variable name="v1" > >> >> <type >> >> name="org.drools.process.core.datatype.impl.type.BooleanDataType" >> /> >> >> <value>false</value> >> >> </variable> >> >> </variables> >> >> </header> >> >> >> >> <nodes> >> >> <start id="1" name="Start" x="195" y="15" width="30" >> height="30" >> >> /> >> >> <split id="2" name="Split" x="185" y="70" width="40" >> height="40" >> >> type="2" > >> >> <constraints> >> >> <constraint toNodeId="10" toType="DROOLS_DEFAULT" name="a" >> >> priority="1" type="code" dialect="java" >return v1;</constraint> >> >> <constraint toNodeId="11" toType="DROOLS_DEFAULT" name="b" >> >> priority="1" type="code" dialect="java" >return !v1;</constraint> >> >> </constraints> >> >> </split> >> >> <join id="5" name="Join" x="185" y="260" width="40" >> height="40" >> >> type="2" /> >> >> <actionNode id="7" name="test" x="155" y="320" width="100" >> >> height="80" > >> >> <action type="expression" dialect="java" >> >> >System.out.println("Action Test");</action> >> >> </actionNode> >> >> <end id="8" name="End" x="191" y="436" width="28" height="28" >> /> >> >> <subProcess id="9" name="SubProcess" x="312" y="292" >> width="96" >> >> height="76" processId="com.sample.subflow" independent="false" > >> >> </subProcess> >> >> <actionNode id="10" name="a" x="75" y="151" width="80" >> >> height="40" > >> >> <action type="expression" dialect="java" >> >> >System.out.println("a");</action> >> >> </actionNode> >> >> <actionNode id="11" name="b" x="287" y="153" width="80" >> >> height="40" > >> >> <action type="expression" dialect="java" >> >> >System.out.println("b");</action> >> >> </actionNode> >> >> </nodes> >> >> >> >> <connections> >> >> <connection from="1" to="2" /> >> >> <connection from="10" to="5" /> >> >> <connection from="11" to="5" /> >> >> <connection from="9" to="7" /> >> >> <connection from="7" to="8" /> >> >> <connection from="5" to="9" /> >> >> <connection from="2" to="10" /> >> >> <connection from="2" to="11" /> >> >> </connections> >> >> >> >> </process> >> >> >> >> sub.rf >> >> <?xml version="1.0" encoding="UTF-8"?> >> >> <process xmlns="http://drools.org/drools-5.0/process" >> >> xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" >> >> xs:schemaLocation="http://drools.org/drools-5.0/process >> >> drools-processes-5.0.xsd" >> >> type="RuleFlow" name="subflow" id="com.sample.subflow" >> >> package-name="sample" version="" > >> >> >> >> <header> >> >> </header> >> >> >> >> <nodes> >> >> <start id="1" name="Start" x="29" y="76" width="30" >> height="30" >> >> /> >> >> <actionNode id="2" name="Action" x="134" y="51" width="100" >> >> height="80" > >> >> <action type="expression" dialect="java" >> >> >System.out.println("This is test subflow");</action> >> >> </actionNode> >> >> <end id="3" name="End" x="309" y="77" width="28" height="28" >> /> >> >> <actionNode id="4" name="Action" x="240" y="210" width="100" >> >> height="80" > >> >> <action type="expression" dialect="java" >> >> >System.out.println("This is test 2222");</action> >> >> </actionNode> >> >> </nodes> >> >> >> >> <connections> >> >> <connection from="1" to="2" /> >> >> <connection from="4" to="3" /> >> >> <connection from="2" to="4" /> >> >> </connections> >> >> >> >> </process> >> >> >> >> Test codes: >> >> public class XiaYuSubflowTest { >> >> >> >> public static void main(String[] args) { >> >> KnowledgeBuilder builder = >> >> KnowledgeBuilderFactory.newKnowledgeBuilder(); >> >> >> builder.add(ResourceFactory.newClassPathResource("main.rf"), >> >> ResourceType.DRF); >> >> >> builder.add(ResourceFactory.newClassPathResource("sub.rf"), >> >> ResourceType.DRF); >> >> if (builder.hasErrors()) { >> >> System.out.println(builder.getErrors()); >> >> } >> >> KnowledgeBase kbase = >> >> KnowledgeBaseFactory.newKnowledgeBase(); >> >> >> kbase.addKnowledgePackages(builder.getKnowledgePackages()); >> >> StatefulKnowledgeSession sks = >> >> kbase.newStatefulKnowledgeSession(); >> >> sks.startProcess("process_plan"); >> >> sks.dispose(); >> >> } >> >> } >> >> >> > >> > >> > >> > >> >Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm >> > > > > >Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
