我的业务流程中有业务规则任务:
<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>
有一个
<bpmn2:dataInput id="DataInput_4" itemSubjectRef="_ItemDefinition_3" name="input1"/>
<bpmn2:dataOutput id="DataOutput_2" itemSubjectRef="_String" name="output1"/>
input1和output1变量映射到bpm数据对象。
此外,我还有此业务规则任务运行的规则:
rule "TestRule"
ruleflow-group "ruleGroup"
when
p: SomeClass(someField== "testRoad")
then
System.out.println("+++ Rule if statement true: " + p.getSomeField());
end
我可以按p: SomeClass(someField== "testRoad")
测试输入变量,并使用p
供以后使用。
但是我怎么能设置一些东西到output1变量,这样我以后可以在BP中使用这个变量?
我应该在里面写什么&#34;然后&#34;设置输出1?
我尝试过这样的事情:
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
但它不起作用。如果我只使用没有BPM的drools并在会话中手动插入所有变量,它就可以工作。但在英国石油公司,这种规则并不起作用。它甚至不会进入&#34;然后&#34;在那种情况下。
我确实找不到任何相关文档。我所能找到的只是System.out.println
或修改输入变量(在我的情况下为p
)&#34;然后&#34;。
谢谢。