Ahora creará la implementación del componente de proceso de negocio, que es más complejo que la implementación de la tarea de usuario.
Acerca de esta tarea
Cree la implementación de proceso de negocio:
Procedimiento
- En el editor de ensamblaje, efectúe una doble pulsación en el componente de proceso
HelloWorldProcess para iniciar el trabajo en él. Pulse
Sí en la ventana Abrir y pulse Aceptar
en la ventana Generar implementación. Se abre el editor de procesos de negocio, como se muestra a continuación:
- El proceso invocará una tarea de usuario, que puede tardar mucho tiempo en
responder. Por ello necesita definir el proceso como proceso de ejecución
larga. Pulse en un espacio libre cualquiera del editor, vaya
a la vista Propiedades y seleccione la pestaña Detalles. Observe que el proceso se identifica como un Proceso de larga ejecución, como se muestra a continuación:Si desea cambiar el proceso de un proceso de larga ejecución a un microflujo, pulse el enlace
Refactorizar para microflujo.
Esto garantiza que no se cambie únicamente la definición de proceso sino que también se cambie el componente de proceso en el editor de ensamblaje. Esto significa que el proceso cambia y que todos los artefactos en sentido descendente afectados por el cambio se actualizan.
- Un proceso de negocio está formado por actividades o pasos individuales. Cuando se crea inicialmente un proceso para una interfaz con una operación de
solicitud-respuesta, tiene dos actividades proporcionadas previamente: la actividad
Recibir para iniciar el proceso mediante la operación y una
actividad Responder para devolver la respuesta al llamante. Sus propias
actividades se insertarán entre estas dos actividades. En la paleta, expanda la categoría Estructuras y arrastre el Flujo generalizado y suéltelo entre Recibir y Responder, tal como se muestra a continuación: Observe que algunas actividades como el Flujo generalizado están estructuradas, lo que significa que están diseñadas para contener
otras actividades. Para producir un flujo que se ramifique, debe utilizar Actividades paralelas, Flujo generalizado o Ámbito de colaboración.
- En la bandeja del lado derecho del lienzo, expanda la categoría
Interlocutores de referencia y arrastre y suelte
HelloWorldTaskPartner en la estructura
GeneralizedFlow y luego defina el nombre como
InvokeTask, tal como se muestra a continuación:Esto crea una actividad Invocar configurada
que llama a esta referencia, que está conectada al componente de tarea de usuario en el
editor de ensamblaje. Esto significa que durante la ejecución, la actividad da como
resultado la creación de una instancia de la tarea de usuario; es decir, se crea una
tarea pendiente que está a la espera de que la reclame uno de
sus posibles propietarios. Pero todavía no está configurada totalmente. Es necesario definir dónde obtener los datos de parámetros de entrada de la tarea y
almacenar sus resultados de salida.
- En el lienzo, seleccione la actividad InvokeTask y abra
la vista Propiedades debajo del editor.
Seleccione la pestaña
Detalles. En las filas Entradas de la
tabla, pulse none en la celda de la fila
gender y de la última columna denominada Leer de
variable.
Aparecerá una lista desplegable con todas las variables definidas actualmente en este proceso que tengan un tipo coincidente, que en este punto sólo son
los parámetros de entrada y salida de la interfaz de proceso.
Seleccione la variable
gender, que es el parámetro de entrada de este proceso. Esta selección implica que pasará los datos de texto de esta variable como entrada a la tarea de usuario.
- Similarmente, en las filas Salidas, pulse
none en la celda de la fila firstName
y de la última columna llamada Almacenar en variable, pero
esta vez seleccione Nuevo y cree una nueva variable
denominada firstname. Haga lo mismo para la fila lastName y cree una nueva variable denominada
lastname. Observe que las variables se crean con el tipo adecuado para este parámetro de interlocutor de referencia. La tabla será parecida a la siguiente:
- Durante la ejecución, cuando InvokeTask concluya,
tendrá variables que contienen el nombre y apellido del usuario. El servicio de ejemplo Hello World Part 1 que debe invocar también necesita una
fórmula de tratamiento, tal como Mister, lo que significa que necesita definir
una variable para contener el valor. Junto a la categoría
Variables en la bandeja, pulse el icono de signo más (+) tal
como se muestra en la figura siguiente: Se abrirá la ventana
Añadir una variable.
- En el campo Nombre, escriba el nombre de variable
fullname y seleccione el tipo
FullName, que es un objeto de negocio creado en el ejemplo
Hello World Part 1.
Pulse Aceptar. Este es el tipo de datos
correspondiente de la variable que el servicio del primer ejemplo necesita como
entrada.
La lista de variables debe tener este aspecto: La variable fullname tiene tres campos definidos en ella,
todos de tipo serie: title, firstName
y lastName.
Para invocar el servicio, debe definir
un valor para los tres campos, tal como se describe en los pasos siguientes.
- En la paleta, expanda la categoría Acciones básicas y
arrastre la actividad Assign al interior de la
estructura GeneralizedFlow del lienzo.
Cambie el nombre de
la actividad a AssignM.
- Mientras AssignM está seleccionado, vaya a la vista
Propiedades y a la pestaña Detalles.
En la columna Asignar a de la tabla, pulse
Seleccionar para. En la lista desplegable, expanda
fullname y seleccione title.
- En la misma tabla, en la columna Asignar desde, pulse
Seleccionar desde. Seleccione Serie (entrar un
valor) en la lista desplegable y escriba Mr, como
se muestra a continuación:
- En el lienzo, conecte la actividad InvokeTask con la
actividad AssignM y seleccione Añadir un
enlace.
- De nuevo, arrastre la actividad Assign desde la
paleta al interior de la estructura GeneralizedFlow y
asígnele el nombre AssignF. Configure la actividad para
asignar Ms al campo de tratamiento, tal como se muestra a
continuación:
- Conecte la actividad InvokeTask con la
actividad AssignF y seleccione Añadir un
enlace. El flujo tendrá ahora este aspecto:
- Es el momento de asignar valores a los dos campos restantes de fullname:
firstName y lastName.
Defina estos
campos a partir de los valores devueltos por la tarea de usuario. De nuevo, arrastre
Assign desde la paleta al interior de la estructura
GeneralizedFlow y cambie su nombre a
AssignNames. Utilice el botón Añadir para añadir otra fila a la tabla Asignar y configúrela como se muestra en la siguiente figura:
- Conecte las actividades AssignF y AssignM con esta nueva actividad AssignNames y seleccione Añadir un enlace cuando se le solicite. GeneralizedFlow debe parecerse a lo siguiente:
- Debe condicionar los dos enlaces que provienen de InvokeTask
para que existan algunos criterios sobre cuándo seguir cada enlace. Seleccione el enlace
azul que va a AssignF y vaya a la pestaña
Detalles de la vista Propiedades.
En el campo Lenguaje de expresión, seleccione XPath 1.0 y luego pulse el botón Editar.
Se abre el
Constructor de expresiones XPath.
- Establezca la condición de género en female utilizando uno de los siguientes enfoques:
- Escriba la expresión $gender='female' directamente y pulse Aceptar.
- Pulse Insertar XPath simple y seleccione $gender en la lista de tipos de datos, luego seleccione el signo igual
(=) como el Operador en el área Añadir una condición opcional y escriba female en el campo
Valor correspondiente. Pulse dos veces Aceptar.
- Seleccione el enlace que va a AssignM y como sus propiedades establezca el Lenguaje de expresión en XPath 1.0 y la Condición en
$gender!='female' como se muestra a continuación:
Opcional: es posible dar una etiqueta a los enlaces estableciendo el Nombre de visualización en la pestaña Descripción de la vista Propiedades y luego mostrando la etiqueta pulsando el botón derecho del ratón en el enlace y seleccionando Mostrar etiquetas en enlaces.
- En la bandeja, arrastre HelloWorldPartner hasta una
posición situada inmediatamente encima de la actividad Reply
y asígnele el nombre InvokeHW1, tal como se muestra a
continuación:
- En la pestaña Detalles de la vista Propiedades, para la actividad
InvokeHW1, enlace los parámetros de entrada y salida con las variables
fullname yresult, tal como se muestra a continuación:
- En la categoría Acciones básicas de la paleta, arrastre Fragmento de
código justo encima de Respuesta. En la pestaña Detalles de la vista Propiedades, hay un editor de fragmentos de código Java visual. Efectúe una doble
pulsación en la pestaña Propiedades para cambiar a la pantalla
completa. Pulse Estándar en la paleta. Se abrirá la ventana
Añadir fragmento de código visual estándar. Expanda utilidad y seleccione imprimir en archivo
de registro y después pulse Aceptar.
Pulse en el lienzo del editor de fragmentos de código visuales. Aparece un nodo imprimir en archivo de registro.
- Arrastre la variable result desde la bandeja de la derecha al lienzo del editor de fragmentos de código visuales. Realice una conexión desde el nodo
resultado al nodo imprimir en archivo de registro, para que el fragmento de código sea parecido al siguiente:
Restaure la vista de propiedades al tamaño normal. Acaba de crear visualmente código Java para emitir el contenido de la variable
result a SystemOut. Técnicamente, al conectar un nodo a otro, se proporciona un parámetro de entrada a un
método.
- Ha terminado de crear el proceso. Guarde el proceso.
El resultado será parecido al siguiente:
- Cambie al editor de ensamblaje y guarde los cambios y a continuación vaya de nuevo al editor de procesos de negocio.
- Opcional: en el proceso algunas veces desea saber qué actividades utilizan una variable determinada. Hay una forma de hacerlo. En la bandeja, seleccione la variable
fullname.
En el menú Ventana, seleccione Mostrar vista > Referencias. En la parte inferior derecha de la perspectiva se abrirá la vista Referencias, donde verá un gráfico que incluye como entrada de la variable todas las actividades que establecen la variable, tal como se muestra en la siguiente figura:
Resultados
Los pasos de creación se han completado. Ahora ya puede realizar pruebas.