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

Reply via email to