Het is eenvoudig mogelijk om vanuit eigen programmatuur de uitvoering van een achtergrondproces aan te vragen bij Invantive Vision. Gebruik hiervoor PL/SQL-code zoals:
begin
--
-- Start a job with parameters.
--
-- Log on to Invantive.
--
bubs_session.set_session_info
( 'my_program_name'
, 'start etl process'
, 'system'
, 'no query'
, coalesce(sys_context('userenv', 'ip_address'), '?')
, sys_context('userenv', 'host')
, 'my_url'
, '$Header: http://svn.invantive.com/repos/p104/trunk/help/nl/manual/Topics/voorbeeld-eigen-achtergrondproces.xml 19891 2012-10-09 13:23:03Z gle3 $' || to_char(sysdate, 'YYYYMMDDHH24MISS')
);
--
-- Submit background job.
--
bubs#background_jobs.submit('BUBS_RUN_ETL', sysdate);
--
-- Fill parameters (optional).
--
bubs#background_jobs.set_parameter('p_etl_file', '../etl/example.kjb');
bubs#background_jobs.set_parameter('p_log_level', 'BASIC');
bubs#background_jobs.finish_parameter_entry;
--
-- Save to allow job to be picked up by schedulers.
--
commit;
--
-- Wait till job ends (optional).
--
-- Starting release b41, you can substitute this code by:
--
-- bubs#background_jobs.wait_for_finish_job
--
declare
l_dummy pls_integer;
begin
while true
loop
select 1
into l_dummy
from bubs_background_jobs_v bjb
where 1=1
and bjb.bjb_seq = bubs#background_jobs.get_bjb_seq_last_submitted
and bjb.bjb_datum_einde is null
;
end loop;
exception
when no_data_found
then
null; -- Job ended.
end;
end;
Je kunt ook vanuit een job weer andere jobs starten. Je hoeft dan alleen de code vanaf ‘Submit background job’ te gebruiken. Het wachten op de afronding van alle gestarte jobs kan met:
bubs#background_jobs.wait_for_finish_all_child_jobs;