terça-feira, 29 de abril de 2008

Coldfusion 8 conversando com Intalio BPMS

Depois de muitas tentativas de fazer o Coldfusion conversar com o BPMS da Intalio, entre elas, usar Proxy de webservices, da WSO2 OxygenTank, (http://wso2.org/projects/esb/java) que na tentativa de filtrar o que estava provocando erros no axis do Coldfusion, acabou não funcionando, pois o problema eram os BUGs do próprio Axis da Apache.

 

Eu ia construir uma série de webservices em C# que funcionassem como Proxy, convertendo as chamadas do Intalio BPMS para o Coldfusion e vice versa. Mas o empreendimento seria grande demais, pois a cada manutenção do de qualquer serviço tanto de um lado como do outro, deveria ser feita manutenção no meio também.

 

Então tomei uma decisão radical: mergulhar no código fonte do Axis (disponível na Apache em http://svn.apache.org/viewcvs.cgi/webservices/axis/trunk/) e tentar corrigir seus problemas perante o Intalio. Eu já sabia que o problema era ele, pois sua tecnologia foi substituída pelo Axis2, mas o Coldfusion continua usando a versão 1.

No site da apache (https://issues.apache.org/jira/browse/AXIS) mostra todos os bugs conhecidos e corrigidos do Axis, e encontrei um relacionado com o problema que tive, relacionado com as declarações <SOAP:FAULT>.

 

Comecei a fazer testes nos fontes do Axis e encontrei vários pontos que provocavam problemas.

O Coldfusion lida com webservices gerando códigos em Java de cada um dos serviços, e essa geração é feita pelo axis usando o comando WSDL2Java.

Ao gerar os fontes em Java para o Coldfusion, o axis falhava na geração de nomes de classes os mesmos não compilavam dentro do CF.

Fui eliminando os problemas um por um e acabei chegando a um ultimo, uma função chamada getAttachments dentro da classe stub.java – sempre que compilava o wsdl para Java conflitava essa função. O problema era a chamada do serviço TaskManagementService do Intalio, que tem uma operação com o mesmo nome, e o axis acabou gerando esse método com o mesmo nome do herdado, provocando um conflito de heranças.

Esse eu também corrigi, e agora estou usando um AXIS personalizado dentro do ColdFusion 8 (funciona no 7 tambem).

 

Se alguém tiver o mesmo problema é só me pedir que eu mando o pacote do Axis para testar.

 

Fernando Francisco de Oliveira

Analista de Suporte - TI

Dental Morelli

 

Nenhum comentário: