Usando PAPI para criar e recuperar instância de processos no ALBPM/OracleBPM
O PAPI (Process API) é uma API do ALBPM/OracleBPM que permite que se possa interagir diretamente com a engine de execução de processos da ferramenta, e dentre outras coisas é possível: criar instâncias, recuperar instâncias, realizar buscas, abortar instâncias, enviar notificações, auditar uma instância, etc.
Ou seja, é muito importante sabermos que essa API existe e principalmente sabermos como usá-la. Existem duas maneiras de usá-la: externa e internamente. Externamente isso pode ser feito usando o PAPI-WS, que são serviços expostos pelo próprio ALBPM para que se possa usar o PAPI, porém um pouco limitado. Outra opção é usando a JAVA API, que é mais completa. Dentro do ALBPM usamos diretamente a Java API através do Catálogo de API’s da ferramenta.
Criando e Recuperando Instâncias de Processos
Fiz um exemplo de código bem simples no ALBPM para poder apresentar como criar instâncias e recuperar instâncias de processos. Seguem os dois exemplos com os respectivos comentários:
Criando Instâncias
Para criar instâncias é muito simples, basta usarmos o método create da API ProcessInstance, passando como parâmetros o ID do processo (sempre com “/” na frente), os argumentos de incialização (caso existam), e o nome do método de inicialização, que pode ser visto através da opção “argument mapping” do evento de inicialização. Segue o código:
String processCreateResult = create(processId : "/Teste", arguments : null, argumentsSetName : "BeginIn");
Recuperando Instâncias
Para recuperar instâncias também é muito simples, mas devemos ter atenção com a autenticação no DirectoryService onde o projeto correspondente a instância a ser recuperada está deployado.
Esse passo é necessário, pois para recuperar instâncias é usada outra API, no caso a API ProcessService e para tal precisamos autenticar no DirectoryService antes de tentar recuperar a instância de fato.
Para autenticação no DirectoryService, usamos o método connectTo da API ProcessService, e esse método espera 3 parâmetros: A URL do DirectoryService (pode-se usar as constantes como no exemplo abaixo), o usuário e a senha. O usuário e a senha devem possuir a role onde a atividade de criação da instância está associada.
(ProcessService).connectTo(url : Fuego.Server.directoryURL, user : "tester", password : "tester");
businessProcess = (ProcessService).getProcess(process : "/Teste");
Agora para visualizar o resultado, basta o seguinte código:
logMessage("-------------------------------------------------------------------");
logMessage("Instância do Processo Criado: "+processCreateResult);
logMessage("Referência da Instância Recuperada: "+businessProcess);
logMessage("-------------------------------------------------------------------");
Se você gostou desse tópico, por favor considere deixar um comentário ou se inscreva no feed e tenha no futuro todos os tópicos entregues diretamente no seu agregador.








Prezado Marcos,
Gostei muito do se artigo…realmente está me ajudando bastante. Pelo que li o PAPI pode criar instâncias, recuperar instâncias, realizar buscas, abortar instâncias, enviar notificações, auditar uma instância, etc. Pois bem, essa parte que vc exemplificou de criação e recuperação de instancias consegui implementar com sucesso. Só que preciso abortar instâncias, vc sabe como fazer isso ou algo que possa me ajudar?
Valeu,
Renan.
Fala Renan, que bom que o post lhe ajudou.
Para abotar você pode usar o ProcessInstance.ABORTED.
Cada instância de um processo no ALBPM é representada pelo componente ProcessInstance.
Na doc da Oracle tem mais info: http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/standard_components/Fuego/Lib/ProcessInstance/ProcessInstance_component.html
Valeu Marcos!!
Saudações…Renan
Permita-me te chamar de amigo, porque quem ajuda o próximo, sem saber quem é, é porque é realmante um amigo.
Sei que para você pode parecer simples, mas eu simplesmente não estou conseguindo sair do outro lado.
Ainda a velha história Processo Cancelar Instâncias – O que isso precisa fazer? Cancelar instâncias geradas por um usuário e notificar ao usuário solicitante (quando o pedido for cancelado por uma pessoa diferente daquela que criou a instância (um administrador, por exemplo). Cara, já peguei a PAPI e até consegui fazer algumas coisas, mas não exatamente como preciso.
Numa presentation qualquer, basicamente o usuário vai informar alguns parâmetros, como por exemplo o número do pedido, a área do solicitante, data de abertura…entre outros. Ao informar o critério de pesquisa, ele clica em “Pesquisar” aí um método (que pensei em poder fazer com a PAPI), recupera as instâncias com base nas informações. Logo depois é necessário que as instâncias sejam exibidas para o usuário numa outra tela, onde ele seleciona as que quiser, e clica no botão “Cancelar Pedidos Selecionados”. Na sequência é enviado o e-mail, o pedido é cancelado e o status alterado para Cancelado.
Meu amigo, fiz um processo enorme, mas nunca precisei usar a PAPI e nem tão pouco fazer este tipo de processo (listar as instâncias numa tela para o usuário poder cancelar).
Pode me dar o caminho das pedras?