[rules-users] How do I configure the constraints for a Split node in Drools Flow to test the value of a process variable?

Alan.Gairey at tessella.com Alan.Gairey at tessella.com
Mon Oct 19 08:38:55 EDT 2009


I have a requirement for a simple rule flow containing a "status" process 
variable; a work item sets the value of this variable via its Result 
Mapping. Following the work item is an XOR Split node, which can go to one 
of two following nodes, depending on the value of the status process 
variable. The relevant sections from the rule flow definition, as 
currently written, are as follows:

  <header>
    <variables>
      <variable name="status" >
        <type 
name="org.drools.process.core.datatype.impl.type.StringDataType" />
      </variable>
      ...
    </variables>
  </header>

  <nodes>
    ...
    <workItem id="4" name="Test work item" x="352" y="52" width="80" 
height="40" >
      <work name="TestItem" >
      </work>
      <mapping type="out" from="status" to="status" />
    </workItem>
    ...
    <split id="9" name="Split" x="464" y="52" width="80" height="40" 
type="2" >
      <constraints>
        <constraint toNodeId="10" toType="DROOLS_DEFAULT" name="error" 
priority="1" type="code" dialect="java" 
>status.equals("error")</constraint>
        <constraint toNodeId="8" toType="DROOLS_DEFAULT" name="success" 
priority="1" type="code" dialect="java" 
>status.equals("success")</constraint>
      </constraints>
    </split>
    ...
  </nodes>
The Java code that implements the "TestItem" work item finishes with the 
code:

    Map<String, Object> results = new HashMap<String, Object>();
    results.put("status", status);  // Value of status can be "success" or 
"error"
 
ksession.getWorkItemManager().completeWorkItem(stepInstance.getWorkItemId(), 
results);
When I execute this process, no matter what the value of the status result 
returned by the work item, the node with ID 8 (the 'success' path) always 
executes.
I hope it's clear what I'm trying to do (i.e. define a process variable, 
sets its value using the result from a work item, and then test its value 
in a Split node); can anyone help me out as to why it's not working? 
(Incidentally, this is Drools v5.1M1.)
Many thanks,
Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20091019/3856a7ca/attachment.html 


More information about the rules-users mailing list