sql >> Base de Datos >  >> RDS >> Database

Uso de tablas de configuración para definir el flujo de trabajo real

La primera parte de esta serie introdujo algunos pasos básicos para administrar el ciclo de vida de cualquier entidad en una base de datos. Nuestra segunda y última parte le mostrará cómo definir el flujo de trabajo real utilizando tablas de configuración adicionales. Aquí es donde se le presentan al usuario las opciones permitidas en cada paso del camino. También demostraremos una técnica para evitar la reutilización estricta de "ensamblajes" y "subensamblajes" en una estructura de lista de materiales.

Definir las opciones

La Parte 1 presentó las tablas de flujo de trabajo principales y cómo se pueden incorporar fácilmente a su base de datos. Lo que necesitamos ahora es algo que guíe al usuario a seleccionar el siguiente estado lógico, algo que defina un flujo de trabajo lógico. .

El siguiente diagrama define todos los componentes de un modelo de base de datos de flujo de trabajo:




Dos tablas de configuración, workflow_state_option y workflow_state_context , se han añadido al modelo. Comenzaremos con la tabla de opciones, que define los siguientes estados permitidos . Una vez que se comprenda su función, volveremos a la tabla de contexto y explicaremos el papel que desempeña.

Siguientes estados permitidos

Las tablas que siguen son algo así como una vista SQL de nuestras tablas de configuración. Aquí hemos ocultado las combinaciones de tablas y solo estamos viendo las combinaciones de type_keys . Entonces, consideremos cada ESTADO.RESULTADO combinación y definir las opciones disponible para el usuario:


ESTADO.RESULTADO Combinación (de la jerarquía de estado) Contexto del estado Niño discapacitado Opción 1 Opción 2
APLICACIÓN_RECIBIDA
.ACEPTADA
TRABAJO_ESTÁNDAR
_APLICACIÓN
N REVISIÓN_DE_APLICACIÓN
APLICACIÓN_RECIBIDA
.RECHAZADA
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA .NO_CONTRATADA
REVISIÓN_DE_APLICACIÓN
.APROBADO
TRABAJO_ESTÁNDAR
_APLICACIÓN
N INVITADO_A_ENTREVISTA
REVISIÓN_DE_APLICACIÓN
.FALLIDO
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA .NO_CONTRATADA
INVITADO_A_ENTREVISTA
.ACEPTADO
TRABAJO_ESTÁNDAR
_APLICACIÓN
N ENTREVISTA
INVITADO_A_ENTREVISTA
.RECHAZADO
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA .NO_CONTRATADA
ENTREVISTA
.APROBADA
TRABAJO_ESTÁNDAR
_APLICACIÓN
N HACER_OFERTA BUSCAR_REFERENCIAS
ENTREVISTA.FALLIDA TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA
ENTREVISTA
.CANDIDATE_CANCELLED
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA INVITADO_A_ENTREVISTA
ENTREVISTA
.NO_SHOW
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA
HACER_OFERTA.ACEPTADA TRABAJO_ESTÁNDAR
_APLICACIÓN
N BUSCAR_REFERENCIAS
HACER_OFERTA.RECHAZADA TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA
BUSCAR_REFERENCIAS
.APROBADO
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA .CONTRATADA
BUSCAR_REFERENCIAS
.FALLIDO
TRABAJO_ESTÁNDAR
_APLICACIÓN
N APLICACIÓN_CERRADA
APLICACIÓN_CERRADA
.CONTRATADA
TRABAJO_ESTÁNDAR
_APLICACIÓN
N
APLICACIÓN_CERRADA
.NO_CONTRATADA
TRABAJO_ESTÁNDAR
_APLICACIÓN
N


Debido a que estamos ignorando el contexto por ahora, Contexto de estado y ¿Niño discapacitado? están en gris. También he limitado el número de opciones en este ejemplo a dos por razones de brevedad, aunque en la práctica no hay límite.

Entonces, ¿cómo funciona esto?

Imagine que la entrevista acaba de realizarse y el entrevistador está registrando el resultado. La tabla subyacente que se actualiza es managed_entity_state . Hay dos resultados lógicos:APROBADO y NO APROBADO. Así que el managed_entity_state actual se actualiza con el resultado seleccionado (wf_state_type_outcome_id ). En el modelo de ejemplo, el entrevistador también puede incluir algunas notas sobre la entrevista.

Si el entrevistador selecciona APROBADO, se le presentan dos opciones más:HACER_OFERTA y BUSCAR_REFERENCIAS. Estos son los próximos estados en nuestro flujo de trabajo. Son similares a go to declaraciones en la programación. Para cualquiera de las opciones, se inserta una nueva fila en managed_entity_state , moviendo la solicitud de empleo al siguiente estado en el proceso de flujo de trabajo. El usuario puede establecer una fecha límite para esto ingresando un due_date .

Por otro lado, si el entrevistador selecciona FALLIDO, solo hay una opción:APLICACIÓN_CERRADA. Así que un nuevo managed_entity_state la fila se inserta usando el estado APPLICATION_CLOSED (wf_state_type_state_id ).

Verá que no hay opciones disponibles para el estado APLICACIÓN_CERRADA. Esto significa que se ha llegado al final del proceso de flujo de trabajo.

La tabla de contexto

Miremos la configuración para el proceso de solicitud de empleo técnico para ver qué rol tiene la tabla de contexto juega:


ESTADO.RESULTADO Combinación (de jerarquía de estado) Contexto del estado Niño discapacitado Opción 1 Opción 2
APLICACIÓN_RECIBIDA
.ACEPTADA
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_REVISIÓN
APLICACIÓN_RECIBIDA
.RECHAZADA
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
REVISIÓN_DE_APLICACIÓN
.APROBADO
TRABAJO_TÉCNICO
_APLICACIÓN
N INVITADO_A
_ENTREVISTA
REVISIÓN_DE_APLICACIÓN
.FALLIDO
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
INVITADO_A_ENTREVISTA
.ACEPTADO
TRABAJO_TÉCNICO
_APLICACIÓN
N PRUEBA_APTITUD
INVITADO_A_ENTREVISTA
.RECHAZADO
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
PRUEBA_APTITUD
.APROBADA
TRABAJO_TÉCNICO
_APLICACIÓN
N ENTREVISTA BUSCAR
_REFERENCIAS
PRUEBA_APTITUD
.FALLIDO
TRABAJO_TÉCNICO
_APLICACIÓN
N SOLICITUD
_CERRADA
ENTREVISTA
.APROBADA
TRABAJO_TÉCNICO
_APLICACIÓN
N HACER_OFERTA BUSCAR
_REFERENCIAS
ENTREVISTA
.FALLIDA
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
ENTREVISTA
.CANDIDATE_CANCELLED
TRABAJO_TÉCNICO
_APLICACIÓN
Y - -
ENTREVISTA
.NO_SHOW
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
INVITADO_A
_ENTREVISTA
HACER_OFERTA
.ACEPTADO
TRABAJO_TÉCNICO
_APLICACIÓN
N BUSCAR
_REFERENCIAS
HACER_OFERTA
.RECHAZADA
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
BUSCAR_REFERENCIAS
.APROBADO
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA.ÉXITO
BUSCAR_REFERENCIAS
.FALLIDO
TRABAJO_TÉCNICO
_APLICACIÓN
N APLICACIÓN
_CERRADA
APLICACIÓN_CERRADA
.CONTRATADA
TRABAJO_TÉCNICO
_APLICACIÓN
N
APLICACIÓN_CERRADA
.NO_CONTRATADA
TRABAJO_TÉCNICO
_APLICACIÓN
N INSUFICIENTE
_EXPERIENCIA
MÁS
_CALIFICADO


Aquí el contexto es TECHNICAL_JOB_APPLICATION. ¿Porque es esto importante? Porque nos permite anular los resultados. Recuerde, anteriormente dijimos que podemos reutilizar "ensamblajes" y "subensamblajes" en una estructura de lista de materiales (BOM). Esto es útil cuando definimos algo una vez y lo reutilizamos, pero también puede ser demasiado rígido. ¿Y si no queremos reutilizar todo?

Insertando workflow_state_context entre workflow_state_hierarchy y workflow_state_option , podemos reutilizar y anular los resultados. En este modelo, podemos definir si un resultado está habilitado o deshabilitado para diferentes procesos.

En el ejemplo anterior, la combinación INTERVIEW.CANDIDATE_CANCELLED está deshabilitada. En otras palabras, estamos diciendo que simplemente no es un resultado permisible para las solicitudes de empleo técnico. En consecuencia, el entrevistador no podrá seleccionarlo cuando registre el resultado de una entrevista técnica de trabajo porque nuestra consulta solo selecciona opciones donde workflow_state_context.child_disabled = ‘N’ .

Porque workflow_state_option no es un hijo directo de workflow_state_hierarchy , tenemos que definir un conjunto separado de opciones cada vez que se usa un estado. Pero esta compensación nos permite ajustar con precisión las opciones para cada proceso.

Resultados de calificación

También tenemos la opción de definir calificadores más detallados para los resultados. Hay dos formas de hacerlo:

  1. Puede crear un cuarto nivel en su lista de materiales para definir calificadores en los resultados de la jerarquía. La diligencia debida debe tomarse con este enfoque. Por ejemplo, el resultado FAILED se usa para diferentes estados. ¿Quiere tener los mismos calificadores para diferentes estados FALLIDOS? Tal vez no.
  2. Puedes definir tus calificadores en workflow_state_type pero no atarlos a ninguna jerarquía; son independientes. Luego usa workflow_state_option para enumerar los calificadores para el contexto de resultado específico. Esto es lo que muestra la configuración anterior, donde los calificadores OVER_QUALIFIED e INSUFFICIENT_EXPERIENCE se enumeran como opciones para el resultado APPLICATION_CLOSED.NOT_HIRED.

En cualquier caso, la aplicación debe reconocer que se ha seleccionado un calificador en lugar de un estado o un resultado:workflow_level_type indicará esto y actualizará managed_entity_state.wf_state_type_qual_id con el valor seleccionado.

Algunos datos de configuración de tablas

Es posible que desee ver los datos de configuración subyacentes, tabla por tabla. Aquí tenemos los ids y las type_keys se refieren entre paréntesis. En aras de la brevedad, solo se presentan valores relacionados con el artículo.


tipo_nivel_de_flujo_de_trabajo

id tipo_clave
1 PROCESO
2 ESTADO
3 RESULTADO
4 CALIFICADOR


workflow_state_type

id tipo_clave workflow_level_type_id
1 APLICACIÓN_DE_TRABAJO_ESTÁNDAR 1 (PROCESO)
2 APLICACIÓN_TÉCNICA 1 (PROCESO)
3 ENTREVISTA 2 (ESTADO)
4 APROBADO 3 (RESULTADO)
5 FALLIDO 3 (RESULTADO)
6 HACER_OFERTA 2 (ESTADO)
7 BUSCAR_REFERENCIAS 2 (ESTADO)
8 APLICACIÓN_CERRADA 2 (ESTADO)
9 CONTRATADO 3 (RESULTADO)
10 NO_CONTRATADO 3 (RESULTADO)
11 EXPERIENCIA_INSUFICIENTE 4 (CALIFICADOR)
12 OVER_QUALIFIED 4 (CALIFICADOR)


jerarquía_estado_de_flujo_de_trabajo

id state_type_parent_id state_type_child_id
1 1 (ESTÁNDAR_JOB_APLICACIÓN) 3 (ENTREVISTA)
2 2 (APLICACIÓN_TRABAJO_TÉCNICO) 3 (ENTREVISTA)
3 3 (ENTREVISTA) 4 (APROBADO)
4 3 (ENTREVISTA) 5 (FALLIDO)
5 1 (APLICACIÓN_TRABAJO_ESTÁNDAR) 8 (APLICACIÓN_CERRADA)
6 2 (APLICACIÓN_TRABAJO_TÉCNICO) 8 (APLICACIÓN_CERRADA)
7 8 (APLICACIÓN_CERRADA) 9 (CONTRATADO)
8 8 (APLICACIÓN_CERRADA) 10 (NO_CONTRATADO)


workflow_state_context

id estado_tipo_id estado_hierarchy_id niño_discapacitado
1 1 (ESTANDARD_JOB_ APLICACIÓN) 3 (ENTREVISTA.APROBADA) N
2 1 (ESTANDARD_JOB_ APLICACIÓN) 4 (ENTREVISTA.FALLIDA) N
3 1 (ESTANDARD_JOB_ APLICACIÓN) 7 (APLICACIÓN_CERRADA. CONTRATADO) N
4 1 (ESTANDARD_JOB_ APLICACIÓN) 5 (APLICACIÓN_CERRADA. NO_CONTRATADA) N
5 2 (APLICACIÓN_TÉCNICA) 6 (APLICACIÓN_CERRADA. NO_CONTRATADA) N


opción_estado_de_flujo_de_trabajo

id estado_contexto_id estado_tipo_id
1 1 (STANDARD_JOB_ SOLICITUD. ENTREVISTA. APROBADA) 6 (HACER_OFERTA)
2 1 (STANDARD_JOB_ SOLICITUD. ENTREVISTA. APROBADA) 7 (BUSCAR_REFERENCIAS)
3 2 (STANDARD_JOB_ SOLICITUD. ENTREVISTA. FALLIDA) 8 (APLICACIÓN_CERRADA)
4 5 (APLICACIÓN_TRABAJO_TÉCNICO. APLICACIÓN_CERRADA. NO_CONTRATADO) 11 (EXPERIENCIA_INSUFICIENTE)
5 5 (SOLICITUD DE _TRABAJO_ TÉCNICO. SOLICITUD_CERRADA. NO_CONTRATADO) 12 (OVER_QUALIFIED)


Claramente, configurar esto es bastante complicado. Preferiblemente, debe administrarse a través de una aplicación con una interfaz fácil de usar.

Secuencias alternativas

Notará que varias tablas tienen una columna llamada alt_sequence . Esto se utiliza para ordenar la lista de valores para las diferentes selecciones presentadas al usuario. Por lo general, esto estará en orden descendente según el uso, con las opciones más utilizadas en la parte superior.

Si bien este artículo describió las solicitudes de empleo, el modelo se puede usar para muchos tipos de flujos de trabajo en los que el estado de una entidad debe administrarse a lo largo del tiempo. Alternativamente, el modelo puede servir como patrón para personalizarlo según sus requisitos particulares.