El manual trata sobre el T6 Planning Workflow BPM y aborda varios temas relacionados con la configuración de flujos de trabajo, procesos, parámetros, responsables, modelos de correo electrónico, diseño de actividades, tipos de tareas, funciones específicas y sus sintaxis. El enfoque principal está en el uso de Business Process Modeling Notation (BPMN) para modelar procesos comerciales, con la intención de brindar mayor flexibilidad al flujo de trabajo clásico. El documento también proporciona ejemplos de expresiones y explicaciones detalladas sobre cada parte del proceso, incluidos tipos de tareas, diseño de flujo, identificación de objetos y otras funcionalidades asociadas al T6 Planning Workflow BPM.
Para cada aplicación de T6 Planning, debemos elegir un flujo de trabajo a utilizar. Cada aplicación puede tener solo un tipo de flujo de trabajo. Los tipos disponibles son:
El tipo de flujo de trabajo de una aplicación se puede cambiar en cualquier momento. Para ello, simplemente edite la aplicación deseada y cambie el tipo de flujo de trabajo según sea necesario.
Las aplicaciones migradas no tendrán su flujo de trabajo alterado. Las nuevas aplicaciones tendrán como predeterminado el tipo de flujo de trabajo BPM.
Una aplicación configurada para utilizar el flujo de trabajo clásico tendrá el comportamiento del flujo de trabajo existente en T6 Planning hasta ahora, donde se basa en las dimensiones Escenario y Entidad del modelo. Dado que el enfoque de este manual es el Workflow BPM, no detallaremos el Workflow Clásico en este documento.
Con la necesidad constante de una mayor flexibilidad en nuestro flujo de trabajo clásico, buscamos en el mercado un estándar de notación para la modelización de procesos comerciales. La opción más plausible encontrada fue la Notación de Modelado de Procesos Empresariales (BPMN), desarrollada y proporcionada como una nueva opción de flujo de trabajo para las aplicaciones.
Actualmente se está admitiendo un subconjunto de BPMN. Nuestro objetivo a largo plazo es cubrir todas las opciones disponibles de BPMN.
Se han proporcionado algunas opciones adicionales en la elaboración de los procesos para facilitar el llenado y la ejecución de los procesos; estas opciones no pertenecen al estándar BPMN.
Un proceso es un conjunto de actividades realizadas en una secuencia determinada. Los procesos son independientes de la aplicación. Solo algunos tipos específicos de tareas, detallados más adelante, dependen de la aplicación.
El proceso es la definición de un flujo. Una instancia es una copia en ejecución de un proceso. En un mismo proceso, puede haber varias instancias ejecutándose al mismo tiempo. Solo es posible inicializar una instancia en un proceso si está publicado.
Al guardar un proceso, no se realiza ninguna validación. La validación de la consistencia solo ocurre durante la publicación del proceso.
Hay un control de versiones en los procesos. Es decir, cada vez que se guarda el proceso, se guarda una nueva versión del mismo, manteniendo la versión anterior en el historial del proceso para consultas futuras.
Un proceso puede tener una colección de parámetros. Cada parámetro tiene una definición de tipo y una configuración. Cada proceso solo tiene las definiciones de los parámetros. Cada instancia de un proceso debe tener un valor para cada parámetro del proceso.
Si un parámetro está configurado para aceptar valores nulos, no se requerirá el llenado cuando el usuario necesite ejecutar un desencadenante.
Un parámetro configurado como interno no será visible en la lista de parámetros al ejecutar un desencadenante. La utilidad de un parámetro interno es la abstracción del parámetro para el usuario que ejecutará el desencadenante, ya que el parámetro solo es necesario para el funcionamiento interno del proceso. Como el parámetro no se enumera, es obligatoriamente un parámetro que acepta valores nulos.
A continuación, se presentan los posibles tipos de parámetros.
Permite almacenar un valor referente a la acción ejecutada sobre una instancia. Por ejemplo, si la tarea fue aprobada o no.
Permite el envío (carga) de archivos.
Almacena valores binarios verdadero (true) o falso (false), permitiendo su uso en condicionales, por ejemplo.
Se utiliza para almacenar una fecha.
Se utiliza para almacenar un valor con punto flotante.
Se utiliza para almacenar un valor entero.
Se utiliza para almacenar la identificación de un miembro de una aplicación y dimensión específicas.
Se utiliza para almacenar la identificación de la instancia. Si este parámetro existe en un proceso, cada vez que T6 Planning necesite identificar una instancia, utilizará el valor contenido en este parámetro.
Se utiliza para almacenar una lista de responsables.
Se utiliza para almacenar un responsable.
Se utiliza para almacenar la identificación de una tabla de datos específica.
Se utiliza para almacenar un texto.
La definición de los responsables de las tareas de un proceso puede ser una actividad laboriosa y difícil de mantener. Para facilitar la definición de los responsables de las tareas de un proceso, es posible configurar el proceso para cargar los responsables almacenados en una tabla de datos. Para ello, simplemente elija la tabla de datos donde se almacenan los responsables y configure algunas columnas de identificación.
A continuación, se describe cómo configurar los parámetros para cargar dinámicamente los responsables:
Con el fin de facilitar la configuración de correos electrónicos, es posible crear modelos de correo electrónico en el proceso. Después de configurar el modelo de correo electrónico, podemos asociarlo a eventos predefinidos en el proceso o la tarea.
La definición del flujo de actividades de un proceso se realiza mediante un diseñador gráfico. Al crear un nuevo proceso, el diseñador creará una actividad de inicio y una actividad de fin para el proceso.
Cada vez que se selecciona una actividad, haciendo clic con el botón izquierdo del ratón sobre la actividad, el diseñador mostrará alrededor de la actividad seleccionada las posibles actividades que se pueden desprender de la actividad actual. Si no hay opciones disponibles, significa que la actividad actual no puede tener más actividades desprendiéndose de ella.
Para acceder a las acciones disponibles de una actividad, simplemente use el botón derecho del ratón sobre la actividad deseada. Con esto, se mostrará un menú contextual con las acciones para la actividad.
Si se realiza un doble clic en la actividad, el diseñador ejecutará la acción predeterminada esperada para esa actividad. Por lo general, es la primera acción disponible del menú contextual para la actividad.
Para mover una actividad, simplemente selecciónela y realice el movimiento de arrastrar y soltar en la nueva posición deseada para la actividad.
Algunas actividades admiten el redimensionamiento. Para redimensionar, seleccione la actividad y realice el movimiento de arrastrar y soltar en la esquina inferior derecha de la actividad. Recuerde que cuando el ratón esté en la esquina inferior derecha de la actividad y la actividad admita el redimensionamiento, el cursor del ratón cambiará al cursor de redimensionamiento.
El flujo de trabajo T6 Planning sigue las reglas de BPM, donde cada objeto disponible en nuestra herramienta representa una actividad, como se describe a continuación:
El T6 Planning Workflow BPM permite la inserción de algunas funciones con propósitos específicos dentro del proceso, como se describe a continuación:
La función CreateDataTableRow se utiliza para crear un registro en una tabla de datos.
PARÁMETROS:
EJEMPLO: Instance(Unidad Consumidora Faturamento Mensal) = CreateDataTableRow([Unidad Consumidora Faturamento Mensal], [Unidad Consumidora] = Instance(Unidad) ,[Mês] = Instance(Mes))
En este ejemplo de expresión de una tarea del tipo expresión, se crea un nuevo registro en la tabla de datos Unidad Consumidora Faturamento Mensal, donde el valor de la columna Unidad Consumidora se completará con el parámetro de la instancia llamado Unidad, al igual que el valor de la columna Mês del registro se completará con el parámetro de la instancia llamado Mês.
La función DataLoadParameter se utiliza para manipular los parámetros de carga de datos de una aplicación específica, pudiendo la función ser utilizada para cargar o guardar un valor de un parámetro de carga de datos. Esta función se considera una función de almacenamiento.
PARÁMETROS:
EJEMPLO: Instance(Email) = DataLoadParameter([Calidad].[Contenido])
Este ejemplo de expresión trata sobre una tarea del tipo expresión. El valor del parámetro de carga de datos Contenido de la aplicación Calidad se asignará al parámetro Email de la instancia actual.
La función DataTableCell se utiliza para manipular los valores de un registro de una tabla de datos, pudiendo la función ser utilizada para cargar o guardar un valor de un registro de una tabla de datos. Esta función se considera una función de almacenamiento.
PARÁMETROS:
EJEMPLO: Instance(UEmail) = DataTableCell([Usuarios].[Instance(ID)].[Email])
Este ejemplo de expresión trata sobre una tarea del tipo expresión. El valor de la columna Email de la tabla de datos Usuarios del registro contenido en el parámetro ID se asignará al parámetro UEmail de la instancia actual.
La función DataTableRowLookup se utiliza para buscar la identificación de un registro de una tabla de datos.
PARÁMETROS:
EJEMPLO: Instance(ID) = DataTableRowLookup[Usuarios].[Nombre].[Instance(Actual)]
Este ejemplo de expresión trata sobre una tarea del tipo expresión. La identificación del registro de la tabla de datos Usuarios que tenga el valor de la columna Nombre igual al valor del parámetro Actual se asignará al parámetro ID de la instancia actual.
Esta función busca el valor de la fecha actual del servidor.
EJEMPLO: Instance(Data) = GetDate()
Este ejemplo de expresión trata sobre una tarea de tipo expresión. La fecha del servidor se asignará al parámetro Data de la instancia actual.
La función Instance se utiliza para manipular los valores de los parámetros de la instancia, pudiendo ser utilizada para buscar o guardar un valor de un parámetro de instancia. Esta función se considera una función de almacenamiento.
PARÁMETROS:
EJEMPLO: Instance(Acción) = "Aprobada"
Este ejemplo de expresión trata sobre una tarea de tipo expresión. La constante "Aprobada" se asignará al parámetro Acción de la instancia.
Devuelve el código de la instancia actual.
PARÁMETROS: No tiene parámetros.
EJEMPLO: Instance (Código) = InstanceCode()
Devuelve el nombre de la instancia actual.
PARÁMETROS: No tiene parámetros.
EJEMPLO: Instance (Nombre) = InstanceName()
La función LoadDataTableRows se utiliza para cargar los registros de una tabla de datos, pudiendo filtrarlos o no. Esta función se considera una función de carga.
PARÁMETROS:
EJEMPLO: Instance(Actividad) = LoadDataTableRows([Actividades])
En este ejemplo de expresión de un divisor, las identificaciones de los registros de la tabla de datos Actividades se asignarán a los parámetros Actividad de las instancias creadas por el divisor.
La función LoadMembers se utiliza para cargar los miembros de una dimensión, pudiendo filtrarlos o no. Esta función se considera una función de carga.
PARÁMETROS:
EJEMPLO: Instance(Miembro) = LoadMembers([Planeamiento].[Entidad])
En este ejemplo de expresión de un divisor, las identificaciones de los miembros de la dimensión Entidad de la aplicación Planeamiento se asignarán a los parámetros Miembro de las instancias creadas por el divisor.
Devuelve el nombre o el valor de una propiedad del miembro.
PARÁMETROS:
EJEMPLOS:
Member([Aplicación].[Dimensión], "5")
Member([Aplicación].[Dimensión], "[Cuenta].[Cuenta].[&5]")
Member([Aplicación].[Dimensión], "[Cuenta].[Cuenta].[&5]", "Propiedad))
Devuelve la descripción del proceso.
PARÁMETROS: No tiene parámetros.
Devuelve el nombre del proceso.
PARÁMETROS: No tiene parámetros.
La función RemoveDataTableRow se utiliza para eliminar registros de una tabla de datos.
PARÁMETROS:
EJEMPLO: Instance(Unidades) = RemoveDataTableRow([Unidad Consumidora], [Contrato] = Instance(Contrato));
En este ejemplo de expresión de una tarea de tipo expresión, se eliminan los registros en la tabla de datos Unidad Consumidora, donde el filtro de eliminación es la columna Contrato con el valor del parámetro de instancia Contrato. En este ejemplo, el parámetro de instancia Unidades recibirá el número de registros eliminados.
Devuelve el nombre y el correo electrónico del responsable de la tarea.
PARÁMETROS:
EJEMPLO: Responsible(Current)
Devuelve el correo electrónico del responsable de la tarea.
PARÁMETROS:
Devuelve el nombre del responsable de la tarea.
PARÁMETROS:
La función Sum se utiliza para sumar los valores contenidos en un parámetro multivalorado.
PARÁMETROS:
EJEMPLO: Instance(Valor) = Sum(Valores)
En este ejemplo de expresión de una tarea de tipo expresión, la suma de los valores contenidos en el parámetro Valores se asignará al parámetro Valor de la instancia.
Devuelve el descripción de la tarea actual.
PARÁMETROS: No tiene parámetros.
Devuelve el nombre de la tarea actual.
PARÁMETROS: No tiene parámetros.
Las líneas se utilizan para organizar y categorizar actividades según la función o papel.
Una línea puede tener una colección de usuarios o incluso una colección de grupos de usuarios. Los usuarios contenidos en la línea, directa o indirectamente, tendrán la función o papel desempeñado por la línea.
Las líneas son independientes de aplicaciones y modelos. Con esto, una misma línea puede ser utilizada en diversos procesos distintos.
Cada línea perteneciente a un proceso tiene una relación de uno a uno para la línea.
Los disparadores son artificios de T6 Planning para crear nuevas instancias de un proceso. Los disparadores pueden ejecutarse de forma manual, automática o a través de los Servicios de T6 Planning.
Cuando se dispara un disparador, se crea una nueva instancia en el proceso predefinido en la creación del disparador. La nueva instancia se crea en el inicio del proceso y se ejecuta mediante el motor de ejecución del flujo de trabajo hasta encontrar una tarea manual o llegar al final del proceso.
Los disparadores pueden dispararse de forma manual, automática o a través de los Servicios de T6 Planning.
Los eventos disponibles para el disparo de disparadores son:
Para llevar a cabo la ejecución de un proceso, se debe iniciar una instancia y parametrizarla. Además, se debe definir quiénes son los responsables de las actividades del proceso.
Al ejecutar un disparador, ya sea de forma manual o automática, se creará una nueva instancia. Esta instancia inicializada tendrá sus valores de parámetros completados con los valores encontrados en el disparador que originó la instancia.
La nueva instancia creada recorrerá el flujo hasta encontrar el final. Durante el flujo, la instancia puede requerir una acción manual de un usuario. Cuando esto ocurra, la instancia esperará la interactividad del usuario responsable de la actividad actual.
Cuando se necesite una interactividad manual, el usuario debe ejecutar una acción en la actividad.
Las acciones disponibles son:
La responsabilidad de una actividad manual puede definirse de diversas maneras, según se describe a continuación.
Cuando una actividad está dentro de una línea y el proceso no tiene ningún parámetro del tipo responsable, la responsabilidad de la actividad es visible para todos los usuarios que pertenecen a la línea.
Cuando una actividad no está dentro de una línea y el proceso tiene un parámetro del tipo responsable, la responsabilidad de la actividad se asigna al usuario definido en el parámetro responsable.
Cuando una actividad está dentro de una línea y el proceso tiene un parámetro del tipo responsable, la responsabilidad de la actividad será visible para todos los usuarios que pertenecen a la línea, siempre que ningún usuario le haya asignado la actividad. Si un usuario ha asignado la instancia para él, solo el usuario asignado verá la actividad.
Una actividad se considera de responsables dinámicos cuando el proceso al que pertenece está configurado para cargar los responsables dinámicamente desde una tabla de datos. En esta situación, cada vez que la instancia entre en una actividad manual, los responsables de la actividad se cargarán desde la tabla de datos y se almacenarán en el parámetro del tipo Responsables. El primer responsable de la lista de responsables se almacenará en el parámetro del tipo Responsable.
Este tema aborda las configuraciones de roles y funciones de los usuarios responsables de las tareas del proceso.
Un rol del tipo proceso permite al usuario acceder a la información del cubo. Cuando la aplicación solicita los roles de un usuario, se crea un rol para cada instancia asignada al usuario que contiene la información de los parámetros del tipo miembro referentes a la aplicación en cuestión.
Se han agregado nuevas funciones para flexibilizar el acceso a las nuevas funcionalidades por parte de los usuarios. A continuación, se muestran las nuevas funciones disponibles:
Los usuarios con esta función tienen permiso para crear, editar y eliminar procesos. Disponible solo para usuarios Gestores.
Los usuarios con esta función tienen permiso para crear, editar y eliminar disparadores. Disponible solo para usuarios Gestores.
Los usuarios con esta función tienen permiso para crear, editar y eliminar líneas. Disponible solo para usuarios Gestores.
Los usuarios con esta función tienen permiso para detener una instancia en ejecución. Disponible solo para usuarios Gestores.
La misma función que permite al usuario detener una instancia también le permitirá pausar la instancia de un proceso.
La misma función que permite al usuario detener una instancia también le permitirá reanudar la instancia de un proceso.
Los usuarios con esta función tienen permiso para pellizcar instancias. Disponible solo para usuarios Gestores.
Los usuarios con esta función tienen permiso para publicar procesos. Disponible solo para usuarios Gestores.
Los usuarios con esta función tienen permiso para rechazar una instancia en ejecución. La opción solo estará disponible si el elemento del proceso anterior a la tarea actual es una tarea manual. Disponible solo para usuarios Planeadores.
Los usuarios con esta función tienen permiso para visualizar instancias. Disponible solo para usuarios Planeadores.
Los usuarios con esta función tienen permiso para ejecutar disparadores. Disponible solo para usuarios Planeadores.
Los usuarios con esta función tienen permiso para visualizar procesos. Disponible solo para usuarios Gestores.
A continuación se mostrará un proceso creado con el nuevo flujo de trabajo BPM disponible en T6 Planning.
Un usuario registra un reembolso en un formulario de datos. Si el valor del reembolso es inferior a R$500,00, el reembolso se aprueba automáticamente. Si el valor del reembolso es superior a R$500,00 e inferior a R$10.000,00, se requiere la aprobación manual de un usuario participante en la línea de reembolso. Si es superior a R$10.000,00, el reembolso se rechaza automáticamente.