The first thing we need to do is feed every instance of the subprocess with the details of one pizza. For the outcome of the subprocesses we also need a storage location.
As a recap, an order consists of customer details and a list of pizzas to be made:
The EXECUTION_LOGGING shows the following message
And in more detail:
<auditQueryPayload auditId="1725" ciKey="366" xmlns="http://xmlns.oracle.com/bpmn/engine/audit">
<dataState>
<dataObject name="InstanceCount" isBusinessIndicator="false">
<value>
<![CDATA[1]]>
</value>
</dataObject>
<dataObject name="LoopCount" isBusinessIndicator="false">
<value>
<![CDATA[1]]>
</value>
</dataObject>
<dataObject name="FaultMessage" isBusinessIndicator="false">
<value>
<![CDATA[oracle.bpm.bpmn.engine.model.runtime.microinstructions.TrappableException: faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} cause: {faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
parts: {{
summary=<summary>XPath query string returns multiple nodes.
The assign activity part and query bpmn:getActivityInstanceAttribute('ACT8ab29e4034addb8071bc8eb9960d7ffc', 'loopDataOutput')[1] are returning multiple nodes.
The assign activity part and query named in the error message returned multiple nodes. It should return single node.
According to BPEL4WS specification 1.1 section 14.3, the assign activity part and query named in the error message should not return multiple nodes. Verify the part and xpath query named in the error message at line number -1 in the BPEL source.
</summary>}
}
]]>
</value>
</dataObject>
</dataState>
</auditQueryPayload>
We used the ‘loopCounter’ and the details in the subprocess proves that it works fine for the input (loopDataInput[loopCounter]’) so how could it be possible that we selected multiple nodes on the output (loopDataOutput[loopCounter]) side? Why is this? <dataState>
<dataObject name="InstanceCount" isBusinessIndicator="false">
<value>
<![CDATA[1]]>
</value>
</dataObject>
<dataObject name="LoopCount" isBusinessIndicator="false">
<value>
<![CDATA[1]]>
</value>
</dataObject>
<dataObject name="FaultMessage" isBusinessIndicator="false">
<value>
<![CDATA[oracle.bpm.bpmn.engine.model.runtime.microinstructions.TrappableException: faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} cause: {faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
parts: {{
summary=<summary>XPath query string returns multiple nodes.
The assign activity part and query bpmn:getActivityInstanceAttribute('ACT8ab29e4034addb8071bc8eb9960d7ffc', 'loopDataOutput')[1] are returning multiple nodes.
The assign activity part and query named in the error message returned multiple nodes. It should return single node.
According to BPEL4WS specification 1.1 section 14.3, the assign activity part and query named in the error message should not return multiple nodes. Verify the part and xpath query named in the error message at line number -1 in the BPEL source.
</summary>}
}
]]>
</value>
</dataObject>
</dataState>
</auditQueryPayload>
If we take a closer look to the data available in the subprocess then we see that it is not necessary to access the data via an index in the array, but that a separate variable has become available. it therefore seems that we are not approaching the data in the right way.
Would changing to parallel processing be enough to arrange this? Let’s try and see what is happening.
No comments:
Post a Comment