jBPM访问规则中的业务规则任务输入和输出变量

时间:2015-06-08 07:55:27

标签: drools jbpm

我的业务流程中有业务规则任务:

<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;。

谢谢。

0 个答案:

没有答案