package xpp_internal
is
/**
* Project: Project (<a href="http://en.1stsw.com/products/extreme-parallel-processing/"> XPP 1. SOFTWAROVÁ s.r.o.</a>)
* Description: Internal Package for eXtreme Parallel Processing
* <p>
* @author Petr Jezek
* @version 1.0.1, 2013-03-10
* @since 1.0
* @headcom
*/
/**
* The function is returning name of current schema
*
* @return The name of schema where is XPP installed in varchar2
* @throws c_err_get_curr_schema_name The name of schema where is XPP installed is not possible to retrive.
*/
function get_current_schema_name
return varchar2;
/**
* The function is translating required p_queue_name to real queue name.
* The goal of this translation it to secure creation/modify/delete of internal XPP queues.
*
* @param p_queue_name The requested name of queue.
* @return name of real queue in varchar2
* @throws c_err_get_curr_schema_name The name of schema where is XPP installed is not possible to retrive.
*/
function get_queue_name(
p_queue_name in varchar2
,p_with_schema in boolean default true
) return varchar2;
/**
* The function is translating required p_queue_name to real recipient name.
* The goal of this translation it to secure creation/modify/delete of internal XPP recipients.
*
* @param p_queue_name The requested name of queue.
* @return name of real recipient in varchar2
*/
function get_queue_recipient_def_name(
p_queue_name in varchar2
) return varchar2;
/**
* The function is returning name exception when queue is empty.
*
* @param p_queue_name The name of queue.
* @return The message name of empty queue in varchar2
*/
function get_msg_name_empty_queue(
p_queue_name in varchar2
) return varchar2;
---------------------------------------- types --------------------------------
/**
* The procedure defines user type for queue p_queue_name acording definition in parameter p_queue_type_body.
* Name of required type is based on p_queue_name.
* Finally is the new type granted for actual executor.
* Note: it can raise the same exception like is raising CREATE TYPE command and GRANT EXEUTE commnad.
*
* @param p_queue_name The name of queue associate to the the requested type.
* @param p_queue_type_body The definition of new type. (It is according defintion part in the brackets while definion of new type.)
* @param p_queue_type_name The name of newly created type
* @throws c_err_queue_name The queue name is forbidden.
*/
procedure define_type(
p_queue_name in varchar2
,p_queue_type_body in varchar2
,p_queue_type_name out varchar2
);
/**
* The procedure drops user type for queue p_queue_name.
* Name of required type is based on p_queue_name.
* Note: it can raise the same exception like is raising DROP TYPE commnad.
*
* @param p_queue_name The name of queue associate to the the requested type.
* @throws c_err_queue_name The queue name is forbidden.
*/
procedure destroy_type(
p_queue_name in varchar2
);
----------------------------------------- sequences ---------------------------
/**
* The procedure defines user sequence for queue p_queue_name.
* Name of sequence is based on p_queue_name.
*
* @param p_queue_name The name of queue associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
*/
procedure define_sequence(
p_queue_name in varchar2
);
/**
* The procedure drops user sequence for queue p_queue_name.
*
* @param p_queue_name The name of queue associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
*/
procedure destroy_sequence(
p_queue_name in varchar2
);
---------------------------------------- tables -------------------------------
/**
* The procedure defines table for queue p_queue_name.
* Name of table is based on p_queue_name.
* Note: The expected time of ceration is defined by value of MAX_DURATION in table XPP_CONF_PARAM.
*
* @param p_queue_name The name of queue associate to the the requested table.
* @param p_storage_clause The storage clause for reation of queue table.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_creation_queue_table The table is not created or is not created in expected time.
*/
procedure define_table(
p_queue_name in varchar2
,p_storage_clause in varchar2
);
/**
* The procedure drops table for queue p_queue_name.
*
* @param p_queue_name The name of table associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_deletion_queue_table The table is not dropped or is not dropped in expected time.
*/
procedure destroy_table(
p_queue_name in varchar2
);
---------------------------------------- queue --------------------------------
/**
* The procedure defines queue p_queue_name.
* Note: The expected time of ceration is defined by value of MAX_DURATION in table XPP_CONF_PARAM.
*
* @param p_queue_name The name of queue associate to the the requested table.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_creation_queue The queue is not created or is not created in expected time.
*/
procedure define_queue(
p_queue_name in varchar2
,p_queue_comments in varchar2 := null
,p_user_to_grant in varchar2 := null
);
/**
* The procedure drops queue queue p_queue_name.
*
* @param p_queue_name The name of table associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_deletion_queue_table The queue is not dropped or is not dropped in expected time.
*/
procedure destroy_queue(
p_queue_name in varchar2
);
---------------------------------------- package ------------------------------
/**
* The procedure defines interface packages (prefix XPPI_) and processing package (prefix XPPX_) for queue p_queue_name.
* Name of packages is based on p_queue_name.
* Note: it can raise the same exception like is raising CREATE OR REPLACE PACKAGE command and GRANT EXEUTE commnad.
*
* @param p_queue_name The name of queue associate to the the requested table.
* @throws c_err_queue_name The queue name is forbidden.
*/
procedure define_processing_package(
p_queue_name in varchar2
);
/**
* The procedure drops interface packages (prefix XPPI_) and processing package (prefix XPPX_) for queue p_queue_name.
* Note: it can raise the same exception like is raising DROP PACKAGE command.
*
* @param p_queue_name The name of table associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
*/
procedure destroy_processing_package(
p_queue_name in varchar2
);
---------------------------------------- subscribers --------------------------
/**
* The procedure defines subscriber for queue p_queue_name.
* Name of subscriber and recepient is based on p_queue_name.
* Note: The expected time of ceration is defined by value of MAX_DURATION in table XPP_CONF_PARAM.
*
* @param p_queue_name The name of queue associate to the the requested table.
* @param p_recipient_name The name of recepient of queue associate to the the requested table.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_creation_subscriber The subscriber is not created or is not created in expected time.
*/
procedure add_subscriber(
p_queue_name in varchar2
,p_recipient_name in varchar2
);
/**
* The procedure drops subscriber for queue p_queue_name.
* Note: The expected time of dropping is defined by value of MAX_DURATION in table XPP_CONF_PARAM.
*
* @param p_queue_name The name of table associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_deletion_subscriber The subscriber is not dropped or is not dropped in expected time.
*/
procedure del_subscriber(
p_queue_name in varchar2
,p_recipient_name in varchar2
);
-------------------------------- queue configuration ---------------------------
/**
* The procedure defines subscriber for queue p_queue_name.
* Name of subscriber configuration is based on p_queue_name.
*
* @param p_queue_name The name of table associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_number_of_executors The number of requested parallel tasks is forbidden.
* @throws c_err_queue_is_not_defined The queue is not defined. (Prior the XPP.EVENT_OPEN should be called XPP.EVENT_INIT)
* @throws c_err_subscr_conf_exists The subscriber configuration of queue already exists.
*
*/
procedure add_subscription_conf(
p_queue_name in varchar2
,p_general_procedure in varchar2
,p_number_of_executors in number
,p_procedure_to_run in varchar2
,p_procedure_on_success in varchar2 default null
,p_procedure_on_error in varchar2 default null
,p_param_on_error_input in number default 1
,p_step in number default 0
);
/**
* The procedure drops subscriber for queue p_queue_name.
*
* @param p_queue_name The name of table associate to the the requested sequence.
* @throws c_err_queue_name The queue name is forbidden.
* @throws c_err_deletion_queue_table The table is not dropped or is not dropped in expected time.
*/
procedure delete_all_subscription_conf(
p_queue_name in varchar2
);
-------------------------------- requests -------------------------------------
/**
* The procedure add requests into queue p_queue_name.
*
* @param p_queue_name The name of queue associate to the the requested table.
* @param p_record The record to insert into queue is long row type.
* @param p_message_id The message id.
*/
procedure add_request(
p_queue_name in varchar2
,p_record in long raw
,p_message_id out raw
);
/**
* The procedure remove all requests from queue p_queue_name.
*
* @param p_queue_name The name of queue associate to the the requested table.
*/
procedure delete_all_request(
p_queue_name in varchar2
);
---------------------------------------- processing ---------------------------
/**
* The procedure is waiting for message.
* When value of input value p_unlimited_time is true, then waiting will be limited by maxiaml possible time defiend by database.
* Otherwise the expected time of waiting is defined by value of MAX_DURATION in table XPP_CONF_PARAM.
*
* @param p_alert The name of message (or alert).
* @param p_msg The content of message.
* @param p_stat Status of message. Possible values is 0, 1, 2. See definition of dbms_alert.waitone.
* @param p_unlimited_time The boolean value is setting waiting time to maximum configured in DB or based on XPP configuration.
*/
procedure wait_my_alert(
p_alert in varchar2
,p_msg out varchar2
,p_stat out number
,p_unlimited_time in boolean default false
);
/**
* The procedure is initiate definition task, register catching of message when queue will be processed and execute the processing of the task.
*
* @param p_task_name The name of task.
* @param p_queue_name The requested name of queue.
* @param p_comment The comment of task.
* @param p_sql_stmt The sql statement to be executed in parallel.
* @param p_parallel_level The level of requested parallel execution of queue.
* @throws c_err_end_of_evaluation_period The evaluation period is over.
*/
procedure initiate (
p_task_name in varchar2
,p_queue_name in varchar2
,p_comment in varchar2
,p_sql_stmt in clob
,p_parallel_level in number
);
/**
* The procedure is cleaning configuration of task
* Note: All exceptions while cleaning are disabled.
*
* @param p_task_name The name of task.
*/
procedure clean_task (
p_task_name in varchar2
);
/**
* The procedure is sending message indentify by p_name parameter with context in parameter p_message.
* Note: When the length of context of message is longer then 1900 bytes then is cut to 1900
*
* @param p_name The name of message.
* @param p_message The content of the message.
*/
procedure send_message(
p_name in varchar2
,p_message in varchar2
);
/**
* The function is returning of processing of task in varchar2.
* List of possible statuses
* NOT_EXISTS
* CREATED
* CHUNKING
* CHUNKING_FAILED
* CHUNKED
* PROCESSING
* FINISHED
* FINISHED_WITH_ERROR
* CRASHED
* <p>
* @return The status of tasks in varchar2.
*/
function get_processing_status(p_task_name in varchar2)
return varchar2;
/**
* The function is returning true task is running or configured an ready to running, otherwise it return false.
*
* @param p_task_name The name of task.
* @return It returns true when task is running, otherwise it returns false.
*/
function is_task_running (
p_task_name in varchar2
) return boolean;
/**
* The function is returning true task is successfuly finished, otherwise it return false.
*
* @param p_task_name The name of task.
* @return It returns true when task is successfuly finished, otherwise it returns false.
*/
function is_task_finished_successfuly (
p_task_name in varchar2
) return boolean;
/**
* The function returns varchar2 with list of error raised while fatal error of task execution.
*
* @param p_task_name The name of task.
* @return It returns varchar2 with list of error raised while fatal error of task execution.
*/
function collect_and_raise_task_errors(
p_task_name in varchar2
) return varchar2;
/**
* The procedure is chceking if the instance is running.
* When is not running the it runs the parallel task.
* Each task will try in concurency mode dequeue and process messages from the queue.
*
* @param p_queue_name The requested name of queue.
* @throws c_err_error_while_run_parallel The creation of parallel task fail.
*/
procedure run_subscriber_processing(
p_queue_name in varchar2
);
/**
* The procedure is stopping running instance of task.
* It will raise exception when parameter p_raise_exeception is set to true and task is not running.
*
* @param p_queue_name The requested name of queue.
* @throws c_err_task_not_exists The task to stop not exists.
*/
procedure task_stop(
p_task_name in varchar2
,p_raise_exeception in boolean default true
);
/**
* The procedure is returning identification of official buyer of the XPP.
*
* @param p_company_name The name of company.
* @param p_invoice_id The identification of invoice.
* @param p_paymenent_type The payment information.
* @param p_paymenent_date The date of payment.
*/
procedure licence_id (
p_company_name out varchar2
,p_invoice_id out varchar2
,p_paymenent_type out varchar2
,p_paymenent_date out varchar2
);
end xpp_internal; |