terça-feira, 13 de outubro de 2009

[Oracle BPEL] Iniciando um processo a partir de um Email

Semana passada voltei para o projeto em Porto Alegre e o primeiro requisito que tive que implementar é o "Processo de Monitoramento de Email", cujo objetivo é monitorar uma conta de email. Ao chegar um novo email, o processo identifica o cliente e salva os anexos do email na pasta do cliente por meio de FTP.

O Objetivo deste post é mostrar como funciona o disparo de processos através do monitoramento de uma conta de email.

Em resumo, para disparar um processo a partir do monitoramento de uma caixa de email é necessário:
  • Configurar as informações da conta de email que se quer monitorar no servidor BPEL
  • Criar o processo BPEL que será iniciado a partir da chegada de um novo email
Configurando uma conta de Email no servidor BPEL
Para configurar uma conta de email no servidor BPEL é necessário colocar um arquivo de configuração no seguinte diretório:

    \bpel\domains\default\metadata\MailService

Onde:

  • default é o nome do domínio onde o processo será disponibilizado
  • metadata e MailService são dois novos diretórios que devem ser criados

O arquivo de configuração deve ser um arquivo XML (com a extensão .xml) e pode ter qualquer nome, o que permite a criação de diversas contas de Email. O nome desse arquivo será o link entre a conta de email e  o processo BPEL.

Exemplo do arquivo de configuração:



Este arquivo de configuração suporta tanto o protocolo POP3 quanto o IMAP.


Criando o processo BPEL que será iniciado a partir da chegada de um novo e-mail
O primeiro passo é criar um processo assíncrono com a mensagem de entrada do tipo mailMessagem, esta mensagem está definida no schema Mail.xsd que pode ser encotrado em \bpel\system\xmllib.

Dica: O schema Mail.xsd pode ser acessado diretamente pelo browser de internet, através da URL: http://localhost:8888/orabpel/xmllib/Mail.xsd

Onde:
  • localhost é o servidor onde o BPEL está instalado; 
  • 8888 é a porta onde o BPEL foi instalado.
    O schema Mail.xsd faz import do schema common.xsd, então precisamos importá-lo também no projeto BPEL.

    Definindo o Mail Activation Agent
    O Mail Activation Agent irá fazer o polling em uma caixa de email (definida no arquivo de configuração) e irá disparar para cada email recebido uma nova instância do processo.

    Para fazer o link do processo com o arquivo de configuração, precisamos adicionar a seguinte definição no arquivo bpel.xml.


    Onde:
    • heartBeatInterval é a frequência, em segundos, do polling na caixa de email
    • accountName é o nome do arquivo de configuração que definimos anteriormente
    Feito! Agora é só fazer o deploy do processo e testar.


    Dica: Toda vez que você modificar o processo BPEL, o arquivo bpel.xml será gerado novamente, as alterações que você fez serão perdidas e seu processo nunca será inicializado. Então, sempre antes de fazer deploy, adicione novamente a definição do Mail Activation Agent.

    Nenhum comentário:

    Postar um comentário