Retorna a Fase referente a execucao do concorrente, no formato codigo, como por exemplo, RUNNING ou COMPLETE (utilizado para comparacoes e verificacoes universais em programas).- Dev_status: Retorna o Status referente a execucao do concorrente, no formato codigo, como por exemplo, NORMAL (utilizado para comparacoes e verificacoes universais em programas).- Message: Mensagem de conclusao do concorrente. Por exemplo, Conclusao normal (depende da linguagem).Segue um exemplo completo, implementando todos estes recursos:declare -- -- Variavel para a chamada SUBMIT_REQUEST. w_request_id integer; w_request_status boolean; w_nr_verificacao number; w_cancel_request boolean; -- -- Variaveis para a chamada WAIT_FOR_REQUEST. v_phase varchar2(20); v_status varchar2(20); v_message varchar2(150); v_dev_phase varchar2(20); v_dev_status varchar2(20); -- -- Variaveis para simulacao da sessao EBS. w_resp_appl_id varchar2(50); w_resp_id varchar2(50); w_user_id varchar2(50); w_org_id varchar2(50); --begin -------------------------------- --Submete o processo concorrente -------------------------------- w_request_id := fnd_request.submit_request( 'TGR' ,'TGR_GL_GERA_VIS_ORCATO_FUT_ALL' ,null ,null ,false ,'371' ,'N' ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ,chr(0) ); -- ----------------------------------------------------------------------- -- Verifica se foi submetido com sucesso. -- Se foi submetido com sucesso, W_REQUEST_ID tera o ID do concorrente. -- Caso contrario, ele tera 0 (zero). ----------------------------------------------------------------------- if w_request_id = 0 then raise_application_error(-20001, 'Nao foi possivel submeter o concorrente !!!: '||w_request_id); else dbms_output.put_line('Concorrente gerado: '||w_request_id); end if; -- commit; -- Sempre colocar quando usar wait_for_request. -- ------------------------------------ -- Verifica o Status do Concorrente. ------------------------------------ w_request_status := fnd_concurrent.get_request_status( w_request_id ,null ,null ,v_phase ,v_status ,v_dev_phase ,v_dev_status ,v_message); -- -- -------------------------------------------------------------- -- Entra no processo de espera pelo terminco do concorrente. -- -------------------------------------------------------------- w_nr_verificacao := 1; loop -- --------------------------------------- -- Aguarda a conclusao com concorrente. --------------------------------------- if not fnd_concurrent.wait_for_request( w_request_id ,1 -- verifica apos um 1 segundo (sleep). ,3 -- apos o inicio da verificacao, aguarda 3 segundos e encerra a espera. ,v_phase ,v_status ,v_dev_phase ,v_dev_status ,v_message) then -- raise_application_error(-20001, v_message); -- end if; -- -- Apos 3 verificacoes de espera, e o concorrente ainda nao finalizou, cancela a execucao. if w_nr_verificacao = 3 then -- --------------------------------------------------------------------------------------- -- Se depois de 3 verificacoes o concorrente ainda nao concluiu, cancelamos o concorrente. -- --------------------------------------------------------------------------------------- w_cancel_request := fnd_concurrent.Cancel_Request( w_request_id ,v_message); -- dbms_output.put_line('O tempo de execucao inspirou! ('||w_nr_verificacao||' verificacoes).'); -- end if; -- exit when (v_dev_phase = 'COMPLETE'); -- w_nr_verificacao := w_nr_verificacao + 1; -- end loop; -- dbms_output.put_line('Mensagem: '||v_message); -- ----------------------------------------- -- Verifica se foi concluido com sucesso. ----------------------------------------- if v_dev_status not in ('NORMAL', 'WARNING') then dbms_output.put_line('Concorrente terminou com erro: '||v_status); else dbms_output.put_line('Concorrente terminou com o status: '||v_status); end if; --end;Observacoes Gerais: Para que a execucao via codigo funcione, o concorrente deve estar cadastrado no EBS, com seus parametros definidos (caso houver), e repeitar a sequencia destes parametros na chamada SUBMIT_REQUEST, ou