Geoffrey:

    I have the debug event listener added:

    workingMemory.addEventListener(new DebugWorkingMemoryEventListener());



   What I have done is put together the log statements.  I've removed much of 
the logging for lookup and loading of objects.......


[2006-03-14 09:32:16,218][main][DEBUG][BusinessRuleTest|testUpdateTask() - 
start]
[2006-03-14 09:32:16,218][main][DEBUG][BusinessLayer|evaluateTask(TaskVO) - 
start]
[2006-03-14 09:32:16,218][main][DEBUG][BusinessLayer|loadRules() - start]
[2006-03-14 09:32:16,218][main][DEBUG][BusinessLayer|loadConflictResolvers() - 
start]
[2006-03-14 09:32:16,234][main][DEBUG][BusinessLayer|loadConflictResolvers() - 
end]
[2006-03-14 09:32:18,468][main][DEBUG][BusinessLayer|loadRules() - end]
[2006-03-14 09:32:18,468][main][DEBUG][BusinessLayer|evaluateTask(TaskVO) - 
Fire Rules]
[2006-03-14 09:32:18,468][main][DEBUG][--------------]



<!-- Information being passed into the method.  -->
[2006-03-14 09:32:18,500][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - desc [CONTRACT] value [S#1234567890]]
<!-- Infomation located....  -->
[2006-03-14 09:32:18,500][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - name[CONTRACT] value[S#1234567890]]

[ConditionTested: rule=AssignTask; condition=[Condition: 
taskVO.getIdentifiersList() != null || taskVO.isIdentifiersListEmpty() == 
false]; passed=true; tuple={[]}]
[ConditionTested: rule=AssignTask; condition=[Condition: 
taskVO.containsIdentifier("CONTRACT", "S#1234567890") == true]; passed=true; 
tuple={[]}]
[ActivationCreated: rule=AssignTask; tuple={[]}]
[ConditionTested: rule=AuditTask; condition=[Condition: 
taskVO.getStatus().equalsIgnoreCase("OPEN") == true]; passed=false; tuple={[]}]
[ConditionTested: rule=RouteTask; condition=[Condition: 
taskVO.getStatus().equalsIgnoreCase("OPEN") == true ]; passed=false; tuple={[]}]
[ConditionTested: rule=SuspendTask; condition=[Condition: 
taskVO.getTaskType().equals("ADFPAYCHK") == true]; passed=false; tuple={[]}]
[ObjectAsserted: handle=[fid:1]; object=        TaskId:[t1234567890]
        PacketId:[p1234567890]
        OperId:[]
        LastHistDate:[null]
        LastAccessDate:[null]
        ReceivedDate:[Tue Jan 03 00:00:00 CST 2006]
        CreateDate:[Tue Jan 03 00:00:00 CST 2006]
        EffDate:[Fri Mar 10 00:00:00 CST 2006]
        Department:[]
        TaskType:[]
        CDTaskType:[]
        ActionStep:[AWAIT EVAL]
        WorkBasket:[]
        VIP:[]
        CaseDesc:[]
        CaseId:[]
        Priority:[0]
        LockOper:[]
        ExcOper:[]
        AvailStatus:[]
        CommentFlag:[]
        Status:[]
        CompleteOper:[]
        CreateOper:[drools]
        SuspendOper:[]
        ExecOper:[]
        CompleteDate:[null]
        PrimaryDocId: []
        PrimaryDocType: []
        SuspOper:[]
        WakeDate:[null]

        TaskId:[t1234567890]
        IdDesc:[CONTRACT]
        CaseID: []
        CaseCode: [0]
        Fields[1]:
        Name[CONTRACT]  Field[S#1234567890]

]
[ConditionTested: rule=AssignTask; condition=[Condition: 
taskVO.getIdentifiersList() != null || taskVO.isIdentifiersListEmpty() == 
false]; passed=true; tuple={[]}]
[ConditionTested: rule=AssignTask; condition=[Condition: 
taskVO.containsIdentifier("CONTRACT", "S#1234567890") == true]; passed=true; 
tuple={[]}]
[ConditionTested: rule=AuditTask; condition=[Condition: 
taskVO.getStatus().equalsIgnoreCase("OPEN") == true]; passed=true; tuple={[]}]
[ConditionTested: rule=AuditTask; condition=[Condition: 
taskVO.getTaskType().equalsIgnoreCase("ADFPAYCHK") == true]; passed=true; 
tuple={[]}]

<!-- Information being passed into the method.  -->
[2006-03-14 09:32:18,531][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - desc [CONTRACT] value [S#1234567890]]
<!-- Infomation located....  -->
[2006-03-14 09:32:18,531][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - name[CONTRACT] value[S#1234567890]]

<!-- Information being passed into the method.  -->
[2006-03-14 09:32:18,531][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - desc [CONTRACT] value [S#1234567890]]

[ConditionTested: rule=AuditTask; condition=[Condition: 
taskVO.containsIdentifier("CONTRACT", "S#1234567890") == true]; passed=true; 
tuple={[]}]
[ActivationCreated: rule=AuditTask; tuple={[]}]
[ConditionTested: rule=RouteTask; condition=[Condition: 
taskVO.getStatus().equalsIgnoreCase("OPEN") == true ]; passed=true; tuple={[]}]
[ConditionTested: rule=RouteTask; condition=[Condition: 
taskVO.getTaskType().equalsIgnoreCase("ADFPAYCHK") == true]; passed=true; 
tuple={[]}]
[ConditionTested: rule=RouteTask; condition=[Condition: 
taskVO.containsIdentifier("AUDIT NBR", "COMPANY20060313-0000001") == true]; 
passed=false; tuple={[]}]
[ConditionTested: rule=SuspendTask; condition=[Condition: 
taskVO.getTaskType().equals("ADFPAYCHK") == true]; passed=true; tuple={[]}]
[ConditionTested: rule=SuspendTask; condition=[Condition: 
taskVO.getStatus().equalsIgnoreCase("REVIEW") == true]; passed=false; 
tuple={[]}]

<!-- Infomation located....  -->
[2006-03-14 09:32:18,546][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - name[CONTRACT] value[S#1234567890]]


<!-- Information being passed into the method.  -->
[2006-03-14 09:32:18,546][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - desc [AUDIT NBR] value [COMPANY20060313-0000001]]
<!-- Infomation NOT LOCATED!!!!!!!....  -->
[2006-03-14 09:32:18,546][main][DEBUG][TaskVO|containsIdentifier(String, 
String) - name[CONTRACT] value[S#1234567890]]

[ObjectModified: handle=[fid:1]; old_object=    TaskId:[t1234567890]
        PacketId:[p1234567890]
        DeptCode:[2]
        TaskCode:[2]
        ActCode:[2]
        OperId:[]
        LastHistDate:[null]
        LastAccessDate:[null]
        ReceivedDate:[Tue Jan 03 00:00:00 CST 2006]
        CreateDate:[Tue Jan 03 00:00:00 CST 2006]
        EffDate:[Fri Mar 10 00:00:00 CST 2006]
        Department:[DPT1]
        TaskType:[ADFPAYCHK]
        CDTaskType:[]
        ActionStep:[INDEX]
        WorkBasket:[rray]
        VIP:[]
        CaseDesc:[]
        CaseId:[]
        Priority:[0]
        LockOper:[]
        ExcOper:[]
        AvailStatus:[]
        CommentFlag:[]
        Status:[OPEN]
        CompleteOper:[]
        CreateOper:[drools]
        SuspendOper:[]
        ExecOper:[]
        CompleteDate:[null]
        PrimaryDocId: []
        PrimaryDocType: []
        SuspOper:[]
        WakeDate:[null]

        TaskId:[t1234567890]
        IdDesc:[CONTRACT]
        CaseID: []
        CaseCode: [0]
        Fields[1]:
        Name[CONTRACT]  Field[S#1234567890]

; new_object=   TaskId:[t1234567890]
        PacketId:[p1234567890]
        DeptCode:[2]
        TaskCode:[2]
        ActCode:[2]
        OperId:[]
        LastHistDate:[null]
        LastAccessDate:[null]
        ReceivedDate:[Tue Jan 03 00:00:00 CST 2006]
        CreateDate:[Tue Jan 03 00:00:00 CST 2006]
        EffDate:[Fri Mar 10 00:00:00 CST 2006]
        Department:[DPT1]
        TaskType:[ADFPAYCHK]
        CDTaskType:[]
        ActionStep:[INDEX]
        WorkBasket:[rray]
        VIP:[]
        CaseDesc:[]
        CaseId:[]
        Priority:[0]
        LockOper:[]
        ExcOper:[]
        AvailStatus:[]
        CommentFlag:[]
        Status:[OPEN]
        CompleteOper:[]
        CreateOper:[drools]
        SuspendOper:[]
        ExecOper:[]
        CompleteDate:[null]
        PrimaryDocId: []
        PrimaryDocType: []
        SuspOper:[]
        WakeDate:[null]

        TaskId:[t1234567890]
        IdDesc:[CONTRACT]
        CaseID: []
        CaseCode: [0]
        Fields[1]:
        Name[CONTRACT]  Field[S#1234567890]

]
[ActivationFired: rule=AssignTask; tuple={[]}]
[2006-03-14 09:32:18,546][main][DEBUG][BusinessLayer|evaluateTask(TaskVO) - end]
[2006-03-14 09:32:18,546][main][DEBUG][BusinessRuleTest|testUpdateTask() - end] 
  


I've changed the condition statements so I can get through as many as possible 
before the rule fails to assert.  To this end, I've updated the rules:

      <!-- priority and no recursive rule -->
   <rule name="AssignTask" salience="-1" no-loop="true">
      <!-- What is being passed into the rule -->
      <parameter identifier="taskVO">
         <class>TaskVO</class>
      </parameter>
       <!--  What conditions must be true before rule is asserted -->
      <java:condition>taskVO.getIdentifiersList() != null || 
taskVO.isIdentifiersListEmpty() == false</java:condition>
      <java:condition>taskVO.containsIdentifier("CONTRACT", "S#1234567890") == 
true</java:condition>
      
      <!-- What does the rule does for us -->
      <java:consequence>
          taskVO.setDepartment("DPT1");
          taskVO.setDptCode(lookupDeptCode("DPT1"));
          taskVO.setWorkBasket("rray");
          taskVO.setTaskType("ADFPAYCHK");
          taskVO.setTskCode(lookupTaskTypeCode("ADFPAYCHK"));
          taskVO.setActionStep("INDEX");
          taskVO.setActCode(lookupActStepCode("INDEX"));
          taskVO.setStatus("OPEN");
          //printTaskVO(taskVO);
          <!-- Firing any other rules based on changes -->
          drools.modifyObject(taskVO);
      </java:consequence>    
   </rule>
   
      <!-- priority and no recursive rule -->
   <rule name="AuditTask" salience="0" no-loop="true">
      <!-- What is being passed into the rule -->
      <parameter identifier="taskVO">
         <class>TaskVO</class>
      </parameter>
       <!--  What conditions must be true before rule is asserted -->
      <java:condition>taskVO.getStatus().equalsIgnoreCase("OPEN") == 
true</java:condition>
      <java:condition>taskVO.getTaskType().equalsIgnoreCase("ADFPAYCHK") == 
true</java:condition>
      <java:condition>taskVO.containsIdentifier("CONTRACT", "S#1234567890") == 
true</java:condition>
      
      
      <!-- What does the rule does for us -->
      <!-- This rule is suppose to add an object into the task -->
      <java:consequence>
          ident = new IdentifierVO();
                  ident.setTaskId("t1234567890");
                  ident.addField("COMPANY20060313-0000001");
                  ident.addFieldName("AUDIT NBR");
                  ident.addFieldSize(45);
                  ident.setIdDesc("AUDIT NBR");
                  taskVO.addIdentifier(ident);
                  taskVO.setActionStep("PROCESS");
          //printTaskVO(taskVO);
          <!-- Firing any other rules based on changes -->
          drools.modifyObject(taskVO);
      </java:consequence>    
   </rule>
   
        <!-- priority and no recursive rule -->
   <rule name="RouteTask" salience="1" no-loop="true">
      <!-- What is being passed into the rule -->
      <parameter identifier="taskVO">
         <class>TaskVO</class>
      </parameter>
       <!--  What conditions must be true before rule is asserted -->
      <java:condition>taskVO.getStatus().equalsIgnoreCase("OPEN") == true 
</java:condition>
      <java:condition>taskVO.getTaskType().equalsIgnoreCase("ADFPAYCHK") == 
true</java:condition>
      <java:condition>taskVO.containsIdentifier("AUDIT NBR", 
"COMPANY20060313-0000001") == true</java:condition>

      
      <!-- What does the rule does for us -->
      <java:consequence>
          taskVO.setWorkBasket("mightymouse");
          taskVO.setStatus("REVIEW");
          //printTaskVO(taskVO);
          <!-- Firing any other rules based on changes -->
          drools.modifyObject(taskVO);
      </java:consequence>    
   </rule>
   
   
   
         <!-- priority and no recursive rule -->
   <rule name="SuspendTask" salience="2" no-loop="true">
      <!-- What is being passed into the rule -->
      <parameter identifier="taskVO">
         <class>TaskVO</class>
      </parameter>
       <!--  What conditions must be true before rule is asserted -->
      <java:condition>taskVO.getTaskType().equals("ADFPAYCHK") == 
true</java:condition>
      <java:condition>taskVO.getStatus().equalsIgnoreCase("REVIEW") == 
true</java:condition>
      <java:condition>taskVO.getCaseDesc().equalsIgnoreCase("missing 
signature") == true</java:condition>
      
      <!-- What does the rule does for us -->
      <java:consequence>
          taskVO.setStatus("SUSPEND");
          taskVO.setSuspOper("MightyMouse");
          taskVO.setCaseDesc("missing signature");
          taskVO.setCaseId("C1234567890");
          DroolsMail mail = new DroolsMail();
           try{
              mail.postMail(loadMailReceipients(),
                               "Drools Dispatch Mail",
                               "This is a Drools Test",
                               "[EMAIL PROTECTED]");
           }catch (MessagingException me){
              me.printStackTrace();
           }
          //printTaskVO(taskVO);
          <!-- Firing any other rules based on changes -->
          drools.modifyObject(taskVO);
      </java:consequence>    
   </rule>


Russ





-----Original Message-----
From: Geoffrey Wiseman [mailto:[EMAIL PROTECTED]
Sent: Monday, March 13, 2006 10:59 PM
To: user@drools.codehaus.org
Subject: Re: [drools-user] Chaining Rules


On 3/13/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
>    Maybe I am not seeing the error in my ways.  I have four rules.  I am
> chaining them together.  Each rule acts upon the object in a different
> way.  I have set up the no-loop attribute so no rule is fired more than
> once.  I have also assigned a priority for each of the rules so they will
> execute in sequence. I have four Conflict resolvers loaded (Salience,
> Recency, Simplicity, Load).  After I have performed a said operation within
> a rule, I call the function    drools.modifyObject(taskVO) for updating
> the fact.  However, I am not seeing the final results with all the
> information getting into the object after all the four rules have fired:
>

Ok, so what ARE you seeing?   Are any of the rules firing?  Did you try
adding an event listener to trace the rules?

--
Geoffrey Wiseman

Reply via email to