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:
| Java | | copiar código | | ? |
| 1 | |
| 2 | String processCreateResult = create(processId : "/Teste", arguments : null, argumentsSetName : "BeginIn"); |
| 3 |
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.
| Java | | copiar código | | ? |
| 1 | |
| 2 | (ProcessService).connectTo(url : Fuego.Server.directoryURL, user : "tester", password : "tester"); |
| 3 | businessProcess = (ProcessService).getProcess(process : "/Teste"); |
| 4 |
Agora para visualizar o resultado, basta o seguinte código:
| Java | | copiar código | | ? |
| 1 | |
| 2 | logMessage("-------------------------------------------------------------------"); |
| 3 | logMessage("Instância do Processo Criado: "+processCreateResult); |
| 4 | logMessage("Referência da Instância Recuperada: "+businessProcess); |
| 5 | logMessage("-------------------------------------------------------------------"); |
| 6 |
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