Init
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Installing WORKFLOW_MANAGER Package Specification
|
||||
prompt MARS-1011: Update WORKFLOW_MANAGER v1.7.1
|
||||
prompt ========================================
|
||||
|
||||
@@WORKFLOW_MANAGER_SPEC.sql
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package Specification installed successfully
|
||||
prompt ========================================
|
||||
@@ -0,0 +1,14 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Installing WORKFLOW_MANAGER Package Body
|
||||
prompt MARS-1011: Update WORKFLOW_MANAGER v1.7.1
|
||||
prompt Adding SERVICE_NAME='ODS' to INIT_TASK function
|
||||
prompt ========================================
|
||||
|
||||
@@WORKFLOW_MANAGER_BODY.sql
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package Body installed successfully
|
||||
prompt ========================================
|
||||
@@ -0,0 +1,24 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Verifying WORKFLOW_MANAGER Package Installation
|
||||
prompt MARS-1011: Update WORKFLOW_MANAGER v1.7.1
|
||||
prompt ========================================
|
||||
|
||||
prompt Checking package compilation status...
|
||||
SELECT object_name, object_type, status
|
||||
FROM user_objects
|
||||
WHERE object_name = 'WORKFLOW_MANAGER'
|
||||
AND object_type IN ('PACKAGE', 'PACKAGE BODY');
|
||||
|
||||
prompt Checking package version...
|
||||
SELECT CT_MRDS.WORKFLOW_MANAGER.GET_VERSION() AS VERSION FROM DUAL;
|
||||
|
||||
prompt Checking build info...
|
||||
SELECT CT_MRDS.WORKFLOW_MANAGER.GET_BUILD_INFO() AS BUILD_INFO FROM DUAL;
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package verification completed
|
||||
prompt Expected version: 1.7.1
|
||||
prompt ========================================
|
||||
@@ -0,0 +1,32 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Tracking WORKFLOW_MANAGER Package Version
|
||||
prompt MARS-1011: Record version 1.7.1 in tracking system
|
||||
prompt ========================================
|
||||
|
||||
BEGIN
|
||||
DBMS_OUTPUT.PUT_LINE('Tracking WORKFLOW_MANAGER version...');
|
||||
CT_MRDS.ENV_MANAGER.TRACK_PACKAGE_VERSION(
|
||||
pPackageOwner => 'CT_MRDS',
|
||||
pPackageName => 'WORKFLOW_MANAGER',
|
||||
pPackageVersion => CT_MRDS.WORKFLOW_MANAGER.PACKAGE_VERSION,
|
||||
pPackageBuildDate => CT_MRDS.WORKFLOW_MANAGER.PACKAGE_BUILD_DATE,
|
||||
pPackageAuthor => CT_MRDS.WORKFLOW_MANAGER.PACKAGE_AUTHOR
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE('WORKFLOW_MANAGER version tracked successfully.');
|
||||
|
||||
-- Display current version info
|
||||
DBMS_OUTPUT.PUT_LINE('Current Version: ' || CT_MRDS.WORKFLOW_MANAGER.GET_VERSION());
|
||||
DBMS_OUTPUT.PUT_LINE('Build Info: ' || CT_MRDS.WORKFLOW_MANAGER.GET_BUILD_INFO());
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('ERROR tracking WORKFLOW_MANAGER: ' || SQLERRM);
|
||||
RAISE;
|
||||
END;
|
||||
/
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package version tracking completed
|
||||
prompt ========================================
|
||||
@@ -0,0 +1,201 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Rollback: WORKFLOW_MANAGER Package Body
|
||||
prompt MARS-1011: Rollback to version 1.7.0 (Remove SERVICE_NAME from INIT_TASK)
|
||||
prompt ========================================
|
||||
|
||||
-- Create package body with INIT_TASK without SERVICE_NAME (rollback to v1.7.0 behavior)
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
-- ROLLBACK: INIT_TASK without SERVICE_NAME (version 1.7.0 behavior)
|
||||
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)
|
||||
VALUES (vTaskHistoryKey, pTaskRunId, pWorkflowHistoryKey,
|
||||
pTaskName, SYSTIMESTAMP, vpRunningStatus);
|
||||
|
||||
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;
|
||||
|
||||
-- Other functions remain the same as current version
|
||||
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;
|
||||
|
||||
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
|
||||
vTaskHistoryTargetKey := STORE_TASK_TARGET_INFO_INTERNAL(
|
||||
pTaskHistoryKey => pTaskHistoryKey,
|
||||
pSourceName => pTargetName,
|
||||
pNumRowsApplied => pNumRowsApplied,
|
||||
pNumRowsRejected => pNumRowsRejected,
|
||||
pLoadSuccessful => pLoadSuccessful,
|
||||
pServiceName => pServiceName
|
||||
);
|
||||
|
||||
FINALISE_TASK(pTaskHistoryKey, pTaskStatus);
|
||||
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;
|
||||
|
||||
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;
|
||||
/
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package Body rolled back to v1.7.0
|
||||
prompt INIT_TASK function no longer includes SERVICE_NAME
|
||||
prompt ========================================
|
||||
@@ -0,0 +1,78 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Rollback: WORKFLOW_MANAGER Package Specification
|
||||
prompt MARS-1011: Rollback to version 1.7.0 (2025-10-31)
|
||||
prompt ========================================
|
||||
|
||||
-- Rollback WORKFLOW_MANAGER specification to version 1.7.0
|
||||
CREATE OR REPLACE PACKAGE CT_MRDS.WORKFLOW_MANAGER
|
||||
IS
|
||||
|
||||
-- Package Version Information (Semantic Versioning: MAJOR.MINOR.PATCH)
|
||||
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '1.7.0';
|
||||
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2025-10-31 16:00:00';
|
||||
PACKAGE_AUTHOR CONSTANT VARCHAR2(100) := 'Grzegorz Michalski';
|
||||
|
||||
-- Version History (Latest changes first)
|
||||
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
|
||||
'1.7.0 (2025-10-31): Added FINALISE_TASK_WITH_TARGET_INFO function for atomic task completion with target info' || CHR(13)||CHR(10) ||
|
||||
'1.6.0 (2025-10-31): Converted STORE_TASK_SOURCE_INFO and STORE_TASK_TARGET_INFO from procedures to functions returning sequence keys' || CHR(13)||CHR(10) ||
|
||||
'1.5.0 (2025-10-22): Added package versioning system using centralized ENV_MANAGER functions' || CHR(13)||CHR(10) ||
|
||||
'1.2.0 (2025-10-05): Added workflow property management (SET/GET_WORKFLOW_PROPERTY)' || CHR(13)||CHR(10) ||
|
||||
'1.0.0 (2025-09-10): Initial release with workflow and task lifecycle management';
|
||||
|
||||
-- Line break constant for consistent CRLF formatting across Windows environments
|
||||
cgBL CONSTANT VARCHAR2(2) := CHR(13)||CHR(10);
|
||||
|
||||
FUNCTION INIT_WORKFLOW(pServiceName IN VARCHAR2, pWorkflowRunId IN VARCHAR2, pWorkflowName in VARCHAR2)
|
||||
RETURN NUMBER;
|
||||
|
||||
PROCEDURE FINALISE_WORKFLOW(pWorkflowHistoryKey IN NUMBER, pWorkflowStatus IN VARCHAR2);
|
||||
PROCEDURE FINALISE_WORKFLOW(pWorkflowHistoryKey IN NUMBER, pServiceName IN VARCHAR2, pWorkflowStatus IN VARCHAR2);
|
||||
|
||||
FUNCTION INIT_TASK(pTaskRunId IN VARCHAR2, pTaskName in VARCHAR2, pWorkflowHistoryKey IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
PROCEDURE FINALISE_TASK(pTaskHistoryKey IN NUMBER, pTaskStatus IN VARCHAR2);
|
||||
|
||||
FUNCTION STORE_TASK_SOURCE_INFO(pTaskHistoryKey IN NUMBER, pSourceName IN VARCHAR2, pNumRows IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
vpRunningStatus CT_MRDS.A_WORKFLOW_HISTORY.WORKFLOW_SUCCESSFUL%TYPE := 'R';
|
||||
|
||||
PROCEDURE SET_WORKFLOW_PROPERTY(
|
||||
pWorkflowHistoryKey IN NUMBER
|
||||
,pServiceName IN VARCHAR2
|
||||
,pProperty IN VARCHAR2
|
||||
,pValue IN VARCHAR2
|
||||
);
|
||||
|
||||
FUNCTION GET_WORKFLOW_PROPERTY(
|
||||
pWorkflowHistoryKey IN NUMBER
|
||||
,pServiceName IN VARCHAR2
|
||||
,pProperty IN VARCHAR2)
|
||||
RETURN VARCHAR2;
|
||||
|
||||
FUNCTION GET_VERSION RETURN VARCHAR2;
|
||||
FUNCTION GET_BUILD_INFO RETURN VARCHAR2;
|
||||
FUNCTION GET_VERSION_HISTORY RETURN VARCHAR2;
|
||||
|
||||
END WORKFLOW_MANAGER;
|
||||
/
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package Specification rolled back to v1.7.0
|
||||
prompt ========================================
|
||||
@@ -0,0 +1,36 @@
|
||||
SET SERVEROUTPUT ON;
|
||||
SET ECHO ON;
|
||||
|
||||
prompt ========================================
|
||||
prompt Tracking WORKFLOW_MANAGER Package Version After Rollback
|
||||
prompt MARS-1011: Record rollback to version 1.7.0
|
||||
prompt ========================================
|
||||
|
||||
BEGIN
|
||||
DBMS_OUTPUT.PUT_LINE('Tracking WORKFLOW_MANAGER rollback version...');
|
||||
|
||||
-- Track the rolled-back version (1.7.0)
|
||||
CT_MRDS.ENV_MANAGER.TRACK_PACKAGE_VERSION(
|
||||
pPackageOwner => 'CT_MRDS',
|
||||
pPackageName => 'WORKFLOW_MANAGER',
|
||||
pPackageVersion => CT_MRDS.WORKFLOW_MANAGER.PACKAGE_VERSION,
|
||||
pPackageBuildDate => CT_MRDS.WORKFLOW_MANAGER.PACKAGE_BUILD_DATE,
|
||||
pPackageAuthor => CT_MRDS.WORKFLOW_MANAGER.PACKAGE_AUTHOR
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE('WORKFLOW_MANAGER rollback version tracked successfully.');
|
||||
|
||||
-- Display rollback version info
|
||||
DBMS_OUTPUT.PUT_LINE('Rollback Version: ' || CT_MRDS.WORKFLOW_MANAGER.GET_VERSION());
|
||||
DBMS_OUTPUT.PUT_LINE('Build Info: ' || CT_MRDS.WORKFLOW_MANAGER.GET_BUILD_INFO());
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('ERROR tracking WORKFLOW_MANAGER rollback: ' || SQLERRM);
|
||||
RAISE;
|
||||
END;
|
||||
/
|
||||
|
||||
prompt ========================================
|
||||
prompt WORKFLOW_MANAGER Package rollback version tracking completed
|
||||
prompt Rolled back to version 1.7.0 (2025-10-31)
|
||||
prompt ========================================
|
||||
54
MARS_Packages/REL01/MARS-1011/README.md
Normal file
54
MARS_Packages/REL01/MARS-1011/README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# MARS-1011: WORKFLOW_MANAGER Package Update v1.7.1
|
||||
|
||||
## Description
|
||||
Updates WORKFLOW_MANAGER package to version 1.7.1, adding automatic SERVICE_NAME='ODS' assignment in INIT_TASK function.
|
||||
|
||||
## Changes
|
||||
- Modified `INIT_TASK` function to automatically set `SERVICE_NAME='ODS'` when inserting into `CT_MRDS.A_TASK_HISTORY`
|
||||
- Updated package version from 1.7.0 to 1.7.1
|
||||
- Updated build date to 2025-11-18
|
||||
|
||||
## Installation Files
|
||||
1. `01_MARS_1011_install_CT_MRDS_WORKFLOW_MANAGER_SPEC.sql` - Package specification
|
||||
2. `02_MARS_1011_install_CT_MRDS_WORKFLOW_MANAGER_BODY.sql` - Package body with SERVICE_NAME modification
|
||||
3. `03_MARS_1011_verify_CT_MRDS_WORKFLOW_MANAGER.sql` - Verification and version check
|
||||
4. `04_MARS_1011_track_CT_MRDS_WORKFLOW_MANAGER_version.sql` - Package version tracking in A_PACKAGE_VERSION_TRACKING
|
||||
|
||||
## Rollback Files
|
||||
1. `91_MARS_1011_rollback_CT_MRDS_WORKFLOW_MANAGER_SPEC.sql` - Rollback package specification to v1.7.0
|
||||
2. `91_MARS_1011_rollback_CT_MRDS_WORKFLOW_MANAGER_BODY.sql` - Rollback package body (removes SERVICE_NAME from INIT_TASK)
|
||||
3. `92_MARS_1011_track_rollback_version.sql` - Track rollback version in A_PACKAGE_VERSION_TRACKING
|
||||
|
||||
## Installation
|
||||
```bash
|
||||
sqlplus CT_MRDS/password@database @install_mars1011.sql
|
||||
```
|
||||
|
||||
## Rollback
|
||||
```bash
|
||||
sqlplus CT_MRDS/password@database @rollback_mars1011.sql
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
- Requires CT_MRDS schema
|
||||
- Requires A_TASK_HISTORY table with SERVICE_NAME column
|
||||
- Requires ENV_MANAGER package for version management functions
|
||||
- Requires A_PACKAGE_VERSION_TRACKING table for version tracking
|
||||
|
||||
## Testing
|
||||
After installation, verify:
|
||||
1. Package compiles successfully (check `03_MARS_1011_verify_CT_MRDS_WORKFLOW_MANAGER.sql` output)
|
||||
2. Version shows as 1.7.1
|
||||
3. INIT_TASK function properly inserts SERVICE_NAME='ODS'
|
||||
4. Package version is tracked in A_PACKAGE_VERSION_TRACKING table
|
||||
5. Check tracking: `SELECT * FROM CT_MRDS.A_PACKAGE_VERSION_TRACKING WHERE PACKAGE_NAME='WORKFLOW_MANAGER' ORDER BY TRACKING_DATE DESC;`
|
||||
|
||||
After rollback, verify:
|
||||
1. Version shows as 1.7.0 (rolled back)
|
||||
2. INIT_TASK function no longer includes SERVICE_NAME column
|
||||
3. Rollback is tracked in A_PACKAGE_VERSION_TRACKING with CHANGE_STATUS='ROLLBACK'
|
||||
|
||||
## Impact
|
||||
- Low risk change - only affects new task records
|
||||
- Backward compatible - existing functionality unchanged
|
||||
- No breaking changes to function signatures
|
||||
216
MARS_Packages/REL01/MARS-1011/WORKFLOW_MANAGER_BODY.sql
Normal file
216
MARS_Packages/REL01/MARS-1011/WORKFLOW_MANAGER_BODY.sql
Normal file
@@ -0,0 +1,216 @@
|
||||
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;
|
||||
/
|
||||
100
MARS_Packages/REL01/MARS-1011/WORKFLOW_MANAGER_SPEC.sql
Normal file
100
MARS_Packages/REL01/MARS-1011/WORKFLOW_MANAGER_SPEC.sql
Normal file
@@ -0,0 +1,100 @@
|
||||
CREATE OR REPLACE PACKAGE CT_MRDS.WORKFLOW_MANAGER
|
||||
IS
|
||||
|
||||
-- Package Version Information (Semantic Versioning: MAJOR.MINOR.PATCH)
|
||||
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '1.7.1';
|
||||
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2025-11-18 12:00:00';
|
||||
PACKAGE_AUTHOR CONSTANT VARCHAR2(100) := 'Grzegorz Michalski';
|
||||
|
||||
-- Version History (Latest changes first)
|
||||
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
|
||||
'1.7.1 (2025-11-18): Added SERVICE_NAME column with hardcoded ''ODS'' value to INIT_TASK function' || CHR(13)||CHR(10) ||
|
||||
'1.7.0 (2025-10-31): Added FINALISE_TASK_WITH_TARGET_INFO function for atomic task completion with target info' || CHR(13)||CHR(10) ||
|
||||
'1.6.0 (2025-10-31): Converted STORE_TASK_SOURCE_INFO and STORE_TASK_TARGET_INFO from procedures to functions returning sequence keys' || CHR(13)||CHR(10) ||
|
||||
'1.5.0 (2025-10-22): Added package versioning system using centralized ENV_MANAGER functions' || CHR(13)||CHR(10) ||
|
||||
'1.2.0 (2025-10-05): Added workflow property management (SET/GET_WORKFLOW_PROPERTY)' || CHR(13)||CHR(10) ||
|
||||
'1.0.0 (2025-09-10): Initial release with workflow and task lifecycle management';
|
||||
|
||||
-- Line break constant for consistent CRLF formatting across Windows environments
|
||||
cgBL CONSTANT VARCHAR2(2) := CHR(13)||CHR(10);
|
||||
|
||||
FUNCTION INIT_WORKFLOW(pServiceName IN VARCHAR2, pWorkflowRunId IN VARCHAR2, pWorkflowName in VARCHAR2)
|
||||
RETURN NUMBER;
|
||||
|
||||
PROCEDURE FINALISE_WORKFLOW(pWorkflowHistoryKey IN NUMBER, pWorkflowStatus IN VARCHAR2);
|
||||
PROCEDURE FINALISE_WORKFLOW(pWorkflowHistoryKey IN NUMBER, pServiceName IN VARCHAR2, pWorkflowStatus IN VARCHAR2);
|
||||
|
||||
FUNCTION INIT_TASK(pTaskRunId IN VARCHAR2, pTaskName in VARCHAR2, pWorkflowHistoryKey IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
PROCEDURE FINALISE_TASK(pTaskHistoryKey IN NUMBER, pTaskStatus IN VARCHAR2);
|
||||
|
||||
FUNCTION STORE_TASK_SOURCE_INFO(pTaskHistoryKey IN NUMBER, pSourceName IN VARCHAR2, pNumRows IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
vpRunningStatus CT_MRDS.A_WORKFLOW_HISTORY.WORKFLOW_SUCCESSFUL%TYPE := 'R';
|
||||
|
||||
--
|
||||
-- Set and get information on workflow level
|
||||
--
|
||||
PROCEDURE SET_WORKFLOW_PROPERTY(
|
||||
pWorkflowHistoryKey IN NUMBER
|
||||
,pServiceName IN VARCHAR2
|
||||
,pProperty IN VARCHAR2
|
||||
,pValue IN VARCHAR2
|
||||
);
|
||||
|
||||
FUNCTION GET_WORKFLOW_PROPERTY(
|
||||
pWorkflowHistoryKey IN NUMBER
|
||||
,pServiceName IN VARCHAR2
|
||||
,pProperty IN VARCHAR2)
|
||||
RETURN VARCHAR2;
|
||||
|
||||
---------------------------------------------------------------------------------------------------------------------------
|
||||
-- PACKAGE VERSION MANAGEMENT FUNCTIONS
|
||||
---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @name GET_VERSION
|
||||
* @desc Returns the current version number of the WORKFLOW_MANAGER package.
|
||||
* Uses semantic versioning format (MAJOR.MINOR.PATCH).
|
||||
* @example SELECT WORKFLOW_MANAGER.GET_VERSION() FROM DUAL;
|
||||
* @ex_rslt 1.5.0
|
||||
**/
|
||||
FUNCTION GET_VERSION RETURN VARCHAR2;
|
||||
|
||||
/**
|
||||
* @name GET_BUILD_INFO
|
||||
* @desc Returns comprehensive build information including version, build date, and author.
|
||||
* Uses centralized ENV_MANAGER.GET_PACKAGE_VERSION_INFO function.
|
||||
* @example SELECT WORKFLOW_MANAGER.GET_BUILD_INFO() FROM DUAL;
|
||||
* @ex_rslt Package: WORKFLOW_MANAGER
|
||||
* Version: 1.5.0
|
||||
* Build Date: 2025-10-22 17:00:00
|
||||
* Author: Grzegorz Michalski
|
||||
**/
|
||||
FUNCTION GET_BUILD_INFO RETURN VARCHAR2;
|
||||
|
||||
/**
|
||||
* @name GET_VERSION_HISTORY
|
||||
* @desc Returns complete version history with all releases and changes.
|
||||
* Uses centralized ENV_MANAGER.FORMAT_VERSION_HISTORY function.
|
||||
* @example SELECT WORKFLOW_MANAGER.GET_VERSION_HISTORY() FROM DUAL;
|
||||
* @ex_rslt WORKFLOW_MANAGER Version History:
|
||||
* 1.5.0 (2025-10-22): Added package versioning system...
|
||||
**/
|
||||
FUNCTION GET_VERSION_HISTORY RETURN VARCHAR2;
|
||||
|
||||
END WORKFLOW_MANAGER;
|
||||
/
|
||||
40
MARS_Packages/REL01/MARS-1011/install_mars1011.sql
Normal file
40
MARS_Packages/REL01/MARS-1011/install_mars1011.sql
Normal file
@@ -0,0 +1,40 @@
|
||||
WHENEVER SQLERROR EXIT FAILURE
|
||||
SET SERVEROUTPUT ON
|
||||
SET TIMING ON
|
||||
SET ECHO ON
|
||||
SET HEADING OFF
|
||||
SET FEEDBACK ON
|
||||
SET VERIFY OFF
|
||||
|
||||
-- Simple filename without PDB reference
|
||||
var filename VARCHAR2(100)
|
||||
BEGIN
|
||||
SELECT 'INSTALL_MARS_1011_' || TO_CHAR(SYSDATE,'YYYYMMDD_HH24MISS')||'.log' INTO :filename from DUAL;
|
||||
END;
|
||||
/
|
||||
column filename new_value _filename
|
||||
select :filename filename from dual;
|
||||
spool &_filename
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
SELECT SYS_CONTEXT('USERENV', 'DB_NAME') AS DATABASE_NAME FROM DUAL;
|
||||
|
||||
prompt ========================================
|
||||
prompt MARS-1011: Installing WORKFLOW_MANAGER v1.7.1
|
||||
prompt Description: Add SERVICE_NAME='ODS' to INIT_TASK function
|
||||
prompt ========================================
|
||||
|
||||
@@01_MARS_1011_install_CT_MRDS_WORKFLOW_MANAGER_SPEC.sql
|
||||
@@02_MARS_1011_install_CT_MRDS_WORKFLOW_MANAGER_BODY.sql
|
||||
@@03_MARS_1011_verify_CT_MRDS_WORKFLOW_MANAGER.sql
|
||||
@@04_MARS_1011_track_CT_MRDS_WORKFLOW_MANAGER_version.sql
|
||||
|
||||
SET ECHO OFF
|
||||
|
||||
prompt ##### completed at time #####
|
||||
select systimestamp from dual;
|
||||
|
||||
SPOOL OFF
|
||||
EXIT
|
||||
39
MARS_Packages/REL01/MARS-1011/rollback_mars1011.sql
Normal file
39
MARS_Packages/REL01/MARS-1011/rollback_mars1011.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
WHENEVER SQLERROR EXIT FAILURE
|
||||
SET SERVEROUTPUT ON
|
||||
SET TIMING ON
|
||||
SET ECHO ON
|
||||
SET HEADING OFF
|
||||
SET FEEDBACK ON
|
||||
SET VERIFY OFF
|
||||
|
||||
-- Simple filename without PDB reference
|
||||
var filename VARCHAR2(100)
|
||||
BEGIN
|
||||
SELECT 'ROLLBACK_MARS_1011_' || TO_CHAR(SYSDATE,'YYYYMMDD_HH24MISS')||'.log' INTO :filename from DUAL;
|
||||
END;
|
||||
/
|
||||
column filename new_value _filename
|
||||
select :filename filename from dual;
|
||||
spool &_filename
|
||||
|
||||
prompt ##### started at time #####
|
||||
select systimestamp from dual;
|
||||
prompt ##### database name #####
|
||||
SELECT SYS_CONTEXT('USERENV', 'DB_NAME') AS DATABASE_NAME FROM DUAL;
|
||||
|
||||
prompt ========================================
|
||||
prompt MARS-1011: Rolling back WORKFLOW_MANAGER changes
|
||||
prompt Description: Rollback to previous version 1.7.0
|
||||
prompt ========================================
|
||||
|
||||
@@91_MARS_1011_rollback_CT_MRDS_WORKFLOW_MANAGER_SPEC.sql
|
||||
@@91_MARS_1011_rollback_CT_MRDS_WORKFLOW_MANAGER_BODY.sql
|
||||
@@92_MARS_1011_track_rollback_version.sql
|
||||
|
||||
SET ECHO OFF
|
||||
|
||||
prompt ##### completed at time #####
|
||||
select systimestamp from dual;
|
||||
|
||||
SPOOL OFF
|
||||
EXIT
|
||||
Reference in New Issue
Block a user