3

I have Business Rule Task in my Business Process:

<bpmn2:businessRuleTask id="BusinessRuleTask_3" tns:ruleFlowGroup="ruleGroup" name="TestRule" implementation="Java">
  <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
  <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
  <bpmn2:ioSpecification id="InputOutputSpecification_4">
    <bpmn2:dataInput id="DataInput_4" itemSubjectRef="_ItemDefinition_3" name="input1"/>
    <bpmn2:dataOutput id="DataOutput_2" itemSubjectRef="_String" name="output1"/>
    <bpmn2:inputSet id="InputSet_2">
      <bpmn2:dataInputRefs>DataInput_4</bpmn2:dataInputRefs>
    </bpmn2:inputSet>
    <bpmn2:outputSet id="OutputSet_3">
      <bpmn2:dataOutputRefs>DataOutput_2</bpmn2:dataOutputRefs>
    </bpmn2:outputSet>
  </bpmn2:ioSpecification>
  <bpmn2:dataInputAssociation id="DataInputAssociation_4">
    <bpmn2:sourceRef>inputMessage</bpmn2:sourceRef>
    <bpmn2:targetRef>DataInput_4</bpmn2:targetRef>
  </bpmn2:dataInputAssociation>
  <bpmn2:dataOutputAssociation id="DataOutputAssociation_2">
    <bpmn2:sourceRef>DataOutput_2</bpmn2:sourceRef>
    <bpmn2:targetRef>outputMessage</bpmn2:targetRef>
  </bpmn2:dataOutputAssociation>
</bpmn2:businessRuleTask>

There is a

<bpmn2:dataInput id="DataInput_4" itemSubjectRef="_ItemDefinition_3" name="input1"/>
<bpmn2:dataOutput id="DataOutput_2" itemSubjectRef="_String" name="output1"/>

input1 and output1 variables mapped to bpm Data Objects.

Also I have Rule that run by this business rule task:

rule "TestRule"
ruleflow-group "ruleGroup"
    when
        p: SomeClass(someField== "testRoad")
    then
        System.out.println("+++ Rule if statement true: " + p.getSomeField());
end

I can test input variable by p: SomeClass(someField== "testRoad") and use p for later use.

But how can I set something to output1 variable so that I could use this variable later in BP?

What should I write inside "then" to set something to output1?

I have tried something like this:

rule "TestRule"
ruleflow-group "ruleGroup"
    when
        p: SomeClass(someField== "testRoad")
        s: String()
    then
        System.out.println("+++ Rule if statement true: " + p.getSomeField());
        s = "test";
end

But it doesn't work. It works if I just use drools without BPM and insert all variables manually in session. But in BP that kind of rule doesn't work. It don't even get into "then" in that case.

I did'nt find any documentation on that. All I could find is System.out.println or modifying input variable (p in my case) inside "then".

Thank you.

  • It is incredible. I did not found any documentation. Have you found any workaround? – rpax Apr 17 '16 at 21:54

0 Answers0