Manual para correr script “SCRIPT Retorno de Pasos CF Workflow”
- Cargamos el script que se encuentra dentro de Monihelp en la carpeta llamada Scripts,” Script Retorno de Pasos”
- Se copia todo el contenido del Script y se pega en SQL MANAGER STUDIO, conectado a la BD de CR o ES, con las credenciales de cada uno (Se muestra en segunda imagen).
Ubicamos la BD
CR: sqlmi-monifai-prod-01.99e9c9b5b5ae.database.windows.net
ES: sqlmi-monifai-prod-02.99e9c9b5b5ae.database.windows.net
- Una vez copiado el script se debe hacer en pasos.
3.1 PASO 1: BUSCAR EL IDSOLICITUD DE CREDITO:
--PASO#1 BUSCAR EL IDSOLICITUD DE CREDITO
SELECT ES.Descripcion ESTADOSOLICITUD, SES.Descripcion SUBESTADOSOLICITUD, SC.* FROM CF_ORIGINATION.dbo.t_oritSolicitudLineaCredito SC
INNER JOIN CF_ORIGINATION.dbo.t_oricEstadoSolicitud ES ON ES.IdT_oricEstadoSolicitud = SC.IdF_oricEstadoSolicitud
INNER JOIN CF_ORIGINATION.dbo.t_oricSubEstadoSolicitud SES ON SES.IdT_oricSubEstadoSolicitud = SC.IdF_oricSubEstadoSolicitud
WHERE SC.NumeroIdentificacion = '155813674222[JV1] ' –ACTUALIZAR
Nota: Una vez que los datos sean devueltos en el SQL vamos a buscar el ID de la solicitud de crédito en este caso el dato estará ubicado en la tercera columna llamada: IdT_oritSolicitudLineaCredito = 25733[JV2]
Se mostrará en la BD de esta manera:
3.2 PASO 2: Filtrar en el campo de VariableState el IDSOLICITUD DE CREDITO, para obtener el FlowInstanceId, que se utilizara para la validación de etapas.
--PASO#2 Filtrar en el campo de VariableState el IDSOLICITUD DE CREDITO, para obtener el FlowInstanceId, que se utilizara para la validacion de etapas.
SELECT FlowInstanceId,*
FROM CCMV_Flows..FlowInstance WITH (NOLOCK)
WHERE VariableState LIKE '%25733%[JV3] ' –ACTUALIZAR
ORDER BY Started DESC;
Nota: Una vez que los datos sean devueltos en el SQL vamos tomaremos en dato de la primera columna FlowInstanceId cuyo caso será el 32123[JV4]
Se mostrará en la BD de esta manera:
3.3 PASO#3 Colocar el FlowInstanceId en la variable @FlowInstanceId
--Variables
DECLARE @FlowInstanceId BIGINT = 32123[JV5] ; --ACTUALIZAR
DECLARE @FlowStepInstanceId BIGINT = 0;
DECLARE @BeforeFlowStepInstanceId BIGINT = 0;
DECLARE @procesar BIT =0;
DECLARE @procesarUpdate BIT = 1;[JV6]
/*1. Obtener el último paso del flujo. Step actual*/
/*Tomar en cuenta el primero registro el valor FlowStepInstanceId, para se agregado a los delete */
/*Tomar en cuenta el segundo registro el valor FlowStepInstanceId, para ejecutar el delete y que el paso se retorne correctamente */
IF (@procesar = 0)
BEGIN
SELECT Step.Name,
StepIntance.FlowInstanceId,
StepIntance.Registered,
FlowStepInstanceId,
StepIntance.Status
FROM CCMV_Flows..FlowStepInstance AS StepIntance
INNER JOIN CCMV_Flows..FlowStep AS Step
ON Step.FlowStepId = StepIntance.FlowStepId
WHERE FlowInstanceId = @FlowInstanceId
ORDER BY StepIntance.FlowStepInstanceId DESC;
END;
ELSE
BEGIN
SELECT TOP 1
@FlowStepInstanceId = FlowStepInstanceId
FROM CCMV_Flows..FlowStepInstance AS StepIntance
WHERE FlowInstanceId = @FlowInstanceId
ORDER BY StepIntance.FlowStepInstanceId DESC;
--en ocaciones se queda sin poder bajar el paso del flujo se tuvo que aplicar solo el delete y luego la corrida completa del query
DELETE CCMV_Flows..FlowStepInstanceUser_History
WHERE FlowStepInstanceId = @FlowStepInstanceId;
DELETE CCMV_Flows..FlowStepInstanceUser
WHERE FlowStepInstanceId = @FlowStepInstanceId;
DELETE CCMV_Flows..FlowInstanceControl
WHERE FlowStepInstanceId = @FlowStepInstanceId;
DELETE CCMV_Flows..FlowStepInstance
WHERE FlowStepInstanceId = @FlowStepInstanceId;
SELECT TOP 1
@BeforeFlowStepInstanceId = FlowStepInstanceId
FROM CCMV_Flows..FlowStepInstance AS StepIntance
WHERE FlowInstanceId = @FlowInstanceId
ORDER BY StepIntance.FlowStepInstanceId DESC;
IF (@procesarUpdate = 1)
BEGIN
UPDATE CCMV_Flows.dbo.FlowStepInstance
SET [Status] = 0
WHERE FlowStepInstanceId = @BeforeFlowStepInstanceId
AND FlowInstanceId = @FlowInstanceId;
UPDATE CCMV_Flows.dbo.FlowInstance
SET [Status] = 1
WHERE FlowInstanceId = @FlowInstanceId;
END;
--COMMIT
--ROLLBACK
SELECT TOP 1
BeforeFlowStepInstanceId = FlowStepInstanceId
FROM CCMV_Flows..FlowStepInstance AS StepIntance
WHERE FlowInstanceId = @FlowInstanceId
ORDER BY StepIntance.FlowStepInstanceId DESC;
SELECT *
FROM CCMV_Flows.dbo.FlowStepInstance
WHERE FlowStepInstanceId = @BeforeFlowStepInstanceId
AND FlowInstanceId = @FlowInstanceId;
Al terminar el último paso ya se debería consultar en el WORKFLOW INBOX que el paso se haya devuelto, esto lo confirma el usuario.
¿Le fue útil este artículo?
¡Qué bueno!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Comentarios enviados
Agradecemos su iniciativa, e intentaremos corregir el artículo