In this recipe, we will identify the ways of how to throw the faults from BPEL. For this recipe, we will adapt the BPEL process from the previous recipe.
In the previous recipe, we saw that the web service performed the check against the dates. However, we would like to change the BPEL process so that some basic checking on the dates is performed in the BPEL process. We will check if the from
and to
dates are the same. If they are the same, we will throw the fault.
<element name = "faultResponse"> <complexType> <sequence> <element name = "msg" type = "string"/> </sequence> </complexType> </element>
<wsdl:message name = "EqualDatesFault"> <wsdl:part name = "fault" element = "client:faultResponse"/> </wsdl:message>
<wsdl:portType name = "BPELProcessFault">
<wsdl:operation name = "process">
<wsdl:input message = "client:BPELProcessFaultRequestMessage"/>
<wsdl:output message = "client:BPELProcessFaultResponseMessage"/>
<wsdl:fault message = "client:EqualDatesFault" name = "fault"/>
</wsdl:operation>
</wsdl:portType>
<switch>
activity. We set the condition on dates and put the <throw>
activity inside of the <switch>
activity. The <throw>
activity would throw the fault we defined in the previous steps.from
-to
parameters. We can see that the fault was thrown from the BPEL process and that the BPEL process did not finish successfully.We do a check about the fault in the fault handlers. In cases where the BPEL process cannot recover from the fault, we sometimes want to rethrow the fault to the client, calling the BPEL process.
<throw>
activity. We define the same parameters as we did for the <catch>
activity as shown in the following screenshot:<switch>
activity as follows:bpws:getVariableData('inputVariable','payload','/client:process/client:from') > xp20:current-dateTime()