216 lines
8.3 KiB
MySQL
216 lines
8.3 KiB
MySQL
CREATE OR REPLACE PACKAGE BODY CT_MRDS.WORKFLOW_MANAGER
|
|
IS
|
|
|
|
FUNCTION INIT_WORKFLOW(pServiceName IN VARCHAR2, pWorkflowRunId IN VARCHAR2, pWorkflowName in VARCHAR2)
|
|
RETURN NUMBER
|
|
IS
|
|
vWorkflowHistoryKey NUMBER;
|
|
BEGIN
|
|
vWorkflowHistoryKey := A_WORKFLOW_HISTORY_KEY_SEQ.NEXTVAL;
|
|
INSERT INTO CT_MRDS.A_WORKFLOW_HISTORY (SERVICE_NAME, A_WORKFLOW_HISTORY_KEY, ORCHESTRATION_RUN_ID,
|
|
WORKFLOW_NAME, WORKFLOW_START, WORKFLOW_SUCCESSFUL)
|
|
VALUES (pServiceName, vWorkflowHistoryKey, pWorkflowRunId,
|
|
pWorkflowName, SYSTIMESTAMP, vpRunningStatus);
|
|
|
|
return vWorkflowHistoryKey;
|
|
|
|
END INIT_WORKFLOW;
|
|
|
|
|
|
--
|
|
-- Overload without service name for backward compatability, to be cleaned up later
|
|
--
|
|
PROCEDURE FINALISE_WORKFLOW(pWorkflowHistoryKey IN NUMBER, pWorkflowStatus IN VARCHAR2)
|
|
IS
|
|
BEGIN
|
|
FINALISE_WORKFLOW(pWorkflowHistoryKey, NULL, pWorkflowStatus);
|
|
END;
|
|
|
|
PROCEDURE FINALISE_WORKFLOW(pWorkflowHistoryKey IN NUMBER, pServiceName IN VARCHAR2, pWorkflowStatus IN VARCHAR2)
|
|
IS
|
|
BEGIN
|
|
UPDATE CT_MRDS.A_WORKFLOW_HISTORY SET WORKFLOW_SUCCESSFUL = pWorkflowStatus,
|
|
WORKFLOW_END = SYSTIMESTAMP
|
|
WHERE A_WORKFLOW_HISTORY_KEY = pWorkflowHistoryKey
|
|
AND SERVICE_NAME = NVL(pServiceName,SERVICE_NAME);
|
|
END FINALISE_WORKFLOW;
|
|
|
|
|
|
FUNCTION INIT_TASK(pTaskRunId IN VARCHAR2, pTaskName in VARCHAR2, pWorkflowHistoryKey IN NUMBER)
|
|
RETURN NUMBER
|
|
IS
|
|
vTaskHistoryKey NUMBER;
|
|
BEGIN
|
|
vTaskHistoryKey := A_TASK_HISTORY_KEY_SEQ.NEXTVAL;
|
|
INSERT INTO CT_MRDS.A_TASK_HISTORY (A_TASK_HISTORY_KEY, TASK_RUN_ID, A_WORKFLOW_HISTORY_KEY,
|
|
TASK_NAME, TASK_START, TASK_SUCCESSFUL, SERVICE_NAME)
|
|
VALUES (vTaskHistoryKey, pTaskRunId, pWorkflowHistoryKey,
|
|
pTaskName, SYSTIMESTAMP, vpRunningStatus, 'ODS');
|
|
|
|
return vTaskHistoryKey;
|
|
|
|
END INIT_TASK;
|
|
|
|
|
|
PROCEDURE FINALISE_TASK(pTaskHistoryKey IN NUMBER, pTaskStatus IN VARCHAR2)
|
|
IS
|
|
BEGIN
|
|
UPDATE CT_MRDS.A_TASK_HISTORY SET TASK_SUCCESSFUL = pTaskStatus,
|
|
TASK_END = SYSTIMESTAMP
|
|
WHERE A_TASK_HISTORY_KEY = pTaskHistoryKey;
|
|
END FINALISE_TASK;
|
|
|
|
-- Internal helper function without COMMIT for use within other functions
|
|
FUNCTION STORE_TASK_SOURCE_INFO_INTERNAL(pTaskHistoryKey IN NUMBER, pSourceName IN VARCHAR2, pNumRows IN NUMBER)
|
|
RETURN NUMBER
|
|
IS
|
|
vTaskHistorySourceKey NUMBER;
|
|
BEGIN
|
|
vTaskHistorySourceKey := A_TASK_HISTORY_SOURCE_KEY_SEQ.NEXTVAL;
|
|
INSERT INTO CT_MRDS.A_TASK_HISTORY_SOURCE (A_TASK_HISTORY_SOURCE_KEY, A_TASK_HISTORY_KEY,
|
|
SOURCE_NAME, ROW_COUNT)
|
|
VALUES (vTaskHistorySourceKey, pTaskHistoryKey,
|
|
pSourceName, pNumRows);
|
|
RETURN vTaskHistorySourceKey;
|
|
END;
|
|
|
|
FUNCTION STORE_TASK_SOURCE_INFO(pTaskHistoryKey IN NUMBER, pSourceName IN VARCHAR2, pNumRows IN NUMBER)
|
|
RETURN NUMBER
|
|
IS
|
|
vTaskHistorySourceKey NUMBER;
|
|
BEGIN
|
|
vTaskHistorySourceKey := STORE_TASK_SOURCE_INFO_INTERNAL(pTaskHistoryKey, pSourceName, pNumRows);
|
|
COMMIT;
|
|
RETURN vTaskHistorySourceKey;
|
|
END;
|
|
|
|
-- Internal helper function without COMMIT for use within other functions
|
|
FUNCTION STORE_TASK_TARGET_INFO_INTERNAL(pTaskHistoryKey IN NUMBER, pSourceName IN VARCHAR2,
|
|
pNumRowsApplied IN NUMBER, pNumRowsRejected IN NUMBER,
|
|
pLoadSuccessful IN VARCHAR2, pServiceName IN VARCHAR2)
|
|
RETURN NUMBER
|
|
IS
|
|
vTaskHistoryTargetKey NUMBER;
|
|
BEGIN
|
|
vTaskHistoryTargetKey := A_TASK_HISTORY_TARGET_KEY_SEQ.NEXTVAL;
|
|
INSERT INTO CT_MRDS.A_TASK_HISTORY_TARGET (A_TASK_HISTORY_TARGET_KEY, A_TASK_HISTORY_KEY,
|
|
TARGET_NAME, ROW_COUNT_APPLIED, ROW_COUNT_REJECTED,
|
|
LOAD_SUCCESSFUL, SERVICE_NAME)
|
|
VALUES (vTaskHistoryTargetKey, pTaskHistoryKey,
|
|
pSourceName, pNumRowsApplied, pNumRowsRejected,
|
|
pLoadSuccessful, pServiceName);
|
|
RETURN vTaskHistoryTargetKey;
|
|
END;
|
|
|
|
FUNCTION STORE_TASK_TARGET_INFO(pTaskHistoryKey IN NUMBER, pSourceName IN VARCHAR2,
|
|
pNumRowsApplied IN NUMBER, pNumRowsRejected IN NUMBER,
|
|
pLoadSuccessful IN VARCHAR2, pServiceName IN VARCHAR2)
|
|
RETURN NUMBER
|
|
IS
|
|
vTaskHistoryTargetKey NUMBER;
|
|
BEGIN
|
|
vTaskHistoryTargetKey := STORE_TASK_TARGET_INFO_INTERNAL(
|
|
pTaskHistoryKey, pSourceName, pNumRowsApplied,
|
|
pNumRowsRejected, pLoadSuccessful, pServiceName
|
|
);
|
|
COMMIT;
|
|
RETURN vTaskHistoryTargetKey;
|
|
END;
|
|
|
|
FUNCTION FINALISE_TASK_WITH_TARGET_INFO(pTaskHistoryKey IN NUMBER, pTaskStatus IN VARCHAR2,
|
|
pTargetName IN VARCHAR2, pNumRowsApplied IN NUMBER,
|
|
pNumRowsRejected IN NUMBER, pLoadSuccessful IN VARCHAR2,
|
|
pServiceName IN VARCHAR2)
|
|
RETURN NUMBER
|
|
IS
|
|
vTaskHistoryTargetKey NUMBER;
|
|
BEGIN
|
|
-- Store target information using internal function (without COMMIT)
|
|
vTaskHistoryTargetKey := STORE_TASK_TARGET_INFO_INTERNAL(
|
|
pTaskHistoryKey => pTaskHistoryKey,
|
|
pSourceName => pTargetName,
|
|
pNumRowsApplied => pNumRowsApplied,
|
|
pNumRowsRejected => pNumRowsRejected,
|
|
pLoadSuccessful => pLoadSuccessful,
|
|
pServiceName => pServiceName
|
|
);
|
|
|
|
-- Finalize the task using existing procedure (no COMMIT in procedure)
|
|
FINALISE_TASK(pTaskHistoryKey, pTaskStatus);
|
|
|
|
-- Single COMMIT for the entire atomic operation
|
|
COMMIT;
|
|
|
|
RETURN vTaskHistoryTargetKey;
|
|
END;
|
|
|
|
PROCEDURE SET_WORKFLOW_PROPERTY(
|
|
pWorkflowHistoryKey IN NUMBER
|
|
,pServiceName IN VARCHAR2
|
|
,pProperty IN VARCHAR2
|
|
,pValue IN VARCHAR2
|
|
) IS
|
|
BEGIN
|
|
INSERT INTO CT_MRDS.A_WORKFLOW_HISTORY_PROPERTY (A_WORKFLOW_HISTORY_KEY, SERVICE_NAME, PROPERTY, VALUE)
|
|
VALUES (pWorkflowHistoryKey, pServiceName, pProperty, pValue);
|
|
END;
|
|
|
|
FUNCTION GET_WORKFLOW_PROPERTY(
|
|
pWorkflowHistoryKey IN NUMBER
|
|
,pServiceName IN VARCHAR2
|
|
,pProperty IN VARCHAR2
|
|
) RETURN VARCHAR2
|
|
IS
|
|
vValue CT_MRDS.A_WORKFLOW_HISTORY_PROPERTY.VALUE%TYPE;
|
|
BEGIN
|
|
SELECT VALUE
|
|
INTO vValue
|
|
FROM CT_MRDS.A_WORKFLOW_HISTORY_PROPERTY
|
|
WHERE A_WORKFLOW_HISTORY_KEY = pWorkflowHistoryKey
|
|
AND SERVICE_NAME = pServiceName
|
|
AND PROPERTY = pProperty;
|
|
|
|
RETURN vValue;
|
|
END;
|
|
|
|
----------------------------------------------------------------------------------------------------
|
|
-- PACKAGE VERSION MANAGEMENT FUNCTIONS IMPLEMENTATION
|
|
----------------------------------------------------------------------------------------------------
|
|
|
|
FUNCTION GET_VERSION
|
|
RETURN VARCHAR2
|
|
IS
|
|
BEGIN
|
|
RETURN PACKAGE_VERSION;
|
|
END GET_VERSION;
|
|
|
|
----------------------------------------------------------------------------------------------------
|
|
|
|
FUNCTION GET_BUILD_INFO
|
|
RETURN VARCHAR2
|
|
IS
|
|
BEGIN
|
|
RETURN ENV_MANAGER.GET_PACKAGE_VERSION_INFO(
|
|
pPackageName => 'WORKFLOW_MANAGER',
|
|
pVersion => PACKAGE_VERSION,
|
|
pBuildDate => PACKAGE_BUILD_DATE,
|
|
pAuthor => PACKAGE_AUTHOR
|
|
);
|
|
END GET_BUILD_INFO;
|
|
|
|
----------------------------------------------------------------------------------------------------
|
|
|
|
FUNCTION GET_VERSION_HISTORY
|
|
RETURN VARCHAR2
|
|
IS
|
|
BEGIN
|
|
RETURN ENV_MANAGER.FORMAT_VERSION_HISTORY(
|
|
pPackageName => 'WORKFLOW_MANAGER',
|
|
pVersionHistory => VERSION_HISTORY
|
|
);
|
|
END GET_VERSION_HISTORY;
|
|
|
|
----------------------------------------------------------------------------------------------------
|
|
|
|
END WORKFLOW_MANAGER;
|
|
/ |