Custom Headers en Oracle BPEL PM 10.1.3.X

Cuando se hacen invocaciones a Web Services a través de partnerlinks en bpel, en ocasiones es necesario enviar lo que se conocen como Headers, a través de la sección HEADER del mensaje SOAP.
En esta ocasión vamos a ver cómo incluir estos headers al invocar un Web Service. El escenario es poder invocar un Web Service protegido por WS-Security, pero (y aquí está lo interesante) utilizando los esquemas del WSSE Token del 2002, es decir:

El header a generar es:
Este mismo mecanismo servirá para mandar cualquier custom header. De esta manera ilustraremos las capacidades de Oracle BPEL PM 10.1.3.x para enviar Custom Headers.

Bien, para resolver el problema de mandar el token de WSSE con los esquemas viejos, es necesario primero descargarlos y ponerlos en la carpeta bpel de tu projecto.

Dichos esquemas se pueden descargar de:


Hay que crear una variable (con el nombre que sea) que sea de tipo Security, que justamente está en el archivo wsse22.xsd. Para eso, en este ejemplo, la voy a crear de manera global. Dando click en el ícono (x) del flujo bpel, así como aparece en la sig imagen:

Saldrá esta otra Ventana, dale click en Create:

Saldrá la siguiente ventana, dale cualquier nombre a tu variable, en este caso wssHeaders. Selecciona Element y da click en el botón como de linterna:

Después te saldrá esta ventana. ¿Por qué salen esos esquemas ahí? Son los que pusimos en el primer paso abajo del folder bpel de tu proyecto. Debes seleccionar ese Elemento de nombre Security y dar click en OK Ahora ya tienes una variable de este tipo, click en Apply y luego OK:Click de nuevo en OK en esta ventana:

Ahora vamos a hacer un Assign, pero copiarás de un XML Fragment a la variable recién creada de tipo Security, así como aparece en la sig imagen, ten cuidado de seleccionar en el target al nombre de la variable (wssHeaders), y no al campo Security.
Lo que debes copiar es justamente el token de seguridad, con el user y pwd que corresponda. Aquí es justo donde estamos poniendo nuestro Custom Header, en este caso:
Ahora hay que crear el partnerlink, como siempre lo has hecho, con su respectivo invoke. Debemos tener un flujo similara al siguiente:
La última parte es decirle que queremos pasarle un header a ese partnerlink.
Para ésto, dale doble click al invoke, y en la pestaña de Adapters, dale click a la linterna:

Te debió abrir la siguiente ventana después de haberle dado click a la linterna. Ahí selecciona la variable que creamos hace un rato de tipo Security y de nombre wssHeaders. Das click en OK, y después en Apply y OK de nuevo:
De esta manera cuando bpel haga el invoke a ese WS a través del Partnerlink, enviará como parte del mensaje, un Header con el contenido que nosotros queramos.
Así puedes hacer uso de los Customer Headers en Oracle BPEL Process Manager 10.1.3.x.