Páginas filhas
  • Integração Fluig RM

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Nota

OBS: Para testar os webservices deve-se utilizar um aplicativo que utilize protocolo Soap SOAP nas chamadas. Indicamos o SoapUI ou o “WS TOTVS Client” disponibilizado na pasta de instalação do RM.

...

Obs: o campo “NOME_DATASERVER” é o ID obtido de acordo com o passo 2 “Localizando o serviço RM que deseja integrar

 

function createDataset(fields, constraints, sortFields)

{

...

      var NOME_DATASERVER = "FisEtdDataBR";

       

      try

...

      {

...

            // carrega o webservice...

...

            var authService = getWebService();

             

            // monta o filtro...

...

            var parsedConstraints = parseConstraints(constraints, true);

             

            // faz a leitura...

...

            var result = authService.readView(NOME_DATASERVER, parsedConstraints.filter, parsedConstraints.context);

             

            // carrega o xml...

...

            var xmlResultados = new XML(result);

             

            // verifica se a tabela é válida...

...

            if(xmlResultados.GETD == null){

...

                  return logError("A tabela GETD nao foi encontrada: " + NOME_SERVICO + " - " + CAMINHO_SERVICO);

...

            }

             

            // inicializa o dataset do resultado...

...

            var dataset = DatasetBuilder.newDataset();

...

            dataset.addColumn("DESCRICAO");

...

            dataset.addColumn("CODETD");

             

            // preenche o dataset...

...

            for each(item in xmlResultados.GETD)

...

            {

...

                  dataset.addRow(new Array(

...

                        item.DESCRICAO.toString()

...

                        , item.CODETD.toString()

...

                  ));

...

            }

             

            // retorna...

...

            return dataset;

...

      }

...

      catch (e)

...

      {

...

            if (e == null)

...

    e = "Erro desconhecido!";

...

            var mensagemErro = "Ocorreu um erro ao ler dados do RM: " + e;

...

            return logError(mensagemErro);

...

      }

}

function logError(mensagemErro)

{

...

      var dataset = DatasetBuilder.newDataset();

...

      dataset.addColumn("erro");

...

      dataset.addRow(new Array(mensagemErro));

...

      log.error(mensagemErro);

...

      return dataset;

}

 

// carrega o web service

function getWebService(){

...

      var NOME_SERVICO = "WSDATASERVER";

...

      var CAMINHO_SERVICO = "com.totvs.WsDataServer";

       

      var dataServerService = ServiceManager.getServiceInstance(NOME_SERVICO);

...

      if(dataServerService == null){

...

            throw "Servico nao encontrado: " + NOME_SERVICO;

...

      }

...

     

...

      var serviceLocator = dataServerService.instantiate(CAMINHO_SERVICO);

...

      if(serviceLocator == null){

...

            throw "Instancia do servico nao encontrada: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;

...

      }

       

      var service = serviceLocator.getRMIwsDataServer();

...

  

...

      if(service == null){

...

            throw "Instancia do dataserver do invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;

...

      }

       

      var serviceHelper = dataServerService.getBean();

...

      if(serviceHelper == null){

...

            throw "Instancia do service helper invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;

...

      }

       

      var authService = serviceHelper.getBasicAuthenticatedClient(service, "com.totvs.IwsDataServer", 'mestre', 'totvs');  

...

      if(serviceHelper == null){

...

            throw "Instancia do auth service invalida: " + NOME_SERVICO + " - " + CAMINHO_SERVICO;

...

      }

...

     

...

      return authService;

}

 

//Transforma o conceito de constraints do Fluig para o Filtro do TBC.

function parseConstraints(constraints, filterRequired)

{

...

      // inicializa o resultado...

...

      var result = [];

...

      result.context = "";

...

     

...

      // inicializa o filtro...

...

      var filter = "";

...

     

...

      // varre as contraints...

    for

...

     each(con in constraints) {

   

...

  var fieldName = con.getFieldName().toUpperCase();

   

...

  if (fieldName == "RMSCONTEXT")

   

...

  {

   

...

        result.context = con.getInitialValue();

   

...

        continue;

   

...

  }

   

...

 

   

...

  filter += "(";

   

...

 

   

...

  if (fieldName == "RMSFILTER")

...

            {

   

...

        filter += con.getInitialValue();

...

            }

   

...

  else

...

            {

   

...

        if (con.getInitialValue() == con.getFinalValue() || isEmpty(con.getFinalValue()))

...

                  {

...

                        filter += con.getFieldName();

...

                        var isLike = false;

...

                        switch(con.getConstraintType())

...

                        {

...

                             case ConstraintType.MUST:

...

                                   filter += " = ";

...

                             break;

...

                             case ConstraintType.MUST_NOT:

...

                                   filter += " = ";

...

                             break;

...

                             case ConstraintType.SHOULD:

...

                                   filter += " LIKE ";

...

                                   isLike = true;

...

                             break;

...

                             case ConstraintType.SHOULD_NOT:

...

                                   filter += " NOT LIKE ";

...

                                   isLike = true;

...

                             break;

...

                        }

...

                        filter += getFormattedValue(con.getInitialValue(), isLike);

...

                  }

   

...

        else

...

                  {

   

...

              filter += con.getFieldName();

   

...

              filter += " BETWEEN ";

   

...

              filter += getFormattedValue(con.getInitialValue(), false);

   

...

              filter += " AND ";

   

...

              filter += getFormattedValue(con.getFinalValue(), false);

...

                  }

...

            }

   

...

 

...

            filter += ") AND ";

...

      }

   

    if (filter.length == 0)

    {

   

...

  if(filterRequired){

   

...

    filter = "1=2";

   

...

  }

   

...

  else{

              filter = "1=1";

   

...

  }

    }

    else

   

...

  filter = filter.substring(0, filter.length-5);

   

    // guarda o filtro...

    result.filter = filter;

   

    // retorna o resultado...

    return result;

}

 

function isEmpty(str) {

    return (!str || 0 === str.length);

}

 

function getFormattedValue(value, isLike){

...

      if(isLike){

...

        return "'%" + value + "%'";

...

      }

...

      else{

...

        return "'" + value + "'";

...

      }

}

...

 

...

 

Passo 2

 

Utilizar o serviço cadastrado nos pontos requeridos no escopo da integração.

...

Mais informações sobre customização Fluig podem ser obtidas em Customização de Workflow.

 

ERP RM acessando Fluig

O processo de integração do ERP SAP RM com o Fluig ocorre por chamada dos Web Services Fluig padrão SOA pelo ERP SAP.

 

Nota

Mais informações sobre os Web Services Fluig podem ser obtidas em Utilização de Web Services.

...