Índice
Objetivo
O objetivo deste guia é apresentar a forma de integração de widgets com serviços SOAP.
Pré-requisitos
Antes de tudo, é necessário desenvolver o widget para, então, realizar a integração com o ERP RM utilizando o protocolo SOAP.
Criando os arquivos para utilização SOAP
Primeiramente precisamos gerar os arquivos que serão utilizados para consultar o serviço. Neste exemplo, utilizaremos os serviços do ERP RM para obter os dados de aniversariantes.
Para gerar os arquivos, basta executar o comando no console:
wsimport -p pacote -Xnocompile http://endereco-do-server?WSDL Exemplo: wsimport -p com.fluig.kitintranet.proxy.soap -Xnocompile http://servidor-rm/web/wsGlbSSL.asmx?WSDL
Onde:
- "servidor-rm": deve ser substituído pelo endereço do servidor onde se encontra o ERP RM;
- "com.fluig.kitintranet.proxy.soap": deve ser substituído pelo pacote onde desejamos que o código seja gerado.
Após a execução deste comando, os arquivos são gerados na estrutura de pastas conforme o pacote informado.
Conforme apresentado na imagem, foram gerados vários arquivos que são necessários para a consulta de aniversariantes no ERP RM.
Neste caso, utilizaremos apenas uma classe chamada "WsGlbSSL", conforme exemplificado a seguir:
package com.fluig.kitintranet.proxy.rest; import com.fluig.kitintranet.proxy.soap.WsGlbSSL; import com.totvs.technology.wcm.sdk.rest.WCMRest; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/birthdays") @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public class BirthdayProxy extends WCMRest { @GET @Path("today") @Produces(MediaType.APPLICATION_JSON) public Response today(@QueryParam("month") String month, @QueryParam("day") String day, @QueryParam("user") String user, @QueryParam("password") String password) { WsGlbSSL wsGlbSSL = new WsGlbSSL(); String param = "<PARAM><MES>" + month + "</MES><DIA>" + day + "</DIA></PARAM>"; String resultSQL = wsGlbSSL.getWsGlbSSLSoap().getResultSQL(user, password, 0, "V", "INTEGR_FLG.02", param, false); return buildJSONResponse(resultSQL); } }
Esta classe BirthdayProxy.java deve ser chamada via JavaScript utilizando REST. Para saber como criar um serviço REST dentro de um widget, acesse este guia.
O resultado será o seguinte:
getBirthdays: function(month, day, user, password) { WCMAPI.Read({ type: "GET", url: WCMAPI.getServerURL() + '/aniversariantes/api/rest/birthdays/today?month=' + month + "&day=" + day + "&user=" + user + "&password=" + password, async: false, success: function funcao(data) { // código }, error: function (msg){ // código } }); }