Cómo recuperar el contenido de las excepciones en BPEL

Al contrario de lo que pasa en Oracle Service Bus, los procesos BPEL no disponen de una variable de sistema fault en la que consultar el detalle de las excepciones generadas en tiempo de ejecución. Con ello no quiero decir que no podamos conocer dichos detalles, pero nos conllevará algún paso extra.

En primer lugar, hemos de importar a nuestro proyecto la definición RuntimeFault.wsdl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<wsdl:definitions
     name="Process"
     targetNamespace="http://xmlns.oracle.com/Process"
...
    >
    <plnk:partnerLinkType name="Process">
...
    </plnk:partnerLinkType>
    <wsdl:import namespace="http://schemas.oracle.com/bpel/extension"
                 location="oramds:/soa/shared/bpel/RuntimeFault.wsdl"/>
    <wsdl:types>
...
    </wsdl:types>
...
</wsdl:definitions>

Lo siguiente es crear una variable en nuestro proceso que pueda almacenar el contenido de la excepción y que tendrá la siguiente estructura:

RuntimeFaultMessage
Estructura del RuntimeFaultMessage

Una vez tengamos la variable creada (a la cual hemos llamado runtimeFault), es momento de asignarla a un controlador de excepciones, en el que podremos recuperar su contenido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<faultHandlers>
  <catch faultName="bpelx:remoteFault" faultVariable="runtimeFault"
         faultMessageType="bpelx:RuntimeFaultMessage">
    <sequence>
      <assign name="RecuperarDetalle">
        <copy>
          <from>$runtimeFault.code</from>
          <to>$outputVariable.payload/ns1:Result/ns2:code</to>
        </copy>
        <copy>
          <from>$runtimeFault.summary</from>
          <to>$outputVariable.payload/ns1:Result/ns2:description</to>
        </copy>
      </assign>
    </sequence>
  </catch>
</faultHandlers>

Como decía al principio, es posible obtener el detalle de aquellas excepciones generadas en tiempo de ejecución, con el fin de facilitar nuestras investigaciones cuando recibamos los bonitos “el proceso me da error”.

Evolución, innovación y transformación
37 especializaciones avaladas por Oracle
Oportunidades ilimitadas
El equipo marca la diferencia
Posts 100% Oracle
Sigue nuestro día a día