jueves, 20 de octubre de 2016

Actualizar payload desde un Managed Bean en Oracle BPM 12c | Update Payload

Si por alguna razón necesitamos actualizar el payload que manejamos como parte de nuestra tarea humana, el siguiente ejemplo nos puede ayudar.

En la Tarea de Usuario que usaremos como ejemplo, asigno en el Input de la Tarea de usuario el valor "valor inicial" al campo "campo1" que es uno de los campos que posee la Tarea como forma de mostrar el valor que actualizaré:



Luego con el siguiente código que invocamos a través de uno de los botones que tenemos en la página ADF realizamos la actualización del valor que posee el campo "campo1":


Donde se puede observar como obtengo el acceso al "campo1" que se encuentra dentro del payload con la siguiente sentencia:

Node value = payload.getElementsByTagName("campo1").item(0);

Luego especificamos el nuevo valor para el campo con la siguiente sentencia:

value.setTextContent("Valor fin");

Guardamos el valor modificado de vuelta a la tarea:

myTask.setPayloadAsElement(payload);

Y por último actualizamos la tarea con el payload actualizado:

taskSvc.updateTask(wfContext,myTask);

Si ejecutamos el proceso y accedemos a la Tarea de Usuario veremos que el "campo1" tiene como valor "valor inicial" porque así lo especificamos en el Input de la tarea:


El botón "Cambiar" es el que se encarga de invocar el código que ya vimos antes y que al ser presionado actualiza el payload. Si luego presionamos el botón "Enviar" se termina con la tarea y podremos ver en el Seguimiento del proceso que efectivamente el valor del Payload para el campo "campo1" fue actualizado con el valor "valor fin" que especificamos en el código: