Estructura de Datos
Estructura de un Proceso
Un proceso contiene toda la información sobre como funciona un proceso en Simple. Sus reglas, flujo, formularios, etc.
proceso
Esta tabla almacena la info principal perteneciente a un proceso creado en Simple
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador del proceso |
| nombre | varchar(128) | Nombre del proceso |
| width | varchar(8) | Ancho del canvas donde esta dibujado el modelo del proceso |
| height | varchar(8) | Alto del canvas donde esta dibujado el modelo del proceso |
| cuenta_id | int | Identificador de la cuenta a la que pertenece este proceso |
tarea
Un proceso esta compuesto por varias tareas. Una tarea equivale a un conjunto de acciones que ejecutara un usuario dado dentro del proceso.
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador de la tarea |
| identificador | varchar(32) | Identificador que utiliza la libreria JS que dibuja el proceso para identificar cada tarea |
| nombre | varchar(128) | Nombre de la tarea |
| inicial | bool | Indica si es tarea inicial del proceso |
| posx | int | Posición de coordenada x dentro del canvas de dibujo del proceso |
| posy | int | Posición de coordenada y dentro del canvas de dibujo del proceso |
| asignacion | enum | Forma de asignación de usuarios a esta tarea: ciclica, manual, auto-servicio y usuario |
| asignacion_usuario | varchar(128) | En caso de que la asignacion sea a usuario, aquí se indica el id del usuario a asignar o la variable SIMPLE que contiene este id |
| asignacion_usuario_notificar | bool | Indica si se debe notificar via email al usuario asignado a esta tarea |
| proceso_id | int | Identificador del proceso al que pertenece esta tarea |
| almacenar_usuario | bool | Indica si se desea almacenar el id del usuario que ejecuto esta tarea |
| almacenar_usuario_variable | varchar(128) | Si se desea almacenar el usuario que ejecuto esta tarea, aquí se indica como se debe llamar la variable SIMPLE que almacena ese id |
| acceso_modo | enum | Quienes tienen permiso para ejecutar esta tarea: grupos_usuarios, publico, registrados y claveunica |
| activacion | enum | Modo de activación de esta tarea: si, no o entre_fechas |
| activacion_inicio | date | Si la activación es entre fechas, aquí se indica la fecha inicial |
| activacion_fin | date | Si la activación es entre fechas, aquí se indica la fecha final |
| vencimiento | bool | Indica si esta tarea tiene un periodo de vencimiento |
| vencimiento_valor | int | Cantidad de tiempo en la que la tarea se vence |
| vencimiento_unidad | enum | Unidad de tiempo en que se mide el vencimiento: D (días), W (semanas) o M (meses) |
| vencimiento_habiles | bool | Indica si se deben considerar solamente los días hábiles |
| vencimiento_notificar | bool | Notificar via email cuando la tarea esté cercana a vencer |
| vencimiento_notificar_email | varchar(255) | Email al que se debe notificar cuando la tarea este próxima a vencer |
| vencimiento_notificar_dias | int | Cantidad de (dias,semanas,meses) para que se cumpla el vencimiento de la tarea |
| grupos_usuarios | text | Listado de grupos de usuarios, separados por coma, los cuales tienen permisos para ejecutar esta tarea |
| paso_confirmacion | bool | Indica si la tarea debe incluir al final un último paso que confirme si uno desea avanzar a la siguiente tarea |
| previsualizacion | text | HTML que permite previsualizar el contenido de una tarea antes de ejecutarla |
paso
Una tarea esta compuesta por una serie de pasos que el usuario ejecuta. Esta tabla almacena información sobre estos pasos a ejecutar.
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador del paso |
| orden | int | En que posición se ejecuta este paso |
| modo | enum | En que modo se ejecuta el paso: edicion o visualizacion |
| regla | varchar(512) | Condición para que se ejecute este paso |
| formulario_id | int | Identificador del formulario que se debe ejecutar en este paso |
| tarea_id | int | Identificador de la tarea a la que pertenece este paso |
formulario
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador del formulario |
| nombre | varchar(128) | Nombre del formulario |
| proceso_id | int | Identificador del proceso al que perteneces este formulario |
campo
Esta tabla almacena la información de campos correspondientes a un formulario.
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador del campo |
| nombre | varchar(32) | Nombre de la variable con la cual serán almacenados los datos ingresados en este campo. |
| readonly | bool | Indica si el campo es de solo lectura |
| valor_default | text | Texto con que se llena el campo en caso de no tener data |
| posicion | int | Posición del campo dentro del formulario |
| tipo | varchar(32) | Tipo de campo: Puede ser text, file, radio, checkbox, textarea, select, etc. |
| formulario_id | int | Identificador del formulario al cual pertenece el campo |
| etiqueta | text | Texto que acompaña al campo explicando que es el campo. (Es el label del campo) |
| validacion | varchar(128) | Reglas de validación que se aplicarán al campo dado un input de usuario. Las reglas van separadas de el signo " |
| ayuda | text | Ayuda contextual sobre el llenado del campo |
| dependiente_tipo | enum | Solo aplica si es un campo en el cual su visualización depende de otro campo. Indica que tipo de comparación hacer para encontrar el match con los valores del otro campo: string o regex |
| dependiente_campo | varchar(64) | Solo aplica si es un campo en el cual su visualización depende de otro campo. Indica en que campo hacer la comparación de valores. |
| dependiente_valor | varchar(256) | Solo aplica si es un campo en el cual su visualización depende de otro campo. Indica el valor con el cual se debe hacer la comparación |
| dependiente_relacion | enum | Solo aplica si es un campo en el cual su visualización depende de otro campo. Indica que tipo de comparacion hacer: igualdad (==) o desigualdad (!=) |
| datos | text | Estructura JSON que almacena los datos adicionales para desplegar un campo. Por ejemplo, en el caso de un select, aquí estaría el listado de opciones dentro del select |
| documento_id | int | Si este campo es de tipo documento, este identificador corresponde al documento a desplegar en este campo |
| extra | text | Estructura JSON que contiene configuración adicional que pudiera requerir este campo. |
accion
Esta tabla almacena las acciones y sus configuraciones que un proceso ejecutara en los momentos correspondientes. Estas acciones pueden ser de distintos tipos: webservices, envios de correo, etc.
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador de la acción |
| nombre | varchar(128) | Nombre de la acción |
| extra | text | JSON que incluye configuración adicional |
| proceso_id | int | Identificador del proceso al que pertenece esta acción |
Estructura de un trámite
Un trámite incluye información de un proceso realizado. Cada vez que se inicia un proceso, se crea un tramite nuevo que almacena la información sobre esa ejecución.
tramite
Se almacena información de un trámite.
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador del trámite |
| proceso_id | int | Identificador del proceso que corresponde a este trámite |
| pendiente | bool | Indica si este trámite ya finalizó o sigue pendiente |
| created_at | datetime | Fecha y hora de creación de este trámite |
| updated_at | datetime | Fecha y hora de última modificación de este trámite |
| ended_at | datetime | Fecha y hora del fin de este trámite |
etapa
Cada vez que una avanza de una tarea a la siguiente de un proceso, se genera una nueva etapa en el trámite
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador de la etapa |
| tarea_id | int | Tarea correspondiente a esta etapa |
| usuario_id | int | Identificador del usuario que esta asignado a esta etapa. Si aun no hay un usuario asignado, el campo queda en NULL |
| pendiente | bool | Indica si esta etapa ya finalizó o sigue pendiente |
| etapa_ancestro_split_id | int | Identificador de la etapa anterior en el caso se que se haya bifurcado el proceso en varios flujos. Sirve para saber cuando el flujo se debe volver a unir en uno solo |
| vencimiento_at | date | Fecha en que esta etapa vence |
| tramite_id | int | Identificador del trámite al que pertenece esta etapa |
| created_at | datetime | Fecha y hora de creación de esta etapa |
| updated_at | datetime | Fecha y hora de última modificación de esta etapa |
| ended_at | datetime | Fecha y hora del fin de esta etapa |
dato_seguimiento
Aquí se almacenan las variables Simple y su contenidos
| Columna | Tipo | Descripción |
|---|---|---|
| id | int | Identificador de la etapa |
| nombre | varchar(128) | Nombre de la variable |
| valor | text | JSON con el contenido de la variable |
| etapa_id | int | Identificador de la etapa donde se modificó la variable |