Árvore de páginas

Í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
		}
	});
}