在任何信号边界事件上获得 "Data Output has no Data Type"
Getting "Data Output has no Data Type" on any signal boundary event
我在 Eclipse Luna 中使用 BPMN2 建模器 v1.1.3.201503101616,为 Jboss EAP 6.1 开发 JBPM 6.0.3。每当我将信号边界事件添加到 activity 时,它都会被标记为错误 "Data Output Signal_1_Output () has no Data Type"。错误的类型为 "jBPM Process Problem".
例如,这是我整理的一个简单工作流程:
下面是该过程的生成源(标出错误的行):
<bpmn2:itemDefinition id="ItemDefinition_4" isCollection="false" structureRef="String"/>
<bpmn2:signal id="SignalFoo" name="SignalFoo"/>
<bpmn2:process id="defaultPackage.Scratch" tns:packageName="defaultPackage" name="Scratch" isExecutable="true" processType="Private">
<bpmn2:property id="str" itemSubjectRef="ItemDefinition_4" name="str"/>
<bpmn2:startEvent id="StartEvent_1" name="StartProcess">
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:scriptTask id="ScriptTask_1" name="Script Task 1" scriptFormat="http://www.java.com/java">
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
<bpmn2:script>System.out.println("Hello world!");</bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="SequenceFlow_1" tns:priority="1" sourceRef="StartEvent_1" targetRef="ScriptTask_1"/>
<bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="ScriptTask_1">
<bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
<bpmn2:dataOutput id="DataOutput_1" name="Signal_1_Output"/> <-- Error
<bpmn2:dataOutputAssociation id="DataOutputAssociation_1">
<bpmn2:sourceRef>DataOutput_1</bpmn2:sourceRef>
<bpmn2:targetRef>str</bpmn2:targetRef>
</bpmn2:dataOutputAssociation>
<bpmn2:outputSet id="OutputSet_1" name="Output Set 1">
<bpmn2:dataOutputRefs>DataOutput_1</bpmn2:dataOutputRefs>
</bpmn2:outputSet>
<bpmn2:signalEventDefinition id="SignalEventDefinition_1" signalRef="SignalFoo"/>
</bpmn2:boundaryEvent>
<bpmn2:endEvent id="EndEvent_1" name="End Event 1">
<bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_2" tns:priority="1" sourceRef="ScriptTask_1" targetRef="EndEvent_1"/>
<bpmn2:scriptTask id="ScriptTask_2" name="Script Task 2" scriptFormat="http://www.java.com/java">
<bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
<bpmn2:script>System.out.println("Goodbye, cruel world!");</bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="SequenceFlow_3" tns:priority="1" sourceRef="BoundaryEvent_1" targetRef="ScriptTask_2"/>
<bpmn2:endEvent id="EndEvent_2" name="End Event 2">
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_4" tns:priority="1" sourceRef="ScriptTask_2" targetRef="EndEvent_2"/>
</bpmn2:process>
尽管有错误,Jbpm 能够运行 毫无怨言地执行该过程,并且边界事件似乎可以正常工作。我无法在 Internet 上找到任何其他提及此特定错误的信息。我也在寻找调整 jBPM 流程验证器的方法,但我在 eclipse 首选项中找不到任何相关信息。
这是合理的错误吗?有人可以建议如何解决它吗?或者,有没有办法禁用此验证规则?
jBPM 没有指定数据类型的要求(对于边界事件和其他地方)。 Modeler 错误地将此标记为错误。您能否打开 Eclipse BPMN2 Modeler Bugzilla,以便我们可以修复此问题(如果尚未解决)?
我打开了 https://bugs.eclipse.org/bugs/show_bug.cgi?id=463362 这个问题。
解决方法是在XML编辑器中打开bpmn文件并修改dataOutput元素:
<bpmn2:dataOutput id="DataOutput_1" name="Signal_1_Output"/>
添加一个名为 "itemSubjectRef" 的属性,从文件开头引用适当的 itemDefinition
,例如:
<bpmn2:dataOutput id="DataOutput_1"
itemSubjectRef="ItemDefinition_4" name="Signal_1_Output"/>
这会阻止 BPMN2 将事件标记为错误。我还没有找到在 BPMN2 建模器编辑器中进行此更改的方法。
更新:
Bug 463362 is marked as fixed 在 BPMN Modeler 1.1.4 和 1.2.0 中。
我在 Eclipse Luna 中使用 BPMN2 建模器 v1.1.3.201503101616,为 Jboss EAP 6.1 开发 JBPM 6.0.3。每当我将信号边界事件添加到 activity 时,它都会被标记为错误 "Data Output Signal_1_Output () has no Data Type"。错误的类型为 "jBPM Process Problem".
例如,这是我整理的一个简单工作流程:
下面是该过程的生成源(标出错误的行):
<bpmn2:itemDefinition id="ItemDefinition_4" isCollection="false" structureRef="String"/>
<bpmn2:signal id="SignalFoo" name="SignalFoo"/>
<bpmn2:process id="defaultPackage.Scratch" tns:packageName="defaultPackage" name="Scratch" isExecutable="true" processType="Private">
<bpmn2:property id="str" itemSubjectRef="ItemDefinition_4" name="str"/>
<bpmn2:startEvent id="StartEvent_1" name="StartProcess">
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:scriptTask id="ScriptTask_1" name="Script Task 1" scriptFormat="http://www.java.com/java">
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
<bpmn2:script>System.out.println("Hello world!");</bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="SequenceFlow_1" tns:priority="1" sourceRef="StartEvent_1" targetRef="ScriptTask_1"/>
<bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="ScriptTask_1">
<bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
<bpmn2:dataOutput id="DataOutput_1" name="Signal_1_Output"/> <-- Error
<bpmn2:dataOutputAssociation id="DataOutputAssociation_1">
<bpmn2:sourceRef>DataOutput_1</bpmn2:sourceRef>
<bpmn2:targetRef>str</bpmn2:targetRef>
</bpmn2:dataOutputAssociation>
<bpmn2:outputSet id="OutputSet_1" name="Output Set 1">
<bpmn2:dataOutputRefs>DataOutput_1</bpmn2:dataOutputRefs>
</bpmn2:outputSet>
<bpmn2:signalEventDefinition id="SignalEventDefinition_1" signalRef="SignalFoo"/>
</bpmn2:boundaryEvent>
<bpmn2:endEvent id="EndEvent_1" name="End Event 1">
<bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_2" tns:priority="1" sourceRef="ScriptTask_1" targetRef="EndEvent_1"/>
<bpmn2:scriptTask id="ScriptTask_2" name="Script Task 2" scriptFormat="http://www.java.com/java">
<bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
<bpmn2:script>System.out.println("Goodbye, cruel world!");</bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="SequenceFlow_3" tns:priority="1" sourceRef="BoundaryEvent_1" targetRef="ScriptTask_2"/>
<bpmn2:endEvent id="EndEvent_2" name="End Event 2">
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_4" tns:priority="1" sourceRef="ScriptTask_2" targetRef="EndEvent_2"/>
</bpmn2:process>
尽管有错误,Jbpm 能够运行 毫无怨言地执行该过程,并且边界事件似乎可以正常工作。我无法在 Internet 上找到任何其他提及此特定错误的信息。我也在寻找调整 jBPM 流程验证器的方法,但我在 eclipse 首选项中找不到任何相关信息。
这是合理的错误吗?有人可以建议如何解决它吗?或者,有没有办法禁用此验证规则?
jBPM 没有指定数据类型的要求(对于边界事件和其他地方)。 Modeler 错误地将此标记为错误。您能否打开 Eclipse BPMN2 Modeler Bugzilla,以便我们可以修复此问题(如果尚未解决)?
我打开了 https://bugs.eclipse.org/bugs/show_bug.cgi?id=463362 这个问题。
解决方法是在XML编辑器中打开bpmn文件并修改dataOutput元素:
<bpmn2:dataOutput id="DataOutput_1" name="Signal_1_Output"/>
添加一个名为 "itemSubjectRef" 的属性,从文件开头引用适当的 itemDefinition
,例如:
<bpmn2:dataOutput id="DataOutput_1"
itemSubjectRef="ItemDefinition_4" name="Signal_1_Output"/>
这会阻止 BPMN2 将事件标记为错误。我还没有找到在 BPMN2 建模器编辑器中进行此更改的方法。
更新:
Bug 463362 is marked as fixed 在 BPMN Modeler 1.1.4 和 1.2.0 中。