Mostrando postagens com marcador Workflow. Mostrar todas as postagens
Mostrando postagens com marcador Workflow. Mostrar todas as postagens

segunda-feira, 13 de abril de 2009

Dicas de Workflow - Parte 2

Olá pessoal,

Muitas vezes quando vamos abrir um Workflow dá erro, e o mais legal disso é que na maioria das vezes este erro não tem nada haver com o nosso Workflow.





O porquê acontece esse erro já não sei, mas sei a solução. Roda os comandos abaixo e pronto! Não dará mais o erro.


update wf_activities_tl
set display_name = rtrim(display_name)
where display_name<>rtrim(display_name)
/
update wf_activities_tl
set description = rtrim(description)
where description<>rtrim(description)
/
commit
/
update wf_item_types_tl
set display_name = rtrim(display_name)
where display_name<>rtrim(display_name)
/
update wf_item_types_tl
set description = rtrim(description)
where description<>rtrim(description)
/
commit



Outra dica legal é pra quando você executa o Workflow e da algum erro no momento de execução, pra pegar esse erro é só rodar a query mágica abaixo passando o ITEM_TYPE e o ITEM_KEY do seu Workflow:


SELECT WPA.PROCESS_NAME
, WPA.ACTIVITY_NAME
, WIAS.BEGIN_DATE
, WIAS.END_DATE
, WIAS.*
FROM WF_ITEM_ACTIVITY_STATUSES WIAS
, WF_PROCESS_ACTIVITIES WPA
WHERE WIAS.PROCESS_ACTIVITY = WPA.INSTANCE_ID
AND WIAS.ITEM_TYPE = 'XXODMAIL'
AND WIAS.ITEM_KEY = '1'



Abs a todos,

terça-feira, 7 de abril de 2009

Dicas de Workflow - Parte 1

Pessoal,

Hoje estou afim de falar sobre Workflow, então vou passar algumas dicas básicas para quem esta começando mexer com essa ferramenta da Oracle que quando funciona é "Lindo Demais", mas como nada é perfeito ela é cheio de bugs.

A primeira dica é onde se cadastra o Workflow no EBS, ou melhor, onde não se cadastra... Estranho isso, né? Quando se navega pela responsabilidade do "Administrador do Workflow" se encontra um monte de Workflow, mas o engraçado disso é que não tem uma tela para cadastrá-los. As informações que aparecem na tela vêm do banco de dados quando se cria um Workflow no "Oracle Workflow Builder".

"Oracle Workflow Builder" é a ferramenta onde se modela e desenha o fluxo do Workflow.

Quando se entra no "Oracle Workflow Builder" e se loga em um banco de dados vai aparecer todos os Workflows associados ao usuário que você logou. Procure sempre fazer isso usando o usuário APPS.

Para disparar ou 'startar' um Workflow geralmente usa uma trigger ou um concurrent, depende da necessidade. Para fazer disparar o seu Workflow é preciso um código PL/SQL simples com apenas dois procedimentos:

- WF_ENGINE.CREATEPROCESS
Esse procedimento serve para criar/associar um ITEM_TYPE (nome interno do Workflow) ao seu processo inicial (um Workflow pode ter vários processos dentro dele) e dar o seu ITEM_KEY (um número de controle, tipo um ID).

- WF_ENGINE.STARTPROCESS
Executa o Workflow que criou com o comando acima.

Exemplo:


DECLARE
ITEM_TYPE VARCHAR2(30);
ITEM_KEY VARCHAR2(240);
BEGIN
ITEM_TYPE := 'XXSENDMAIL';
ITEM_KEY := '10';
WF_ENGINE.CREATEPROCESS(ITEM_TYPE,ITEM_KEY,'XX_SENDMAIL_P');
WF_ENGINE.STARTPROCESS(ITEM_TYPE,ITEM_KEY);
END;


Onde:
- 'XXSENDMAIL' é o ITEM_TYPE.
- '10' é o ITEM_KEY.
- 'XX_SENDMAIL_P' é nome interno do processo inicial do Workflow.

Um procedimento muito usando quando se dispara um Workflow é passar parâmetros para ele, ou melhor, setar seus atributos. Existe apenas uma restrição para setar os atributos do Workflow, só podem setar um atributo se o processo já estiver criado, do resto pode-se seta-lo em qualquer lugar. O comando para setar um atributo é:

WF_ENGINE.SETITEMATTRTEXT(ITEM_TYPE,ITEM_KEY,'XX_FROM_A','RIQUE');

Onde:
- 'XX_FROM_A' é o nome interno do atributo.
- 'RIQUE' é o valor que estou setando o atributo.

Daqui alguns dias passo mais algumas dicas legais de Workflow.


Abs

segunda-feira, 30 de março de 2009

Rotina para enviar e-mail em PL/SQL sem o servidor SMTP fixo

E ai galera.... bem vindos ao meu blog....

Esse blog tem a finalidade de ajudar os profissionais do mundo Oracle, principalmente os desenvolvedores EBS.

Minha primeira postagem é um problema que acredito que a maioria das pessoas que tenha uma rotina feita em PL/SQL para mandar e-mail tem...

Se você quer uma rotina de mandar e-mail no Oracle usando PL/SQL é muito fácil de encontrar no Google, vai trazer um monte.... mas praticamente todas tem o mesmo problema.... praticamente todas as rotinas estão com o servidor SMTP fixo, um maldito Hard Code!!!! rs... Ai qdo aquele carinha resolve mudar o servidor SMPT ou alterar o nome dele, o desenvolver tem que alterar o código....

Depois de alguns pesquisas no Google, no Metalink, em telas do EBS e em tabelas do EBS montei a seguinte query:
-- Busca servidor SMTP
BEGIN
SELECT a.parameter_value
INTO v_smtp_server
FROM fnd_svc_comp_param_vals a
, fnd_svc_components b
, fnd_svc_comp_params_b c
WHERE b.component_id = a.component_id
AND b.component_type = c.component_type
AND c.parameter_id = a.parameter_id
AND b.component_name LIKE '%Mailer%'
AND c.parameter_name = 'OUTBOUND_SERVER'
AND c.encrypted_flag = 'N';
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20000,'Erro ao buscar servidor SMTP - 'SQLERRM);
END;
Essa query esta buscando o servidor SMTP que o Workflow utiliza.

Ai vc pode pensar, mas continua com Hard Code.... bom, tecnicamente sim..... teoricamente não....

O COMPONENT_NAME é o nome dos serviços do Workflow que esta suas configurações e o OUTBOUND_SERVER é o nome da propriedade que esta o servidor do SMTP do Workflow.

Se você precisar alterar o servidor SMTP não será necessário alterar o programa, basta entrar no caminho abaixo do Oracle EBS, geralmente quem faz essa alteração é o DBA:

- Responsabilidade: Administrador de Sistemas
- Workflow
- Service Components
- Workflow Notification Mailer ( Aqui já mostra qual o servidor SMPT)
- Para alterar clicar no botão Edit

A porta por default é a 25.

Isso tudo foi testado usando o Oracle EBS R12 e banco 10.2.0.3.0

Mais uma coisa, desculpa se tiver algum erro de ortografia.... é que o SQL Navigator não tem corretor ortográfico.... heheheheheheeeeeeeee


Abs a todos,