Author: Jéimar Arias Vélez jeimararias@yahoo.com
Este proyecto corresponde a el procesamiento de un Flujo de Solicitudes. Servicio de captura y procesamiento de datos para cualquier entidad
-
Framework .Net core
-
Microsoft SQL SERVER
-
Entity Framework Core
- Cargar el proyecto en Visual Studio
- Modificar el archivo appsetting.json. En conection string: Server=[SERVIDOR DE SQL]
- Ejecutar el Migration de creación de la base de datos
- Verificar que la base de datos este creada con sus tablas respectivas.
- Correr el script por SSMS anexo (ConfiguracionAdicional.sql)
El script, crea unas Llaves foráneas y vistas, que no alcance a realizar mediante Entity Framework
Este es el modelo Entidad-Relación de SOLICITUDES:
Existen 5 tablas de parámetros:
Flujo: Se pueden crear n Flujos Paso: Se pueden crear n Pasos Campo: Se pueden crear n Campos FlujoPaso: Permite asociar Pasos definidos en Paso a Flujos definidos en Flujo PasoCampo: Permite asociar Campos definidos en Campo a Pasos definidos en Paso User: Se pueden crear n Usuarios (Tabla muy basica)
Existen 3 tablas de del proceso:
Solicitud: Es un requerimiento de usuario para procesar su solicitud. Cada Solicitud está asociada a un tipo de Flujo. SolicitudData: Corresponde a los datos capturados para cada solicitud para los Campos definido por Flujo y Pasos. SolicitudControl: Tabla donde se registran los resultados de cada paso de cada una de las Solicitudes. Log resultado del proceso de la Solicitud
Swagger provee los diferentes métodos para crear los Parámetros para los Flujos: 0. Crear Usuario (api/User)
- Crear Flujos (api/Flujo), Pasos (api/Paso) y Campos (api/Campo)
- Asociar Pasos a los Flujos (api/FlujoPaso)
- Asociar Campos a los Pasos (api/PasoCampo)
- Crear Solicitudes (api/Solicitud)
- Cargar campos (datos) asociados a la solicitud por cada paso del flujo. (api/SolicitudData)
- Procesar solicitud: ejecución: api/Solicitud/{n}/Procesar donde n: Id de la solicitud
Al ejecutar el Proceso, este procesa en forma asincrona los pasos cuya Prioridad sea la misma. La Prioridad es un número secuencial que inicia desde 0 hasta n. Ej: Si los pasos 1 y 2 se pueden procesar paralelos, se configuran con prioridad 0, luego el paso3 con priorid 1, luego paso 4, 5, 6 con prioridad 2. En este ejemplo, se procesan los pasos 1 y 2 asincroniamente, para continuar con los pasos de la prioridad 1, espera a que hayan terminado los hilos de la prioridad cero, y asi sucesivamente.
Se Retorna el Json de la solicitud, cuya variable IDEstado tendrá 2 valores:
3: Procesado OK 9: Proceso incompleto. Alguno de los Pasos esta incompleto
El estdso de los pasos, no alcance a mostrarlo pero queda un registro por cada paso y su estado del Flujo de la Solicitud: Se puede visualizar en la base de datos mediante la sentencia siguiente:
Select * from SolicitudControl where SolicitudId = {n}