Ejemplo: Configuración de un flujo de trabajo para su uso con el Administrador de procesos

La persona que configura una tarea de flujo de trabajo en el formulario Administrador de procesos añade una tarea con Tipo de tarea establecido en Iniciar flujo de trabajo, especifica información sobre la tarea y, a continuación, selecciona el evento de flujo de trabajo en el campo Nombre del evento. El campo Nombre del evento contiene todos los eventos no principales que no son de marco de trabajo disponibles en SyteLine. Debe crear los eventos de flujo de trabajo que se enumerarán aquí.

Cuando la persona a la que se le ha asignado la tarea de flujo de trabajo abre la tarea en el Administrador de procesos, se muestra el nombre del evento en el campo Nombre del evento. La persona hace clic en el botón Iniciar evento para empezar el flujo de trabajo.

El evento HR_NewHireAnnouncement y su controlador de eventos, así como algunas acciones de eventos y un procedimiento almacenado de muestra, se proporcionan en la base de datos iniciada como un flujo de trabajo de ejemplo para que lo modifique y lo pruebe en el Administrador de procesos. Este flujo de trabajo de muestra envía una notificación a todos los empleados que proporciona el nuevo nombre del contratado y los datos del puesto. Debe editar este ejemplo tal como se describe a continuación si desea probarlo en su sistema. El ejemplo muestra cómo trasladar parámetros a través de una secuencia de comandos de formulario para este evento. El procedimiento almacenado genérico activa un evento personalizado en particular.

Evento, Definición

Este evento HR_NewHireAnnouncement de muestra tiene un controlador y tres acciones de evento:

  • Tipo de acción "Establecer atributos" SET(EVENTTITLE=E(EventTitle)): Esta acción de eventos escribe la tarea de proceso RowPointer en el título del evento con fines de referencia cruzada.
  • El tipo de acción "Notificar" tiene los siguientes parámetros:
    • A: Constante global de eventos "HRNewHireAnnouncementRecipients"
      Nota: Debe definir la lista de usuarios asociados para esta constante global de eventos.
    • Tema: Cadena traducible "Bienvenida al nuevo empleado <empname>"
    • Cuerpo: Cadena traducible "Me complace anunciar que <empname> se unirá hoy a nosotros como <empposition>."

    Esta acción de eventos notifica a los usuarios asociados con la constante global de eventos acerca de la nueva contratación. EmpName y EmpPosition son los parámetros de entrada para este evento. Esa información se extrae del proceso donde se origina este flujo de trabajo.

  • Tipo acción: Finalizar

Si desea escribir sus propios eventos, debe usar la primera y la tercera acción de eventos, y escribir sus propios eventos entre medias, en función de sus requisitos.

El evento HR_NewHireAnnouncement de muestra se ofrece como inactivo. Debe activarlo en el formulario Activación de controlador de eventos del flujo de trabajo para poder usarlo. En el campo Notificar usuarios, especifique los usuarios correspondientes que deben recibir la notificación Anuncio de nueva contratación.

Secuencia de comandos del formulario:

  • Para todos los eventos personalizados, los eventos que deben ser compatibles con el Administrador de procesos, identifican todos los parámetros de entrada obligatorios. (El evento HR_NewHireAnnouncement de ejemplo requiere dos parámetros de entrada: EmpName y EmpPosition).
  • Si un evento usa parámetros de entrada, determine si dichos valores de los parámetros de entrada se pueden recuperar de las variables, las propiedades o los componentes de página del formulario. De lo contrario, recupere dichos valores en el formulario. Asigne dichos parámetros de entrada. (Para nuestro ejemplo, ambos datos de los parámetros de entrada se pueden recuperar de los componentes del formulario.)

    Asigne parámetros de entrada como se muestra en nuestro ejemplo:

    
    If ThisForm.Components("MyTasksFormPageEventNameEdit").Text = "HR_NewHireAnnouncement" Then
              ThisForm.Variables("ParmName1").Value = "EmpName"
              ThisForm.Variables("ParmValue1").Value = ThisForm.Components("MyTasksFormPageEmpName1Edit").Text
              ThisForm.Variables("ParmName2").Value = "EmpPosition"
              ThisForm.Variables("ParmValue2").Value = ThisForm.Components("MyTasksFormPageJobTitleEdit").Text
    End If
    Nota:  Si desea ejecutar eventos de recursos humanos personalizados adicionales del Administrador de procesos, añada su propio bloque de código en la secuencia de comandos del formulario Administrador de procesos para asignar parámetros de entrada para sus eventos personalizados. Proporcionamos el código de ejemplo como un marco sobre el que puede trabajar.
  • Ejecute el procedimiento almacenado con el nombre de evento disponible en el formulario, junto con todos los pares nombre/valor que admita el procedimiento almacenado.

Procedimiento almacenado

Proporcionamos un procedimiento almacenado genérico GenericNotifyEventGlobalCsSp con los siguientes parámetros:

  • @EventName
  • @ProcessTaskRowPointer
  • @EventStateRowPointer OUTPUT
  • @Infobar OUTPUT
  • @ParmName1
  • @ParmValue1
  • @ParmName2
  • @ParmValue2
  • …etc. para nombres y valores de parámetro 3 a 19 ...
  • @ParmName20
  • @ParmValue20

El procedimiento almacenado realiza los siguientes pasos:

  • Iniciar @SessionId, @EventTrxId, @EventParmId
  • Pasar @ProcessTaskRowPointer como parámetro de entrada al evento, que se almacena en el “Título del evento”
  • Ejecutar FireEventSp al pasar @EventName, @SessionId, @EventTrxId y @EventParmId
  • WAITFOR DELAY '00:00:05'
  • Lea el estado de evento RowPointer y vuelva al formulario.
Nota:  En función de la configuración de la opción "Conservar estados de evento correctos" en el formulario Valores predeterminados del proceso, podría no crearse un registro EventState si el evento ha sido correcto. En tal caso, EventStateRowPointer es NULL (NULO), lo cual no supone un problema, porque solo deseaba capturar eventos erróneos.

Cuando se actualiza un código de ejemplo tal como se especifica aquí, y se hace clic en el botón Iniciar evento en el formulario Administrador de procesos, el valor RowPointer del registro Estado del evento creado se almacena en process_mgr_process_task.EventStateRowPointer.  El mensaje de éxito se muestra como "Se inició el evento."