Este manual explica cómo diseñar un proceso mediante el diseñador web de procesos del negocio de Q-flow.
Este manual está dividido en las siguientes secciones:
· Guía rápida: explica cómo diseñar un proceso sencillo, mediante un ejemplo, de forma tal que el lector pueda familiarizarse con los conceptos más básicos y con el funcionamiento de las operaciones más importantes de la herramienta.
· Operaciónde la interfaz de usuario: explica en detalle cómo funciona la interfaz de usuario. También se muestran algunas de las operaciones más comunes, y contiene una sección con instrucciones para diseñar un proceso (es decir, construir el diagrama del proceso).
· Ítems del proceso: describe detalladamente cada tipo de ítem de proceso (datos de aplicación, roles y otros ítems que se usan para que los procesos manejen datos, asignen tareas, accedan a otros sistemas de software, etc). Incluye descripciones detalladas de las propiedades de cada ítem.
· Elementos del diseño de un proceso: describe detalladamente los elementos que se pueden incluir en el diseño de un proceso: para qué sirve cada uno y qué propiedades tiene.
El objetivo de esta sección es dar una introducción rápida a Q-flow mediante un ejemplo práctico, de forma que el lector pueda comenzar a usar el producto y familiarizarse con él lo más pronto posible.
Una empresa quiere mejorar su sistema de atención a quejas de clientes mediante un proceso de Q-flow. El proceso de quejas que implementarán es así:
1. Un cliente llama a la empresa para expresar una queja.
2. El receptor de la llamada inicia un proceso de Q-flow con los siguientes datos:
· Nombre del cliente
· Dirección de correo electrónico del cliente: se usará para enviarle un mensaje una vez atendida la queja.
· Texto de la queja: descripción de la queja del cliente.
· Texto para enviar al cliente: el texto que se le enviará al cliente vía correo electrónico una vez atendida la queja.
3. El gerente comercial elige a un empleado como encargado de atender la queja.
4. El encargado de atender la queja la atiende y redacta un texto para enviarle por correo electrónico al cliente.
5. Se envía automáticamente un mensaje de correo electrónico al cliente, utilizando el texto ingresado en el paso anterior.
6. Termina la ejecución de proceso.
Para construir el proceso, primero es conveniente crear un paquete en el que se guardará la plantilla del proceso (ver “Creación de un paquete”). Una vez creado el paquete, cree una plantilla de proceso con el nombre “Quejas” dentro de ese paquete (ver “Creación de una plantilla de proceso”). La plantilla de proceso representa la especificación del proceso.
Cuando crea una plantilla de proceso, automáticamente se crea una versión llamada 1.0. La versión contiene el diseño del proceso. El diseño del proceso es una representación gráfica de éste. Una plantilla de proceso puede tener varias versiones, pero sólo una es la versión en producción, es decir, la que se usa cuando se inician procesos basados en la plantilla. Cuando se cambia la versión en producción, procesos que ya estaban ejecutándose siguen utilizando la versión con la que fueron iniciados.
Una vez creada la plantilla, se pueden agregar al diseño los elementos del proceso. La Figura 1 muestra el diseño planteado, que tendrá los siguientes elementos:
· Evento de inicio:indica dónde empieza la ejecución del proceso. Todos los diseños tienen que tener un elemento de inicio. Cuando se crea una versión, el diseño viene con un evento de inicio y un evento de fin.
· Elegir encargado de atender la queja: es una tarea de usuario. Las tareas de usuario asignan tareas a usuarios. Este elemento le asigna al gerente comercial la tarea de elegir el encargado de atender la queja. Cuando el proceso llegue a ese elemento, Q-flow notificará al gerente comercial, que ingresará al sitio de Q-flow y accederá al formulario de la tarea. Allí podrá ver los datos del proceso, seleccionar el encargado de atender la tarea e indicar que terminó.
· Atender la queja:también es una tarea de usuario. Esta tarea se asigna al usuario que el gerente comercial seleccionó en la tarea “Elegir encargado de atender la queja”. El encargado de atender la queja ingresará al formulario de la tarea, verá los datos del proceso e ingresará el texto que se le enviará al cliente.
· Notificar al cliente: es una tarea de e-mail, que envía un mensaje de correo electrónico a la dirección especificada.
· Evento de fin:cuando un proceso llega a un evento de fin, termina su ejecución. Este proceso tiene solamente un evento de fin, pero es posible que un proceso tenga varios.
Figura 1 Diseño del proceso
Para agregar los elementos al diseño:
1. Haga clic con el botón derecho en la versión de la plantilla y seleccione “Desproteger” en el menú que aparece.
Figura 2 Desproteger una versión usando el menú contextual
2. Vuelva a hacer clic con el botón derecho en la versión de la plantilla, pero esta vez seleccione la opción “Diseño de proceso”. Esto hace que Q-flow abra el diseño del proceso. El diseño viene con un evento de inicio y un evento de fin conectados entre sí (Figura 3). Haga clic en la conexión y pulse la tecla “Suprimir”. Esto desconecta los pasos.
Figura 3 Diseño sin modificar de la versión
3.
Para agregar la tarea “Elegir encargado de
atender la queja”, seleccione el ícono que representa una actividad
en la barra de herramientas (Figura
4, “Botón para agregar una actividad”).
Hágale clic y después haga clic en el diseño. Esto agrega la
actividad, aunque sin especificar que es una tarea de usuario.
Note que al agregar la actividad, aparece una columna de íconos a
la derecha (Figura 4). Si selecciona el ícono que representa una actividad
(Figura 4,
“Botón para agregar otra actividad a continuación”), se puede
agregar rápidamente otra actividad que quedará automáticamente
conectada a la primera. Haga clic en ese ícono para agregar otra
actividad (esta actividad será la tarea “Atender la queja”).
Finalmente, repita la operación para agregar la actividad que se
usará para notificar al cliente. El diseño queda parecido al de
la Figura 5.
Figura 4 Diseño con una actividad recién agregada
Figura 5 El diseño, después de agregarle tres actividades
4. Seleccione la herramienta de conexión en la barra de herramientas (Figura 6). Haga clic en el evento de inicio y a continuación, en la primera de las actividades. Esto conecta los dos elementos, indicando que el proceso debe pasar del evento de inicio a esa actividad.
Figura 6 Herramienta de conexiones global
Otra forma de conectar dichos elementos es seleccionar el evento de inicio, del cual se desplegará un menú con distintas opciones (Figura 7). Entre ellas, aparece la opción de “Conectar”, la cual debe ser seleccionada. Luego, simplemente se debe hacer clic en la primera de las actividades, logrando así conectar los elementos.
Figura 7 Crear conexión desde un paso
Por ambos caminos, se logra la conexión entre dos pasos, como lo muestra la Figura 8.
Figura 8 Pasos conectados
5. Conecte también la última actividad al evento de fin, como lo muestra la Figura 9.
Figura 9 El diseño, una vez conectado el evento de inicio con la primera actividad, y la última actividad con el evento de fin
6. Las actividades todavía no tienen ningún tipo: no se sabe si son tareas de usuario, tareas de servicio, etc. La primera actividad debe ser una tarea de usuario. Para especificar esto, selecciónela y haga clic en el ícono verde con dos flechas blancas que apuntan en sentidos opuestos (Figura 10, “Botón para especificar el subtipo de un elemento”). Al hacer esto, aparece un menú para elegir el tipo de la actividad. Seleccione “Tarea de usuario”. Repita el procedimiento para la segunda actividad. Para la tercera, haga lo mismo, pero en lugar de seleccionar “Tarea de usuario”, seleccione “Tarea de e-mail”.
Figura 10 Especificación del tipo de una actividad
El diseño ya tiene los pasos que se necesitan para el proceso. Ahora falta especificar los nombres y propiedades de los elementos. Por ejemplo, la primera tarea de usuario debería tener un nombre descriptivo como “Elegir encargado de atender la queja”. También habría que indicar: ¿a quién va dirigida la primera tarea? ¿A qué dirección de correo electrónico se envía el mensaje de la tarea de e-mail? Para poder especificar eso, primero hay que definir ítems a los que se hará referencia en esas propiedades: para indicar a quién asignar una tarea, se necesita un rol de proceso; para guardar la dirección de correo electrónico se necesita un dato de aplicación.
Por más información sobre cómo diseñar un proceso, vea la sección “Diseño del proceso de una versión”.
El proceso necesita dos roles:
· Gerente comercial: es el que elige al encargado de atender la queja. A este rol se le puede asignar un usuario durante la definición del proceso (se sabe quién es el gerente comercial). Este rol es el destinatario de la tarea “Elegir encargado de atender la queja”.
· Encargado de atender la queja: es el que recibe la tarea “Atender la queja”. A este rol se le asigna un usuario durante la ejecución del proceso: es lo que hace el gerente comercial. Este rol es el destinatario de la tarea “Atender la queja”.
Los roles se agregarán a la plantilla del proceso, no en la versión (por más información sobre los roles, vea la sección “Roles de plantilla de proceso”). Así, cuando se hagan nuevas versiones, esos roles van a estar disponibles en ellas y no va a ser necesario crear nuevos (ítems pertenecientes a una plantilla de proceso están disponibles en sus versiones; ítems pertenecientes a paquetes están disponibles en todos sus paquetes descendientes, así como en plantillas y versiones de sus descendientes).
Para crear el rol “Gerente comercial”:
1. Desproteja la plantilla: encuéntrela en el árbol de paquetes y haga clic en ella con el botón derecho del ratón. En el menú que aparece, seleccione “Desproteger” (Figura 11).
Figura 11 Desproteger plantilla "Quejas"
2. Ahora vuelva a hacer clic con el botón derecho en la plantilla. En el menú, seleccione “Ítems” y después, “Roles de proceso”. Eso hace que aparezca una pantalla con la lista de roles, que está vacía (Figura 12).
Figura 12 Lista de roles
3. Haga clic en el botón con el símbolo “+” para agregar un rol.
4. En el formulario que aparece, escriba el nombre del rol (Figura 13). Luego, para asignarle un usuario use su propia cuenta de usuario. Para eso, donde dice “Comienza a escribir un usuario…”, comience a escribir el nombre de la cuenta que está utilizando para probar Q-flow. Si no sabe cuál es ese nombre, fíjese, en la parte de arriba a la derecha, qué nombre aparece (Figura 14). Ése es el nombre que tiene que escribir. Cuando comience a escribir, aparecerá una lista de usuarios. A medida que escribe, la lista va mostrando menos elementos (muestra elementos cuyos nombres contienen lo que usted escribe). Cuando vea el nombre de su cuenta de usuario, hágale clic y su cuenta de usuario se agregará como miembro del rol.
Figura 13 Propiedades de un rol: se ingresó el nombre "Gerente comercial" y se le está asignando el usuario "Viviana Luongo" como miembro
Figura 14 Parte de la pantalla en la que se muestra el nombre del usuario actual ("Viviana Luongo", en este caso)
5. Haga clic en el botón de Aceptar y crear otro (Figura 13, “Aceptar y crear otro”). Esto creará el rol (aparecerá en la lista de roles) y le permitirá continuar creando roles sin cerrar el panel, pero limpiando los datos anteriores.
Una vez creado el rol “Gerente comercial”, cree el rol “Encargado de atender la queja”. No es asignarle ningún miembro ya que el gerente comercial seleccionará un usuario para asignarle a ese rol en la tarea “Elegir encargado de atender la tarea”. En este caso, como no necesita crear ningún otro rol, puede guardarlo con el botón de Aceptar. Cuando intente guardar los cambios, Q-flow le advertirá de que el rol no tiene miembros y le preguntará si desea continuar de todas formas. Conteste que sí. El listado de roles quedará como se muestra en la Figura 15.
Figura 15 Roles de la plantilla creados
Los datos de aplicación que se necesitan son:
· Nombre del cliente
· Dirección de correo electrónico
· Texto de la queja
· Texto para enviar al cliente
Para crear el dato de aplicación “Nombre del cliente”:
1. Haga clic con el botón derecho del ratón en la plantilla del proceso, seleccione “Ítems” y “Datos de aplicación”.
2. Haga clic en el botón con el símbolo “+” para agregar un dato de aplicación.
3. Ingrese como nombre “Nombre del cliente”, tipo de dato “Texto”, que es la opción por defecto y haga clic en el botón de “Agregar y crear otro” (idéntico al que se ve en el panel de Rol). Esto creará el dato y podrá agregar otro.
Repita el paso 3 para los otros datos de aplicación (para el último, use el botón de Aceptar para guardar). Por más información sobre datos de aplicación, vea la sección “Datos de aplicación”.
Figura 16 Creación del dato "Nombre del cliente"
El listado de datos quedará como muestra la Figura 17.
Figura 17 Listado de datos creados
Ahora ya se puede configurar cada uno de los elementos del diseño.
Para configurar el evento de inicio, hágale doble clic. Lo único que se necesita modificar es el alcance, que no aparece por defecto entre las propiedades del evento de inicio. Para verlo, haga clic en el ícono de expandir formulario (Figura 18, “Expandir formulario”). Esto expande el formulario del evento de inicio para mostrar más propiedades, que están organizadas en varias secciones. Haga clic donde dice “Alcance” para que aparezcan las propiedades relacionadas a dicho formulario.
Figura 18 Propiedades del evento de inicio
El alcance permite especificar qué datos y roles son visibles y modificables en actividades interactivas, como lo es una tarea de usuario o en un evento de inicio. En el inicio del proceso, interesa que el usuario pueda asignar valores a los datos de aplicación. Entonces, en la subsección “Alcance de datos”, marque todos los datos de aplicación, haciendo clic en la caja que aparece al lado del cabezal de la columna “Nombre de datos”. Esto hace que se marquen todos los datos de aplicación (Figura 19). Después, haga clic en el botón correspondiente al alcance “Editable” (el segundo desde la izquierda, Figura 19). En la columna “Alcance”, todos los datos pasarán a tener el valor “Editable”. Haga clic en el botón de aceptar (✓) para guardar los cambios. Para ver más información sobre el alcance, vaya a la sección “Alcance de datos, roles, adjuntos y comentarios”.
Figura 19 Asignación de alcance "Editable" a todos los datos de aplicación
Presione la tecla “E” en la tarea de usuario que está inmediatamente después del evento de inicio y escriba “Elegir encargado de atender la queja” en el nombre (Figura 20).
Figura 20 Cambio de nombre de tarea
A continuación, haga clic donde dice “Mensaje” para expandir la sección de propiedades del mensaje del formulario de propiedades (Figura 21).
Figura 21 Formulario Mensaje de tarea de usuario
La primera propiedad de esa
sección es el asunto de la tarea (cuando se utiliza el correo
electrónico para notificar a un usuario de que tiene una tarea, el
asunto del mensaje de correo electrónico es el que se ingresa en
esta propiedad). Escriba “Elegir encargado de queja de ”. El “de”
del final (seguido de un espacio) es porque vamos a incluir el
nombre del cliente en el asunto. El nombre del cliente no está
disponible al momento de diseñar el proceso, pero durante su
ejecución estará en el dato “Nombre del cliente”. Se puede incluir
en el asunto mediante una etiqueta (ver “Etiquetas”). Una etiqueta permite
tomar el valor de algún ítem del proceso y usarlo en alguna
propiedad de algún elemento.
Las propiedades para las que se pueden usar etiquetas se indican
con un ícono que representa una etiqueta (Figura 23).
Para especificar una etiqueta, a continuación del texto que escribió en el asunto, escriba el símbolo “#”, que significa que se usará una etiqueta. Q-flow muestra los ítems que se pueden seleccionar como etiqueta (Figura 22).
Figura 22 Insertando etiqueta en asunto
Seleccione en la lista el dato de aplicación “Nombre del cliente”. En ese momento, Q-flow agrega la etiqueta al asunto. La etiqueta se representa mediante un texto con símbolos especiales que indican que ese texto es una etiqueta, un texto que indica qué tipo de ítem se usa (en este caso, “Data”, que significa un dato de aplicación) y el nombre del ítem (“Nombre del cliente”). Ver Figura 23.
Figura 23 Asunto de tarea con etiqueta
Debajo del asunto de la tarea se deben ingresar las respuestas posibles para la tarea. Cuando a un usuario se le asigna una tarea, debe ingresar al sitio de Q-flow para contestarla. Algunas tareas brindan varias respuestas posibles. Por ejemplo, una tarea de un proceso puede ser “¿Aprueba este gasto?” y esa tarea tendría dos respuestas, “Aprobar” y “Rechazar”. En este caso, sólo se necesita una respuesta que indique que se seleccionó al encargado de atender la queja y el proceso puede continuar.
Para agregar una respuesta, haga clic en el botón con el símbolo “+” que aparece debajo de donde dice “Respuestas”. Eso hace que Q-flow agregue una respuesta a la lista de respuestas que estaba vacía. La respuesta agregada tiene, por defecto, el texto “Respuesta 1” (Figura 24).
Figura 24 Agregar respuesta
Haga clic en “Respuesta 1”. Eso le permitirá modificar el texto, como muestra la Figura 25.
Figura 25 Editando respuesta
Escriba “Terminada” y pulse la tecla “Enter”. En la fila de la respuesta hay una columna Tipo que tiene como opción “Final”. No la cambie, esto indica que, una vez que se selecciona una respuesta, el proceso debe continuar y pasar al siguiente elemento del diseño (los distintos tipos de respuesta de tarea se explican en más detalle en la sección “Mensaje” dentro de “Tarea de usuario”).
Figura 26 Respuesta agregada
Luego hay que seleccionar el destinatario de la tarea. El destinatario es el rol al que se asignará la tarea (mediante el rol, la tarea se asigna a usuarios: los miembros del rol). En este caso, el destinatario es el rol “Gerente comercial”. Para seleccionarlo, donde dice “Destinatarios”, escriba “Gerente comercial”. Mientras lo esté escribiendo, aparecerá una lista en la que aparecerá ese rol para seleccionar. Selecciónelo. Durante la ejecución del proceso, Q-flow enviará la tarea a la cuenta de usuario que fue especificada como miembro de ese rol (Figura 27).
Figura 27 Destinatario de tarea ingresado
Finalmente, hay que especificar el alcance de datos y roles. Para eso hay que expandir el formulario, como se hizo con el evento de inicio. En este caso hay que modificar el alcance para que el rol “Encargado de atender la queja” sea modificable y requerido. Además, el usuario que desempeña esta tarea debería ver los datos de la queja, por lo que en el alcance de datos se debe especificar que los datos de aplicación sean visibles pero no modificables (alcance de “Sólo lectura”). Seleccione entonces, en “Alcance de roles”, el rol “Encargado de atender la queja”, y haga clic en el botón “Requerido” (Figura 28).
Figura 28 Alcance de roles
En “Alcance de datos”, seleccione todos los datos y haga clic en el botón “Sólo lectura” (Figura 29).
Figura 29 Alcance de datos Sólo lectura
Escriba “Atender la queja” como nombre del paso.
En el asunto escriba “Atender la queja y escribir el texto para enviarle al cliente” y a continuación use el dato de aplicación “Nombre del cliente” como etiqueta, al igual que hizo con la otra tarea de usuario.
El destinatario es el rol “Encargado de atender la queja”, que hasta el momento no tiene ningún miembro, pero cuando se esté ejecutando el proceso, tendrá como miembro el usuario que seleccione el gerente comercial en la tarea anterior.
Luego, agregue una respuesta como final, para que el usuario pueda responder el formulario. Por ejemplo, con clave y texto “Resuelto”.
La configuración del mensaje debería quedar como muestra la Figura 30.
Figura 30 Formulario de mensaje de la tarea “Atender la queja”
En esta tarea, ningún rol debe ser visible ni modificable, pero todos los datos deben ser visibles y particularmente el dato “Texto para enviar al cliente” debe ser modificable. Por lo tanto, este dato debe tener el alcance “Editable” y los demás, “Sólo lectura” (Figura 31).
Figura 31 Alcance de datos de la tarea “Atender la queja”
Donde va el nombre de la tarea de e-mail, escriba “Enviar respuesta al cliente”.
También hay que especificar que el destinatario se tome del dato de aplicación “Dirección de correo electrónico”. Esto también se hace con una etiqueta, al igual que con las tareas de usuario, pero en este caso, se debe seleccionar el dato de aplicación “Dirección de correo electrónico”. Luego, hay que escribir un asunto para el mensaje, escriba “Resolución de su queja” (Figura 32).
Figura 32 Configuración de la tarea de e-mail hasta el momento
Finalmente, hay que especificar que el cuerpo del mensaje debe ser lo ingresado en el dato “Texto para enviar al cliente” por el encargado de resolver la queja. Esto se hace mediante una etiqueta, pero en este caso, para abrir la lista de ítems que se pueden usar como etiquetas, debe hacer clic en el área de texto y pulsar Control + Espacio (Figura 33). Así funcionan las propiedades que usan un área de texto (por ejemplo, el código de una tarea de código).
Figura 33 Si se selecciona un área de texto, al pulsar Control+Espacio aparece una lista de ítems que se pueden agregar como etiqueta
Al seleccionar la etiqueta, se mostrará como en la Figura 34.
Figura 34 Etiqueta ingresada en cuerpo de mail
Una vez que terminó de definir el proceso, debe indicar que la versión 1.0 (la única, por ahora) es la versión en producción. De lo contrario, cuando ingrese al sitio web de Q-flow para iniciar un proceso, no encontrará la plantilla que acaba de diseñar. Para eso, busque la versión en el árbol de paquetes, haga clic en ella con el botón derecho del ratón y seleccione, en el menú, “Asignar como versión en producción” (Figura 35).
Figura 35 Asignar como versión en producción
Finalmente, proteja la plantilla y la versión del proceso. Para proteger cualquiera de esos ítems del árbol, hágale clic con el botón derecho y, en el menú contextual, seleccione “Proteger” (Figura 36).
Figura 36 Proteger versión
Para iniciar un proceso y poder realizar pruebas, utilice el sitio de Q-flow (Figura 37). Consulte el manual correspondiente al sitio que esté usando (sitio ASP. Net o sitio MVC) por instrucciones.
Figura 37 Iniciar proceso de Quejas
El proceso anterior tiene el defecto de que el gerente comercial siempre tiene que intervenir para seleccionar al encargado de atender la queja. Si esta decisión se pudiera automatizar, al menos para algunos casos, se podría mejorar el proceso.
Una posibilidad es categorizar las quejas y definir un encargado para cada categoría. Al iniciar un proceso, el iniciador ve una lista de categorías de quejas y elige una. Una vez iniciado un proceso, se asigna la tarea de atender la queja al encargado correspondiente a la categoría seleccionada. Se puede incluir una categoría “Otra” para contemplar quejas que no se ajustan a ninguna de las categorías definidas. Quejas en esa categoría se comportan como antes: el gerente comercial decide quién se encarga de ellas.
Para hacer este cambio, se necesita un nuevo dato para la categoría. Un dato se asocia a un dominio, que indica, entre otras cosas, cómo se muestra y qué tipo de datos tiene. Un dominio también puede definir un conjunto de valores posibles para el dato (para conocer más información acerca de los dominios, vea la sección “Dominios”). Por eso, crearemos un dominio nuevo que indicará que sus datos, en lugar de mostrarse como una caja de texto cuando son editables, deben mostrarse como listas desplegables (“Combo box”). El dominio también definirá las categorías que aparecerán en la lista. En el ejemplo, las categorías serán tres: “Producto defectuoso”, “Mala atención” y “Otra”. En el sitio web de Q-flow, se podría ver como muestra la Figura 38.
Figura 38 Combo box en el sitio web
Para cada categoría habrá una tarea de usuario dirigida al encargado de esa categoría. Para decidir a cuál de ellas irá el proceso se usará una compuerta exclusiva, que se conecta con varios elementos y asocia una condición a cada uno de ellos. Cuando el proceso llega a una compuerta exclusiva, evalúa las condiciones y sigue su camino yendo al elemento asociado a la condición que se cumple. En este caso, la compuerta exclusiva estará conectada con cada una de las tareas de usuario correspondientes a cada categoría. Entonces, si la categoría es “Producto defectuoso” o “Mala atención”, el proceso seguirá su camino por la tarea con su correspondiente nombre. Si es “Otra”, irá a la misma tarea que en la versión anterior (“Elegir encargado de la queja”).
El diseño de la nueva versión quedará como el de la Figura 39. A continuación, se describe cómo diseñar la nueva versión.
Figura 39 Segunda versión del proceso
1. Desproteja la plantilla de proceso.
2. Hágale clic con el botón derecho y, en el menú contextual, haga clic en “Agregar versión” (Figura 40).
Figura 40 Agregar versión de plantilla
3. Seleccione, dentro de “Patrón de la versión de la plantilla”, la versión “1.0” (esto creará una nueva versión como copia de la seleccionada) e ingrese el nombre de la versión como “2.0” (Figura 41).
Figura 41 Agregar versión 2.0
Para crear el dominio de tipo lista “Categoría de queja”:
1. Desproteja la plantilla de proceso.
2. Seleccione la plantilla con el botón derecho y en el menú seleccione “Ítems” y después “Dominios de dato” (Figura 42).
Figura 42 Acceder a dominios
3. Haga clic en el botón de agregar. En el formulario de propiedades, además de ingresar “Categoría de queja” en el nombre, seleccione el tipo de control “Combo box” (una lista que se despliega) y en “Origen de datos”, seleccione “Lista”. Haga clic en el ícono del engranaje al lado para que Q-flow muestre las propiedades de la lista.
Figura 43 Dominio "Categoría de la queja"
4. Haga clic en el botón de agregar. Esto agrega una fila. Haga clic en “Ítem 1” en la columna “Texto” e ingrese “Producto defectuoso”. Este valor se copiará automáticamente en la columna “Clave” (Figura 44).
5. Repita el procedimiento para agregar dos filas más: “Mala atención” y “Otra”. Después, acepte los cambios.
Figura 44 Definición de los elementos de la lista
6. Guarde los cambios en la lista mediante el botón de “Aceptar”.
7. Guarde los cambios en el dominio mediante el botón de “Aceptar”.
Cree un dato de aplicación, nómbrelo “Categoría” y donde dice “Dominio de datos” seleccione “Categoría de queja”.
Figura 45 Dato "Categoría"
Para modificar el diseño:
1. Agregue una compuerta exclusiva, para eso es necesario generar espacio entre el Evento de inicio y la tarea de usuario. Utilice la herramienta de crear/eliminar espacio como lo muestra la Figura 46.
Figura 46 Agregar paso entre dos pasos
2. Agregue dos tareas.
3. Conecte la compuerta exclusiva con las dos nuevas tareas.
Figura 47 Agregar dos tareas luego de la compuerta exclusiva
4. Conectar las dos nuevas tareas con la tarea “Notificar al cliente”.
5. Renombre los elementos nuevos para que queden como los de la Figura 48.
Figura 48 Diseño del proceso de Quejas 2.0 terminado
Cree dos nuevos roles: “Encargado de productos” y “Encargado de atención”. Asigne su cuenta de usuario como miembro (esto es sólo para probar: naturalmente, en un caso real, cada uno tendría un miembro distinto).
El listado de roles debería quedar como muestra la Figura 49.
Figura 49 Listado de roles del proceso de Quejas 2.0
1. Configure la tarea “Atender mala atención” para que el destinatario sea el rol “Encargado de atención”. Haga lo mismo con la tarea “Atender producto defectuoso” para que el destinatario sea el rol “Encargado de productos” (Figura 50).
Figura 50 "Atender mala atención" y "Atender producto defectuoso"
2. Abra el formulario de propiedades de la compuerta exclusiva.
3. Expanda el formulario, haciendo clic en el botón de expandir formulario y abra la sección “Condiciones”. Ésta estará dividida en tres subsecciones, una para cada una de las tareas a las cuales la compuerta está conectada (Figura 51).
Figura 51 Sección Avanzado de la compuerta exclusiva
4. En la subsección correspondiente a la tarea “Atender Producto Defectuoso”, haga clic en “+Condición”. Esto agrega una condición vacía (Figura 52).
Figura 52 Agregar condición
5. Donde dice “Empiece a escribir”, escriba “Categoría”. Cuando aparezca una lista con el dato de aplicación “Categoría”, selecciónelo (Figura 53).
Figura 53 Configurando condición (1)
6. En la caja de texto que aparece en la parte derecha de la condición, al lado del operador “igual”, escriba “Producto defectuoso” (Figura 54).
Figura 54 Configurando condición (2)
7. Haga lo mismo en la subsección correspondiente a “Atender mala atención”, pero escribiendo “Mala atención” en lugar de “Producto defectuoso” en la condición. La Figura 55 muestra cómo queda la configuración de la compuerta exclusiva.
Figura 55 Configuración de la compuerta exclusiva
8. Haga clic en la conexión que une la compuerta a la tarea “Elegir encargado de atender queja”. Haga clic en el ícono verde que muestra dos flechitas blancas y seleccione “Conexión por defecto” (Figura 56). De este modo, si ninguna de las otras expresiones se evalúa como verdadera, se utilizará esta conexión.
Figura 56 Asignar conexión por defecto
9. Guarde los cambios (usando el botón en la barra de herramientas derecha).
Cuando termine de hacer los cambios, proteja la plantilla del proceso y ponga la nueva versión en producción (ver “Poner versión en producción”).
A continuación se describen otras mejoras que se le podrían hacer al proceso y se explica, sin entrar en detalles, cómo se implementarían, con el objetivo de mostrar cómo se utilizan otras funcionalidades de Q-flow que todavía no se han mencionado.
Algo bastante común en el uso de Q-flow es utilizar una base de datos para almacenar datos del proceso. Los datos que tienen que estar disponibles en datos de aplicación, como por ejemplo, los que se usan en etiquetas o en condiciones de compuertas se dejan en datos de aplicación, pero otros se pasan a una base de datos para no sobrecargar la base de datos de Q-flow u otros motivos relacionados con la arquitectura del sistema.
En general, se utiliza un web service (SOAP o REST) para acceder a la base de datos y para proveer a Q-flow las funciones que permiten obtener y guardar datos en ella, así como también para implementar operaciones propias de la lógica del negocio. Para que Q-flow pueda acceder a ese web service, se utiliza una integración (ver “Integraciones”). Una integración se define de forma similar a como se definen los datos de aplicación, dominios y roles, y se debe especificar cómo conectarse con un componente (en este caso, un web service) y qué operación utilizar (un método del web service). También define cómo intercambiar datos entre Q-flow y el web service (se asocian datos de aplicación a los parámetros de la operación que se invoca y al resultado que la operación devuelve).
Los datos de conexión con el web service (o con otros componentes, en el caso de integraciones con componentes de otros tipos) se suelen guardar en parámetros de aplicación, que también se definen de forma similar a los datos de aplicación, roles y dominios (ver “Parámetros de aplicación”).
Otra práctica común es desarrollar código que obtiene y modifica datos del proceso. Esto permite manejar algunos aspectos del proceso de forma más flexible, de modo de facilitar cambios futuros. Por ejemplo, en la segunda versión de este proceso, se usa una tarea de usuario para cada categoría de queja. Pero esto no sería práctico si hubiera muchas categorías de queja. Tampoco sería práctico si se espera que las categorías cambien, ya que cada vez que se agregue una categoría, habría que modificar el diseño del proceso, probablemente creando una nueva versión.
Es más práctico usar una única tarea de usuario y un único rol, en lugar de una tarea de usuario y un rol por categoría. Para eso se puede usar el rol “Encargado de atender la queja”, que no tiene un miembro predefinido y asignarlo durante la ejecución del proceso, como se hacía en la primera versión. La diferencia es que se tiene que hacer automáticamente y no manual como en esa versión. Para eso se puede usar una tarea de código.
En una tarea de código se puede escribir código que accede a los datos del proceso. Es posible escribir código que lea el valor de un dato de aplicación y asigne un miembro a un rol. En este caso, se escribiría código que leería el valor del dato “Categoría” y, según su valor, se seleccionaría al encargado de atender la queja, asignándolo como miembro del rol “Encargado de atender la queja”.
Este código se puede escribir en las propiedades de la tarea de código (ver “Tarea de código”), pero también se puede escribir en una integración ad hoc (ver “Integraciones”).
Las funciones que provee Q-flow para interactuar con los datos de sus procesos se describen detalladamente en el manual de la interfaz de scripting.
Otra práctica común es utilizar colas de trabajo como miembros de los roles en lugar de cuentas de usuario. En lugar de asignar las tareas a usuarios particulares, se asignan a colas de trabajo (“Departamento de envíos”). Una cola de trabajo está asociada a permisos que indican quiénes pueden tomar tareas asignadas a ella. Por ejemplo, sólo los usuarios del departamento de envíos pueden tomar tareas de la cola “Departamento de envíos”. Así, cuando una tarea es asignada a esa cola de trabajo, todos los que pueden tomar tareas de esa cola son notificados y cualquiera de ellos puede tomar la tarea para sí y encargarse de ella. El concepto de cola de trabajo está explicado en el manual del administrador del modelo organizacional. Ese manual también explica cómo crear colas de trabajo.
Esta sección explica cómo utilizar el diseñador web de procesos del negocio.
La Figura 57 muestra la pantalla principal del diseñador web.
Los principales elementos de la interfaz son:
· El menú superior: tiene opciones para ir al inicio, cerrar la sesión y acceder a la pantalla de configuración.
· El menú lateral: permite operar con los paquetes, plantillas de proceso, versiones y buscar elementos.
· El árbol de paquetes: permite ver la estructura jerárquica de plantillas de proceso, paquetes y versiones, y seleccionar el elemento sobre el cual se desea operar.
· La zona de edición: muestra los elementos con los que se está trabajando y es donde se diseñan los diagramas de las versiones.
Figura 57 Pantalla principal del diseñador web
La Figura 58 muestra el menú superior. A continuación, se explica cada una de las funciones disponibles a través de él.
Si se hace clic en “Información de versión”, se mostrará la versión del producto que se está usando.
Figura 59 Versión del producto
La función de configuración tiene la opción de administración de permisos de la herramienta, la cual se explica en el manual del Modelo Organizacional Web.
El menú lateral permite mostrar u ocultar el árbol de paquetes, acceder a operaciones comunes que están disponibles también a través de los menús contextuales de los elementos del árbol (estas operaciones se explican en la sección sobre el árbol de paquetes) y buscar elementos de la aplicación.
Figura 60 Menú lateral
Se explican las opciones que requieren aclaraciones:
Para abrir el panel de buscar elementos, se puede acceder presionando el icono de lupa del menú lateral, o presionando “Ctrl + Shift + F”.
Una búsqueda rápida consiste en escribir en la caja de texto parte del nombre del elemento que se busca. Los elementos que se pueden buscar en esta modalidad son aquellos pertenecientes al árbol, es decir, los paquetes, plantillas y versiones de toda la solución, así como también los roles, dominios y datos que se encuentren en el paquete que esté seleccionado en el árbol o en alguno de sus padres. Q-flow responde filtrando los elementos que se muestran en la zona de edición, ocultando aquellos que no contengan el texto ingresado (Figura 61Error! Reference source not found.).
Figura 61 Búsqueda rápida
La búsqueda avanzada (Figura 62Error! Reference source not found.) se accede cliqueando en el checkbox de “Búsqueda avanzada”, permite encontrar fácilmente ítems que se utilizan en las especificaciones de los procesos (por ejemplo, datos de aplicación). Esto es especialmente útil cuando se recuerda parte del nombre de un elemento, pero no en qué paquete, plantilla de proceso o versión se encuentra. La pantalla de búsqueda permite ingresar los siguientes datos:
· Nombre: nombre del elemento que se busca.
· Tipo: Se podrá filtrar que tipos de elementos se desea buscar (paquetes, pasos, datos de aplicación, roles de la plantilla de proceso, dominios de dato, formularios personalizados, integraciones, manejadores de eventos, worklets, validaciones, bots y/o parámetros de aplicación). Además, es posible seleccionar dos o más tipos, permitiendo en una única búsqueda obtener los distintos elementos requeridos.
· Buscar en:permite especificar en qué paquetes, plantillas de proceso o versiones buscar (las opciones mencionan “paquetes”, pero plantillas de proceso y versiones también se consideran paquetes a estos efectos). Restringir los paquetes en los que buscar reduce el tiempo de búsqueda. Las opciones son:
o Paquete actual y padres: busca en el paquete actual y en los superiores a él en la jerarquía. No busca en los paquetes contenidos en el paquete actual.
o Paquete actual:busca en el paquete actual y en sus descendientes.
o Toda la solución:busca en toda la jerarquía los elementos que se encontraban desde la última vez que se encontraba protegido, no los nuevos que fueron agregados en caso que se encuentre desprotegido.
Una vez que se haga clic en el botón de buscar, los resultados aparecerán en orden descendente por nombre de ítem en la parte inferior de la pantalla y se podrá acceder al listado o diseño de proceso al que pertenece el elemento, haciendo clic en “Ir al ítem” (→). En caso de querer acceder a un paquete, proceso o versión de proceso, se habilitará un botón que le permitirá ver el elemento en el árbol (Figura 61).
Figura 62 Búsqueda avanzada
El árbol de paquetes es similar a la estructura de carpetas de un disco duro: tiene un paquete raíz, que puede tener subpaquetes (paquetes hijos), que a su vez pueden tener subpaquetes, de la misma forma que un sistema de archivos tiene una carpeta raíz con subcarpetas, que a su vez pueden tener subcarpetas.
Además, un paquete puede contener plantillas de proceso y éstas contener versiones. Todos estos elementos se muestran en el árbol de paquetes y pueden contener ítems de procesos (por ejemplo, datos de aplicación), que no se muestran en el árbol. Sin embargo, las opciones para verlos, crearlos y modificarlos sí son accesibles desde el árbol de paquetes.
Un paquete o plantilla se puede mostrar abierto (se muestran sus hijos) o cerrado (no se muestran) (Figura 63). Para abrir un paquete o plantilla, haga clic en el triángulo que está a su izquierda, y que indica si está abierto o cerrado.
Figura 63 Árbol de paquetes. Los paquetes Raíz y Operaciones están abiertos. La plantilla Quejas está cerrada. La plantilla Test está abierta y se puede ver que contiene una versión
Si se hace doble clic en un elemento del árbol, se abre su formulario de propiedades en un panel (las propiedades de los elementos del árbol se describen en “Trabajo con paquetes, plantillas de proceso y versiones”). Por otro lado se crean solapas cuando, mediante el menú contextual de un elemento, se accede a alguna de sus listas de ítems (por ejemplo, a la lista de datos de aplicación de un paquete; ver “Listas de ítems”). Varias solapas pueden estar abiertas simultáneamente, como se puede ver en la Figura 64.
Figura 64 Solapas. La que está abierta muestra datos de aplicación
Una solapa se puede cerrar haciendo clic en la cruz que aparece cuando se posiciona el cursor del ratón sobre ella (Figura 65).
Figura 65 Cerrar solapa
Para cada elemento, hay disponibles varias operaciones a las cuales se accede mediante un menú contextual que aparece cuando se le hace clic con el botón derecho del ratón. Las opciones que pueden aparecer en el menú contextual son las siguientes:
· Ítems: cuando se hace clic en esta opción, aparece un submenú para seleccionar el tipo de los ítems que se desean ver o modificar. Cuando se selecciona el tipo de ítems, Q-flow abre una pantalla que muestra los ítems del tipo seleccionado pertenecientes al paquete. En esa pantalla se pueden ver y modificar los ítems existentes, además de crear nuevos. Las listas de ítems se describen en general en “Listas de ítems”. Cada tipo de ítem y sus propiedades se describen detalladamente en “Ítems del proceso”.
· Opciones de control de cambios: las opciones de control de cambios impiden que un mismo elemento sea modificado por más de un usuario simultáneamente. Esto evita pérdidas de modificaciones que ocurrirían si no se hiciera este control.
o Desproteger:desbloquea el elemento para el usuario que lo desprotegió, permitiéndole modificarlo, y lo bloquea para los demás.
o Desproteger compatible: desbloquea una plantilla de proceso o versión para el usuario que lo desprotegió, pero no le permite hacer algunos cambios que podrían afectar procesos que se están ejecutando (por ejemplo, no le permite eliminar pasos).
o Proteger: guarda los cambios que un usuario le hizo a un elemento que antes había desprotegido, y libera el elemento para que otro usuario lo pueda modificar.
o Deshacer desprotección: libera el elemento para que otro usuario lo pueda modificar, pero sin guardar los cambios (los cambios se pierden).
o Proteger y seguir editando: guarda los cambios que un usuario le hizo a un elemento que antes había desprotegido, pero lo mantiene desprotegido (es como protegerlo y volver a protegerlo inmediatamente). Esto permite que otros vean los cambios que el usuario le hizo al elemento sin que el usuario renuncie a mantenerlo desprotegido para poder seguir modificándolo.
· Asignar como versión en producción: sólo disponible para versiones que no están en producción, esta opción permite marcar la versión seleccionada como versión en producción (la que se utiliza el iniciar nuevos procesos). Si había otra versión en producción de la misma plantilla, ésa se quita de producción (sólo puede haber una versión de una plantilla en producción).
· Desasignar como versión en producción: sólo disponible para versiones que están en producción, esta opción permite sacar la versión seleccionada de producción. Note que, si saca una versión de producción, ya no se podrán iniciar procesos de la plantilla a la que pertenece, puesto que no habrá ninguna versión en producción.
· Agregar sub paquete: sólo disponible para paquetes, permite agregar un paquete dentro del paquete seleccionado (esta opción sólo está disponible para paquetes). Cuando se selecciona esta opción, Q-flow muestra en la zona de edición un formulario para ingresar el nombre y la descripción del nuevo paquete.
· Agregar plantilla de proceso: permite agregar una plantilla de proceso dentro del paquete seleccionado (esta opción sólo está disponible para paquetes).
· Eliminar: permite borrar el elemento seleccionado. Esta opción sólo está disponible si el elemento seleccionado no contiene otros elementos. Por ejemplo, si un paquete contiene otros paquetes, o si contiene plantillas de proceso, no es posible borrarlo sin antes borrar lo que contiene.
· Refrescar:actualiza en pantalla el elemento seleccionado y sus descendientes para reflejar los últimos cambios ocurridos. Por ejemplo, si un usuario agregó un paquete recientemente y otro usuario no lo ve porque es demasiado nuevo, al actualizar el paquete que lo contiene, el árbol reflejará el cambio y mostrará el paquete nuevo.
· Etapas: muestra una pantalla con las etapas definidas para la plantilla seleccionada, y permite modificarlas. (Por detalles, consulte la sección Etapas).
· Agregar versión de proceso: agrega una nueva versión a una plantilla.
· Diseño de proceso: abre el diseño de proceso (diagrama) de una versión.
· Historial:muestra la historia de acciones ejecutadas sobre el elemento (quién le hizo qué y cuándo).
· Propiedades:muestra el formulario de propiedades del elemento (es como hacerle doble clic en el caso de los paquetes y plantillas).
· Formularios del proceso: abre un submenú con dos opciones: “Formulario de edición del proceso” y “Formulario del proceso”. Estas opciones permiten abrir la ventana de propiedades de esos formularios para:
o Definir el alcance de datos, roles, adjuntos y comentarios (ver “Alcance de datos, roles, adjuntos y comentarios”).
o Definir formularios personalizados (ver “Formularios personalizados”).
o Asociar validaciones a los formularios (ver “Validaciones”).
o Asociar manejadores de eventos a los procesos (ver “Manejadores de eventos”).
· Exportar: exporta el elemento a un archivo XML, para que pueda ser importado en otro lugar donde esté instalado Q-flow. Hay más información en la sección “Exportación de paquetes, plantillas y versiones”.
· Importar: importa un archivo XML que contiene la definición de paquetes o plantillas. Hay más información en la sección “Importación de paquetes, plantillas y versiones”.
Figura 66 Historial
Para exportar un paquete, plantilla o versión, haga lo siguiente:
1. Haga clic con el botón derecho sobre el paquete, plantilla o versión en el explorador de soluciones. Q-flow mostrará un menú contextual.
2. En el menú contextual, seleccione la opción “Exportar”. Q-flow le mostrará una ventana como la de la Figura 67.
3. Para el caso de las versiones, seleccione el formato en el que desea exportar. Las opciones son el formato nativo de Q-flow y el formato BPMN XML. El formato nativo preserva todos los elementos del proceso, mientras que el formato BPMN XML exporta sólo el diseño.
4. Para el caso de los paquetes y plantillas, si no quiere exportar todos los descendientes del paquete, desmarque la opción “Exportar paquetes descendientes”.
5. Haga clic en “Exportar”.
Figura 67 Panel de Exportar paquete
Para importar un archivo producido por una exportación anterior, haga lo siguiente:
1. Seleccione el paquete o plantilla donde desee importar el contenido del archivo y hágale clic con el botón derecho.
2. En el menú contextual, seleccione “Importar”. Q-flow mostrará una ventana como la de la Figura 68.
3. Seleccione el formato del archivo a importar. Los formatos soportados son el nativo de Q-flow y BPMN XML.
4. Seleccione el archivo a importar y marque las opciones que desee:
a. Actualizar los parámetros de aplicación existentes: si esta opción está marcada, los valores de los parámetros de aplicación serán sustituidos por los valores de los parámetros de aplicación importados. De lo contrario, no. Esto es útil porque los mismos parámetros pueden tener valores distintos en distintos ambientes.
b. Corregir referencias ausentes: esta opción le indica a Q-flow que debe corregir referencias a elementos que no se encuentran en la base de datos en la cual se está haciendo la importación. Por ejemplo, si no se encuentra un usuario al que hace referencia un rol, Q-flow ignorará ese usuario en la importación. Si no se marca esta opción, cuando Q-flow encuentre una referencia a un elemento ausente, interrumpirá la importación, y dejará la base de datos en el mismo estado en el que se encontraba antes.
5. Haga clic en “Importar”. Si el paquete, plantilla o versión contenido en el archivo ya existe, Q-flow le permitirá optar entre actualizar el paquete, plantilla o versión ya existente con los datos importados, o crear uno nuevo. Esto permite actualizar procesos que habían sido importados desde entornos de desarrollo.
Figura 68 Panel de Importar
La zona de edición muestra los formularios en los que se muestran las propiedades del ítem seleccionado y las listas de ítems. Es en la zona de edición que se modifican las propiedades de los ítems que componen los procesos de Q-flow y es también allí donde se diseñan los procesos.
Cuando un usuario ingresa al sitio del diseñador web de procesos, o cuando hace clic en el ícono de inicio en el menú superior, Q-flow le muestra la página de inicio. La zona de edición, en este caso, es similar a lo que se muestra en la Figura 69.
La opción “Crear plantilla de proceso”, que aparece en el medio, permite crear una plantilla de proceso, si en el árbol de paquetes está seleccionado un paquete, o crear una versión, en otro caso. La plantilla o versión se crea dentro del elemento seleccionado en el árbol al momento de crearla (a menos que esté seleccionada una versión de una plantilla, en cuyo caso se crea otra versión de esa plantilla). La siguiente sección tiene más detalles sobre la creación de estos elementos.
Figura 69 Zona de edición de la página de inicio
En esta sección se explica cómo crear y modificar paquetes, plantillas de proceso y versiones, pero no cómo diseñar el diagrama de una versión. Para esto último, consulte la sección “Diseño del proceso de una versión”.
Para crear un paquete:
1. En el árbol de paquetes, haga clic con el botón derecho sobre el paquete dentro del cual desea crear un nuevo paquete. Esto hace que Q-flow muestre el menú contextual del paquete seleccionado.
2. Seleccione la opción “Agregar sub paquete”. Esto hace que Q-flow muestre un formulario como el de la Figura 70, en el que se indica en qué paquete se agregará el paquete nuevo y en el que hay dos cajas de texto para ingresar el nombre y la descripción del nuevo paquete.
3. Ingrese el nombre y la descripción del nuevo paquete y haga clic en el botón de guardar.
Figura 70 Crear paquete
Para crear una plantilla de proceso, haga lo siguiente:
1. En el árbol de paquetes, haga clic con el botón derecho sobre el paquete dentro del cual desea crear una plantilla. Esto hace que Q-flow muestre el menú contextual del paquete seleccionado.
2. Seleccione la opción “Agregar plantilla de proceso”. Esto hace que Q-flow muestre un formulario como el de la Figura 71, en el que se indica en qué paquete se agregará la plantilla nueva y en el que hay dos cajas de texto para ingresar el nombre y la descripción de la plantilla. También debe seleccionar el patrón de plantilla (en la Figura 71la única opción es “Plantilla BPMN vacía”).
3. Ingrese el nombre y la descripción de la nueva plantilla y haga clic en el botón de aceptar.
Figura 71 Crear nueva plantilla
Para crear una versión, haga lo siguiente:
1. En el árbol de paquetes, haga clic con el botón derecho sobre la plantilla de proceso dentro de la cual desea crear la versión. Esto hace que Q-flow muestre el menú contextual de la plantilla seleccionada.
2. Seleccione la opción “Agregar versión del proceso”. Esto hace que Q-flow muestre un formulario como el de la Figura 72, en el que se indica en qué plantilla se agregará la nueva versión y en el que hay dos cajas de texto para ingresar el nombre y la descripción de la nueva versión. Si la plantilla seleccionada ya tiene versiones, en el campo “Patrón de la versión de plantilla” puede seleccionar una de ellas para que Q-flow la copie. Por ejemplo, en la Figura 73 se pueden seleccionar las versiones 1.0, 1.1 o 1.2. Si la versión seleccionada tiene un nombre que sigue el estándar de Q-flow (“1.0”, “1.1”, etc.), Q-flow ingresará automáticamente el nombre que, según ese estándar correspondería al de la versión siguiente (si la versión seleccionada es “1.1”, Q-flow pondrá “1.2” en la caja de texto del nombre). También puede crear una versión sin copiar ninguna otra (“Patrón de la versión de plantilla”). En este caso, la nueva versión se creará con un evento de inicio y un evento de fin.
3. Ingrese el nombre (si es necesario) y la descripción de la nueva versión y haga clic en el botón de aceptar.
Figura 72 Crear una versión
Figura 73 Seleccionar un patrón de versión
Paquetes, plantillas de proceso y versiones tienen propiedades adicionales a las que se muestran cuando se los crea (nombre y descripción). Para modificar las propiedades de un paquete, plantilla o versión, búsquelo en el árbol de paquetes, hágale clic derecho y seleccione la opción “Propiedades”. Esto hace que Q-flow muestre el formulario de edición del elemento seleccionado (Figura 74). Para el caso de los paquetes y plantillas se puede simplemente hacer doble clic en el elemento.
Figura 74 Propiedades de un paquete
Este formulario de edición tiene dos partes:
· General: muestra y permite modificar el nombre y la descripción, además de los siguientes datos:
o Fecha y hora en la que el elemento fue creado y quién lo creó.
o Fecha y hora de la última modificación hecha al elemento y quién la hizo.
o Si el elemento está desprotegido o no. Si está desprotegido, se indica la fecha y la hora en la que fue desprotegido, y quién lo tiene desprotegido.
o Si el elemento es una plantilla de proceso, se muestra la versión en producción y se permite cambiarla.
o Si el elemento es una versión, se muestra si es un borrador o no. Un borrador es una versión que no es válida para poner en producción (produciría errores al ser ejecutada), pero que se puede guardar. Una vez que una versión es puesta en producción, ya no es posible que vuelva a ser un borrador.
· Avanzado: las propiedades del subformulario avanzado son:
o Comunes a paquetes, plantillas de proceso y versiones:
§ Dueño: indica qué usuario es el dueño del elemento. El dueño del elemento es un usuario del sistema. Además, si se marca el casillero que indica que hay que enviar notificaciones cuando el elemento es modificado, el dueño es el destinatario de esas notificaciones. Se puede quitar el dueño haciendo clic en la cruz que aparece en el rectángulo que contiene su nombre, de modo que el elemento ya no tenga dueño. Para especificar el dueño, empiece a escribir su nombre y al aparecer el nombre de usuario de la persona que desea asignar al elemento, selecciónelo.
§ Notificar cambios en el contenido: si se marca este casillero, cada vez que el elemento sufre modificaciones, Q-flow envía una notificación a su dueño.
o Las plantillas, además, tienen la siguiente propiedad avanzada:
§ Notificar proceso en error: si se marca este casillero, cada vez que un proceso basado en esa plantilla tiene un error, se envía una notificación al dueño.
Para administrar los permisos de un paquete, plantilla o versión, búsquelo en el árbol de paquetes, hágale clic derecho y seleccione la opción “Administrar permisos de paquete” (Figura 75). Esto hace que Q-flow muestre un formulario como el de la Figura 76. Ese formulario muestra una tabla con todos los permisos definidos. Para cada uno se muestra para qué rol es el permiso, la descripción del rol, una lista de acciones permitidas y una lista de acciones denegadas. La lista se puede filtrar de la forma usual y también se puede modificar, agregando, quitando y modificando elementos.
Figura 75 Administrar permisos de paquete
Figura 76 Panel de Administrar permisos de un paquete
Para agregar un permiso:
1. Haga clic en el botón de agregar. Eso hace que Q-flow muestre un buscador de roles (Figura 77).
2. Seleccione el destinatario del permiso. Para eso, escriba parte de su nombre en el buscador (donde dice “Comience a escribir un rol”) y cuando lo vea en la lista que aparece, selecciónelo. El destinatario de un permiso puede ser un elemento de cualquiera de estos tipos:
a. Rol de seguridad (no confundir con rol de proceso; los roles de proceso sirven para asignar tareas en un proceso y no pueden ser seleccionados como destinatarios de permisos).
b. Nodo
c. Grupo
d. Cola de trabajo
e. Usuario
Figura 77 Selección de un rol
Estos elementos se definen en el administrador del modelo organizacional. Consulte el manual de esa herramienta si desea ver descripciones de cada uno de esos tipos. Cuando se selecciona el destinatario de un permiso, Q-flow muestra un formulario para seleccionar las acciones que se incluyen en el nuevo permiso (Figura 78).
Figura 78 Permisos
3. Para cada uno de los permisos que se muestran en esa ventana, marque si se permite o se deniega y si es heredable. Si un usuario tiene un permiso heredable sobre un paquete o plantilla de proceso, tiene el mismo permiso sobre los descendientes de ese paquete o plantilla, salvo que en algún paquete descendiente se deniegue de manera explícita.
Los permisos que se pueden asignar son:
· Ver ítem: permite ver el paquete y los elementos definidos en él, como datos de aplicación, roles del proceso, etc.
· Editar ítem: permite modificar el paquete y los elementos definidos en él, como datos de aplicación, roles del proceso, etc.
· Crear ítem:permite crear elementos dentro del elemento.
· Eliminar ítem:permite borrar el elemento.
· Auditar: permite visualizar información de auditoría del elemento.
· Administrar seguridad: permite agregar y modificar permisos sobre el elemento a usuarios, grupos o roles.
Un usuario tiene permiso para ejecutar una acción si y sólo si se cumple simultáneamente que:
· El usuario está asociado a algún rol de seguridad, grupo, nodo o cola de trabajo que tiene permiso para ejecutar esa acción, o su propia cuenta de usuario tiene ese permiso directamente.
· El usuario no está asociado a algún rol de seguridad, grupo, nodo o cola de trabajo al que se le haya negado ese permiso, o a su propia cuenta de usuario se le ha negado ese permiso.
Por más detalles acerca del manejo de permisos en Q-flow, consulte el manual del administrador del modelo organizacional, donde también se explica cómo asociar usuarios con roles de seguridad, nodos, grupos y colas de trabajo.
El diseño de un proceso también implica definir ítems que el proceso utiliza: para asignar tareas a personas, se necesitan roles. Para manejar datos, algunos de los cuales pueden ser necesarios para definir el flujo del proceso, se necesitan datos de aplicación. Para acceder a funcionalidades de sistemas externos, se necesitan integraciones y es recomendable utilizar parámetros de aplicación que contengan información de acceso a esos sistemas. Esta sección explica cómo utilizar el diseñador web de procesos del negocio para crear, modificar y eliminar ítems. No explica para qué sirve cada tipo de ítem, ni qué propiedades tiene. Por información de ese tipo, consulte la sección “Ítems del proceso”.
La Figura 79 muestra la lista de datos de aplicación, que es una típica lista de ítems. La lista de ítems se muestra como una tabla con varias columnas, la primera de las cuales contiene cajas que permiten seleccionar uno o más ítems (si se marca la caja del cabezal, se seleccionan todos los ítems).
Figura 79 Datos de aplicación
En la parte superior izquierda están los íconos correspondientes a las siguientes operaciones:
· Agregar: cuando se hace clic en este ícono, Q-flow muestra el formulario de propiedades básicas del ítem. Para crear un ítem, llene sus propiedades y haga clic en el botón de aceptar. Si se hace clic en el botón con tres puntitos dispuestos verticalmente, se amplía el formulario y en algunos casos se muestran más propiedades (Figura 80). Si se vuelve a hacer clic en ese botón, el formulario vuelve a su formato original. La descripción detallada de las propiedades de cada tipo de ítem se encuentra en “Ítems del proceso”.
· Modificar: cuando se selecciona un ítem y se hace clic en este ícono, Q-flow muestra el formulario de propiedades básicas del ítem (Figura 80), que es el mismo formulario que el que se usa para crear un ítem.
Figura 80 Formulario normal y formulario expandido: el expandido tiene una sección adicional de propiedades, "Avanzado".
· Cortar: permite cortar elementos para pegarlos en otro paquete: cuando se pegan, esos elementos son eliminados del paquete original.
· Copiar: permite copiar elementos para pegarlos en el mismo u otro paquete. Cuando se pegan en el mismo paquete, los nuevos elementos se renombrarán, agregando un “_1” o cambiando el “_X1” por “_(X1 + 1)” si el nombre finalizaba con “_X1” siendo “X1” un número entero.
· Pegar: pega los elementos copiados o cortados.
· Eliminar: cuando se seleccionan uno o más elementos y se hace clic en este ícono, se eliminan los elementos seleccionados, previa confirmación.
Estos íconos se habilitan o deshabilitan según qué elementos estén seleccionados. Por ejemplo, el ícono de “Modificar” sólo está habilitado si hay exactamente un ítem seleccionado, porque si no hay ítems seleccionados, no hay un ítem al cual se pueda aplicar la operación de modificar, mientras que si hay más de uno, es imposible determinar a cuál de ellos se aplica la operación.
También en la parte superior, pero hacia la derecha, hay una caja de texto que permite filtrar los elementos que se muestran en la lista. Al escribir un texto en esa caja, la lista ocultará aquellos elementos que no contengan en ninguna de las columnas el texto ingresado.
Finalmente, a la derecha de esa caja de texto, hay un botón que permite especificar qué columnas se desea ver (Figura 81).
Figura 81 Configuración de columnas visibles en listados
Q-flow permite definir etapas para una plantilla de proceso. Una etapa define un “Tiempo esperado” y un “Tiempo máximo”, que determinan dos plazos para el fin de la etapa. Tanto para el tiempo esperado como para el tiempo máximo, se puede especificar una lista de roles de plantilla de proceso que serán notificados si, una vez transcurrido el tiempo especificado, todavía no se terminó la etapa. El tiempo esperado es cuánto se estima que debería durar la etapa en un caso normal. El tiempo máximo indica un plazo más importante que el tiempo esperado: se supone que el proceso no debería permanecer en la misma etapa por un tiempo superior al indicado por el tiempo máximo.
Cuando un proceso está dividido en etapas, tiene más opciones de seguimiento en el sitio web.
Las etapas se vinculan a secciones del proceso mediante el evento de inicio y eventos intermedios.
Para acceder al formulario que le permite definir etapas, abra el menú contextual de la plantilla haciéndole clic con el botón derecho en el árbol de paquetes y seleccionando la opción “Etapas” (Figura 82).
Figura 82 Acceder a listado de etapas
El formulario de definición de etapas se comporta de la misma forma que las listas de ítems. Para poder especificar el tiempo esperado y el tiempo máximo, debe expandir el formulario para que aparezcan las secciones que contienen esas propiedades (Figura 83). El tiempo esperado y el tiempo máximo se definen de la misma forma que otros plazos (se explica en “Temporización”).
Figura 83 Configuración expandida de etapas
La opción “Usar calendario” permite seleccionar un calendario para que sea utilizado al calcular los vencimientos. Si no se se marca esta opción, los vencimientos se calcularán sin tomar en cuenta fines de semana, feriados, etc (Figura 84).
Figura 84 Configuración de "Usar calendarios"
Para modificar el diseño de una versión, primero debe desprotegerla. Para ello, haga clic con el botón derecho en la versión y seleccione, en el menú contextual, “Desproteger”.
Una vez desprotegida la versión, vuelva a hacerle clic con el botón derecho y seleccione “Diseño de proceso”, o simplemente haga doble clic en la versión. Esto hace que Q-flow muestre el diseñador del proceso en la zona de edición (Figura 85).
Figura 85 Diseñador
En la parte izquierda del diseñador hay una caja de herramientas, que está dividida en dos partes: la primera muestra herramientas de diseño. La segunda, elementos que se pueden agregar al diagrama. La Figura 86 muestra el significado de los íconos que representan las herramientas de diseño. La Figura 87 muestra el significado de los íconos que representan elementos que se pueden agregar al diagrama. En la parte derecha del diseñador, hay una serie de botones cuyo objetivo es facilitar la visualización del diagrama. La Figura 88Error! Reference source not found.muestra el significado de estos.
A continuación, se explica cómo usar cada una de las herramientas de diseño:
· Mover la superficie de diseño: si selecciona esta herramienta y mantiene el botón del ratón presionado sobre la superficie de diseño mientras mueve el ratón, moverá la superficie de diseño. Por ejemplo, si ya no queda espacio libre en la superficie y desea agregar algo debajo de los elementos que ya están en ella, puede usar la herramienta y, manteniendo el botón apretado, mover el ratón hacia arriba. Esto desplazará la superficie de diseño hacia arriba, como si la superficie fuera una hoja de papel y usted la presionara con la mano y la empujara hacia arriba, de modo que la parte superior del papel ya no es visible y la parte inferior, sí.
· Seleccionar varios elementos: con esta herramienta puede dibujar un rectángulo sobre la superficie de diseño. Los elementos que queden dentro del rectángulo y las conexiones entre ellos quedan seleccionados.
· Crear/Eliminar espacios: con esta herramienta se puede crear espacio entre dos partes del diagrama, manteniendo presionado el botón del ratón y moviendo el ratón hacia la derecha. El efecto es como si se empujaran todos los elementos que están a la derecha del ratón hacia ese lado, generando un espacio entre sus nuevas posiciones y las que ocupaban antes. De forma similar, se puede hacer lo mismo pero moviendo el ratón hacia la izquierda, lo cual tiene el efecto inverso: se elimina el espacio del medio.
· Conectar: esta herramienta permite conectar dos elementos, pero no es la única forma de hacerlo.
Figura 86 Herramientas de diseño
A continuación se describen los elementos que se pueden agregar al diagrama. Los que son eventos, compuertas y actividades se describen con mayor detalle en la sección “Elementos del diseño de un proceso”.
· Evento de inicio:marca dónde empieza la ejecución del proceso.
· Evento intermedio: permite marcar un hito en la ejecución del proceso (por ejemplo, que terminó una fase del proceso).
· Evento de fin:marca dónde terminar la ejecución del proceso: cuando un proceso llega a un evento de fin, finaliza su ejecución.
· Compuerta:permite controlar el flujo del proceso. Compuertas exclusivas permiten elegir un camino entre varios posibles de un proceso. Compuertas inclusivas permiten crear varios caminos en paralelo.
· Actividad:representa una acción o tarea. Puede ser una tarea desempeñada por una persona, pero también puede ser una acción ejecutada automáticamente por algún componente del sistema.
· Subproceso:agrupa varios elementos.
· Referencia a objeto de datos: es un elemento decorativo que representa datos que son utilizados en alguna actividad. Se conecta a otro elemento, típicamente una actividad, con una flecha punteada.
· Referencia a base de datos: lo mismo que el dato, pero representa un almacén de datos (por ejemplo, una base de datos).
· Pool: permite crear andariveles para organizar el proceso, agrupando dentro de un mismo nivel elementos relacionados.
· Grupo: permite crear grupos, para visualizar mejor una serie de pasos relacionados. Este elemento es puramente visual, pues no influye en la ejecución de los pasos del grupo de ningún modo.
Figura 87 Herramientas para agregar elementos al diseño
A continuación, se explica la funcionalidad de cada uno de los botones que aparecen a la derecha en el diseñador.
· Pantalla completa: permite ingresar al modo de pantalla completa, en el cual se expandirá la zona de edición al máximo posible de su pantalla. Esto le permite enfocarse en la creación y configuración del diagrama sin interrupciones visuales. Para salir del modo pantalla completa, presione la tecla “Esc” o haga clic en el botón de salir de pantalla completa (Figura 89).
· Restaurar zoom:vuelve a colocar el nivel de zoom donde estaba inicialmente.
· Acercar: aumenta el zoom.
· Alejar: reduce el zoom.
· Guardar temporalmente: guarda los cambios realizados en el diagrama, que se almacenarán en el servidor, permitiendo acceder a ellos en otro momento para continuar con su edición. Es recomendable guardar los cambios cada cierto tiempo, para evitar que éstos se pierdan ante algún error inesperado.
· Exportar diagrama: permite exportar el diseño del diagrama realizado. Al hacer clic sobre el botón tendrá las opciones de exportar la imagen del diagrama, seleccionando la opción “Exportar diagrama”, o el archivo bpmn de éste, seleccionando la acción “Exportar documento”, como muestra la Figura 90Error! Reference source not found..
· Atajos de teclado: muestra un cartel que indica todos los atajos de teclado disponibles, como muestra la Figura 91.
Figura 88 Herramientas de visualización
Figura 89 Salir de pantalla completa
Figura 90 Opciones de exportación
Figura 91 Atajos de teclado
Para diseñar el proceso se utilizan las herramientas de diseño para agregar elementos y conectarlos. Cada elemento tiene propiedades que también se pueden modificar desde el diseño.
Para agregar un elemento al diseño, selecciónelo en la caja de herramientas y arrástrelo hacia la zona de diseño (también puede hacerle clic y luego hacer clic en la zona de diseño). Si desea agregar un elemento a continuación de otro que ya existe, de modo que quede conectado a él, puede seguir los siguientes pasos:
1. Se selecciona un elemento.
2. Entre los íconos que aparecen a la derecha, seleccione el que corresponde al tipo del elemento que se desea agregar a continuación.
3. Se hace clic donde se desea que esté el nuevo elemento.
4. El nuevo elemento también tiene íconos a la derecha y puede repetir la misma operación con ese elemento y los siguientes.
Figura 92 Menú de opciones de un elemento
En la Figura 93 se puede ver un ejemplo donde a partir de un Evento de inicio, se crea una actividad.
Figura 93 Agregar tarea a continuación de evento de inicio
Para agregar un evento de borde al diseño, seleccione el evento intermedio en la caja de herramientas y arrástrelo hacia la zona de diseño sobre alguna de las actividades que lo permiten (Figura 94). Para ver más información sobre los eventos de borde y qué actividades lo permiten, vea la sección “Eventos intermedios de borde”.
Figura 94 Crear evento de borde en tarea de usuario
Una vez agregado un elemento al diseño, puede ser necesario cambiar su subtipo. Esto depende del tipo del elemento y de si se agregó a través de la caja de herramientas o a través de los íconos que permiten hacerlo desde el diseño.
Si se agrega una actividad, ya sea desde la caja de herramientas o desde el diseño, la nueva actividad no tiene ningún subtipo, por lo que siempre hay que seleccionar uno. No se puede proteger un diseño que contiene una actividad para la que no se haya seleccionado un subtipo.
Para cambiar el subtipo de un elemento, haga clic en el ícono de cambio de subtipo (Figura 92). Q-flow muestra entonces la lista de subtipos que se pueden asignar al elemento seleccionado, seleccione el que desee y Q-flow lo asignará al elemento (Figura 95).
Figura 95 Cambiar subtipo de tarea
Para borrar un elemento, selecciónelo y pulse la tecla “Suprimir” o haga clic en el ícono de eliminar que aparece al seleccionar el elemento (Figura 92).
Para conectar dos elementos se puede utilizar la herramienta de conexión de la caja de herramientas (Figura 86): se hace clic en el ícono correspondiente a la herramienta y después se hace clic en el elemento del que se desea salga la conexión y, sin soltar el botón, se mueve el ratón hasta el elemento con el cual se desea conectar el primero. Entonces se suelta el botón.
También se puede utilizar el ícono de conexión que aparece al seleccionar un elemento: en este caso, el elemento del cual sale la conexión es el elemento seleccionado y se procede de la misma forma, moviendo el ratón con el botón apretado hasta que el cursor esté sobre el elemento al cual se desea conectar el elemento seleccionado.
Si hace clic sobre un elemento y presiona la tecla E, podrá editar el nombre de dicho elemento. Por otro lado, si se hace clic en el botón de ver o modificar propiedades de un elemento, aparece, a la derecha de la zona de diseño, un formulario que muestra en la parte superior sus propiedades básicas (en general, el nombre y la descripción del paso) y en la parte inferior otro formulario con propiedades avanzadas. Este otro formulario no aparece desplegado: para que se despliegue, haga clic en el ícono con un símbolo de “+”. Las propiedades de cada tipo de elemento se explican en “Elementos del diseño de un proceso”.
A una conexión se le puede agregar una etiqueta. También se le pueden agregar puntos de quiebre, para transformarla en una línea poligonal.
Para agregar una etiqueta a una conexión, haga doble clic en la conexión. Esto hace que Q-flow muestre una caja de texto sobre la conexión. Escriba el texto que desee para la etiqueta y pulse la tecla “Enter” (Figura 96).
Figura 96 Agregar una etiqueta a una conexión
Para cambiar la forma de la conexión, posicione el cursor del ratón sobre la etiqueta. Esto hace que Q-flow muestre un pequeño círculo. Pulse el botón del ratón y, manteniéndolo presionado, mueva el ratón. Esto crea un punto de quiebre en el lugar donde hizo clic y al mover el ratón, la línea que antes era recta se parte en dos, formando un ángulo en el punto de quiebre (Figura 97).
Figura 97 Agregar un punto de quiebre
También se pueden mover las líneas horizontales y verticales de una conexión en sentido perpendicular a ellas. Para hacer esto, ponga el cursor del ratón sobre una de estas líneas y mueva el ratón hasta que aparezca una flecha doble (Figura 98) y una porción de la línea quede de color amarillo. Entonces, pulse el botón del ratón y, manteniéndolo apretado, mueva el ratón para desplazar la línea hacia arriba y abajo (si la línea es horizontal) o hacia los costados (si es vertical).
Figura 98 Desplazamiento de una línea horizontal hacia abajo
Para especificar un proceso, además de especificar un diseño, también se definen otros ítems, que se pueden definir en una versión, en la plantilla, en el paquete donde está la plantilla o en alguno de sus ancestros. Dónde definir un ítem depende de consideraciones de diseño y organización de la estructura: un ítem que es específico de una versión se debe definir en una versión. Es más usual definir ítems en la plantilla. Mientras que, en un paquete se definen ítems que son comunes a varios procesos que pertenecen a esa plantilla (por ejemplo, si varios procesos usan el mismo web service, es conveniente almacenar los datos de conexión a ese web service en un parámetro de aplicación perteneciente a un paquete que contenga a todos esos procesos).
Los tipos de ítems que se pueden definir para un proceso son los siguientes:
· Datos de aplicación: son datos que maneja un proceso, especialmente datos que son necesarios en notificaciones a usuarios o para definir qué caminos sigue el proceso (otros datos pueden almacenarse en bases de datos externas, con ayuda de integraciones). Los elementos del proceso tienen acceso a los datos de aplicación: se los puede usar para especificar los mensajes que se envían a los usuarios (ver “Etiquetas”). También son útiles para cambiar la dirección del flujo: mediante el uso de compuertas (ver “Compuertas”), el valor de un dato de aplicación puede determinar que el flujo siga un camino en lugar de otro, por ejemplo.
· Roles de plantilla de proceso: si una actividad es desempeñada por una persona, un rol especifica quién la desempeña, o quiénes la pueden desempeñar. Las tareas de usuario (ver “Tarea de usuario”) se asignan a usuarios a través de roles. No se asignan directamente a los usuarios.
· Dominios: definen tipos de datos de aplicación (“Numérico”, “Texto”, “Fecha”) o, en los casos más complejos, permiten restringir los valores que pueden tener datos de aplicación mediante listas arbitrarias, resultados de consultas a bases de datos o a otros sistemas. Un dominio define también cómo se muestran los datos de aplicación pertenecientes a él (por ejemplo, un dominio de tipo fecha se muestra como un selector de fechas).
· Formularios personalizados: definen qué páginas web usar para mostrarle la información a un usuario que desempeña una de las tareas definidas en el proceso (la página web en sí no se define mediante el diseñador de procesos del negocio, sino que tiene que ser construida por un programador; consulte los dos manuales de diseño de formularios por información al respecto).
· Integraciones:definen cómo acceder a sistemas externos (por ejemplo, servicios ofrecidos por software existente en la empresa) para enviarles datos, o para recibir datos de ellos (por ejemplo, para que un proceso guarde datos en la base de datos de uno de esos sistemas, o para que obtenga datos de él). Las tareas de servicio usan integraciones.
· Manejadores de eventos: son pequeños programas que se ejecutan cuando ocurre algún evento predefinido durante la ejecución de un proceso.
· Worklets:permiten definir una porción de un proceso para utilizarla en varios procesos distintos.
· Validaciones: son pequeños programas que se desarrollan para validar los datos que se ingresan en los formularios de los procesos.
· Bots: como las integraciones, especifican la interacción con programas externos, con la diferencia de que se ejecutan asíncronamente para procesar los datos de un proceso (los programas en sí no se definen en el diseñador de procesos, sino que deben ser desarrollados por un programador).
· Parámetros de aplicación: especifican información de configuración (conexiones a bases de datos, especificaciones de acceso a servicios, contraseñas) para que sea usada desde el proceso.
A continuación, se explica cómo trabajar con los ítems que se acaban de describir. El propósito de esta sección es describir las propiedades de estos ítems y para qué sirven. En el caso de algunos aspectos específicos de un tipo de ítem, se explica cómo usar la interfaz de usuario para definirlos, pero operaciones más generales, comunes a todos (por ejemplo, cómo eliminar un ítem) se describen en la sección “Listas de ítems”.
Los datos de aplicación son datos que maneja Q-flow en los procesos. Cada dato está asociado a un dominio, y éste está asociado a un tipo de dato y a un tipo de control que determina cómo el dato será mostrado en los formularios de los procesos.
El formulario de propiedades de un dato de aplicación tiene las siguientes secciones.
· General: contiene el nombre, la descripción, el dominio y otras opciones que definen el comportamiento del dato.
· Presentación: contiene propiedades que definen aspectos de cómo el dato se verá en el sitio web de Q-flow.
· Avanzado (aparece al expandir el formulario): permite definir valores por defecto para el dato.
· Dependencias (aparece si el dominio del dato tiene parámetros): permite definir qué datos de aplicación se usan para proveerle valores a los parámetros del dominio.
A continuación, se muestra una lista de las propiedades para cada una de las secciones, con explicaciones. Las propiedades que aparecen con un asterisco son obligatorias de indicar (esto aplica para todos los paneles). Esto quiere decir que, si no las completa, no podrá crear el elemento en cuestión, y Q-flow le mostrará un mensaje de error al intentar guardar.
Figura 99 Sección General de datos
· Nombre
· Descripción
o Booleano: los datos de este tipo sólo tienen dos valores posibles: verdadero o falso.
o Fecha: los datos de este tipo almacenan fechas.
o Hora: los datos de este tipo expresan horas.
o Número: los datos de este tipo almacenan números.
o Texto: los datos de este tipo almacenan textos.
o Área de texto:los datos de este tipo almacenan textos con varias líneas.
· Grupo: nombre del grupo al que pertenecerá este dato. Para asignar el dato a un grupo, escriba el nombre del grupo. Si el grupo ya existe, mientras escribe aparecerá en una lista debajo del nombre que se esté escribiendo y podrá seleccionarlo. Si no existe, se creará automáticamente cuando guarde los cambios. Los datos que están en el mismo grupo son mostrados juntos en la lista de datos cuando ésta está ordenada por grupo, con el nombre del grupo como título (se ordena por grupo haciendo clic en el cabezal de la columna “Grupo”). También son mostrados juntos en los formularios del sitio web.
· Bloque de línea:si el dato debe pertenecer a un bloque de líneas, indica el bloque de líneas al cual pertenece el dato. El concepto de bloque de líneas se explica más abajo.
· Acepta múltiples valores: si esta opción está marcada, el dato puede tener varios valores. Es un conjunto de datos en lugar de un dato.
Figura 100 Sección Presentación de datos
· Etiqueta: es el nombre con el que se mostrará el dato en el sitio web. Los usuarios no verán el nombre del dato, verán la etiqueta. La etiqueta puede tener símbolos que no están permitidos en el nombre del dato.
· Tabulación:Indica el orden en el que los datos serán mostrados en los formularios por defecto en el sitio web. Por ejemplo, el dato con el valor de tabulación 0 será el que se muestre primero; el que tenga el valor 1, el que se muestre segundo y así sucesivamente. En el caso de los datos de bloques de líneas, en el que cada dato corresponde a una columna de una tabla, el dato que tenga índice 0 ocupará la primera columna, el que tenga índice 1 la segunda y así sucesivamente.
Figura 101 Sección Avanzado de datos
· Valores por defecto: lista con los valores con los cuales comenzará el dato cuando se inicie un proceso. Si el dato no acepta múltiples valores, sólo se puede definir un valor por defecto.
· Nuevas instancias: si el dato acepta múltiples valores, cuando un usuario hace clic en el sitio web para agregar un valor, el valor que se agrega será el indicado en esta propiedad.
La sección dependencias sólo aparece si el dato de aplicación está asociado a un dominio que accede a una base de datos, web service o lista de SharePoint, y que tiene parámetros de entrada o salida (consulte la sección “Fuentes de datos” para ver cómo se configuran esos dominios).
Si un dominio tiene parámetros de entrada, hay que especificar de qué datos de aplicación se tomarán los valores que se utilizarán en esos parámetros de entrada. Eso se hace en la sección “Dependencias”: a cada parámetro de entrada del dominio se le asocia un dato de aplicación.
Lo mismo sucede con los parámetros de salida: cuando un dominio tiene parámetros de salida, hay que especificar en qué datos de aplicación se volcarán los valores de los parámetros de salida. Eso también se hace en la sección “Dependencias”, asociando a cada parámetro de salida un dato de aplicación.
La sección “Dependencias” muestra los parámetros del dominio en una tabla con tres columnas. En la primera columna se muestran los nombres de los parámetros. En la segunda, el tipo: entrada o salida, indicado por un ícono. En la tercera se debe elegir, para cada parámetro, qué dato de aplicación se desea asociar a él.
La Figura 102 muestra la sección de dependencias de un dato del dominio “Cliente”. Este dominio tiene un parámetro de entrada (“id”) y cuatro de salida (el resto). En la columna “Dato de aplicación” se selecciona, para cada parámetro, un dato de aplicación. En este caso, se seleccionó el dato de aplicación “Cédula” para el parámetro “id”. Esto significa que el dominio, para obtener datos, usará el valor del dato de aplicación “Cédula”. Por ejemplo, cuando un usuario acceda al sitio web de Q-flow para, responder a una tarea, podrá ingresar un valor para el dato “Cédula” y cuando lo haga, el dominio obtendrá datos utilizando la cédula ingresada.
El dominio también tiene parámetros de salida asociados a datos de aplicación. Por ejemplo, el parámetro “nombre” está asociado al dato de aplicación “Nombre”, de modo que cuando se obtengan los datos, el valor del parámetro “nombre” se cargará en el dato “Nombre”.
Figura 102 Dependencias de un dato de aplicación
Cuando un conjunto de datos pertenece a un bloque de líneas, esos datos aparecen en el sitio web agrupados bajo el mismo rótulo. Para que un dato pueda pertenecer a un bloque de líneas, debe aceptar múltiples valores.
En el sitio web, los datos de un bloque se muestran como una tabla: cada fila de la tabla tiene tantos valores como datos tiene el bloque. Por ejemplo, el bloque Empleados (Figura 103) tiene tres datos. Ese bloque se muestra en el sitio web como una tabla con tres columnas, una por cada dato: Dirección, Nombre y Teléfono. Vea el manual del sitio web por detalles de cómo un usuario interactúa con bloques de líneas.
Figura 103 Datos de un bloque de línea
Por defecto, los usuarios no pueden ver ni modificar los datos de aplicación al iniciar un proceso o durante la ejecución de éste. Para permitir que un usuario pueda ver o modificar los datos de aplicación, configure el alcance de éstos en los pasos donde desea que puedan ser vistos o modificados. También es posible configurarlo en el formulario y el formulario de edición del proceso. El alcance de los datos también especifica, para el caso de los datos de bloques de líneas y datos que aceptan múltiples valores, si los usuarios pueden agregar o borrar instancias, así como también los límites a la cantidad de instancias que se pueden tener. Para obtener información al respecto, consulte la sección “Alcance de datos, roles, adjuntos y comentarios”.
Los roles representan uno o
más usuarios que desempeñarán una determinada función durante la
ejecución de un proceso. Cuando una plantilla de proceso especifica
que Q-flow debe enviar una tarea a un usuario, no especifica un
usuario concreto, especifica un rol. Esto hace más fácil el
mantenimiento de las definiciones de los procesos.
Por ejemplo, la tarea “Aprobar gasto” puede ser asignada al rol
“Gerente de finanzas”. Si el gerente de finanzas es Juan Pérez, el
rol tendrá como miembro a esa persona. Si un día Juan Pérez se va
de la empresa y es sustituido por José López, no es necesario
actualizar todas las tareas de usuario en las que interviene Juan
Pérez por ser gerente de finanzas: basta con modificar el rol
“Gerente de finanzas”, sacando a Juan Pérez y poniendo como miembro
a José López.
Cuando Q-flow deba enviar el mensaje correspondiente a la tarea, verificará qué usuarios están desempeñando ese rol y enviará el mensaje a esos usuarios.
El formulario de un rol tiene las siguientes secciones:
· General
· Restricciones (sólo disponible con el formulario expandido): permite restringir quiénes pueden ser miembros del rol.
· Presentación: permite especificar cómo se muestra el rol en el sitio web.
Figura 104 Sección General de roles
La sección “General” tiene las siguientes propiedades:
· Nombre
· Descripción
· Miembros del rol:lista de usuarios, roles, roles de sistema, grupos y colas de trabajo que desempeñan el rol. Sólo puede haber más de un miembro si el rol permite múltiples usuarios. Para que una cola de trabajo o un grupo pueda ser miembro de un rol, también es necesario que éste permita múltiples usuarios. Para agregar un miembro, comience a escribir su nombre donde dice “Comience a escribir un usuario…”, y cuando vea el rol que desea en la lista que aparece, selecciónelo.
· Permitir múltiples usuarios: si esta opción está marcada, el rol puede tener muchos miembros o miembros que tienen muchos usuarios (por ejemplo, grupos).
· Aplicar regla: aplica una regla que determina quiénes son los miembros del rol.
o Supervisados por: si se aplica esta regla, los miembros del rol no son los que están en la lista de miembros, sino que son aquellos usuarios que sean supervisados por ellos. Ejemplo: el usuario Pérez es supervisor de López y Gómez. Si Pérez está en la lista y se aplica la regla “Supervisados por”, los miembros del rol serán López y Gómez, y no Pérez. La regla, además, se aplica en el momento en el que el rol es utilizado. Es decir, si en el momento de definir el rol, López es supervisado por Pérez, pero poco antes de que un proceso le envíe una tarea a ese rol alguien le cambia el supervisor, entonces no recibirá la tarea, pues habrá dejado de ser miembro del rol.
o Supervisor de: si se aplica esta regla, los miembros serán los supervisores de los que se incluyen en la lista de miembros.
o Usuario con menos tareas: si se aplica esta regla, Q-flow toma como usuario que desempeña ese rol al usuario que tenga menos tareas pendientes al momento de utilizar el rol. Ejemplo: supongamos que el rol tiene como miembros a tres usuarios: Pérez, López y Gómez. Una tarea está dirigida a ese rol y utiliza la regla “Usuario con menos tareas”. Si, cuando el proceso llega a esa tarea, Pérez es, de los tres usuarios, el que tiene menos tareas pendientes, entonces la tarea será asignada a Pérez.
o Supervisor directo: si se aplica esta regla. Q-flow toma como usuario que cumple con ese rol a cada supervisor directo de los miembros que se hayan agregado. Un supervisor directo de un usuario es aquel asignado como supervisor en el nodo organizacional donde se encuentra el usuario.
o Usuario con menos tareas de la plantilla de proceso: si se aplica esta regla, Q-flow toma como usuario que cumple con ese rol al usuario que tenga menos tareas pendientes pertenecientes a procesos de la misma plantilla. Ejemplo: supongamos que el rol tiene como miembros a Pérez, López y Gómez. Una tarea está dirigida a ese rol, que utiliza la regla “Usuario con menos tareas de la plantilla de proceso”. La plantilla del proceso se llama “Aprobaciones”. Si, cuando el proceso llega a la tarea mencionada, Pérez es el que tiene menos tareas pendientes en procesos de la plantilla “Aprobaciones” de los tres usuarios, entonces la tarea será asignada a Pérez. Nótese que esta regla es similar a “Usuario con menos tareas”, pero no se cuentan todas las tareas que cada usuario tiene pendientes en el sistema, sino solamente las de la plantilla del proceso al que pertenece la tarea.
La sección “Restricciones” (Figura 105), permite restringir los usuarios que pueden ser seleccionados para este rol. Si desea restringir quienes pueden desempeñar ese rol a una lista de usuarios, marque la opción “Restringir selección de miembros del rol”. Entonces podrá agregar restricciones a la lista. Sólo usuarios que cumplen con las reglas especificadas en la lista podrán desempeñar el rol. Para agregar una restricción, haga clic en el botón con el símbolo de “+”. Esto agrega una fila.
Figura 105 Restricciones
Haga clic en la columna “Nombre” de la fila seleccionada para escribir el nombre del miembro (usuario, grupo, nodo o cola de trabajo) al cual quiere restringir el rol. También puede seleccionar una regla, haciendo clic en la columna “Regla” de la misma fila. La regla indica cómo se usa ese miembro para definir la restricción. Por ejemplo, la restricción más sencilla posible es seleccionar un usuario como miembro y utilizar la regla “Ninguna”. En este caso, la restricción indicará que el usuario seleccionado puede desempeñar el rol, pero otros usuarios no (a menos que alguna otra restricción indique que sí pueden). Las reglas posibles son:
a. Ninguna: el miembro de rol seleccionado puede desempeñar el rol.
b. Supervisor de:los supervisores del miembro de rol seleccionado pueden desempeñar el rol.
c. Supervisados por:los usuarios que tengan como supervisor al miembro de rol seleccionado pueden desempeñar el rol.
d. Miembros de: los miembros del miembro de rol seleccionado pueden desempeñar el rol. Por ejemplo, si el miembro de rol seleccionado es un grupo, la regla hace referencia a los miembros de ese grupo. Naturalmente, esta regla no se puede aplicar a un usuario.
e. Visualizadores de: esta regla sólo es válida si el miembro de rol es una cola de trabajo. Significa que usuarios que tengan permiso de visualización en esa cola de trabajo pueden desempeñar el rol.
f. Actuantes de:esta regla sólo es válida si el miembro de rol es una cola de trabajo. Significa que usuarios que tengan permiso de actuar en la esa cola de trabajo pueden desempeñar el rol.
Figura 106 Sección Presentación de roles
· Etiqueta: es el nombre con el que se mostrará el rol en el sitio web. Los usuarios no verán el nombre del rol, verán la etiqueta. La etiqueta puede tener símbolos que no están permitidos en el nombre del rol.
· Tabulación:indica el orden en el que se mostrarán los roles. Por ejemplo, el rol que tenga el valor 0 se mostrará primero; el que tenga el valor 1 se mostrará segundo, y así sucesivamente.
· Sugerencia: es el texto que se muestra cuando, en el sitio web, se visualiza la ayuda del grupo de los roles.
Por defecto, los usuarios no pueden ver ni modificar los roles de un proceso durante su inicio o ejecución. Para permitir que los usuarios puedan ver o modificar los roles de un proceso, configure el alcance de los roles en los elementos del diseño donde desea que sean vistos o modificados. El alcance de los roles también especifica, para aquellos que aceptan valores múltiples, si los usuarios pueden agregar o borrar miembros, y establece límites a la cantidad de miembros que los usuarios pueden agregar o borrar.
Por información sobre cómo configurar el alcance, consulte “Alcance de datos, roles, adjuntos y comentarios”.
El dominio de un dato especifica el conjunto de valores que el dato puede tomar y está asociado a un tipo de dato. Por ejemplo, si un dato sólo debe guardar valores correspondientes a fechas, el dominio de ese dato es el conjunto de todas las fechas posibles. En Q-flow, cada dato de aplicación está asociado a un dominio y éste está asociado a un tipo de dato.
El tipo de dato del dominio determina el tipo del dato de aplicación. Por ejemplo, si un dato de aplicación está asociado al dominio “Fecha”, su valor debe ser una fecha. Así, a través de su tipo de dato, el dominio define los valores que los datos asociados a él pueden tomar. Se puede limitar aún más estos valores si se asocia el dominio con una operación que defina un conjunto más restringido de valores (por ejemplo, el resultado de una consulta a una base de datos).
Un dominio, define también, la forma en que sus datos serán mostrados y editados en el sitio web de Q-flow. Por ejemplo, datos del dominio “Fecha” se muestran mediante un control (ítem del formulario) que permite seleccionar una fecha (es decir, un selector de fecha).
Q-flow ofrece un conjunto de dominios básicos, pero es posible definir dominios adicionales.
Los dominios básicos de Q-flow son los siguientes:
· Booleano: está asociado al tipo de datos “Verdadero/Falso” y al control “Check Box”.
· Fecha: está asociado al tipo de datos “Fecha” y al control “Selector de fecha”.
· Número: está asociado al tipo de datos “Número” y al control “Cuadro de texto”.
· Texto: está asociado al tipo de datos “Texto” y al control “Cuadro de texto”.
· Área de texto:está asociado al tipo de datos “Texto” y al control “Área de texto”.
· Dinero: está asociado al tipo de datos “Número” y al control “Cuadro de texto”.
· Hora: está asociado al tipo de datos “Hora” y al control “Selector de horas”.
· Fecha y hora:está asociado al tipo de dato “Fecha” y al control “Selector de fecha y hora”.
· Documento: está asociado al tipo de dato “Texto” y al control “Documento”.
Por más información acerca de los tipos de control de los dominios, consulte la sección “Tipos de control”.
El formulario de propiedades de un dominio tiene las siguientes secciones:
· General
· Propiedades
Figura 107 Sección General de dominios
· Tipo de fuente de datos: esta opción sólo es válida para algunos tipos de control. Permite seleccionar un tipo de fuente de datos para después especificar cómo obtener los datos de una fuente del tipo seleccionado. Una vez seleccionado el tipo de fuente de datos, haga clic en el botón de configurar (Figura 108) para especificar cómo se obtienen los datos. Los tipos de fuente disponibles son:
o Ninguno: deje esta opción si no quiere que el dominio acceda a una fuente de datos.
o Base de datos:permite especificar una conexión a una base de datos y una consulta para obtener los datos
o Web service:permite especificar una conexión a un web service y un método del web service para obtener los datos.
o Web service REST:análogo al anterior, pero para un web service de tipo REST.
o Lista de SharePoint: permite especificar una lista de SharePoint y una consulta CAML para obtener los datos.
o Lista: permite definir manualmente, enumerando el conjunto de valores posibles mediante una lista. Cada elemento de la lista tiene una clave y un texto asociado a ella.
Figura 108 Formulario de propiedades de un dominio
Figura 109 Sección de Propiedades de dominios
En “Propiedades” se puede especificar un conjunto de clases de estilos para aplicar, en el sitio web de Q-flow, al control que se usa para mostrar los datos del dominio.
· Comportamiento:
o Agregar opción vacía al Combo Box: permite agregarle una opción a un dominio con tipo de control “Combo Box” que, al ser seleccionada en un formulario, indica que no se eligió ninguno de los valores del dominio.
o Modo especial:esta propiedad sólo está disponible para dominios con tipo de control “Cuadro de texto” y permite agregarle una propiedad adicional al control con el que se muestran los datos del dominio, propia de HTML5, para aprovechar las funcionalidades de validación y semántica de este estándar. Los modos especiales disponibles son:
§ Correo electrónico
§ Teléfono
§ Número
§ Contraseña
o Formato AM/PM:para dominios que usan el tipo de dato “Hora” o tipo de control “Selector de fecha y hora”. Si el valor de esta propiedad es “Verdadero”, los datos del dominio se mostrarán en el formato AM/PM (“una de la tarde” = 1:00 PM). De lo contrario, se mostrarán en formato 24 horas (“una de la tarde” = 13:00).
o Mostrar segundos:para dominios que usan el tipo de dato “Hora”. Si el valor de esta propiedad es “Verdadero”, los datos del dominio son mostrados incluyendo los segundos. De lo contrario, no se muestran segundos.
· Disposición:
o Clase de estilos:nombre de la clase de estilos para mostrar en todos los casos.
o Clase de estilos de sólo lectura: nombre de la clase de estilos a utilizar cuando un dato tiene alcance de sólo lectura.
o Clase de estilos del contenedor: nombre de la clase de estilos del elemento que contiene el control.
o Clase de estilos del contenedor sólo lectura: nombre de la clase de estilos del elemento que contiene el control cuando un dato tiene alcance de sólo lectura.
o Atributos:conjunto de pares de nombres y valores de atributos HTML que Q-flow agregará al control que muestra los datos del dominio. Use el botón con el símbolo “+” para agregar una fila a la lista de atributos y después modifique la clave (nombre del atributo) y el valor para especificar el atributo.
o Dirección: esta propiedad sólo está disponible para dominios cuyo tipo de control sea “Radio button” o “Lista de Check Box”. Permite especificar si las opciones de estos controles deben ser mostrados uno al lado del otro (“Horizontal”) o uno arriba del otro (“Vertical”, opción por defecto).
· Restricciones:
o Expresión regular: esta propiedad sólo existe cuando el tipo de dato del dominio es “Texto” o “Documento”. Permite especificar una expresión regular para validar los textos que se ingresen o el nombre del archivo que se está subiendo. Si un usuario ingresa un texto que no está contemplado en la expresión regular, Q-flow le mostrará el mensaje de error especificado en la propiedad “Mensaje de error de formato”.
o Mensaje de error de formato: texto del mensaje de error que se mostrará al usuario si ingresa un valor que no cumpla con la expresión regular definida en la propiedad “Expresión regular”.
o Operador de la comparación: permite especificar el operador que se utilizará para comparar una fecha ingresada por un usuario con la fecha especificada en “Fecha a comparar”.
o Fecha a comparar:esta propiedad sólo existe cuando el tipo de dato del dominio es “Fecha”. Permite especificar una fecha con la cual Q-flow, al validar valores de datos de aplicación del dominio, comparará las fechas ingresadas por los usuarios. La propiedad “Operador de la comparación” permite especificar qué comparación se hará.
o Largo máximo:esta propiedad sólo existe cuando el tipo de dato del dominio es “Texto”. Permite especificar un largo máximo para los valores de los datos asociados a ese dominio.
o Valor máximo:esta propiedad sólo existe cuando el tipo de dato del dominio es “Número”. Permite especificar un valor máximo para los valores de los datos asociados a ese dominio.
o Valor mínimo:esta propiedad sólo existe cuando el tipo de dato del dominio es “Número”. Permite especificar un valor mínimo para los valores de los datos asociados a ese dominio.
Esta sección explica cómo configurar el acceso a fuentes de datos de cada tipo. La configuración suele tener dos partes: la especificación de la conexión a la fuente y la especificación de qué datos se traen (la consulta). La excepción a esto son las fuentes de tipo Lista, para las cuales directamente se especifican los elementos de la lista.
Para especificar la conexión, siempre hay dos opciones (Error! Reference source not found.):
· Usar un parámetro de aplicación: en este caso, seleccione el parámetro de aplicación que contiene la especificación de la conexión.
· Definir en la configuración del origen de datos: en este caso, haga clic en el botón de configurar.
Se recomienda utilizar un parámetro de aplicación (por información sobre cómo definir parámetros de aplicación, ver “Parámetros de aplicación”).
Si decide especificar la ubicación de los datos en la configuración del origen de datos, deberá completar los mismos datos de conexión que si estuviese definiendo un parámetro de aplicación. La sección “Propiedades de un parámetro de aplicación” tiene instrucciones para hacerlo.
Definir la consulta a una base de datos requiere saber utilizar SQL.
La Figura 110 muestra el formulario en el que se define una consulta a una base de datos. Para definir la consulta, puede escribirla directamente en SQL o puede usar el constructor de consultas (Figura 111). La primera columna de la sentencia “Select” debe ser la columna que contiene la clave de los datos. La segunda columna debe ser la que contenga la descripción (ejemplo: “Select Id, Nombre From Clientes”). Se puede incluir más columnas. En ese caso, para usar los datos que vienen en las columnas adicionales se debe asociarlas a parámetros de salida. Debajo de la consulta, hay una sección dedicada a estos parámetros, la cual se explica más abajo.
Las consultas pueden tener parámetros de entrada. Para crear un parámetro de entrada, haga clic en el botón de “+” en la tabla que aparece en la parte superior de la Figura 110. “Valor de prueba” es el valor que tendrá dicho parámetro para probar la consulta. Puede editar y eliminar parámetros existentes. Para insertar un parámetro de entrada en la consulta, haga clic en el botón indicado en la Figura 110.
Los parámetros de entrada se representan en la consulta con llaves. En la Figura 110, hay un parámetro de entrada llamado “País”.
Figura 110 Definición de una consulta
Figura 111 Constructor de consultas
El constructor de consultas facilita la definición de la consulta al mostrar los nombres de las tablas disponibles. Además, una vez seleccionadas las tablas en la sección “From” de la consulta, las columnas disponibles aparecen para seleccionar en la sección “Select”. En “Order by” se agregan las columnas que se desean usar para ordenar el resultado, y en “Where” se definen las condiciones de filtro a través de una interfaz igual a la que se usa para definir las condiciones de las compuertas (ver “Especificación de condiciones”).
Antes de guardar la configuración del dominio, debe probar la consulta. Para eso, haga clic en el botón de probar consulta (Figura 110, “Probar consulta”). Si la consulta funciona, Q-flow muestra el resultado de ejecutarla.
Para definir parámetros de salida, es necesario probar la consulta, haciendo clic en el botón correspondiente como se muestra en la Figura 110. Se mostrará, en lugar del formulario de la consulta, las columnas que se obtuvieron como resultado de ésta. Cierre este resultado y volverá al formulario anterior, pero ahora, como se ve en la Figura 112, los parámetros están habilitados para su edición. Haga clic sobre el nombre en azul para editarlo.
Los nombres que escriba serán los que vea cuando configure algún dato de aplicación para almacenar en él los valores de estos parámetros. Los parámetros se asocian a datos de aplicación en el formulario de propiedades de los datos de aplicación, en la sección “Dependencias” (ver “Dependencias”).
Una vez definida la consulta, haga clic en el botón de aceptar para guardarla.
Figura 112 Parámetros de salida
Una vez especificada la conexión a un web service SOAP, debe hacer clic en el botón de cargar (ver Figura 113) para que se cargue la lista de métodos de ese web service. A continuación, donde dice “Seleccionar método Web”, seleccione el método que desee usar para el dominio. Al seleccionar el método, se cargan los parámetros de éste. Los parámetros del método se asocian a parámetros de entrada.
A cada parámetro se le puede asignar un valor fijo. Si el tipo de control es Lookup, Selector de Ítems o Combo Box, también se puede establecer que ese valor sea parametrizable. Para ello, en la tabla de parámetros (Figura 113) debe elegir el tipo de cada parámetro. Hay dos tipos de parámetro:
· Personalizado: un parámetro personalizado funciona como los parámetros de los dominios que obtienen sus datos de una base de datos: cuando se define un dato de aplicación de ese dominio, se especifica otro dato de aplicación como parámetro (ver “Dependencias”). Para un parámetro de este tipo, ingrese un nombre (Figura 113).
· Sistema: un parámetro de sistema se usa con un método de web service desarrollado especialmente para interactuar con el dominio de forma tal que la consulta sea más eficiente. Por ejemplo, en lugar de tener un Lookup que trae todos los elementos de una tabla, y recién en el código del cliente filtra los datos por clave, se puede desarrollar un método que reciba la clave por parámetro y devuelva solamente el registro que tiene la clave que se pasó por parámetro. Los parámetros de sistema no se asocian a datos de aplicación. Q-flow determina cómo invocar un método en base a qué parámetros de sistema hay definidos. Hay cuatro tipos de parámetros de sistema:
·
Filtro por
clave: para usar con un método que recibe por
parámetro una clave (identificador).
Q-flow lo utiliza, por ejemplo, con controles de tipo Lookup.
Ejemplo de un método para usar con este parámetro:
GetCliente(string clave).
· Filtro por texto: para usar con un método que recibe por parámetro una descripción. Q-flow lo utiliza, por ejemplo, para pasar el texto ingresado en el diálogo del selector de ítems. Ejemplo de un método para usar con este parámetro: GetCliente(string filtro).
· Filtrar por prefijo: complementa el parámetro Filtro por texto. Si, en un selector de ítems, el usuario selecciona la opción “Comienza con”, Q-flow invocará el método pasando este parámetro en “true”. Ejemplo: GetCliente(string filtro, bool comienzaCon).
· Cantidad máxima de ítems: útil si el método del web service recibe un parámetro (de tipo “int”) que indica el máximo de elementos que debe devolver. Ejemplo: GetCliente(string filtro, bool comienzaCon, int cantMaxima). Otro ejemplo: GetCliente(string clave, int cantMaxima).
Una consulta a una fuente de datos para un dominio debe devolver, por lo menos, dos columnas: una para la clave y una para la descripción de las entidades que se devuelven. Si la fuente es de tipo base de datos, la primera columna que se devuelve se toma como clave y la segunda como descripción. Pero si la fuente es un web service, no hay columnas, sino que hay propiedades de objetos, y no hay forma de determinar cuál de las propiedades corresponde a la clave y cuál a la descripción. Para hacer eso se utiliza el mapeo de columnas.
El mapeo de columnas consiste en definir columnas y asociar cada una de ellas a una propiedad del objeto. Las dos primeras columnas se usan para la clave y la descripción respectivamente. Columnas adicionales son opcionales, y se pueden asociar a parámetros de salida (ver más adelante).
Por defecto, la tabla de mapeo tiene todas las propiedades mapeadas a un nombre de columna. Si desea cambiar algún nombre, haga clic en el texto correspondiente a “Nombre de columna” para ingresar el nombre de la columna, y después de ingresarlo, pulse “Enter”. Si desea quitar algún mapeo, haga clic en la fila y luego en el botón de “Limpiar mapeo” (indicado en la Figura 113). También puede cambiar el orden del mapeo con los botones correspondientes.
Después, cada columna definida se asocia a un parámetro de salida mediante el botón de “Parámetros de salida” (análogo a la consulta de base de datos): a cada columna se le asigna un nombre de parámetro. Tanto los parámetros de entrada como los de salida se asocian a datos de aplicación a través de la sección “Dependencias” de los datos de aplicación pertenecientes al dominio (ver “Dependencias”).
Figura 113 Consulta a un web service
Una vez especificada la conexión a un web service tipo REST, se debe especificar la acción a realizar, la cual es una URL correspondiente al web service que se desea consultar (Figura 114). Luego se debe seleccionar el método HTTP requerido (GET, POST o PUT).
Figura 114 Consulta a un web service REST
Los parámetros de entrada tienen los mismos tipos que en los web services SOAP (ver sección “Parámetros de entrada”), pero a diferencia de éstos, no se cargan automáticamente, sino que el usuario debe ingresarlos a mano. Puede ponerles un nombre y un valor (ambos deben ser únicos) además del tipo. Estos parámetros se usan para cargar valores en el objeto de entrada, que se explica a continuación.
El objeto de entrada es de tipo JSON, y consiste en un objeto con propiedades. Estas propiedades pueden ser valores (que se toman de los parámetros de entrada) o subpropiedades, que a su vez tienen más valores.
Para crear una nueva propiedad, haga clic en el botón indicado en la Figura 114. Esto abrirá un menú como el de la Figura 115.
Figura 115 Menú de propiedades
Si desea agregar una propiedad con subpropiedades, elija la opción de “Agregar propiedad” (luego podrá agregarle subpropiedades a la propiedad principal). De lo contrario, elija la opción de “Agregar propiedad con valor”. Esto le permitirá darle un valor a la propiedad a partir de un parámetro de entrada. Opciones análogas se muestran al hacer clic en el botón de “Agregar subpropiedad”.
La Figura 116 muestra un ejemplo de un árbol de propiedades y subpropiedades.
Figura 116 Árbol de propiedades
Para editar el nombre de una propiedad o subpropiedad, puede usar el botón indicado en la Figura 114 o presionar F2. Recuerde que, a la hora de hacer la consulta, las propiedades que estén en el mismo nivel del árbol deben tener nombres diferentes. También puede eliminar una propiedad, usando el botón correspondiente (Figura 114). Estas dos opciones también se muestran en un menú contextual si hace clic derecho sobre la propiedad.
Una vez creada la estructura de su árbol, debe ingresar los valores necesarios. A todos los valores se les debe asignar un parámetro; si desea enviar una propiedad con valor vacío, cree un parámetro cuyo valor sea vacío (que no sea de tipo Sistema). Para asignar un valor a un parámetro, haga clic derecho sobre el valor. Esto abrirá un menú contextual como muestra la Figura 117.
Figura 117 Menú contextual de valores
Si posiciona el cursor sobre la opción “Asignar valor”, sobre la derecha se desplegará un submenú con todos los parámetros existentes. Haga clic sobre el que desee asignar, y el valor se mostrará con el nombre de ese parámetro. Puede asignarle el mismo parámetro a más de un valor. El botón de Limpiar le permite borrar el parámetro actualmente asignado al valor.
En la Figura 118 se muestra un ejemplo de resultado final.
Figura 118 Árbol con propiedades y parámetros cargados
Una vez creado su objeto de entrada, debe probar la consulta, al igual que en los web services SOAP, con el botón para dicho fin (análogo a la Figura 113). El resultado de la consulta debe ser un arreglo de objetos JSON. Dado que un objeto JSON podría potencialmente tener varios niveles de subpropiedades, hay un límite de la profundidad mostrada. Esto se puede ver en la Figura 119, donde los campos con un símbolo de información son aquellos que tienen más subpropiedades, pero no se muestran.
Figura 119 Resultado de consulta con nivel de profundidad no soportado
Luego de probada la consulta, la tabla de Mapeos de columnas se cargará con las propiedades encontradas. Se puede proceder entonces a realizar los mapeos correspondientes y cargar los parámetros de salida como se explica en la sección “Mapeo de columnas y parámetros de salida”.
La definición de la consulta a una lista de SharePoint es similar a la de una consulta a una base de datos (ver “Definición de la consulta a una base de datos”), con la diferencia de que la consulta se escribe en CAML en lugar de SQL. También hay un constructor de consultas para facilitar la tarea.
Esta sección explica los tipos de control que pueden ser utilizados por los dominios de datos. Los tipos de control posibles son:
· Área de texto
· Check Box
· Combo Box
· Cuadro de texto
· Cuadro de texto con sugerencias
· Cuadro de texto enriquecido
· Documento
· Etiqueta
· Hipervínculo
· Lista de Check Box
· Lookup
· Radio Button
· Selector de fecha y hora
· Selector de fechas
· Selector de horas
· Selector de ítems
Área donde se puede escribir varias líneas de texto. Es ideal para datos cuyos valores son textos largos.
Figura 120 Área de texto
Casillero cuadrado para marcar o desmarcar una opción. Sólo es útil para datos de tipo verdadero/falso.
Figura 121 Checkbox
Lista que, al ser desplegada, muestra opciones de posibles valores del dato. Es adecuada cuando el usuario debe elegir sólo una entre varias opciones.
Figura 122 Combo Box
Un cuadro de texto con sugerencias permite a un usuario escribir parte de un texto y le muestra una lista de valores cuyos textos empiezan con lo que él escribió. Esos valores se obtienen de algún origen de datos. Por ejemplo, supongamos que un usuario tiene que seleccionar el nombre de un producto de entre los productos que ofrece una empresa. Si la empresa tiene muchos productos, tal vez no sea tan práctico tener un combo box. Tal vez sea más práctico que el usuario empiece a escribir el nombre del producto, y entonces una lista va mostrando los productos cuyos nombres se asemejan a lo que escribe el usuario, hasta que finalmente sean tan pocos que el usuario puede encontrar el que desea fácilmente y seleccionarlo.
Figura 123 Cuadro de texto con sugerencias
Caja de texto común con una sola línea (como la caja de texto donde se escribe el nombre de un dominio).
Figura 124 Cuadro de texto
Similar al área de texto, pero permite modificar propiedades de formato del texto como usar negrita, cursiva, alinear el texto, agregar listas u otros elementos.
Figura 125 Cuadro de texto enriquecido
Un dato de un dominio que usa este tipo de control se muestra, si es editable, como un control para subir archivos (de lo contrario, sólo el valor del dato). Cuando un usuario sube un archivo usando este control, el archivo se adjunta al proceso, y además, en el valor del dato se guardan el identificador de nuevo adjunto, la versión y la ruta del archivo que se subió, separados por punto y coma (“;”). De este modo, el usuario no sólo adjunta un archivo, sino que éste queda asociado a un dato que le da un significado al archivo. Por ejemplo, se puede requerir el ingreso de un currículum teniendo un control de “Currículum Vitae”.
Para que un usuario pueda subir un archivo, no sólo tiene que ser editable el dato, sino que en el alcance debe estar permitido agregar archivos (ver “Alcance de adjuntos”).
Figura 126 Control de tipo "Documento", modificable
Control que muestra un texto, pero no permite modificarlo, aun cuando el alcance del dato defina que existe permiso de edición para el dato en el paso que se está contestando o en el paso de inicio.
Figura 127 Etiqueta
Control que, cuando se le hace clic, navega hacia una página web. Es útil cuando los datos representan direcciones web.
Figura 128 Un hipervínculo con su ventana de edición
Conjunto de check boxes. Es útil cuando se le quiere presentar al usuario una lista de opciones y el usuario puede elegir varias de ellas. Los textos de las opciones son copiados en el valor del dato uno a continuación del otro, separados por saltos de línea (sólo dominios de tipo texto aceptan este tipo de control). En el sitio web, los valores se ven separados por espacios. Por ejemplo, el dato cuyo valor está siendo editado en la Figura 129 se vería como “Rojo Verde Negro” en el sitio.
Figura 129 Lista de check boxes
Control que permite obtener a partir de un identificador un valor correspondiente a ese identificador, sacado de una base de datos, de una lista o de un web service. El usuario escribe el identificador en una caja de texto y Q-flow muestra el valor correspondiente a ese identificador.
Figura 130 Lookup
Similar al check box, pero cuando hay varios “radio buttons” en una misma área, sólo uno de ellos puede estar marcado, por lo que, cuando se marca uno, se desmarcan automáticamente los otros.
Figura 131 Radio Button
Combinación de selector de fechas y selector de horas.
Figura 132 Selector de fecha y hora
Control que despliega un calendario para seleccionar una fecha.
Figura 133 Selector de fechas
Es un control que permite ingresar horas y las valida automáticamente.
Figura 134 Selector de horas
Lista que permite seleccionar un elemento particular de una colección con una gran cantidad de elementos (por ejemplo, sacados de una base de datos). Los elementos son mostrados en una lista y Q-flow los filtra a medida que el usuario escribe el nombre del elemento buscado.
Figura 135 Selector de ítems
Las integraciones permiten que Q-flow interactúe con otros sistemas mediante la ejecución de operaciones de componentes de software. Un proceso puede ejecutar las operaciones de una integración a través de una actividad de servicio (ver “Tarea de servicio”).
La definición de una integración requiere conocimientos técnicos de informática. Por eso Q-flow separa la definición de una integración de su utilización.
Para definir una integración, se debe definir una o más operaciones. Una operación es un conjunto de llamadas a un componente externo a Q-flow. Por ejemplo, si es una integración con un web service, es un conjunto de llamadas a métodos de ese web service. Una de las operaciones es seleccionada como operación en producción y ésa es la que se ejecuta cuando se llama la integración.
El formulario de propiedades de una integración tiene las siguientes secciones:
· General: además de permitir especificar el nombre y la descripción de la integración, permite seleccionar la operación en producción.
· Parámetros:permite definir los parámetros de la integración. Los parámetros permiten que el proceso, al llamar a la integración, le envíe datos y que cuando la integración termine su ejecución, reciba datos de ella.
· Operaciones:permite definir las operaciones de la integración. Una operación de una integración que accede a un web service, por ejemplo, se especifica mediante la URL del web service, del nombre del método que se debe invocar y de los parámetros que se le pasan a ese método.
Figura 136 Propiedades de una integración
Propiedades de la sección “General”:
· Descripción
· Ejecuta en transacción: permite especificar si la operación debe ser ejecutada en una transacción, o sea, en un contexto en el que muchas operaciones son ejecutadas y, si al menos una falla, entonces todas son canceladas y deshechas. Esto es posible solamente con algunas operaciones (por ejemplo, operaciones de bases de datos). NOTA TÉCNICA: esta opción se implementa ejecutando el código de la integración dentro de un TransactionScope.
· Nombre de la operación en producción: indica cuál de las operaciones definidas en la integración es la que se utilizará (vea más abajo cómo definir operaciones; inicialmente no hay operaciones definidas y por lo tanto, no es posible elegir una). Para elegir la operación en producción, empiece a escribir el nombre de la operación y, cuando Q-flow la muestre, selecciónela.
La sección de parámetros muestra una tabla (inicialmente vacía) con los parámetros de la integración. Los parámetros permiten enviar datos a la operación que se ejecuta, o recibir datos del resultado de ejecutar la operación. Por ejemplo, si la integración invoca un método de un web service que tiene dos parámetros y que devuelve un número, se deben crear tres parámetros: uno por cada parámetro del método y uno para el resultado. Cuando se selecciona la integración en una tarea de servicio (ver “Tarea de servicio”), se asocia cada parámetro de la integración a un dato o parámetro de aplicación.
Figura 137 Parámetros de una integración
Para agregar un parámetro, haga clic en el botón “+”. Eso hace que Q-flow agregue una fila a la tabla. Para modificar una propiedad del parámetro, haga clic en su valor (por ejemplo, para modificar el nombre del parámetro, haga clic en el texto que aparece en la columna “Nombre” de ese parámetro).
Para eliminar un parámetro, selecciónelo y haga clic en el botón de eliminar (✗).
Las propiedades de los parámetros se modifican haciendo clic en ellas. Las propiedades de un parámetro son:
· Nombre: nombre que identifica el parámetro.
· Tipo de dato:
o Texto
o Número
o Verdadero/Falso:dato con dos valores posibles: verdadero o falso
o Fecha
o GUID:identificador
o Hora
· Valor por defecto: el valor que toma el parámetro si no se le asocia ningún dato o parámetro de aplicación en una tarea de servicio que usa la integración que se está definiendo.
· Dirección:
o Entrada
o Salida
o Entrada y Salida
· Requerido: si esta opción está marcada, es obligatorio asociar un dato o parámetro de aplicación al parámetro en las tareas de servicio que usen la integración que se está definiendo.
Las operaciones también se muestran en una tabla (Figura 138). Cuando se agrega una operación, aparece el formulario del asistente para generarla (Figura 139). En la sección “General” de ese formulario se ingresan el nombre y opcionalmente, la descripción de la operación. Debajo de estas opciones están las opciones para agregar los componentes que debe usar Q-flow para ejecutar la operación. Una vez definidos los componentes, debe hacer clic en el botón de siguiente para ir al siguiente paso. Al final del proceso, Q-flow generará el código que ejecuta la operación.
Figura 138 Operaciones de una integración
Figura 139 Propiedades de una integración
Si se marca la opción “Crear integración AdHoc”, no hace falta especificar nada: una integración ad hoc se crea con un código que no ejecuta nada. Se puede usar para pruebas o para generar una operación cuyo código será escrito a mano más tarde.
De lo contrario, hay que especificar uno o más componentes para la operación. Los tipos de componente disponibles son:
· Database: un procedimiento almacenado, o un script para hacer consultas (Queries) o insertar o actualizar datos (Upserts).
· Rest web service:un web service REST.
· SharePoint: una lista de SharePoint. Se puede subir documentos y crear elementos en una lista o biblioteca de documentos.
· NOTA: Q-flow también puede manejar operaciones de otros tipos: COM, Assembly (componente .Net) y Qflow Assembly (componente .Net que implementa una interfaz definida en Q-flow). Estas operaciones no están disponibles en el diseñador web, pero sí en el diseñador clásico. Una vez definidas, es posible ver el código de estas operaciones en el diseñador web.
Para agregar un componente, haga clic en el botón de configurar la operación (Figura 139). Aparece entonces un menú que permite seleccionar el tipo de componente. Cuando seleccione el tipo de componente, aparecerá un formulario para especificar la conexión al componente. Ese formulario tiene dos opciones:
· Usar un parámetro de aplicación: si marca esta opción, en lugar de especificar la conexión, puede seleccionar un parámetro de aplicación para que Q-flow obtenga los datos de la conexión del parámetro de aplicación. Si la lista de parámetros de aplicación para elegir está vacía, es porque no hay un parámetro de aplicación disponible para el tipo de componente seleccionado (por ejemplo, el tipo de componente es “Database” y no hay ningún parámetro de aplicación de tipo “Conexión a base de datos” disponible).
· Definir en la configuración del origen de datos: si marca esta opción, debe especificar los datos de la conexión. Los datos de una conexión se especifican de la misma forma que si uno estuviera definiendo una conexión en un parámetro de aplicación. Por instrucciones sobre cómo configurar una conexión, consulte la sección correspondiente en el apartado “Parámetros de aplicación”:
o Conexión a Base de datos: Ver “Configuración de una conexión a base de datos” por instrucciones.
o Conexión a lista de SharePoint: Ver “Configuración de una conexión a SharePoint” por instrucciones.
o Conexión a Web service: Ver “Configuración de una conexión a web service” por instrucciones.
En el caso de un componente de tipo Rest Web service, para configurar la conexión debe especificar los siguientes datos:
· Url: la URL del web service. Por ejemplo: “http://servidorWeb/api”.
· Método web:suponiendo que se quiere acceder a las operaciones de altas, bajas y modificaciones de empleados, un ejemplo sería poner. “empleados”.
· Método Http: el método Http (get, post, put o delete), que depende de qué operación se desea realizar (obtención de un objeto, alta, modificación o eliminación).
· Parámetros: permite especificar la estructura de los objetos que se reciben por parámetros. Si el parámetro es un valor simple (por ejemplo, el identificador de una entidad), basta con hacer clic en “Agregar propiedad” (Figura 140) y asignarle un nombre seleccionándola, haciendo clic en “Editar propiedad” (Figura 140) e ingresando el nombre. Este nombre se usará más tarde para asociar el parámetro con uno de los parámetros de entrada de la integración. El botón “Agregar subpropiedad” sirve para especificar objetos complejos. Combinando “Agregar propiedad” y “Agregar subpropiedad”, se puede especificar un objeto que tiene dentro otros objetos. No es necesario incluir todas las propiedades de los objetos: solamente aquellas a las que se quiera asignar valores que están en parámetros de la integración.
· Objeto de retorno: funciona de la misma forma que Parámetros, pero para el objeto de retorno.
Figura 140 Configuración de componente de tipo Rest Web service. En este caso, el objeto recibe un parámetro simple, “id”, y devuelve un objeto, del cual interesa la propiedad “Name” (la integración tiene un parámetro de entrada para el “id” y uno de salida para “Name”.
Una vez especificado un componente, si hace clic en el botón de aceptar, el componente se agrega a la lista de componentes (Figura 141).
Figura 141 Dos componentes agregados a una operación
Cuando se terminó de agregar componentes, hay que especificar qué operaciones de estos componentes se ejecutarán en la operación. Para pasar a esta etapa de la definición de la operación, haga clic en el botón de la flecha (Figura 141, “Siguiente”). La pantalla cambia para mostrar las clases y métodos disponibles (Figura 142). Cuando se selecciona una clase, la lista de métodos disponibles cambia para mostrar los métodos de la clase seleccionada. Las clases que se muestran son las siguientes:
· Para bases de datos: como las bases de datos no tienen clases, lo que se muestra son clases generadas por Q-flow para representar comandos que se pueden enviar a la base de datos. Las clases son de los siguientes tipos:
o [BaseDeDatos].Queries: estas clases permiten ejecutar consultas sencillas generadas automáticamente por Q-flow. Cuando se selecciona esta opción, en la lista “Métodos disponibles” se carga un elemento por cada tabla de la base de datos. Cada uno de estos elementos representa un comando “SELECT” para traer los datos de la tabla correspondiente. Por ejemplo, si la base de datos tiene una tabla que se llama “Empleados”, en “Métodos disponibles” aparece el “método” “EmpleadosQuery”. Si además tiene una tabla llamada “Productos”, aparece el método “ProdutosQuery”, etc.
o [BaseDeDatos].Upserts: permiten ejecutar secuencias de comandos SQL generados automáticamente por Q-flow para actualizar tablas. Cuando se selecciona esta opción, en la lista “Métodos disponibles” se carga un elemento por cada tabla de la base de datos. Cada uno de estos elementos representa un comando que inserta o actualiza un registro de una tabla, según si los valores que se le pasan corresponden a un registro que ya existe o no. Por ejemplo, si la base de datos tiene una tabla que se llama “Empleados”, en “Métodos disponibles” aparece el método “EmpleadosUpsert”.
· Para web services: se muestra la clase que implementa las operaciones del web service. Si se selecciona esa clase, se muestran los métodos que el web service expone.
· Para web services REST: se muestra la clase asociada al componente configurado, con una única clase.
· Para listas de SharePoint: las clases disponibles corresponden a los tipos de contenido disponibles para la lista seleccionada. También está la opción [DynamicContentType], que permite agregar un elemento o subir un documento especificando el tipo de contenido mediante un parámetro. Una vez seleccionada la clase, suelen aparecer dos métodos disponibles: uno permite crear un elemento (“CreateItemX”, donde X es el nombre del tipo de contenido seleccionado en “ClasesDisponibles”). El otro permite subir un documento (“UploadDocumentX”). En este caso, además de los parámetros correspondientes a los campos del tipo de contenido, hay uno que debe contener la ruta del archivo que se va a subir. Si la clase seleccionada es [DynamicContentType], solamente aparecerá la opción de crear un ítem (“CreateItemDynamicContentType”).
Figura 142 Seleccionar métodos
Para agregar un método, selecciónelo y haga clic en el botón “+”. Al agregar un método, aparecen sus parámetros de entrada y de salida. A cada uno de esos parámetros se le puede asociar uno de los parámetros definidos para la integración. El ícono al lado de un parámetro del método indica si es de entrada o salida; si deja el cursor de un ratón sobre un parámetro, aparece una etiqueta que dice “Entrada” o “Salida”.
Para asociar un parámetro del método a un parámetro de la integración, haga clic con el botón derecho donde dice “Valor” y seleccione “Asignar valor”. Esto hace que aparezca la lista de parámetros de la integración compatibles con el parámetro seleccionado del método: los parámetros compatibles son los que tienen un tipo convertible y la misma dirección (entrada o salida). Por ejemplo, si el parámetro de entrada del método es de tipo “Número”, se podrán seleccionar los parámetros configurados como Entrada o Entrada/Salida y de tipo “Número”. Sin embargo, si el parámetro de entrada del método es de tipo “Texto”, se podrán seleccionar todos los parámetros configurados como Entrada o Entrada/Salida sin importar el tipo, ya que un valor de cualquier tipo se puede convertir en texto. Análogamente, si el parámetro del método es de salida y tipo “Número”, aparecerán todos aquellos parámetros configurados como Salida o Entrada/Salida sin importar su tipo (Figura 143). Seleccione, de la lista, el parámetro de la integración que desee asociar al parámetro del método y ambos quedarán asociados.
Figura 143 Método con sus parámetros
Ejemplo (Figura 144): una integración invoca un método de un web service, GetProductName, que recibe como parámetro un número entero, productId, y devuelve un texto.
Para la integración se definen dos parámetros, ID, de tipo “Número” y de entrada, y Resultado, de tipo “Texto” y de salida. ID sólo se puede asociar al parámetro productId del método. No se puede asociar al resultado del método porque éste es un texto, mientras que ID es un número. Además, ID es un parámetro de entrada, por lo que, aun cuando el resultado del método fuera un número, no sería posible asociarlos. Lo mismo pasa con Resultado, que sólo se puede asociar al resultado del método.
Para quitar un método, selecciónelo y haga clic en el botón de eliminar método (Figura 143).
Figura 144 Integración con dos parámetros, y cómo se los asocia con los parámetros de un método
Una vez especificados los
métodos con sus parámetros, vuelva a hacer clic en el botón de
siguiente.
Q-flow generará el código para llamar el método y guardar el
resultado en los parámetros de salida. Haga clic en el botón de
aceptar para guardar la operación.
Una vez creada una operación, puede acceder al código generado mediante el botón de editar (Figura 145).
Figura 145 Código generado para una operación
Cuando se agrega una operación a una integración, Q-flow genera el código que ejecutará para invocar la operación. Este código se puede ver y modificar. El código se muestra en el editor de código, que también se usa al editar manejadores de eventos, tareas de códigos y validaciones. El botón de compilar permite compilar el código. Si hay errores, se muestran en la solapa “Error”. En algunos casos, como por ejemplo en las tareas de código, es posible ejecutar el código con un botón de “Ejecutar”. Tenga cuidado al usarlo: si, por ejemplo, el código modifica una base de datos, al ejecutarlo desde el editor, la base de datos puede ser modificada como si el código se estuviese ejecutando desde un proceso. En el caso de las integraciones esta opción no es posible.
Notar que tanto el botón de Compilar como el de Ejecutar sólo aparecen en una instalación local; en una instalación en la nube no los encontrará en el editor.
Figura 146 Editor de código
Los parámetros de aplicación son entidades que permiten separar datos de configuración de las entidades que los utilizan. Por ejemplo, puede suceder que muchas plantillas de proceso utilicen el mismo servicio web desde tareas de servicio. Resulta incómodo tener que especificar en cada una de las tareas la Url del servicio. Además, si ésta cambia, hay que modificar todas las tareas. Por eso es más conveniente que ese dato se guarde en un lugar solo, y que para cada tarea de web service, en lugar de especificarse la Url del web service, se especifique dónde está guardado ese dato.
De la misma forma, puede haber varias integraciones distintas que usan el mismo web service (cada una invocando una operación distinta, por ejemplo). En ese caso también es preferible almacenar la información del web service en un solo lugar del cual todas las integraciones obtienen los datos de conexión. Los parámetros de aplicación permiten guardar datos como esos, y utilizarlos en pasos de web service, en pasos de datos, en integraciones, y como etiquetas o parámetros en otros pasos.
El formulario de edición de un parámetro de aplicación permite, además de modificar su nombre y su descripción, definir el tipo del parámetro y asignarle un valor. Los tipos de parámetro son:
· Contraseña: el valor del parámetro es un texto que se guarda cifrado en base de datos.
· Texto: el valor del parámetro es un texto.
· Conexión a base de datos: el parámetro tiene todos los datos necesarios para conectarse a una base de datos.
· Conexión a web service: el parámetro tiene todos los datos necesarios para conectarse a un web service (ya sea SOAP o REST).
· Conexión a SharePoint: el parámetro tiene los datos necesarios para conectarse a una lista de SharePoint.
Para asignarle un valor al parámetro, como por ejemplo su valor o los datos de conexión a una base de datos, haga clic en el botón de configurar (Figura 147). Para configurar un parámetro de aplicación de tipo “Contraseña” o “Texto”, simplemente se ingresa la contraseña o el texto del parámetro (en el caso de la contraseña, se la ingresa dos veces).
Figura 147 Propiedades de un parámetro
La configuración de conexiones a bases de datos, web services y SharePoint se explica a continuación.
Las propiedades de una conexión a una base de datos (Figura 148) son las siguientes:
· Tipo de proveedor: proveedor de acceso a la base de datos (por ejemplo, proveedor de SQL, OleDb, ODBC, Oracle). Depende del tipo de base de datos para el cual se está definiendo una conexión.
· Servidor: nombre del servidor donde se encuentra la base de datos.
· Seguridad integrada: Esta opción es para bases de datos SQL Server. Si esta opción está marcada, la conexión se hace utilizando seguridad integrada. De lo contrario, Q-flow habilita las propiedades “Usuario” y “Contraseña” para ingresar el nombre de usuario de la base de datos y la contraseña correspondiente.
· Parámetros adicionales: es una grilla en la que se pueden agregar parámetros a la cadena de conexión. La grilla tiene dos columnas, una para el nombre del parámetro y otra para el valor. Por ejemplo, si se quiere especificar un timeout de 60 segundos para la conexión a una base SQL Server, se puede agregar un parámetro adicional con nombre “Connection Timeout” y valor “60”.
· Probar conexión: haga clic en este botón para comprobar que los datos ingresados son correctos. Si los datos son correctos, podrá elegir un valor para la propiedad “Base de datos”.
· Base de datos: la base de datos a la cual desea conectarse.
Figura 148 Configuración de una conexión a una base de datos
Las propiedades de una conexión a web service (Figura 149) son las siguientes:
· Url: la URL del web service (puede ser SOAP o REST).
· Credenciales de red: deje marcada esta opción si desea utilizar las credenciales del usuario cuya cuenta utilizan los servicios de Q-flow. Si desea utilizar otras credenciales, desmarque esta opción e ingrese el nombre de usuario y la contraseña que desee utilizar.
· Probar conexión:si hace clic en este botón, podrá verificar si la URL y las credenciales ingresadas son correctas. Si lo son, Q-flow abrirá la página del web service en una nueva solapa del navegador.
Figura 149 Configuración de conexión a web service
Las propiedades de una conexión a SharePoint (Figura 150) son las siguientes:
· URL del sitio: la URL del sitio de SharePoint en que está la lista de SharePoint a la que desea acceder.
· Credenciales de red: marque la opción si desea usar la cuenta de los servicios de Q-flow para conectarse a SharePoint, o de lo contrario desmárquela e ingrese nombre de usuario y contraseña. Utilice el botón “Probar conexión” para comprobar que puede acceder al sitio del SharePoint especificado mediante las credenciales que indicó. Si la prueba es exitosa, podrá seleccionar la lista de SharePoint.
· Lista: este campo se habilita una vez que haya probado que los datos anteriores son correctos, mediante el botón de probar conexión. Seleccione aquí la lista de SharePoint a la que desee acceder.
Figura 150 Configuración de conexión a una lista de SharePoint
Un parámetro se puede utilizar en varios contextos en los cuales es necesario especificar el tipo de información que se guarda en un parámetro de aplicación. En un paso de web service, por ejemplo, es necesario especificar la URL del web service. El usuario puede optar por especificar la URL en las propiedades del propio paso (“Definir en la configuración del paso”) o utilizar un parámetro de aplicación. Los parámetros de aplicación se pueden utilizar también en integraciones. Un parámetro de aplicación de tipo “Texto” se puede utilizar como etiqueta (consulte la sección “Etiquetas”). Un parámetro de aplicación de este tipo también se puede asociar a parámetros de bots y de integraciones en pasos de bot y de integración respectivamente. Además, estos parámetros están disponibles en el código que se escribe en actividades de código o en assemblies de tipo Q-flow (que contienen clases derivadas de CodeScriptBase; ver el manual de la referencia de scripting).
Q-flow permite sustituir los formularios que aparecen en el sitio web por formularios personalizados. Q-flow no posee una herramienta que permita diseñar estos formularios, pero se puede utilizar otra herramienta para diseñarlos (se recomienda Visual Studio) y luego incluirlos en uno de los dos sitios de Q-flow.
Este manual no explica cómo desarrollar los formularios personalizados, sino que explica solamente cómo asociar esos formularios a los procesos, mediante la creación y configuración de los ítems de tipo “Formulario personalizado”. Por información sobre cómo desarrollar formularios personalizados, consulte los dos manuales sobre el asunto. Q-flow incluye dos sitios para trabajar con procesos, con dos tecnologías distintas:
· Sitio Web Forms
· Sitio MVC
Hay tres tipos de formularios en Q-flow, y, en consecuencia, tres tipos de formularios personalizados:
· Formularios de inicio: son los formularios que aparecen cuando un usuario hace clic sobre una plantilla de proceso para iniciar un proceso. Permiten cargar su nombre y descripción, pudiendo permitir cargar valores de datos de aplicación, roles y archivos adjuntos.
· Formularios de respuesta: son los formularios que permiten responder una tarea de Q-flow.
· Formularios de los procesos: son los formularios que muestran información propia del proceso, y no de alguno de sus pasos. Hay dos tipos:
o Formularios del proceso: muestran datos del proceso, pero nunca permiten modificarlos. Son los formularios que aparecen cuando un usuario hace clic sobre un proceso. Muestran información de un proceso.
Los formularios estándar muestran agrupados por grupo los datos de aplicación (ver “Datos de aplicación”). Para el caso del sitio Web Forms, Q-flow incluye además tres formularios que funcionan como formularios personalizados y que tienen la misma apariencia que los formularios estándar, salvo porque muestran los datos de aplicación sin agrupar. Lo mismo se puede conseguir en el sitio MVC si se definen los datos de aplicación sin un grupo. La Figura 151 y la Figura 152 muestran la diferencia entre un caso y el otro. En las dos se muestran los mismos cuatro datos. Dos de estos datos pertenecen a un grupo llamado “Datos profesionales” y los otros dos a uno llamado “Persona”. En el primer caso (Figura 151), los datos aparecen agrupados en cuadros diferentes, y se indica, para cada cuadro, el nombre del grupo al que corresponde. En el otro (Figura 152), los datos se muestran todos en un mismo formulario titulado “Datos de aplicación”.
Figura 151 Datos de aplicación en un formulario estándar
Figura 152 Datos de aplicación en un formulario que no agrupa
El formulario básico de propiedades de un formulario personalizado muestra las siguientes propiedades:
Figura 153 Sección General de formularios personalizados
· Usar MVC: esta opción indica que el formulario es un formulario MVC, desarrollado para ser utilizado desde el sitio MVC. Para especificar un formulario para el sitio Web Forms de Q-flow, marque la opción “Usar Web Forms”, que aparece si se expande el formulario. Las propiedades de formularios que usan MVC son las siguientes:
o Es área: indica que el formulario es un área portable, que es uno de los tipos de formularios personalizados MVC de Q-flow. El otro tipo es “vista”.
§ Propiedades de formularios de tipo Vista:
· Vista: nombre de la vista a utilizar. Formularios de tipo vista utilizan el área predeterminada (“CustomForms”) y un controlador predeterminado (“Flow”), por lo que para estos formularios no se necesita especificar más nada.
§ Propiedades de formularios de tipo área:
· Área: nombre del área que se debe utilizar.
· Controlador:nombre del controlador.
· Acción: nombre de la acción.
· Usar Web Forms:esta opción sólo aparece si en el archivo de Web.config de BPM el value de “ShowWebFormsProperties” es “true” y sólo se muestra al expandir el formulario de propiedades.
o Url: escriba la URL relativa (con respecto a la URL básica del sitio Web Forms de Q-flow) de la página ASPX que contiene el formulario. Los formularios provistos por Q-flow están en la carpeta CustomForms del sitio Web Forms (los archivos correspondientes tienen el sufijo “Default”). Puede tomarlos como ejemplo, pero no los modifique, pues pondría en riesgo el funcionamiento de los procesos que usan esos formularios (todos los procesos que no usan formularios personalizados).
· Es aplicable a: esta opción permite indicar para qué tipos de formulario se puede usar este formulario personalizado. Los tipos de formulario están explicados al comienzo de esta sección.
Para asignar un formulario personalizado a un elemento del diseño, ya sea un evento de inicio, una tarea de usuario o una tarea de notificación a un usuario, haga doble clic en el elemento para abrir su formulario de propiedades. A continuación, haga clic en el botón de expandir el formulario para que aparezca la sección “Formulario personalizado”. Seleccione allí el formulario que desee (Figura 154). Sólo aquellos formularios cuyo tipo aplique a ese elemento aparecerán.
Figura 154 Selección de formulario
Para especificar un formulario personalizado como formulario del proceso, haga clic con el botón derecho en la versión en la que se basan los procesos que lo deben usar y en el menú seleccione “Formularios del proceso”, “Formulario del proceso”. Q-flow muestra un formulario con una sección, “Formulario personalizado”, donde puede seleccionar el formulario que desee (siempre que su tipo aplique).
Para especificar un formulario personalizado como formulario de edición del proceso, haga lo mismo, pero seleccionando en el menú “Formularios del proceso”, “Formulario de edición del proceso”.
Figura 155 Asignar el formulario del proceso
El diseño de formularios personalizados es una tarea de mayor complejidad técnica, que requiere conocimientos de ASP.NET MVC o Web Forms, dependiendo de cuál es el sitio de Q-flow en el que se va a usar el formulario. Los manuales de diseño de formularios personalizados MVC y Web Forms tienen información útil para quienes tengan que desarrollar esos formularios.
Los manejadores de eventos son pequeños programas que Q-flow ejecuta en su contexto (tienen acceso a los datos del proceso) cuando ocurre un determinado evento durante la ejecución de un proceso. Los eventos que pueden disparar la ejecución de manejadores están predefinidos. Definir un manejador consiste principalmente en definir su código. Más tarde se lo asocia a algún evento, de modo que cuando éste ocurre, se ejecuta el código del manejador.
El formulario de propiedades de un manejador de evento tiene las siguientes secciones:
· General: nombre y descripción
· Información del manejador (aparece al expandir el formulario): permite definir el código del manejador y determinar si es síncrono o asíncrono. Las propiedades de esta sección se explican abajo.
· Tipo de manejador:
Figura 156 Propiedades de un manejador de eventos
Para que Q-flow ejecute un manejador de evento, hay que asociarlo a un evento de modo que cuando éste ocurra, Q-flow ejecute el código del manejador.
Hay dos tipos de eventos:
· Eventos del proceso: estos eventos no están asociados a ningún paso en particular.
Para asociar un manejador de eventos a un elemento del diseño, seleccione el elemento y haga clic en el ícono de propiedades para que Q-flow muestre el formulario de propiedades del elemento. A continuación, expanda el formulario de propiedades para que aparezca la sección “Eventos manejados”. Esa sección contiene una lista de los eventos a los que se puede asignar el manejador:
· Finalizar paso:ocurre cuando el paso termina su ejecución.
· Iniciar paso:ocurre cuando comienza la ejecución del paso.
· Novedades en paso: ocurre cuando hay novedades en el paso. Por ejemplo, en el caso de un paso de pregunta, cuando un destinatario contesta la pregunta. Nótese que el hecho de que haya novedades en un paso no implica necesariamente que el proceso o el hilo cambien de estado. Por ejemplo, si un paso de pregunta tiene varios destinatarios y el proceso espera que cinco de ellos contesten antes de continuar, el proceso no abandonará el estado de espera hasta que cinco destinatarios contesten, pero cuando el primero en contestar lo haga, estará generando una novedad en el paso.
Para asignar el manejador a un evento, seleccione el evento y haga clic en el botón de modificar. En el formulario de propiedades del evento, seleccione el manejador y haga clic en el botón de “Seleccione”.
Figura 157 Asociar un manejador a un evento de un elemento del diseño
Para asociar un manejador de eventos a un evento del proceso, haga clic con el botón derecho en la versión a la que pertenecen los procesos que desee que utilicen el manejador y seleccione “Manejadores de eventos” en el menú. Esto muestra una lista con los eventos del proceso. Marque el evento al cual desee asociar el manejador, después haga clic en el botón de editar, o doble clic en la fila correspondiente. Aparece entonces una lista de manejadores, marque el manejador deseado y haga clic en “Seleccione”.
Los eventos del proceso son los siguientes:
· Cambio de estado de hilo: ocurre cuando un hilo cambia de estado. Por ejemplo, si un hilo estaba esperando que alguien ejecutara una tarea, y esa persona contesta la tarea, el hilo pasa de estar en espera a estar ejecutándose.
· Cambio de estado del proceso: ocurre cuando el proceso cambia de estado. Por ejemplo, si el proceso llega a un paso de tarea, hay un cambio de estado, pues el proceso adopta un estado en el que espera por la finalización o cancelación de esa tarea.
· Error en hilo:ocurre cuando se produce un error durante la ejecución de un hilo.
· Etapa en tiempo:ocurre cuando la etapa actual del proceso supera el tiempo definido como esperado. Por más información de las etapas consultar la sección “Etapas”.
· Etapa retrasada:ocurre cuando la etapa actual del proceso supera el tiempo máximo definido.
· Finalizar proceso: ocurre cuando Q-flow finaliza el proceso.
· Finalizar hilo:ocurre cuando Q-flow finaliza un hilo.
· Hilo en espera:ocurre cuando un hilo finaliza y espera la finalización de sus hilos hermanos.
· Iniciar proceso:ocurre cuando Q-flow inicia el proceso.
· Iniciar hilo:ocurre cuando Q-flow inicia la ejecución de un nuevo hilo.
· Separación de hilo: ocurre cuando un hilo se divide en varios hilos. Esto ocurre cuando un hilo llega a una compuerta paralela divergente o a una compuerta inclusiva divergente que inicia varios hilos.
· Unión de hilos:ocurre cuando dos o más hilos se unen. Esto ocurre cuando el proceso llega a una compuerta paralela convergente o a una compuerta inclusiva convergente que une varios hilos.
Figura 158 Asignar un manejador a un evento del proceso (en este caso, el manejador “Enviar alerta” se asigna al evento “Etapa retrasada”).
Los worklets son conjuntos de elementos de un diseño y conexiones entre ellos. Estos conjuntos pueden ser utilizados en varios diseños como si fueran una unidad. Un worklet tiene un diseño propio, pero no es independiente, sino que debe ser usado dentro de un diseño.
Actualmente, el diseñador web de procesos del negocio no permite agregar worklets ni ver su contenido, aunque sí permite ver la lista de worklets de un paquete. Si necesita trabajar con worklets, utilice el diseñador de procesos de negocio de escritorio (la versión clásica de la herramienta).
Las validaciones son pequeños programas que se definen para ejecutar operaciones en los formularios de los procesos. Para desarrollar validaciones es necesario poseer conocimientos de scripting del lado del cliente (Javascript). Hay dos tipos de validaciones:
· Las que se ejecutan cuando Q-flow carga un formulario en la pantalla. Estas validaciones permiten modificar el estado de los datos del formulario antes de que el usuario pueda modificarlos. Para ello, se puede implementar el método formLoad().
· Las que se ejecutan cuando el usuario hace clic en el botón de respuesta del formulario (el botón que inicia el proceso en el caso de los formularios de inicio; el botón que responde la tarea en el caso de los formularios de respuesta; el botón “Guardar” en un formulario de edición del proceso). Estas validaciones pueden ser utilizadas para verificar los datos y emitir una alerta cuando éstos no son válidos, impidiendo así que el usuario cometa errores que perjudiquen el correcto funcionamiento del proceso. Para ello, se puede implementar el método formSubmit().
Al igual que los formularios personalizados, las validaciones son definidas en un paquete, plantilla de proceso o versión y después son asociadas a los formularios en los que se desea utilizar. Una validación puede ser utilizada en varios formularios de varios procesos diferentes. Una validación se puede asociar a un formulario de cualquier tipo (formulario de inicio, formulario de respuesta a tarea de usuario, formulario del proceso y formulario de edición del proceso).
El formulario de propiedades de una validación tiene las siguientes propiedades que se pueden modificar:
· Nombre
· Descripción
· Debajo de la descripción hay un área de texto para escribir el código de la validación.
En versiones anteriores de Q-flow, se permitía elegir el lenguaje de programación de la validación, siendo las opciones JavaScript y VBScript. Sin embargo, VBScript se considera obsoleto. Por este motivo, la posibilidad de elegir el lenguaje sólo se muestra si el código existente ya es de tipo VBScript. De lo contrario, el lenguaje usado será JavaScript, sin opción de cambiar.
Figura 159 Propiedades de una validación
Para asociar una validación a un elemento del diseño de un proceso, haga doble clic en el elemento para abrir su formulario de propiedades (el elemento puede ser un evento de inicio, para asociar la validación al formulario de inicio, una tarea de usuario o una tarea de notificación a un usuario). Después, expanda el formulario de propiedades (la Figura 160 muestra con qué botón se expande el formulario). En la sección “Validaciones”, marque las validaciones que desee asociar al elemento seleccionado.
Para asociar una validación al formulario del proceso o al formulario de edición del proceso, abra las propiedades del formulario, haciendo clic con el botón derecho en la versión y seleccionando “Formularios del proceso”, “Formulario del proceso” o “Formulario de edición del proceso”. Esto abre la ventana de propiedades del formulario seleccionado. En la sección “Validaciones”, marque las validaciones que desee asociar al elemento seleccionado.
Figura 160 Selección de validaciones presentes en un formulario
Un bot es un programa informático que realiza tareas que le son asignadas por procesos, con los cuales se comunica asíncronamente. En general, las tareas que son procesadas por bots son tareas que utilizan muchos recursos de hardware (memoria, procesador), y que por eso deben ser realizadas por un proceso separado de los procesos que ejecutan los servicios de Q-flow. Un bot puede incluso funcionar en un servidor diferente al que alberga los servicios de Q-flow. Los bots no están pensados para tareas sencillas, que se ejecutan en unos pocos segundos y pueden ejecutarse en actividades de servicio o de código.
La interacción entre un proceso y un bot se da de la siguiente forma:
1. Un proceso crea una tarea para el bot mediante una tarea de servicio asíncrono. La creación de la tarea consiste en almacenar en una cola la información de la tarea. Esa información incluye los parámetros de la tarea e indicaciones de cuál es el bot que debe ejecutarla. Estas indicaciones son lo que se define en el diseñador web de procesos del negocio.
2. El bot verifica si tiene tareas pendientes y al hacerlo, encuentra la nueva tarea e intenta procesarla. El bot es un servicio, o al menos un proceso que verifica periódicamente si tiene nuevas tareas en la cola. Para ello, utiliza el web service WebBot, que provee métodos para acceder a la cola y obtener los datos de las tareas pendientes para procesarlas. También le provee métodos para abortar una tarea o indicar que la tarea ya fue completada. Como la funcionalidad de obtener tareas y actualizarlas es provista por un web service, el bot puede estar en un servidor distinto al de los servicios de Q-flow.
El formulario de propiedades de un bot tiene las siguientes secciones:
· General: permite ingresar una descripción y, en la propiedad “Ejecutable por”, el nombre del usuario cuyas credenciales se usarán para ejecutar el bot e invocar el web service WebBot.
· Parámetros:permite definir los parámetros del bot. Los parámetros del bot se definen de la misma forma que los parámetros de una integración. Consulte “Parámetros de aplicación” por instrucciones.
· Notificación:
Figura 161 Sección Notificación de bots
o No notificar: si se selecciona esta opción, Q-flow no notificará al bot cuando le asigne un nuevo trabajo. El bot deberá consultar el web service WebBot periódicamente para averiguar si tiene trabajo pendiente.
o Notificar a cola de mensajes: en este caso, Q-flow notificará al bot que tiene un nuevo trabajo pendiente mediante una cola de mensajes. El bot, en este caso, no debe consultar periódicamente el web service WebBot, sino que debe suscribirse a una cola de mensajes de MSMQ e implementar un manejador para el evento que se disparará cuando haya un nuevo trabajo. Si selecciona esta opción, debe especificar la ruta de la cola de mensajes que será utilizada.
· Vencimiento: permite definir un plazo para que el bot procese la tarea. Una vez vencido el plazo, si el bot no ha terminado de procesar la tarea, el proceso continuará su ejecución a través del conector de vencimiento de la tarea de servicio asíncrono en el que se le había asignado el trabajo al bot. Si la tarea de servicio asíncrono no tiene definido un paso siguiente a través del conector de vencimiento, quedará en estado de error. Consulte la sección “Temporización” por instrucciones sobre cómo definir vencimientos.
Figura 162 Propiedades de un Bot
Esta sección describe en detalle las propiedades de cada uno de los elementos que pueden ser parte de un diseño. Las primeras secciones son sobre aspectos comunes a varios pasos. Por ejemplo, tanto una tarea de usuario como una tarea de notificación requieren la selección de uno o más destinatarios.
Hay propiedades que son comunes en todos los elementos que se pueden agregar al diseño de un proceso: el nombre del elemento y su descripción.
El nombre aparece siempre en la parte superior del formulario de propiedades de un elemento, junto a los botones de aceptar, cancelar y expandir o contraer formulario (Figura 163).
La descripción aparece en la sección “General” del formulario de propiedades. Esta sección suele incluir también las siguientes propiedades, disponibles en general en actividades y eventos (hay excepciones), pero no en compuertas:
· Progreso:porcentaje del progreso del proceso. Por ejemplo, si se considera que haber terminado una determinada tarea de usuario significa que ya se ejecutó la mitad del proceso, se puede poner “50” como valor de esta propiedad en esa tarea de usuario.
· Bandera al inicio: la bandera del proceso es un texto a elección de quien diseña el proceso. Cuando el proceso llega a un elemento que tiene un valor para la bandera de inicio, la bandera del proceso cambia al valor indicado allí. La bandera, entonces, es una forma de indicar el estado del proceso. Cuando se ven los datos del proceso en el sitio web, uno de los datos que aparecen es la bandera.
· Bandera al finalizar: valor que tomará la bandera del proceso cuando la ejecución del elemento termine. Eventos intermedios tienen una propiedad llamada “Bandera”, que funciona tanto como “Bandera al inicio” como “Bandera al finalizar” (es decir, estos eventos modifican la bandera solamente una vez).
· Importancia del proceso: “Baja”, “Media” o “Alta”. No incide en el desarrollo del proceso, pero se muestra en el sitio web.
· Ayuda en el formulario: mensajes en el formulario que pueden ser de utilidad para quien lo está completando. La configuración se hace con un cuadro de texto enriquecido, por lo que es posible darle formato al mensaje.
Figura 163 Propiedades generales de un paso
Para algunos elementos de un diseño se pueden definir vencimientos. Por ejemplo, las tareas de usuario tienen opciones para controlar plazos y prevenir o mitigar atrasos mediante alertas, recordatorios y delegaciones (llamados colectivamente “acciones”) que se disparan cuando se vence un plazo. Otro ejemplo es el evento de temporización, que detiene un hilo del proceso en espera de que se venza un plazo. Esta sección describe cómo definir la temporización de cualquier elemento que la utilice. Los formularios de propiedades de estos elementos suelen tener una sección con las siguientes propiedades:
· Usar calendario: cuando Q-flow calcula un vencimiento, utiliza un calendario que define los horarios de trabajo y los días hábiles para tener en cuenta, por ejemplo, feriados y fines de semana. Q-flow puede manejar más de un calendario. Esta opción permite especificar el calendario que se desea utilizar para el cálculo (si no se especifica ninguno, se usa el calendario por defecto). Por más detalles sobre los calendarios, consulte el manual del administrador del modelo organizacional.
· Información de tiempo: en esta propiedad se especifica el vencimiento, que se puede definir de cuatro formas:
o Fecha fija:permite especificar una fecha.
o Fecha variable:permite utilizar el valor de un dato de aplicación de tipo Fecha o FechaHora. Q-flow ejecutará la acción en la fecha indicada por el valor del dato de aplicación. Para poder elegir esta opción, debe tener definido un dato de tipo Fecha o FechaHora.
o Tiempo fijo:permite indicar un intervalo de tiempo en segundos, minutos, horas o días. Q-flow ejecutará la acción una vez transcurrido ese intervalo, a partir del momento en el que el proceso fue iniciado. Los días y horas no laborables no cuentan a efectos de realizar el cálculo.
o Tiempo variable:esta opción es similar a la anterior, pero permite utilizar el valor de un dato de aplicación de tipo Número para indicar el valor del intervalo. Este valor puede ser interpretado como expresado en segundos, minutos, horas o días. Para poder elegir esta opción, debe tener definido un dato de tipo Número. Los días y horas no laborables, de acuerdo con el calendario utilizado, no cuentan a efectos de realizar el cálculo.
Figura 164 Temporización
Q-flow permite definir qué datos de aplicación, roles del proceso y archivos adjuntos los usuarios pueden ver o modificar durante la ejecución de un proceso y dónde pueden hacerlo. Lo mismo ocurre con los comentarios, pero en este caso se pueden agregar o ver los existentes.
Los puntos de interacción entre usuarios y procesos son los formularios del proceso.
· Formulario de inicio del proceso: es el formulario que aparece al iniciar el proceso y está relacionado con el evento de inicio.
· Formularios de respuesta del proceso: son los formularios que los usuarios utilizan para responder a las tareas de los procesos. Están asociados a tareas de usuario.
· Formulario del proceso: es el formulario que aparece cuando alguien hace clic sobre un proceso para examinar su información. Está asociado al proceso y no permite modificar los datos.
Para definir el nivel de acceso a la información del proceso, hay que definirlo para cada uno de estos formularios y en el caso de los formularios de respuesta, para cada una de las tareas de usuario. No es necesario definir el acceso a la información en aquellos formularios donde no se desee que estén disponibles datos, roles, archivos adjuntos o comentarios, puesto que, por defecto, éstos no están presentes en el formulario de respuesta.
El formulario de inicio del proceso está asociado al evento de inicio, puesto que aparece cuando se está iniciando el proceso. Para modificar el nivel de acceso a la información del proceso durante su inicio, abra el formulario de propiedades del evento de inicio y busque la sección “Alcance”. Allí podrá especificar qué datos y roles están presentes y se muestran en el formulario, y cuáles pueden ser modificados por el usuario. También están las opciones de alcance de adjuntos y comentarios. Más adelante se explican estas opciones en detalle.
El caso de los formularios de respuesta es similar. Los formularios de respuesta de Q-flow están asociados a las tareas de usuario, puesto que aparecen cuando un usuario desea responder a una tarea asignada a él. Para modificar el alcance en una tarea de usuario, se procede de la misma forma que con un evento de inicio.
Para modificar el nivel de acceso en el formulario del proceso, acceda a la ventana de propiedades del formulario del proceso haciendo clic con el botón derecho en la versión y seleccionando la opción “Formularios del proceso”, “Formulario del proceso”. Esa ventana tiene una sección “Alcance”. Haga lo mismo para modificar el alcance en el formulario de edición del proceso, pero seleccionando “Formularios del proceso”, “Formulario de edición del proceso”.
El alcance de los datos de aplicación se modifica mediante una tabla (Figura 165) que muestra la lista de datos de aplicación. Se visualizarán todos los datos de aplicación si todos ellos tienen el alcance “Ausente”, quedando marcada automáticamente la opción “Mostrar datos con alcance ausente”, de lo contrario se mostrarán los datos que tengan un alcance distinto a “Ausente”, quedando la opción “Mostrar datos con alcance ausente” desmarcada. Esto es útil, ya que podrían existir un gran conjunto de datos no relevantes para el formulario, típicamente con alcance “Ausente”.
Figura 165 Alcance de datos
Para modificar el alcance de un dato, selecciónelo y haga clic en uno de los botones que aparecen arriba de la tabla (la Figura 166 muestra qué botón corresponde a qué alcance; para verlo en la propia pantalla del sitio, posicione el cursor del ratón sobre el botón). Se pueden seleccionar varios datos simultáneamente. Los alcances posibles son:
Figura 166 Botones de alcance con sus significados
· Requerido: el usuario puede ver y modificar el valor del dato, y además, si el dato no tiene un valor, está obligado a ingresar uno (no podrá iniciar el proceso, si está en el formulario de inicio, ni podrá responder la tarea, si está en un formulario de respuesta, si no le provee un valor al dato).
· Editable: el usuario puede ver y modificar el valor del dato.
· Sólo lectura Editable: el usuario puede ver el valor del dato, pero no puede modificarlo. Scripts de la página sí pueden modificar el dato, y estos cambios se guardan.
· Sólo lectura: el usuario puede ver el valor del dato, pero no puede modificarlo. Si un script modifica el dato en la pantalla, los cambios no se guardan.
· Oculto Editable:el usuario no puede ver el valor del dato, pero el dato está presente en el formulario, aunque invisible y si un script lo modifica, el cambio se guarda.
· Oculto: el usuario no puede ver el valor del dato. Si un script modifica el valor del dato, los cambios no se guardan.
· Ausente: el dato no está en el formulario. No se muestra ni puede ser accedido por un script. Es como si no existiera.
Si un dato acepta múltiples valores y tiene un alcance que permite su edición (requerido, editable, sólo lectura editable u oculto editable), se habilita el último botón (“Instancias”, ver Figura 166), que permite modificar propiedades del alcance específicas de esos datos (Figura 167):
· Permitir la adición: especifica si está permitido agregar nuevas instancias al dato o nuevas líneas al bloque de líneas, si el dato pertenece a uno.
· Permitir la eliminación: especifica si está permitido eliminar instancias del dato o líneas del bloque, si el dato pertenece a uno.
· Número máximo de instancias: especifica la cantidad máxima de instancias que puede tener un dato o la cantidad máxima de líneas del bloque si el dato pertenece a uno. Si el dato tiene esa cantidad de instancias, no se permite agregar ninguna más, aunque se permita la adición.
· Número mínimo de instancias: especifica la cantidad mínima de instancias que puede tener un dato o la cantidad mínima de líneas del bloque si el dato pertenece a uno. Si el dato tiene esa cantidad de instancias, no se permite eliminar ninguna más, aunque se permita la eliminación.
Si un dato pertenece a un bloque de líneas, las propiedades del alcance que se editen, aplicarán a todo el bloque de líneas. Por lo tanto, estas propiedades pueden ser modificadas también a través de una grilla, que aparece en la parte inferior de la pantalla. Esta grilla aparece cuando, al menos uno de los datos que pertenece al bloque, tiene un alcance que permite su edición (Figura 165, donde dice “Configuración de instancias de línea”; en la figura, hay un bloque que se llama “Comentarios”). Para modificar el número máximo o mínimo de instancias, haga clic en el número e ingrese el valor deseado.
Figura 167 Opciones adicionales de alcance para datos que aceptan múltiples valores
En aquellos elementos que hacen uso de un formulario (evento de inicio, tareas de usuario y la configuración de formularios del proceso), el alcance de datos tiene una posibilidad adicional, que es el ordenamiento de los grupos de los datos. Debajo de la sección de instancias encontrará un checkbox que, al seleccionarlo, le mostrará los grupos correspondientes a los datos que tengan un alcance tal que se muestren en el formulario (Editable, Requerido, Sólo Lectura, o Sólo Lectura Editable).
Figura 168 Ordenamiento de grupos
Puede seleccionar el grupo que desee mover y luego hacer clic en las flechas para moverlo hacia arriba o hacia abajo. También puede arrastrar los grupos para ordenarlos. Este orden de grupos se verá reflejado en el formulario de inicio. Aquellos datos que no tengan grupo quedarán dentro del grupo de “Datos de aplicación”, el cual no es ordenable.
Figura 169 Grupos ordenados
El alcance de roles funciona de la misma forma que el alcance de datos.
Las opciones de alcance de adjuntos son las siguientes:
· Accesibilidad:esta propiedad indica el nivel de acceso que los usuarios tendrán a los archivos adjuntos. Las opciones posibles son:
o Ninguno: Q-flow no muestra los archivos adjuntos en el formulario.
o Sólo listar:Q-flow muestra los archivos adjuntos, pero no permite abrirlos ni modificarlos.
o Sólo lectura:Q-flow muestra los archivos adjuntos y permite abrirlos.
o Editor: Q-flow muestra los archivos adjuntos, permite abrirlos y modificarlos.
o Total: Q-flow muestra los archivos adjuntos, permite abrirlos, modificarlos y borrarlos.
· Permitir adición:si esta opción está marcada, los usuarios podrán agregar archivos adjuntos en el formulario.
· Límites:
o Número máximo de archivos adjuntos: indica el número máximo de archivos adjuntos que puede tener el paso. Q-flow no permitirá agregar adjuntos por encima de este valor, a menos que éste sea 0, que significa que no hay un máximo.
o Número mínimo de archivos adjuntos: indica el número mínimo de archivos adjuntos que puede tener el paso. Q-flow no permitirá borrar archivos adjuntos cuando hacerlo implique que la cantidad de adjuntos pase a ser inferior a este valor.
· Tamaño máximo de adjunto (KB): permite especificar el tamaño máximo, en kilobytes, que pueden tener los adjuntos (la opción por defecto, 0, significa que no hay límite). Si se especifica un valor, Q-flow no permitirá adjuntar archivos con tamaño mayor al especificado.
Figura 170 Alcance de adjuntos
Los filtros de los adjuntos se especifican mediante expresiones regulares similares a las que utiliza Windows para su sistema de archivos, en las que el asterisco (“*”) sustituye cualquier cantidad de caracteres. Ejemplo: la expresión “*.zip” significa “todos los archivos con la extensión zip”.
Un filtro puede usar varias expresiones separadas por “;” o por “|”. Por ejemplo, si el filtro “Mostrar solo” tiene la expresión “*.zip;*.rar;Licencia.pdf”, Q-flow mostrará solamente los archivos con extensiones “zip”, “rar” y el archivo llamado “Licencia.pdf”.
El caracter “?” sustituye una ocurrencia de cualquier caracter. Ejemplos: la expresión “*.???” representa cualquier archivo que tenga una extensión de tres caracteres; la expresión “documento?.doc” representa cualquier archivo cuyo nombre empiece con “documento” y tenga un caracter adicional antes de la extensión (“documento1.doc”, por ejemplo, pero no “documento12.doc” ni “documento.doc”).
El caracter “!” permite negar una expresión. Sólo se puede utilizar al principio del filtro. Por ejemplo, si en el filtro “Mostrar solo” se escribe la expresión “!*.exe;*.bat”, Q-flow mostrará solamente los archivos que no tengan extensiones “bat” ni “exe”.
Los formularios de Q-flow tienen la opción de agregar comentarios al completarlos (en el caso de aquellos que no son de tipo sólo lectura) y ver los comentarios existentes. Esto les permite a los usuarios dar y obtener información extra sobre el proceso, que se considere importante pero que no sea parte de los datos de éste. Las opciones de alcance de estos comentarios son las siguientes:
· Permitir adición:el usuario puede agregar un comentario al formulario si lo desea.
· Requerido: el usuario está obligado a ingresar un comentario; si no lo hace, no podrá completar el formulario. Sólo se puede seleccionar esta opción si ya se ha elegido “Permitir adición”.
· Ver historial de comentarios: el usuario puede ver todos los comentarios que otros usuarios han agregado. Notar que no tiene sentido permitir ver el historial de comentarios en un formulario de inicio del proceso, pues aún no se ha añadido ninguno.
Figura 171 Alcance de comentarios
Si se permite ver y agregar comentarios, al responder una tarea, por ejemplo, se ve el formulario como en la Figura 172.
Figura 172 Formulario con comentarios
Muchas propiedades de los pasos de Q-flow permiten utilizar etiquetas. Esto significa que los valores de estas propiedades no tienen que ser determinados durante el diseño de un proceso, sino que Q-flow los puede obtener de donde se le indique cuando los necesite utilizar. Por ejemplo, es común incluir en los asuntos de las tareas de usuarios el valor de algún dato de aplicación (como el número de documento de un cliente o su nombre). En este caso, en lugar de que la tarea diga algo así como “Atender la solicitud del cliente”, puede decir “Atender la solicitud del cliente Juan Pérez, CI 11111111”.
Las propiedades para las cuales se puede usar etiquetas tienen un ícono con una etiqueta al lado (Figura 173). Si hace clic en este ícono, aparece una lista con los ítems que se pueden seleccionar para la etiqueta. Si, al ver esta lista, usted escribe, la lista se reducirá a los elementos que contengan el texto que usted haya ingresado. También puede optar por mostrar en la lista solamente ítems de algún tipo específico (sólo datos de aplicación, por ejemplo). Para ello, haga clic en el ícono correspondiente en la parte inferior de la lista (Figura 173, abajo, donde dice “Datos”, “Roles”, etc).
También se puede ingresar una etiqueta sin hacer clic en el ícono de la etiqueta, simplemente ingresando el símbolo “#” en la propiedad: esto también hace aparecer la lista de ítems que se pueden usar para la etiqueta.
Los tipos de ítem que se pueden utilizar en etiquetas son:
· Datos de aplicación: se usa el valor del dato.
· Roles de plantilla de proceso: se usa el nombre del usuario que desempeña el rol.
· Parámetros de aplicación de tipo texto: se usa el valor del parámetro.
· Información del proceso: por ejemplo, el nombre del proceso, o su fecha de inicio.
· Otros: por ejemplo, la fecha actual.
Figura 173 Etiquetas
Una actividad representa una unidad de trabajo a realizar en el proceso. Ésta puede ser una tarea, un proceso automático o un subproceso.
Figura 174 Actividad de llamada
Una actividad de llamada sirve para que un proceso inicie otro proceso, al cual se le llama “proceso hijo” (del proceso que lo inició, se dice que es su padre).
Cuando un proceso llega a una actividad de llamada, inicia un proceso de la plantilla indicada en la configuración de la actividad de llamada. Una vez iniciado el proceso hijo, el proceso padre puede continuar su ejecución sin esperar que finalice la ejecución del hijo, o puede detenerse y esperar a que termine su ejecución para continuar.
El formulario de propiedades de una actividad de llamada está dividido en las siguientes secciones:
· General: ver “Propiedades generales”.
· Plantilla de proceso: permite especificar la plantilla que se usará para iniciar procesos desde la actividad y algunas otras propiedades de los procesos.
· Mapeos: permite especificar correspondencias entre datos de aplicación del proceso padre y datos de aplicación del proceso hijo, y entre roles del proceso padre y roles del proceso hijo. Esto permite intercambiar información entre los dos procesos, copiando el valor de datos o roles de uno a los datos o roles correspondientes del otro. También se puede especificar que se copien adjuntos de un proceso al otro.
· Inicio Retrasado:marcando la opción “Retrasar inicio”, se puede especificar que el proceso hijo no se inicie apenas el proceso padre llegue a la actividad de llamada, sino una vez que haya transcurrido cierto tiempo a partir de ese momento. La forma de especificar ese plazo es igual que la de cualquier vencimiento (ver “Temporización”).
· Eventos manejados: ver “Asociar un manejador a un evento de un elemento del diseño”.
· Esperar al fin del subproceso para continuar: si esta opción está marcada, una vez iniciado el proceso hijo, el proceso que lo creó no continúa su ejecución hasta que el hijo no haya terminado. Sólo si esta opción queda marcada se pueden actualizar los datos del proceso padre desde el proceso hijo.
Figura 175 Propiedades de una actividad de llamada, "Plantilla de proceso"
La sección de mapeos muestra una tabla inicialmente vacía a la que se pueden agregar filas. Cada fila representa una correspondencia entre un dato o rol del proceso padre y un dato o rol del proceso hijo. En la parte inferior están las opciones de mapeos de archivos adjuntos.
Arriba de la tabla con las correspondencias de datos y roles están los botones que permiten agregar un mapeo de datos de aplicación, agregar un mapeo de roles, y borrar el mapeo seleccionado (Figura 176). Si todavía no se llenaron las opciones de la sección “Plantilla de proceso”, los botones están deshabilitados, puesto que es imposible saber qué datos de aplicación y roles del proceso están disponibles en el proceso que se inicia.
Figura 176 Mapeos
Cuando se hace clic en uno de los botones que sirven para agregar un mapeo, se agrega una nueva fila a la tabla de mapeos. Para especificar las propiedades del mapeo, haga clic en cada celda de la nueva fila, seleccionando los valores deseados.
Un mapeo tiene las siguientes propiedades (cada una corresponde a una columna de la tabla):
· Tipo: indica si el mapeo es de roles o de datos. Esto está determinado por qué botón se usó para agregar el mapeo y no se puede modificar.
· Origen: dato de aplicación o rol del proceso padre.
· Objetivo: dato de aplicación o rol del proceso hijo.
· Dirección: indica si se copiará el valor desde el dato o rol de origen al dato o rol de destino o viceversa:
o Entrada: se copia el valor del dato o rol del proceso padre al dato o rol del proceso hijo. Esto se hace al momento de iniciar el proceso.
o Salida: se copia el valor del dato o rol del proceso hijo al dato o rol del proceso padre. Esto se hace cuando el proceso hijo termina su ejecución y sólo si el proceso padre espera al proceso hijo. Si el proceso padre continúa su ejecución inmediatamente después de iniciar el hijo, sin esperar la finalización de éste, no se copian datos o roles del hijo al padre.
o Entrada/salida:se copia el valor del dato o rol del proceso padre al dato o rol del proceso hijo, al momento de iniciar el proceso hijo. Una vez finalizada la ejecución del proceso hijo, si y sólo si el padre esperó la finalización del hijo antes de continuar, se copia el valor del dato o rol del proceso hijo al dato o rol del proceso padre.
IMPORTANTE: para que un dato o rol aparezca en la lista que permite seleccionarlos como Objetivo, debe ser editable en el evento de inicio del proceso hijo. Si un dato o rol no aparece en la lista de objetivos posibles, revise el alcance que tiene en el evento de inicio de la versión de que se usará para iniciar el proceso hijo.
En la parte inferior del formulario están las opciones para el mapeo de adjuntos:
· No agregar adjuntos: Q-flow no copia los adjuntos del proceso padre al proceso hijo.
· Agregar adjuntos al hijo: Al iniciar el proceso hijo, Q-flow copia en él los adjuntos del proceso padre.
· Agregar adjuntos al hijo y actualizar: al iniciar el proceso hijo, Q-flow copia en él los adjuntos del proceso padre. Una vez que el proceso hijo termina su ejecución, si hubo cambios en esos adjuntos, los vuelve a copiar al proceso que lo inició, pero sólo si el padre esperó la finalización del hijo para continuar.
Figura 177 Subproceso
Un subproceso es un elemento que contiene varios elementos y permite manejar una parte del diseño del proceso como si fuese una unidad. Sirve para simplificar el diseño del proceso, ya que se puede contraer, de modo que se vea como una actividad simple, o expandir, mostrando todo su contenido, que puede ser modificado como si fuera un diseño de proceso dentro del diseño de proceso.
Figura 178 Subproceso expandido (izq.) y contraído (der.), con los botones que permiten expandirlo y contraerlo
Figura 179 Tarea de código
Una tarea de código, además del nombre y de la descripción, tiene las siguientes propiedades:
· Lenguaje de programación: permite elegir el lenguaje de programación (C# o VB .NET).
· Código: es el código del script.
El código contiene un procedimiento llamado “Execute”. Cuando un proceso ejecute el código, llamará a ese procedimiento. El código se escribe dentro de una clase derivada de la clase CodeScriptBase, definida por Q-flow. Esa clase tiene un conjunto de métodos y propiedades que permiten trabajar con los datos del proceso. Por más información sobre cómo usar esos métodos y propiedades, consulte el manual de referencia de la interfaz de scripting de Q-flow.
Figura 180 Propiedades de una tarea de código
Figura 181 Tarea de e-mail
Una tarea de e-mail envía un mensaje de correo electrónico a las casillas especificadas en sus propiedades. Una tarea de e-mail utiliza la configuración del servicio SMTP para enviar sus mensajes.
El formulario de propiedades de una tarea de e-mail tiene las siguientes secciones:
· General: permite ingresar una descripción.
· Origen: permite especificar el remitente del mensaje. Se muestra cuando el formulario está expandido.
· Destinatarios: permite especificar los destinatarios del mensaje que se va a enviar.
· Contenido:permite especificar el texto del mensaje que se va a enviar, así como el formato de ese mensaje.
· Adjuntos: permite especificar qué archivos adjuntos del proceso se enviarán como archivos adjuntos al mensaje.
· Eventos manejados: permite asociar manejadores de eventos a eventos del paso (ver “Asociar un manejador a un evento de un elemento del diseño”).
La sección “Origen” permite especificar los datos del remitente del mensaje. Hay dos opciones posibles:
· Utilizar la configuración del sistema. Si se utiliza esta opción, el mensaje se enviará con el remitente que Q-flow utiliza para enviar notificaciones. Esta es la opción por defecto.
· Usar configuración personalizada. En este caso, deberá completar los siguientes datos:
o Origen
§ Nombre: nombre del remitente. Se puede utilizar una etiqueta para, por ejemplo, obtener este nombre de un dato de aplicación (ver “Etiquetas”).
§ Dirección: dirección de correo electrónico del remitente. También para la dirección se puede utilizar una etiqueta.
o Credenciales SMTP (Opcional): los siguientes campos son necesarios solamente si las credenciales son necesarias para enviar el mensaje:
§ Usuario: nombre de usuario habilitado para utilizar el servicio SMTP.
§ Contraseña:contraseña del usuario.
Figura 182 Origen
La sección de destinatarios (Figura 183) muestra un espacio para escribir la dirección de correo electrónico de un destinatario y un botón (“+”) para agregar más destinatarios. Si aprieta este botón, se generará un espacio para ingresar la dirección de otro destinatario. En ambos casos se puede usar una etiqueta para especificar la dirección (ver “Etiquetas”). Utilice el botón “-” que aparece al lado de un destinatario para quitarlo.
Figura 183 Destinatarios
La sección “Contenido” contiene las siguientes propiedades:
· Asunto: texto del asunto del mensaje. Se puede usar una etiqueta (ver “Etiquetas”).
· Cuerpo: texto principal del mensaje. Se puede usar una etiqueta (ver “Etiquetas”).
· Lenguaje de programación: indica si el cuerpo del mensaje está especificado en HTML o mediante texto plano.
o HTML: el cuerpo del mensaje está especificado en HTML.
o Texto: el cuerpo del mensaje está especificado mediante texto plano, sin marcas de HTML.
En la parte inferior se escribe el mensaje, pudiendo utilizar etiquetas para tomar, por ejemplo, valores de un dato de aplicación. Para esto, escriba “#”
Figura 184 Propiedades del contenido del mensaje
La Figura 185 muestra la solapa “Adjuntos”. Ésta funciona de la misma forma que la de destinatarios: para agregar un adjunto, haga clic en “+” y escriba el nombre del adjunto o use una etiqueta para especificarlo. Para quitar un adjunto, haga clic en “-”.
Figura 185 Adjuntos
Figura 186 Tarea de fórmula
Una tarea de fórmula toma datos de aplicación o roles del proceso, hace operaciones con ellos y genera un resultado que se almacena también en algún dato de aplicación o rol, según corresponda.
El formulario de propiedades de la tarea de fórmula tiene las siguientes secciones:
· General: permite ingresar la descripción de la tarea y definir la fórmula que se va a ejecutar cuando el proceso llegue a la tarea.
· Eventos manejados: ver “Asociar un manejador a un evento de un elemento del diseño”.
La ejecución de esta tarea, llevará a cabo las operaciones en el orden especificado, pudiendo utilizar un valor pre-calculado y almacenado en algún dato de aplicación o rol, en una operación posterior.
Figura 187 Propiedades de una fórmula, con las propiedades de una expresión (Total = Subtotal + Impuestos)
La sección “Fórmula” de una tarea de fórmula muestra una tabla, inicialmente vacía, con la definición de la fórmula, que está compuesta de operaciones (cada fila de la tabla corresponde a una operación). Para agregar una operación a la fórmula, haga clic en el botón “+”. Esto abre el formulario de la nueva operación, a la derecha de la tabla de la fórmula (Figura 187).
Figura 188 Definición de una expresión
Las propiedades de una operación son las siguientes (Figura 188):
· Destino: es la primera de las propiedades. Donde dice “Comience a escribir…”, empiece a escribir el nombre del dato de aplicación o rol, en el cual desea guardar el resultado de la fórmula.
· Primer operando: después de donde dice “Es igual a”, se puede ingresar el primer operando, escribiendo donde dice “Comience a escribir…”. El operando puede ser:
o Valor: un valor fijo. En este caso, escriba el valor.
o Dato de aplicación: un dato de aplicación de cualquier tipo. Si empieza a escribir el nombre de un dato de aplicación, pronto aparecerá el dato en una lista que se despliega mientras escribe.
o Función: el resultado de una función. Por ahora, la única función disponible es GetDate(), que devuelve la fecha actual y ésta se podrá seleccionar si empieza a escribir “GetDate()”.
o Rol: un rol de plantilla de proceso. Se selecciona de forma similar a un dato de aplicación.
§ Datos numéricos:en general, estas transformaciones sólo tienen sentido si el operando es un dato que admite múltiples valores.
· Average: calcula el promedio de los valores.
· Count: cuenta la cantidad de valores.
· Max: toma el máximo de los valores.
· Min: toma el mínimo de los valores.
· Sum: toma la suma los valores.
§ Datos de texto:
· Left: toma sólo los primeros caracteres del operando. La cantidad de caracteres a tomar se especifica en la propiedad “Largo”.
· Left Trim: corta todos los espacios en blanco que pueda haber al principio del operando.
· Mid: toma sólo los caracteres del medio del operando. La posición a partir de dónde debe tomar los caracteres se indica en la propiedad “Inicio” (el 0 corresponde a la primera posición). La cantidad de caracteres a tomar a partir de esa posición se especifica en la propiedad “Largo”. Por ejemplo, si el valor del operando es “Hola Mundo!”, Inicio = 5 y Largo = 5, el resultado de la transformación será “Mundo”. Para el mismo operando, si Inicio = 0 y Largo = 4, el resultado será “Hola”.
· Right: toma sólo los últimos caracteres del operando. La cantidad de caracteres a tomar se especifica en la propiedad “Largo”.
· Right Trim: corta todos los espacios en blanco que pueda haber al final del operando.
· Trim: corta todos los espacios en blanco que pueda haber tanto al principio como al final del operando.
§ Fecha:
· GetDay: toma sólo el día.
· GetHour: toma sólo la hora.
· GetMinutes: toma sólo los minutos.
· GetMonth: toma sólo el mes.
· GetSeconds: toma sólo los segundos.
· GetYear: toma sólo el año.
· Operador: operador de la operación. Es posible no elegir ningún operador y sólo aplicarle una transformación al primer operando, sin realizar ninguna operación.
o + (suma): en el caso de los roles, funciona como una unión de conjuntos (el resultado de sumar dos roles es un conjunto con los miembros de ambos roles).
o - (resta): en el caso de los roles, funciona como una resta de conjuntos: el resultado son todos los miembros del primer rol que no estén en el segundo rol.
o * (multiplicación)
o / (división)
o mod (resto de dividir el primer operando entre el segundo)
o AddDay: le suma a un primer operando de tipo fecha la cantidad de días indicada por el segundo operando. El segundo operando debe ser un número.
o AddHour: le suma a un primer operando de tipo fecha la cantidad de horas indicada por el segundo operando. El segundo operando debe ser un número.
o AddMinutes: le suma a un primer operando de tipo fecha la cantidad de minutos indicada por el segundo operando. El segundo operando debe ser un número.
o AddMonth: le suma a un primer operando de tipo fecha la cantidad de meses indicada por el segundo operando. El segundo operando debe ser un número.
o AddSeconds: le suma a un primer operando de tipo fecha la cantidad de segundos indicada por el segundo operando. El segundo operando debe ser un número.
o AddYear: le suma a un primer operando de tipo fecha la cantidad de años indicada por el segundo operando. El segundo operando debe ser un número.
· Segundo operando: seleccione el segundo operando de las opciones. Las opciones para el segundo operando son las mismas que las opciones para el primer operando.
Figura 189 Tarea de notificación a usuario
Una tarea de notificación envía una notificación a usuarios de Q-flow. Los usuarios suelen recibir las notificaciones por correo electrónico, pero también las pueden ver en el sitio web de Q-flow. En eso una tarea de notificación es similar a una tarea de usuario. La diferencia es que no requiere acción de su destinatario, que se limita a acceder al formulario que le presenta la información. Este formulario puede ser, como en el caso de otros pasos que utilizan formularios, personalizado.
El formulario de propiedades de una tarea de notificación de usuario tiene las siguientes secciones:
· General: ver “Propiedades generales”. También permite especificar un texto de ayuda para los usuarios (sólo se muestra en el caso de que el panel esté expandido). Cuando vean la notificación en el sitio web, podrán ver el texto de ayuda al hacer clic en el ícono de ayuda (“?”). El texto puede contener código HTML.
· Mensaje: permite especificar las propiedades del mensaje que se va a enviar. Consulte la sección “Mensaje”, dentro de la descripción de las tareas de usuario, para ver una descripción del funcionamiento de esa sección.
· Alcance: permite definir qué datos de aplicación, roles, adjuntos y comentarios son visibles y modificables en la tarea. Ver “Alcance de datos, roles, adjuntos y comentarios”.
· Formulario: permite especificar un formulario personalizado. Ver “Asignar un formulario personalizado a un elemento del diseño”.
· Validaciones: permite asociar validaciones a la tarea. Ver “Asociación de una validación a un formulario”.
· Eventos manejados: ver “Asociar un manejador a un evento de un elemento del diseño”.
Figura 190 Configuración básica de tarea de notificación a usuario
Figura 191 Tarea de servicio
Una tarea de servicio ejecuta una integración (ver “Integraciones”). Al configurar una tarea de servicio, se especifica:
· Integración a ejecutar.
· Para cada parámetro de entrada, qué dato de aplicación le proveerá valor.
· Para cada parámetro de salida, en qué dato de aplicación se almacenará su valor.
La sección “General” permite configurar las siguientes propiedades:
· Integración:permite elegir una de las integraciones definidas. Por información acerca de cómo definir una integración, consulte la sección “Integraciones”.
· Mapeo de parámetros: es una tabla que muestra los parámetros de la integración. A cada parámetro requerido de la integración se debe asociar un parámetro o dato de aplicación del mismo tipo. Para elegir un dato de aplicación, haga clic en “Datos” en la columna “Tipo de ítem” de la fila correspondiente al parámetro para el cual desea elegir un dato. Para elegir un parámetro de aplicación, seleccione “Parámetros”. Para elegir el dato o parámetro de aplicación al que asociará el parámetro de la integración, haga clic en “No especificado”, en la columna “Item” de la fila que está modificando. Si un parámetro es de entrada, éste recibirá el valor del dato o parámetro de aplicación antes de la ejecución de la integración. Si el parámetro es de salida, sólo tiene sentido asociarlo a un dato de aplicación (un proceso no puede modificar un parámetro de aplicación). Una vez ejecutada la operación de la integración, el valor del parámetro será copiado en el dato de aplicación asociado. Esta es la forma de que una operación devuelva resultados que puedan ser utilizados por el proceso. Si el parámetro es de entrada y salida, tampoco tiene sentido asociarlo a un parámetro de aplicación. El valor del dato de aplicación asociado es copiado al parámetro antes de la ejecución de la integración y una vez ejecutada ésta, el valor del parámetro es copiado al dato de aplicación.
· Auto mapear: este botón permite intentar hacer automáticamente la correspondencia entre parámetros de la integración y datos o parámetros de aplicación. Al hacer clic sobre él, Q-flow buscará, para cada parámetro de la integración, un dato (o parámetro, según el valor elegido en “Tipo de ítem”) de aplicación con el mismo nombre y tipo que éste, si encuentra uno lo asociará al parámetro. De este modo, el mapeo de parámetros se puede hacer automáticamente, siempre y cuando exista un dato o parámetro de aplicación igual a cada parámetro en nombre y tipo.
La sección “Eventos manejados” permite configurar las siguientes propiedades:
Ver “Asociar un manejador a un evento de un elemento del diseño”.
Figura 192 Propiedades de una tarea de servicio
Figura 193 Tarea de servicio asíncrono
Una tarea de servicio asíncrono permite asignarle un trabajo a un bot. Un bot puede tener parámetros, al igual que una integración. Una tarea de servicio asíncrono es muy similar a una tarea de servicio, con la única diferencia de que, en lugar de seleccionar una integración para ejecutar, se selecciona un bot (ver “Bots”) al cual se le asigna un trabajo (Figura 194). Por instrucciones sobre cómo asociar datos de aplicación o parámetros a los parámetros del bot, consulte “Tarea de servicio”.
Figura 194 Propiedades de una tarea de bot. Como se puede ver, son prácticamente iguales a las de una tarea de servicio
Figura 195 Tarea de usuario
Una tarea de usuario asigna una tarea a un usuario o conjunto de usuarios. Los destinatarios de la tarea se especifican mediante roles de plantilla de proceso.
Una tarea de usuario tiene un conjunto de respuestas. Cuando un usuario accede al formulario de una tarea en el sitio web, debe seleccionar una respuesta para actualizar el estado de la tarea. El formulario de propiedades de una tarea tiene las siguientes secciones:
· General: ver “Propiedades generales”.
· Mensaje: permite especificar los destinatarios de la tarea, el mensaje que se les muestra y las posibles respuestas.
· Controles de tiempo: permite definir vencimientos, recordatorios y alertas para la tarea.
· Avanzado:contiene opciones sobre cómo mostrar la tarea en un formulario estándar de Q-flow.
· Eventos manejados: ver “Asociar un manejador a un evento de un elemento del diseño”.
· Alcance: permite especificar el acceso a datos, roles y adjuntos (ver “Alcance: qué roles se pueden ver y modificar en cada interacción con un proceso”).
· Formulario:permite asociar un formulario personalizado a la tarea (ver “Asignar un formulario personalizado a un elemento del diseño”)
· Validaciones:permite asociar validaciones a la tarea (ver “Asociación de una validación a un formulario”).
o Continuar después de que:
§ Algún usuario haya respondido: cuando un usuario seleccione una respuesta final, el proceso finalizará la tarea y continuará su ejecución.
§ Todos los usuarios hayan respondido: el proceso continuará su ejecución solamente cuando todos los destinatarios hayan seleccionado una respuesta final.
§ Por lo menos “X” usuarios hayan respondido: cuando una cantidad (X) de usuarios haya respondido, el proceso continuará su ejecución. Si se selecciona esta opción, se habilita el campo “Cantidad/Porcentaje” para especificar la cantidad (X).
§ Por lo menos un porcentaje “X” de usuarios haya respondido: similar a la opción anterior, pero se indica un porcentaje de usuarios en lugar de una cantidad absoluta.
Figura 196 Propiedades del mensaje
Figura 197 Modo de presentación
Los controles de tiempo sirven para prevenir o mitigar atrasos en las tareas mediante alertas, recordatorios, delegaciones y vencimientos. Las alertas y recordatorios son notificaciones que se envían cuando vence un plazo. Las delegaciones consisten en reasignar tareas y los vencimientos permiten que el proceso tome un camino alternativo al que hubiese seguido si no se hubiese vencido un plazo.
La sección de controles de tiempo muestra una tabla con los controles que se hayan definido. Ésta tiene tres botones para agregar, modificar y eliminar controles de tiempo (Figura 198).
Figura 198 Controles de tiempos
Al editar un control de tiempo, se muestra un formulario como el de la Figura 199.
Figura 199 Control de tiempos
Este formulario tiene las siguientes propiedades:
· Tipo de acción: se muestran varios botones. Cada uno corresponde a una clase de acción. Se marca una de las clases haciendo clic en ella. Las clases posibles son:
o Recordatorio:Q-flow envía una notificación con un recordatorio para el destinatario seleccionado.
o Alerta: Q-flow envía una notificación con una alerta para el destinatario seleccionado.
o Delegación:Q-flow reasigna la tarea, dándosela al destinatario seleccionado.
o Vencimiento: Q-flow interrumpe la espera, abandonando la ejecución del paso y continuando con la ejecución del proceso por medio del evento de borde temporizador, para más detalles sobre cómo agregar los eventos de borde vea “Agregar eventos de borde”.
· Destinatarios:seleccione aquí los destinatarios de la acción. Para alertas y recordatorios, los destinatarios son quienes recibirán las notificaciones. Para delegaciones, son a quienes se les reasignará la tarea. Los vencimientos no tienen destinatarios. Para agregar un destinatario, empiece a escribir el nombre de un rol de que esté disponible en la plantilla que está utilizando, y cuando lo vea en la lista que aparece, selecciónelo.
Figura 200 Sección Avanzado de tarea de usuario
· Encargado de la tarea: permite especificar un rol, que será el encargado de la tarea. El encargado puede responder por cualquiera de los destinatarios. También puede delegar la tarea y enviar alertas.
· Destinatario alternativo: permite especificar un rol, de modo que, si el destinatario original de la tarea no puede completarla, sea posible elegir a los miembros de ese rol como destinatarios al delegarla.
Un evento representa algo que ocurre en el proceso. Éstos se pueden clasificar como Eventos de inicio, Eventos intermedios y Eventos de fin.
Figura 201 Evento de inicio
El evento de inicio que Q-flow implementa es el evento de inicio simple, que llamaremos Evento de inicio.
El evento de inicio marca el inicio de un proceso. También representa el punto en el que un usuario inicia un proceso. Por ejemplo, para seleccionar un formulario personalizado como formulario de inicio del proceso, se lo asocia al evento de inicio. Cuando un proceso es iniciado, empieza su ejecución en el evento de inicio, que debe ser único.
El formulario de propiedades de un evento de inicio (Figura 202) tiene las siguientes secciones:
· General: contiene propiedades generales (ver “Propiedades generales”), además de la propiedad “Etapa”, que permite asociar el evento de inicio a una etapa del proceso (ver “Etapas”).
Y texto de ayuda que permite especificar un texto de ayuda para el paso. Cuando un usuario esté iniciando un proceso en el sitio web, podrá ver el mensaje de ayuda definido si hace clic en el ícono de ayuda. Este mensaje puede contener código HTML.
· Alcance: ver “Alcance de datos, roles, adjuntos y comentarios”.
· Avanzado: permite especificar un texto de ayuda para el formulario de inicio y opciones para generar automáticamente los nombres y las descripciones de los procesos.
· Formulario:permite asignar un formulario personalizado como formulario de inicio del proceso (ver “Asignar un formulario personalizado a un elemento del diseño”).
· Validaciones:permite elegir validaciones, de entre las existentes, para que se ejecuten en el formulario de inicio (ver “Asociación de una validación a un formulario”).
· Eventos manejados: permite asociar manejadores a los eventos del elemento. ver “Asociar un manejador a un evento de un elemento del diseño”.
La tercera solapa, “Avanzado”, tiene las siguientes propiedades:
· Autogenerar nombre y descripción: estas propiedades permiten especificar de antemano los nombres y las descripciones de los procesos, usando etiquetas, de modo que no sea necesario que el usuario los ingrese al iniciar un proceso.
o Nombre autogenerado: un texto con etiquetas para indicar cómo se deben formar los nombres de los procesos.
o Descripción autogenerada: un texto con etiquetas para indicar cómo se deben formar las descripciones de los procesos.
Figura 202 Sección "Avanzado" de las propiedades de un evento de inicio
Los eventos de fin que Q-flow implementa son en Evento de fin simple, que llamaremos Evento de fin (Figura 203), y el Evento de fin terminal (Figura 204).
Figura 203 Evento de fin
Figura 204 Evento de fin terminal
Los eventos de fin y fin terminal finalizan la ejecución de los procesos. Un evento de fin terminal termina la ejecución del proceso aun cuando todavía haya hilos en ejecución. En ese caso, Q-flow finaliza esos hilos y el proceso termina su ejecución. Un evento de fin, por el contrario, espera que todos los hilos terminen y una vez terminados, finaliza el proceso.
El formulario de propiedades de estos eventos tiene las siguientes secciones:
· General: ver “Propiedades generales”. La caja que dice “Progreso = 100%” permite indicar que cuando el proceso termine, se debe poner el progreso en 100%.
· Eventos manejados: permite asociar manejadores a los eventos del elemento. ver “Asociar un manejador a un evento de un elemento del diseño”.
Figura 205 Propiedades de un evento de fin
Son aquellos eventos que pueden ocurrir entre el inicio y el fin de un proceso.
Figura 206 Evento de temporización
Un evento de temporización permite especificar una demora. Cuando un proceso llega a un evento de temporización, se detiene durante el tiempo especificado en él.
Las propiedades de un evento de temporización están divididas en las siguientes secciones:
· General: ver “Propiedades generales”. La caja que dice “Progreso = 100%” permite indicar que cuando el proceso termine, se debe poner el progreso en 100%.
· Temporización: es donde se especifica cuánto debe esperar el evento. Consulte la sección “Temporización” por instrucciones.
· Eventos manejados: permite asociar manejadores a los eventos del elemento. Ver “Asociar un manejador a un evento de un ”.
Figura 207 Propiedades de temporización
Figura 208 Evento intermedio
Un evento intermedio simple, que llamaremos evento intermedio, permite marcar el avance de un proceso, modificando las propiedades que tienen ese propósito (progreso, bandera y etapa). El formulario de propiedades de un evento intermedio tiene las siguientes secciones:
· General: en esta sección están las propiedades que permiten marcar el avance del proceso.
· Eventos manejados: permite asociar manejadores a los eventos del elemento. ver “Asociar un manejador a un evento de un elemento del diseño”.
General
Figura 209 Sección general de evento intermedio
Tiene las propiedades usuales (Progreso, Bandera, Importancia del proceso; ver “Propiedades generales”) y algunas adicionales:
· Etapa: permite asociar el evento a una etapa, indicando así que la etapa seleccionada empieza en ese paso. Iniciar una nueva etapa da por terminada la etapa actual. También se puede dar por terminada la etapa actual sin iniciar una nueva. Para eso, en lugar de seleccionar una etapa en la propiedad “Etapa”, seleccione la opción “[Terminar la etapa actual]” (ver “Etapas”).
· Reanudar etapa si ya existe: esta opción se muestra si está seleccionada la etapa “[Terminar la etapa actual]”. Está pensada para casos en los que existe una vuelta atrás en el proceso. Si esta opción está marcada, cuando se vuelva a ejecutar el paso, se reanuda también la etapa en la que se encontraba de modo que al contabilizar el tiempo que se tardó en ejecutar la etapa se considera el tiempo sumado de todas las ejecuciones.
Figura 210 Evento de atrapar señal
Un evento de atrapar señal permite poner al hilo en espera hasta que se reciba una señal proveniente de un evento de lanzar señal. Se utiliza en escenarios donde es necesario sincronizar el trabajo de dos o más hilos que se ejecutan simultáneamente. Las dos propiedades específicas de estos eventos son las siguientes:
· Esperar señal de:evento de lanzar señal por el cual se espera.
· Continuar si la señal ya fue lanzada: en caso de que la señal se haya lanzado previamente al intento de atraparla, especifica si se debe esperar una nueva señal o simplemente continuar.
Los eventos de atrapar señal también tienen otras propiedades, en común con otros pasos (ver “Propiedades generales”).
Figura 211 Propiedades de evento de atrapar señal
Figura 212 Evento de lanzar señal
Un evento de lanzar señal permite notificar a eventos de atrapar señal que lo están esperando para que continúen su ejecución. La configuración de este evento es similar a la de un evento intermedio (ver “Evento intermedio simple”).
Figura 213 Evento intermedio de borde genérico
Los eventos intermedios de borde, son eventos que se pueden adjuntar a ciertas actividades. Si durante la ejecución de la actividad se provoca alguno de los eventos definidos, el proceso continúa por un flujo que lo contemple. Los eventos que Q-flow admite como eventos de borde son:
· Evento temporizador: estos eventos se pueden adjuntar a tareas de usuario o tareas de servicio asincrónico, el proceso seguirá este camino al ocurrir el vencimiento definido en la propia actividad.
Figura 214 Evento temporizador de borde
· Evento de error: estos eventos se pueden adjuntar a tareas de servicio, tareas de código, tareas de fórmula y tareas e-mail, el proceso seguirá este camino al ocurrir algún error en la ejecución de la actividad.
Figura 215 Evento de error de borde
Las compuertas permiten modificar el flujo de un proceso, ya sea creando varios caminos paralelos en el proceso o seleccionando un camino de varios posibles posteriores a la compuerta.
Todas las compuertas se conectan con varios elementos a través de sus conectores. Lo que cambia según el tipo de compuerta es si, una vez que un proceso pasa por ella, continúa utilizando todos los caminos, algunos de ellos o solamente uno.
Las compuertas pueden ser de los siguientes tipos:
· Compuerta exclusiva: selecciona uno de varios posibles caminos para que el proceso continúe su ejecución.
· Compuerta inclusiva: selecciona uno o más de varios posibles caminos para que el proceso continúe su ejecución, de modo que puede generar varios hilos paralelos.
· Compuerta paralela: genera tantos caminos paralelos como conexiones salientes tenga.
Las compuertas se usan de a dos: se agrega una compuerta y, en el lugar en el que terminan los caminos que se iniciaron con ella, se incluye otra compuerta. En el caso de la compuerta exclusiva, esto no es obligatorio. En el caso de las compuertas que generan paralelismo (la paralela y la inclusiva), la segunda compuerta del par (compuerta convergente) es obligatoria y tiene propiedades que permiten definir bajo qué condiciones el proceso continuará su ejecución al terminar de ejecutar uno de los caminos.
Figura 216 Compuerta exclusiva
Una compuerta exclusiva selecciona uno de varios posibles caminos para que el proceso continúe su ejecución. Define una condición para cada una de sus conexiones salientes. Si alguna condición es verdadera cuando el proceso llega a la compuerta, el proceso utiliza esa conexión para continuar su ejecución. Si ninguna condición es verdadera, el proceso utiliza la conexión por defecto para continuar su ejecución (ver “Especificación de la conexión por defecto” por instrucciones para definir la conexión por defecto). Si más de una condición es verdadera, el proceso utiliza la primera de las condiciones para continuar su ejecución. En ningún caso se utiliza más de una conexión: la compuerta exclusiva no genera caminos paralelos.
Figura 217 Sección Avanzado de compuerta exclusiva, en la que se definen las condiciones para evaluar
Figura 218 Compuerta paralela
Las compuertas paralelas se utilizan de a dos: la primera (compuerta paralela divergente) divide el proceso en varios hilos: el proceso llega a la compuerta paralela y sigue su ejecución usando todas las conexiones salientes de la compuerta. La segunda compuerta (compuerta paralela convergente) une los hilos, haciendo que todos los caminos en los que se había dividido el proceso converjan nuevamente en uno.
El formulario de propiedades de la compuerta que efectúa la separación es muy sencillo (Figura 219) y sólo permite ingresar un nombre y una descripción, además de la sección “Eventos manejados”, que permite asociar manejadores a los eventos de la compuerta (ver “Asignar un formulario personalizado a un elemento del diseño”).
Figura 219 Formulario de compuerta paralela divergente
El de la segunda compuerta, que une los hilos, tiene una sección de opciones avanzadas que permiten definir bajo qué condiciones el proceso debe continuar su ejecución (si tiene que esperar que todos los hilos finalicen, por ejemplo) y, en caso de no esperar todos los hilos, qué hacer con los hilos pendientes de finalizar. Para ver la sección de opciones avanzadas, expanda el formulario con el botón de expandir formulario (Figura 220). Las opciones de esta sección se describen más abajo, en “
Propiedades de compuertas convergentes”.
Figura 220 Formulario de compuerta paralela convergente
Figura 221 Compuerta inclusiva
Una compuerta inclusiva es una suerte de híbrido de compuerta exclusiva y compuerta paralela: selecciona uno o más de varios posibles caminos para que el proceso continúe su ejecución, de modo que puede generar varios hilos paralelos. Define una condición para cada uno de los conectores salientes. Una vez evaluadas las condiciones, el proceso continúa su ejecución a través de todas las conexiones cuyas condiciones se cumplan. Si más de una condición es verdadera, la compuerta genera varios caminos paralelos.
Al igual que las compuertas paralelas, las compuertas inclusivas se deben usar en pares, y la segunda compuerta de un par (la compuerta convergente) tiene propiedades que permiten definir cuándo el proceso debe continuar su ejecución al llegar a la compuerta y qué debe hacer con hilos pendientes. Estas propiedades están en la sección “Avanzado” de la compuerta convergente. Las opciones de esta sección se describen más abajo, en “
Propiedades de compuertas convergentes”.
El formulario de propiedades de la primera compuerta (compuerta divergente) es muy sencillo y sólo permite ingresar un nombre y una descripción, además de la sección “Eventos manejados”, que permite asociar manejadores a los eventos de la compuerta (ver “Asociar un manejador a un evento de un elemento del diseño”).
La conexión por defecto es la que usa una compuerta exclusiva cuando ninguna de las condiciones que contiene es evaluada como verdadera. Para definir una conexión por defecto, seleccione una de las conexiones de la compuerta, haga clic sobre ella con el botón derecho y seleccione, en el menú contextual, “Conexión por defecto” (Figura 222).
Figura 222 Especificando conexión por defecto
Finalmente la conexión debería quedar como se muestra en la Figura 223.
Figura 223 Conexión por defecto
Las compuertas exclusivas e inclusivas contienen en sus propiedades condiciones que Q-flow evalúa cuando llega a alguna de ellas. Estas condiciones determinan por qué camino (en el caso de la compuerta exclusiva) o caminos (en el caso de la compuerta inclusiva) continuará su ejecución el proceso, una vez abandonada la compuerta.
Para especificar las condiciones de una compuerta, abra el formulario de propiedades y haga clic en el ícono de los tres puntos para ver el formulario expandido. Esto hace que aparezca la sección “Condiciones”. Si abre la sección “Condiciones” verá que está dividida en subsecciones, una por cada elemento al cual la compuerta está conectada mediante su conector saliente. En cada una de esas subsecciones se puede definir una condición.
Para definir una condición simple, haga clic en el botón “+Condición”. Eso hace que Q-flow agregue un elemento a la lista de condiciones (Figura 224).
Figura 224 Nueva condición en lista de condiciones
Una vez agregada la condición, debe especificar sus componentes. Donde dice “Comience a escribir el ítem destino…” debe escribir el nombre del ítem que desea usar en la condición. El ítem puede ser un dato de aplicación o una tarea de usuario que se haya ejecutado antes. Una vez seleccionado el ítem, seleccione el operador a utilizar y finalmente, el valor con el cual desea comparar. Si el ítem seleccionado es una tarea de usuario, se podrá seleccionar el criterio de votación, que permite especificar cómo evaluar la respuesta si los destinatarios de la tarea son muchos:
· Algún usuario ha contestado: si algún destinatario contestó lo especificado en la combinación de operador y valor, la expresión es verdadera. De lo contrario, es falsa.
· Todos los usuarios han contestado: si todos los destinatarios de la tarea contestaron lo especificado en la combinación de operador y valor, la expresión es verdadera. De lo contrario, es falsa.
· Ningún usuario ha contestado: si ningún destinatario contestó lo especificado en la combinación de operador y valor, la expresión es verdadera. De lo contrario, es falsa.
· X usuarios han contestado: si X destinatarios contestaron lo especificado en la combinación de operador y valor, la expresión es verdadera. De lo contrario, es falsa. Si esta opción está seleccionada, se habilita un casillero para especificar el valor de X.
· X% de usuarios han contestado: si X% de los destinatarios contestaron lo especificado en la combinación de operador y valor, la expresión es verdadera. De lo contrario, es falsa. Si esta opción está seleccionada, se habilita un casillero para especificar el valor de X.
· La respuesta más seleccionada fue: Si la respuesta más seleccionada fue la especificada en la combinación de operador y valor, la expresión es verdadera. De lo contrario, es falsa.
El valor puede ser puede ser un valor fijo como “2”, pero también puede escribir el nombre de un dato de aplicación para que la comparación se haga con el valor de ese dato, el valor de una clave de respuesta de tarea de usuario o el nombre de ésta. En este último caso, la comparación se hará con la clave de la respuesta que se haya dado a la tarea de usuario que se contestó antes. Esto permite construir condiciones como “Si el dato de aplicación ‘Estado’ es igual a la respuesta que se dio a la tarea de usuario ‘Aprobar’”.
Si agrega otra condición, debe decidir si la segunda condición se debe cumplir simultáneamente con la primera, es decir, si lo que se evalúa es “Se cumple la primera condición Y se cumple la segunda condición” o “Se cumple la primera condición O la segunda condición”. Para eso están los botones “Todas” y “Alguna”. Si hace clic en “Todas”, Q-flow muestra a la izquierda de las condiciones el texto “Y”. Si hace clic en “Alguna”, basta con que se cumpla una de las condiciones y a la izquierda de las condiciones aparece el texto “O”.
Para poder combinar “Y” y “O” hay que usar grupos de condiciones. Para agregar un grupo, haga clic en “+Grupo”. Después puede agregar condiciones dentro del grupo. El grupo tiene sus propios botones de “Todas” y “Alguna”, para determinar cómo se combinan las condiciones dentro del grupo (se combinan todas con “Y” o se combinan todas con “O”). A su vez, los grupos se combinan de la misma forma que las condiciones, con “Y” y “O”. Un grupo puede contener grupos: combinando grupos de condiciones unidas con “Y”, con grupos de condiciones unidas con “O”, se puede construir cualquier condición compleja.
Suponga que una plantilla de proceso tiene un dato numérico “Monto” y otro dato “Tipo de producto”. Se desea construir la condición “Si Monto > 5000 y (Tipo de Producto = 1 o Tipo de Producto = 2)”.
Para eso se necesita una condición “Si Monto > 5000” y un grupo para “(Tipo de Producto = 1 o Tipo de Producto = 2)”, puesto que esta última condición se debe evaluar primero para después comparar el resultado con “Si Monto > 5000”. Los grupos cumplen la misma función que los paréntesis.
En primer lugar se crea una condición con “+Condición” y se ingresan de izquierda a derecha el dato de aplicación “Monto”, el operador “mayor a” y el valor “5000” (Figura 225).
Figura 225Construcción de la condición “Si Monto > 5000”
Luego se agrega un grupo con “+Grupo”, dos condiciones dentro del mismo con su botón “+Condición” y se presiona en “Alguna” (Figura 226) para poder llenar las dos condiciones que se evalúan con el operador “O”.
Figura 226 Construcción de grupo con dos condiciones bajo el operador “O”.
Una vez hecho esto se procede a completar los campos de las condiciones: la primera, de izquierda a derecha, con el dato de aplicación “Tipo de Producto”, el operador “igual” y el valor “1”. La segunda condición se completa de la misma forma pero con el valor “2” al final, obteniendo la condición final como indica la Figura 227.
Figura 227 “Si Monto > 5000”, y un grupo para “(Tipo de Producto = 1 o Tipo de Producto = 2)”
Las compuertas paralelas y las compuertas inclusivas se usan de a pares. La segunda compuerta tiene opciones para determinar bajo qué condiciones el proceso debe continuar al llegar a ella y qué hacer con hilos que quedan pendientes. Estas opciones son:
o Finalizar hilos hermanos: si esta opción está marcada, todos los hilos que no hayan terminado serán finalizados antes de que el proceso continúe.
Figura 228 Propiedades avanzadas de una compuerta convergente
Los artefactos son objetos cuyo propósito es hacer más manejable y comprensible el proceso. En el diseño del proceso, tienen un comportamiento distinto al de otros elementos: no son parte del flujo del proceso. Se los puede conectar a actividades, eventos y compuertas, pero sólo para señalar que están relacionados con ellos. Son elementos informativos que no afectan al proceso.
Los artefactos disponibles en Q-flow son:
· Referencia de objeto de datos: representa un conjunto de datos que se usa en alguna actividad.
· Referencia a base de datos: representa un almacén de datos, como por ejemplo una base de datos.
· Anotación:permite escribir un texto y asociarlo a algún elemento del diseño.
Figura 229 Referencia a objeto de datos
Figura 230 Referencia a base de datos
Tanto una referencia a objeto de datos como una referencia a base de datos se agregan al diseño y se conectan con el elemento al que se refiere. Por ejemplo, si una tarea de servicio actualiza una base de datos, se puede agregar una referencia a base de datos para indicar cuál es la base de datos que actualiza (Figura 231). Para escribir el nombre de la base de datos, haga doble clic en la referencia a base de datos. Debajo del objeto aparece una caja para escribir un texto.
Otro ejemplo: si un usuario utiliza determinado conjunto de datos para desempeñar una tarea, se puede incluir en el diseño un objeto de datos que indique cuál es el conjunto de datos (Figura 232).
Figura 231 Referencia a base de datos en tarea de servicio
Figura 232 Referencia a objeto de datos en tarea de usuario
Figura 233 Anotación
Cuando se selecciona un elemento del diseño del proceso, una de las opciones que aparece sirve para agregar una anotación. Si hace clic en el botón correspondiente, Q-flow crea una anotación y le permite posicionarla en el lugar que desee. Una vez posicionada la anotación, hágale doble clic para ingresar un texto. Se puede aumentar el tamaño de una anotación para que el texto quepa.
Figura 234 Opciones de un elemento con botón de agregar anotación
Figura 235 Diseño con anotación
Un pool permite crear andariveles para organizar el proceso, agrupando dentro de un mismo nivel elementos relacionados.
Cuando se agrega un pool, todos los elementos del diseño quedan dentro de él. No está permitido arrastrar elementos hacia afuera del pool: todos los elementos del diseño deben estar dentro.
Figura 236 Pool
Una vez creado un pool, se pueden agregar andariveles con los botones que aparecen al seleccionar el pool (Figura 236). Los andariveles se pueden agrandar o achicar, seleccionándolos y usando el ratón para arrastrar sus bordes hacia uno u otro lado.
Figura 237 Proceso con andariveles