thank you for your answer.I look at the source code of Drools ,if want the "assignment rule" to take effect, must add the following code in drools configuration file : *drools.advancedProcessRuleIntegration = true*
2010/5/21 Esteban Aliverti <esteban.alive...@gmail.com> > I don't really know whether your rule will be activated or not, but you are > missing the ksession.fireAllRules() call. Try to add a Logger to your > session to see if the rule gets activated or not. > > Best, > > 2010/5/19 HONG DENG <denghongs...@gmail.com> > > *I paste all information here : >> >> HelloWorldSample.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/processdrools-processes-5.0.xsd" >> type="RuleFlow" name="flow" id="com.sample.evaluation" >> package-name="org.drools.bpmn2" > >> >> <header> >> </header> >> >> <nodes> >> <start id="1" name="Start" x="44" y="139" width="48" height="48" /> >> <humanTask id="2" name="thefirstone" x="156" y="140" width="80" >> height="40" > >> <work name="Human Task" > >> <parameter name="ActorId" > >> <type >> name="org.drools.process.core.datatype.impl.type.StringDataType" /> >> <value></value> >> </parameter> >> <parameter name="Comment" > >> <type >> name="org.drools.process.core.datatype.impl.type.StringDataType" /> >> <value>You need to perform a self-evaluation</value> >> </parameter> >> <parameter name="Content" > >> <type >> name="org.drools.process.core.datatype.impl.type.StringDataType" /> >> </parameter> >> <parameter name="Priority" > >> <type >> name="org.drools.process.core.datatype.impl.type.StringDataType" /> >> </parameter> >> <parameter name="Skippable" > >> <type >> name="org.drools.process.core.datatype.impl.type.StringDataType" /> >> <value>false</value> >> </parameter> >> <parameter name="TaskName" > >> <type >> name="org.drools.process.core.datatype.impl.type.StringDataType" /> >> <value>firstHumanTask</value> >> </parameter> >> </work> >> </humanTask> >> <end id="3" name="End" x="290" y="140" width="80" height="40" /> >> </nodes> >> >> <connections> >> <connection from="1" to="2" /> >> <connection from="2" to="3" /> >> </connections> >> >> </process> >> >> *assignment.dslr:* >> package org.drools.examples.process.order >> >> import org.drools.process.instance.impl.WorkItemImpl >> import org.drools.workflow.instance.node.WorkItemNodeInstance >> >> expander assignment.dsl >> >> /********** Generic assignment rules **********/ >> >> rule "Assign actor" salience 30 >> when >> There is a human task >> then >> Set actor id "mary" >> end >> >> >> *assignment.dsl:* >> *** >> [condition][HumanTaskWorkItem]- with actor id >> "{actorId}"=parameters['ActorId'] == "{actorId}" >> [condition][HumanTaskWorkItem]- without actor id=parameters['ActorId'] == >> null >> [condition][HumanTaskWorkItem]- with task name >> "{taskName}"=parameters['TaskName'] == "{taskName}" >> [condition][HumanTaskWorkItem]There is a human task=workItemNodeInstance: >> WorkItemNodeInstance( ) workItem: WorkItemImpl( name == "Human Task" ) from >> workItemNodeInstance.workItem >> [consequence][]Set actor id "{actorId}"=workItem.setParameter("ActorId", >> "{actorId}"); update(workItemNodeInstance); >> [condition][HumanTaskWorkItem]- with priority >> {priority}=parameters['Priority'] == {priority} >> [condition][HumanTaskWorkItem]Process "{processId}" contains a human >> task=workItemNodeInstance: WorkItemNodeInstance( processInstance.processId >> == "{processId}" ) workItem: WorkItemImpl( name == "Human Task" ) from >> workItemNodeInstance.workItem >> * >> >> *and have following code to start a process instance:* >> * >> package com.sample; >> /** >> * This is a sample file to launch a process. >> */ >> public class ProcessTest { >> >> public static final void main(String[] args) { >> try { >> //start humantask component >> startHumanTaskComponent(); >> // load up the knowledge base >> KnowledgeBase kbase = readKnowledgeBase(); >> StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); >> KnowledgeRuntimeLogger logger = >> KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); >> ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new >> WSHumanTaskHandler()); >> // start a new process instance >> Map<String, Object> params = new HashMap<String, Object>(); >> params.put("employee", "Administrator"); >> ksession.startProcess("com.sample.evaluation", params); >> } catch (Throwable t) { >> t.printStackTrace(); >> } >> } >> >> private static KnowledgeBase readKnowledgeBase() throws Exception { >> KnowledgeBuilderConfiguration conf = >> KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); >> // ((PackageBuilderConfiguration) conf).initSemanticModules(); >> // ((PackageBuilderConfiguration) >> conf).loadSemanticModule("BPMN2SemanticModule.conf"); >> KnowledgeBuilder kbuilder = >> KnowledgeBuilderFactory.newKnowledgeBuilder(conf); >> // kbuilder.add(ResourceFactory.newClassPathResource("hellowWorld.bpmn"), >> ResourceType.DRF); >> kbuilder.add(ResourceFactory.newClassPathResource("HelloWorldSample.rf"), >> ResourceType.DRF); >> kbuilder.add(ResourceFactory.newClassPathResource("assignment.dsl"), >> ResourceType.DSL); >> kbuilder.add(ResourceFactory.newClassPathResource("assignment.dslr"), >> ResourceType.DSLR); >> 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; >> } >> private static void startHumanTaskComponent(){ >> EntityManagerFactory emf = >> Persistence.createEntityManagerFactory("org.drools.task"); >> TaskService taskService = new >> TaskService(emf,SystemEventListenerFactory.getSystemEventListener()); >> User a = new User("john"); >> User b = new User("mary"); >> TaskServiceSession taskSession = taskService.createSession(); >> taskSession.addUser(new User("Administrator")); >> taskSession.addUser(a); >> taskSession.addUser(b); >> MinaTaskServer server = new MinaTaskServer( taskService ); >> Thread thread = new Thread( server ); >> thread.start(); >> } >> >> } >> * >> >> >> 2010/5/19 Esteban Aliverti <esteban.alive...@gmail.com>: >> >> > A good start could be to give us more info, like your rules, your flow >> and >> > how are you executing them. ;) >> > Best, >> > >> > On Wed, May 19, 2010 at 6:39 AM, HONG DENG <denghongs...@gmail.com> >> wrote: >> >> >> >> hi , i am a drools flow newbie.I want to using "assignment rule" >> >> assign a actor to a HumanTask. I have write a dsl and dslr files and >> >> following code : >> >> >> >> >> >> >> kbuilder.add(ResourceFactory.newClassPathResource("HelloWorldSample.rf"), >> >> ResourceType.DRF); >> >> kbuilder.add(ResourceFactory.newClassPathResource("assignment.dsl"), >> >> ResourceType.DSL); >> >> kbuilder.add(ResourceFactory.newClassPathResource("assignment.dslr"), >> >> ResourceType.DSLR); >> >> >> >> but when i start a process instance and the token arrive at a >> >> humantask,the "assignment rule" couldn't be firing. >> >> who can tell me how can i do it? >> >> _______________________________________________ >> >> rules-users mailing list >> >> rules-users@lists.jboss.org >> >> https://lists.jboss.org/mailman/listinfo/rules-users >> > >> > >> > >> > -- >> > XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX >> > >> > Esteban Aliverti >> > >> > _______________________________________________ >> > 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 >> >> > > > -- > XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > > Esteban Aliverti > > _______________________________________________ > 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