*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