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

3 comentários:

  1. Aeee Riquinho, tá indo esse blog cara, vlw mesmo, mas cara ia ser bom alguns tutoriais de SQL, tanto pra desenvolvimento em banco e para usuário.

    Abs

    ResponderExcluir
  2. E ai véinho... valeu por deixar um comentário no Blog, mas, infelizmente o Blog não tem a opção de deixar arquivos anexo (tipo um tutorial ou apostila) ou não sei onde fazer isso.

    Abs

    ResponderExcluir
  3. vc mesmo fazer um do tipo e postar...

    mas tá bom cara, dá pra tirar algumas soluções daqui ;D

    Vlw

    ResponderExcluir