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.