CREATE OR REPLACE PACKAGE sy_process IS
---------- Debug Levels
nodebug CONSTANT dtype.name %TYPE := 'NO';
onlydebug CONSTANT dtype.name %TYPE := 'DEBUG';
onlytrace CONSTANT dtype.name %TYPE := 'TRACE';
allinfo CONSTANT dtype.name %TYPE := 'ALL';
---------- Message Types
information CONSTANT dtype.tag %TYPE := 'I';
warning CONSTANT dtype.tag %TYPE := 'W';
error CONSTANT dtype.tag %TYPE := 'E';
fatalerror CONSTANT dtype.tag %TYPE := 'F';
debug CONSTANT dtype.tag %TYPE := 'D';
trace CONSTANT dtype.tag %TYPE := 'O';
timing CONSTANT dtype.tag %TYPE := 'T';
unitask CONSTANT dtype.tag %TYPE := 'U';
multytask CONSTANT dtype.tag %TYPE := 'M';
securityalert CONSTANT dtype.tag %TYPE := 'S';
---------- Uniqueness Types ---------------
uniunique CONSTANT dtype.tag %TYPE := 'Y'; -- Fail when start the same
uninotunique CONSTANT dtype.tag %TYPE := 'N'; -- Allow to start the same
uniclose CONSTANT dtype.tag %TYPE := 'S'; -- Reject previous when start the same
unisessclose CONSTANT dtype.tag %TYPE := 'C'; -- Reject previous when start the same in the same session
---------- Process Statuses ---------------
statusactive CONSTANT dtype.tag %TYPE := 'A'; -- In progress
statussuspended CONSTANT dtype.tag %TYPE := 'P'; -- Temporary paused
statusstopped CONSTANT dtype.tag %TYPE := 'I'; -- Sent a termination command
statusclosed CONSTANT dtype.tag %TYPE := 'C'; -- Finished normally
statusrejected CONSTANT dtype.tag %TYPE := 'J'; -- Finished abnormally
---------- Aux Session Statuses
auxsessionscheduled CONSTANT dtype.tag %TYPE := 'Q';
auxsessionactive CONSTANT dtype.tag %TYPE := 'A';
auxsessionfinished CONSTANT dtype.tag %TYPE := 'C';
auxsessionspawned CONSTANT dtype.tag %TYPE := 'S';
TYPE tprocessinfo IS RECORD(
processid dtype.recordid %TYPE,
sessionid dtype.recordid %TYPE,
sessionrole dtype.name %TYPE,
isgrp dtype.tag %TYPE,
processname dtype.name %TYPE,
processnameext dtype.name %TYPE,
objecttype dtype.name %TYPE,
objectid dtype.recordid %TYPE,
sysinstanceid dtype.recordid %TYPE,
procauxid dtype.recordid %TYPE,
dbmsspec dtype.longstr %TYPE);
PROCEDURE schedule_proc_aux
(
processid IN dtype.recordid %TYPE,
sessionid IN dtype.recordid %TYPE,
sessionrole IN dtype.name %TYPE,
indbmsspec IN dtype.longstr %TYPE
);
FUNCTION curr_debug_level
(
permdebuglevel IN dtype.name %TYPE,
tmpdebuglevel IN dtype.name %TYPE,
tmpdebuglevelto IN dtype.currentdate %TYPE,
currtime IN dtype.currentdate %TYPE
) RETURN dtype.tag %TYPE;
PRAGMA RESTRICT_REFERENCES(curr_debug_level, WNDS, WNPS, RNDS);
FUNCTION get_debug_level RETURN dtype.name %TYPE;
PRAGMA RESTRICT_REFERENCES(get_debug_level, WNDS, WNPS);
PROCEDURE set_debug_level(level_in IN dtype.name %TYPE);
PRAGMA RESTRICT_REFERENCES(set_debug_level, WNDS, RNDS);
FUNCTION get_current_process RETURN dtype.recordid %TYPE;
PRAGMA RESTRICT_REFERENCES(get_current_process, WNDS, WNPS);
FUNCTION get_current_process_name RETURN dtype.name %TYPE;
PRAGMA RESTRICT_REFERENCES(get_current_process_name, WNDS, WNPS);
FUNCTION get_current_object_type RETURN dtype.name %TYPE;
PRAGMA RESTRICT_REFERENCES(get_current_object_type, WNDS, WNPS);
FUNCTION get_current_object_id RETURN dtype.name %TYPE;
PRAGMA RESTRICT_REFERENCES(get_current_object_id, WNDS, WNPS);
FUNCTION get_last_process RETURN dtype.recordid %TYPE;
PRAGMA RESTRICT_REFERENCES(get_last_process, WNDS, WNPS);
FUNCTION get_process_parameter
(
processid IN dtype.recordid %TYPE,
incachedparameters IN dtype.longstr %TYPE,
iniscacheincomplete IN dtype.tag %TYPE,
parametername IN dtype.name %TYPE,
defaultvalue IN dtype.name %TYPE
) RETURN dtype.xmlstring %TYPE;
FUNCTION get_current_prm_string RETURN dtype.name %TYPE;
FUNCTION get_current_parameter
(
parametername IN dtype.name %TYPE,
defaultvalue IN dtype.name %TYPE
) RETURN dtype.xmlstring %TYPE;
FUNCTION get_proc_prm_template
(
processname IN dtype.name %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
prmcode IN dtype.name %TYPE
) RETURN dtype.longstr %TYPE;
PROCEDURE start_process_v5
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
parentprocessid IN dtype.recordid %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
processidt IN dtype.name %TYPE,
filledprocessparms OUT dtype.longstr %TYPE,
processid OUT dtype.recordid %TYPE
);
PROCEDURE start_process_v3
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
parentprocessid IN dtype.recordid %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
filledprocessparms OUT dtype.longstr %TYPE,
processid OUT dtype.recordid %TYPE
);
PROCEDURE start_process
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
processid OUT dtype.recordid %TYPE
);
PROCEDURE start_simple_process
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
processid OUT dtype.recordid %TYPE
);
FUNCTION find_process
(
processname IN dtype.name %TYPE,
processparams IN dtype.name %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE
) RETURN dtype.recordid %TYPE;
PROCEDURE find_or_start_process_v2
(
processname IN dtype.name %TYPE,
processparams IN dtype.name %TYPE,
parentprocessid IN dtype.recordid %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
defaultparameters IN dtype.longstr %TYPE,
processid OUT dtype.recordid %TYPE,
isprocessnew OUT dtype.tag %TYPE
);
PROCEDURE find_or_start_process
(
processname IN dtype.name %TYPE,
processparams IN dtype.name %TYPE,
parentprocessid IN dtype.recordid %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
processid OUT dtype.recordid %TYPE,
isprocessnew OUT dtype.tag %TYPE
);
PROCEDURE finish_process_v3
(
processid IN dtype.recordid %TYPE,
isok IN dtype.tag %TYPE,
parentprocessid OUT dtype.recordid %TYPE
);
PROCEDURE finish_process
(
processid IN dtype.recordid %TYPE,
isok IN dtype.tag %TYPE
);
PROCEDURE start_current_v6
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
tostartsub IN dtype.tag %TYPE,
isgrp IN dtype.tag %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
processidt IN dtype.name %TYPE,
defaultparameters IN dtype.longstr %TYPE,
isactive OUT dtype.tag %TYPE
);
PROCEDURE start_current_v4
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
tostartsub IN dtype.tag %TYPE,
isgrp IN dtype.tag %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
isactive OUT dtype.tag %TYPE
);
PROCEDURE start_current_v3
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
tostartsub IN dtype.tag %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
isactive OUT dtype.tag %TYPE
);
PROCEDURE start_current
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
isactive OUT dtype.tag %TYPE
);
PROCEDURE start_simple
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE
);
PROCEDURE start_current_if_need_obj
(
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
isactive OUT dtype.tag %TYPE,
wasstarted OUT dtype.tag %TYPE
);
PROCEDURE start_current_if_need
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
isactive OUT dtype.tag %TYPE,
wasstarted OUT dtype.tag %TYPE
);
PROCEDURE start_simple_if_need
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
wasstarted OUT dtype.tag %TYPE
);
PROCEDURE finish_current_if_need
(
wasstarted IN dtype.tag %TYPE,
isok IN dtype.tag %TYPE
);
PROCEDURE finish_current(isok IN dtype.tag %TYPE);
PROCEDURE start_button_process_obj
(
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
wasstarted OUT dtype.tag %TYPE
);
PROCEDURE start_button_process
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
wasstarted OUT dtype.tag %TYPE
);
FUNCTION finish_button_process
(
wasstarted IN dtype.tag %TYPE,
errmsg IN dtype.errormessage %TYPE
) RETURN dtype.errormessage %TYPE;
FUNCTION finish_button_process_obj
(
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
wasstarted IN dtype.tag %TYPE,
errmsg IN dtype.errormessage %TYPE
) RETURN dtype.errormessage %TYPE;
FUNCTION finish_button_process_exc(wasstarted IN dtype.tag %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION finish_button_process_obj_exc
(
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
wasstarted IN dtype.tag %TYPE
) RETURN dtype.errormessage %TYPE;
PROCEDURE update_process_parameters
(
processid IN dtype.recordid %TYPE,
newprocessprms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
waschanged OUT dtype.tag %TYPE
);
PROCEDURE update_current_parameters
(
newprocessprms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
waschanged OUT dtype.tag %TYPE
);
PROCEDURE process_start1
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE,
processid OUT dtype.recordid %TYPE,
retcode OUT dtype.counter %TYPE
);
FUNCTION process_start
(
processname IN dtype.name %TYPE,
processparms IN dtype.name %TYPE,
isunique IN dtype.tag %TYPE
) RETURN dtype.counter %TYPE;
PROCEDURE process_end1(processid IN dtype.recordid %TYPE);
PROCEDURE process_end;
PROCEDURE process_reject1(processid IN dtype.recordid %TYPE);
PROCEDURE process_reject;
-- - legacy interface
PROCEDURE detach_process_v2(auxsessionstatus IN dtype.tag %TYPE);
PROCEDURE detach_process;
FUNCTION is_current_right_sys RETURN dtype.tag %TYPE;
FUNCTION have_other_auxes_finished RETURN dtype.tag %TYPE;
PROCEDURE set_last_process(processid IN dtype.recordid %TYPE);
PROCEDURE get_process_info
(
processid IN dtype.recordid %TYPE,
sessionid IN dtype.recordid %TYPE,
sessionrole IN dtype.name %TYPE,
processinfo OUT tprocessinfo
);
PROCEDURE attach_process_r(processinfo IN tprocessinfo);
PROCEDURE attach_process_v3(processid IN dtype.recordid %TYPE - 03.39.30 dbk - 592 * /);
PROCEDURE attach_process_v2
(
processid IN dtype.recordid %TYPE,
inprocessname IN dtype.name %TYPE,
inprocessparameters IN dtype.name %TYPE
);
PROCEDURE attach_process
(
processid IN dtype.recordid %TYPE,
inprocessname IN dtype.name %TYPE
);
FUNCTION get_curr_proc_aux_dbms_spec RETURN dtype.longstr %TYPE;
PROCEDURE set_total_number1
(
processid IN dtype.recordid %TYPE,
n IN dtype.counter %TYPE
);
PROCEDURE set_total_number(n IN dtype.counter %TYPE);
PROCEDURE renew_process_status
(
processid IN dtype.recordid %TYPE,
processstatus IN OUT dtype.tag %TYPE
);
FUNCTION is_process_to_continue(processid IN dtype.recordid %TYPE) RETURN dtype.tag %TYPE;
FUNCTION is_current_to_continue RETURN dtype.tag %TYPE;
FUNCTION add_current_number1
(
processid IN dtype.recordid %TYPE,
n IN dtype.counter %TYPE
) RETURN dtype.counter %TYPE;
FUNCTION add_current_number(n IN dtype.counter %TYPE) RETURN dtype.counter %TYPE;
FUNCTION suspend_process(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION resume_process(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION process_stop(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION stop_and_clear_process(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION change_process_debug_level(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION process_stop_periodic
(
processid IN dtype.recordid %TYPE,
isok IN dtype.tag %TYPE
) RETURN dtype.errormessage %TYPE;
FUNCTION terminate_job_process(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION process_clear(processid IN dtype.recordid %TYPE) RETURN dtype.errormessage %TYPE;
FUNCTION clear_process_lc RETURN dtype.errormessage %TYPE;
PROCEDURE process_clear1(processid IN dtype.recordid %TYPE);
FUNCTION set_lc_date_to_default RETURN dtype.errormessage %TYPE;
FUNCTION clear_old_processes_lc RETURN dtype.errormessage %TYPE;
FUNCTION lock_process_status1(processid IN dtype.recordid %TYPE) RETURN dtype.tag %TYPE;
FUNCTION lock_process_status RETURN dtype.tag %TYPE;
FUNCTION get_process_error_level1(processid IN dtype.recordid %TYPE) RETURN dtype.tag %TYPE;
FUNCTION get_process_error_level RETURN dtype.tag %TYPE;
PROCEDURE process_object_message1
(
processid IN dtype.recordid %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE
);
PROCEDURE process_object_message
(
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE,
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE
);
PROCEDURE process_doc_message1
(
processid IN dtype.recordid %TYPE,
docid IN dtype.recordid %TYPE,
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE
);
PROCEDURE process_doc_message
(
docid IN dtype.recordid %TYPE,
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE
);
PROCEDURE process_message1
(
processid IN dtype.recordid %TYPE,
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE
);
PROCEDURE process_message
(
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE
);
PROCEDURE process_file_message1
(
processid IN dtype.recordid %TYPE,
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE,
fileinfoid IN dtype.recordid %TYPE,
filerecordparams IN dtype.name %TYPE
);
PROCEDURE process_file_message
(
messagetype IN dtype.tag %TYPE,
messagetext IN dtype.errormessage %TYPE,
fileinfoid IN dtype.recordid %TYPE,
filerecordparams IN dtype.name %TYPE
);
PROCEDURE process_exception_message;
PROCEDURE start_export_file
(
filename IN dtype.name %TYPE,
filetype IN dtype.name %TYPE,
fileid IN dtype.name %TYPE,
params IN dtype.name %TYPE,
fileinfoid OUT dtype.recordid %TYPE
);
PROCEDURE finish_export_file
(
fileinfoid IN dtype.recordid %TYPE,
recordsexported IN dtype.counter %TYPE
);
FUNCTION get_reject_message(processid IN dtype.recordid %TYPE) RETURN dtype.longstr %TYPE;
PRAGMA RESTRICT_REFERENCES(get_reject_message, WNDS, WNPS);
PROCEDURE set_process_buffered
(
processid IN dtype.recordid %TYPE,
buffered IN dtype.tag %TYPE
);
PROCEDURE set_current_buffered(buffered IN dtype.tag %TYPE);
PROCEDURE flush_buffered_messages
(
processid IN dtype.recordid %TYPE,
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE
);
PROCEDURE flush_current_messages
(
objecttype IN dtype.name %TYPE,
objectid IN dtype.recordid %TYPE
);
PROCEDURE wait_for_v2
(
processid IN dtype.recordid %TYPE,
waitingtimeout IN dtype.counter %TYPE,
processstatus OUT dtype.tag %TYPE,
processednumber OUT dtype.counter %TYPE
);
FUNCTION wait_for(processid IN dtype.recordid %TYPE) RETURN dtype.tag %TYPE;
PROCEDURE wait_for_last_v1
(
processstatus OUT dtype.tag %TYPE,
processednumber OUT dtype.counter %TYPE,
errmsg OUT dtype.errormessage %TYPE
);
FUNCTION wait_for_last RETURN dtype.errormessage %TYPE;
PROCEDURE wait_for_name(processname IN dtype.name %TYPE);
FUNCTION from_module(processid IN dtype.recordid %TYPE) RETURN dtype.tag %TYPE;
FUNCTION get_stored_parameter
(
processid IN dtype.recordid %TYPE,
prmname IN dtype.name %TYPE
) RETURN dtype.xmlstring %TYPE;
PROCEDURE set_stored_parameter
(
processid IN dtype.recordid %TYPE,
prmname IN dtype.name %TYPE,
prmvalue IN dtype.xmlstring %TYPE
);
FUNCTION get_curr_stored_parameter(prmname IN dtype.name %TYPE) RETURN dtype.xmlstring %TYPE;
PROCEDURE set_curr_stored_parameter
(
prmname IN dtype.name %TYPE,
prmvalue IN dtype.xmlstring %TYPE
);
END sy_process;
/