Iniciar um fluxo(WorkFlow) pelo PLSQL Aprovação de OC

Este forum é destinado a perguntas relacionadas a Oracle, mas que não se enquadram nos forums acima. Aqui serão tratadas também sobre outras tecnologias da oracle, como o Workflow, BPEL, Spatial, OCS, etc.
Responder
LordElfo
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 111
Registrado em: Qui, 22 Fev 2007 2:34 pm
Localização: DF
________________
http://lordelfo.blogspot.com
Thiago Façanha

Pessoal.
Estou tendo dificuldades em iniciar o Fluxo de Aprovação de Ordem de compras pelo PLSQL.
O comando está conseguindo iniciar o fluxo porém não estou conseguindo que ele termine.

Quando clico em "Histórico da atividade" ele mostra o status "Aguardando programa Concorrente".
Já rodei a concurrent "segundo Plano" mesmo assim nada.
Se mando detalhar aparece as informações abaixo

Selecionar tudo

Nome		Aguardar Programa Concorrente
Nome Interno		WAITFORCONCURRENTPROGRAM
Tipo		Função
Descrição		
Versão da Atividade		4
Tipo de Resultado		Status do Programa Concorrente
Resultado da Atividade Default		
Nome da Mensagem		
Funções de Expansão		Não
Tipo de Função		PL/SQL
Função		FND_WF_STANDARD.WAITFORCONCPROGRAM
Revisita em Loop		Redefinir
Custo		0
Custo da atividade da função em segundos.
Workflow de Erros		Sistema: Erro
Processo de Erros		
Nó Inicial/Final		
Tipo de Função do Executor		Constante
Função do Executor		
	Função do executor ou nome do atributo de workflow interno.
Comentário do Desenvolvedor		
Timeout	
Quando vou olhar os detalhes aparece "Erro do PDF da OC The system could not generate and/or communicate at least one of the documents to the supplier or the approver. Please contact the system administrator."

Abaixo esta a procedure que estou utilizando....Tentei chamar tanto o fluxo CORE "POAPPRV" como o customizado da empresa.

Selecionar tudo

 PROCEDURE start_approval_wf(p_document_id NUMBER /*
                                                           ,p_document_type_code VARCHAR2
                                                           ,p_document_subtype   VARCHAR2
                                                           ,p_user_id            NUMBER
                                                           ,p_resp_id            NUMBER
                                                           ,p_resp_appl_id       NUMBER
                                                           ,p_note               VARCHAR2*/) IS
    --pragma autonomous_transaction;
  
    l_vitemkey         VARCHAR2(100);
    l_seq_for_item_key VARCHAR2(20);
  
  BEGIN
  
    fnd_client_info.set_org_context('108');
    fnd_global.apps_initialize(1126, 50326, 178);
    --p_user_id, p_resp_id, p_resp_appl_id);
  
    BEGIN
      SELECT to_char(po_wf_itemkey_s.NEXTVAL) INTO l_seq_for_item_key FROM sys.dual;
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line('ERRO select to_char(PO_WF_ITEMKEY_S.NEXTVAL) ' || SQLERRM);
    END;
    l_vitemkey := to_char(p_document_id) || '-' || l_seq_for_item_key;
  
    po_reqapproval_init1.start_wf_process(itemtype               => 'MQSAPO', -- POAPPRV
                                          itemkey                => l_vitemkey, -- null
                                          workflowprocess        => NULL,
                                          actionoriginatedfrom   => NULL,
                                          documentid             => p_document_id --p_document_id --v_doc_id
                                         ,
                                          documentnumber         => NULL,
                                          preparerid             => 1126, --fnd_global.employee_id,
                                          documenttypecode       => 'RELEASE' --v_header_interface.document_type_code
                                         ,
                                          documentsubtype        => 'BLANKET' --v_header_interface.document_subtype
                                         ,
                                          submitteraction        => 'APPROVE',
                                          forwardtoid            => NULL,
                                          forwardfromid          => NULL,
                                          defaultapprovalpathid  => NULL,
                                          note                   => 'Teste de WF Acordo de compra. 01' ||
                                                                    p_document_id,
                                          printflag              => 'N',
                                          faxflag                => 'N',
                                          faxnumber              => 'N',
                                          emailflag              => 'N',
                                          emailaddress           => NULL,
                                          createsourcingrule     => 'N',
                                          updatesourcingrule     => 'N',
                                          releasegenmethod       => NULL,
                                          massupdatereleases     => 'N',
                                          retroactivepricechange => 'N',
                                          orgassignchange        => NULL,
                                          communicatepricechange => 'Y');
  
    --commit;
  EXCEPTION
    WHEN OTHERS THEN
      raise_application_error(-20000, 'ERRO AO INICIAR WF DE APROVAÇÃO: ' || SQLERRM);
  END;
LordElfo
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 111
Registrado em: Qui, 22 Fev 2007 2:34 pm
Localização: DF
________________
http://lordelfo.blogspot.com
Thiago Façanha

Olá Pessoal.
Consegui aqui.

Um Consultor aqui da empresa conseguiu resolver o problema.
Na hora de usar o user_id eu estava passando o employeeid

segue forma que resolveu..

Selecionar tudo

    fnd_global.apps_initialize(fnd_global.user_id, fnd_global.resp_id, fnd_global.resp_appl_id);
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

Lord, tudo bem?

cara, será que você pode me ajudar?

temos o seguinte problema: as notificações de aprovação são enviadas para os usuários aprovadores, mas por algum motivo o cara não aprova ou não vê o e-mail, ou se esquece de aprovar, enfim..

o que preciso fazer é uma rotina que verifique as notificações que foram enviadas a mais de 1 dia e não tiverem retorno e reenvie novamente para os usuários (a ideia seria "schedular" isso num concurrent pra ficar rodando diariamente),

comentaram que o próprio WF core deveria fazer isso quando rola timeout e tal, no entanto tenho dois problemas:

1º - eu não tenho experiência com WF pra mexer diretamente nele
2º - a empresa solicitou preferencialmente que eu investigasse uma solução SEM que tenhamos que mexer no WF

então pergunto, é possível fazer uma customização via PL/SQL para atender essa minha necessidade, esse seu exemplo seria um ponto de partida ou a própria solução?!?!?

obrigado
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

versão do aplicativo:

Selecionar tudo

Aplicativos Oracle: 11.5.10.2
vindalencio
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 140
Registrado em: Qui, 16 Fev 2006 9:42 am
Localização: Curitiba
Vanderlei Indalencio

Amigo, Aguém pode me ajudar???
Estamos com problemas no E-mail que é enviado para o Fornecedor...
No cadastro do Fornecedor está um E-mail...
Mas a Notificação está indo pra outro...
Algém sabe de onde o WF pega isso???
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes