Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - Backoffice RM - Integração - WebServices - Utilizando o SoapUI para consumir DataServers RM via WebServices

time.png Tempo aproximado para leitura: 00:10:30 min

Dúvida
Como utilizar o SoapUI para consumir DataServers RM via WebServices?

Ambiente
Cross Segmentos - Backoffice RM - Integração - Todas as versões.

Solução
O que é o Soap?

Soap (Simple Object Access Protocol, em português Protocolo Simples de Acesso a Objetos) é um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída.
A mensagem Soap é baseada na estrutura XML e, normalmente, utiliza protocolos da camada de aplicação, mais notavelmente em chamada de procedimento remoto (RPC) e Protocolo de transferência de hipertexto (HTTP), para negociação e transmissão de mensagens.

O que é o SoapUI?
SoapUI é uma solução para testes funcionais livre e opensource. Ele permite que facilmente você crie e execute testes funcionais, de regressão, de conformidade e de carga automatizados. Em um ambiente de teste unitário, o SoapUI fornece cobertura de teste completo e suporta todos os protocolos e tecnologias padrão, tais como SOAP, REST, HTTP, JMS, AMF e JDBC.
Site oficial: www.soapui.org

Qual relação o SoapUI tem com os DataServers RM?
A arquitetura do RM trabalha com estruturas de dados chamadas DataServers, responsáveis por executarem os principais serviços de manutenção dos dados pela aplicação. Por sua vez, os DataServers RM permitem que você manipule e persista os dados sem o auxílio da MDI RM, por meio de um WebService.

Neste momento o SoapUI entra em cena, pois permitirá você enviar mensagens estruturadas para o Dataserver RM para trabalhar com registros no sistema. Uma vez configurado devidamente, e repassando ao DataServer RM a mensagem via WebService, o sistema submeterá os dados e fará as validações competentes aos métodos do DataServer.

Lembrando que o SoapUI não é a ferramenta que fará a integração de sistemas externos com o RM, ele serve apenas como interface para você testar suas solicitações aos serviços disponibilizados pelos DataServers da RM.

Como configuro o SoapUI para funcionar em conjunto com os DataServers RM?

É preciso inicialmente efetuar algumas configurações para que o SoapUI comunique corretamente com o DataServer RM. Para isso, é preciso habilitar os WebServices RM para utilização, que é feito via Host, conforme documentação abaixo:

Como Expor os Web Services do RM através do Host

Para o exemplo, o Web Service foi disponibilizado via Host.

1. Disponibilize o WebService para utilização através do Host, incluindo as seguintes tags no arquivo RM.Host.Service.exe.config ou RM.Host.exe.config

 


2. Com o SoapUI aberto, crie um novo projeto:



3. Preencha os dados para conexão com o WebService RM. É preciso que o Host esteja em execução. Dê OK.

Preenchendo os dados para conexão com o WebService.    

  1. Veja que no endereço está apresentando qual o local onde o host está em execução (localhost) e qual porta será utilizada para efetuar a comunicação com os Dataservers (8051). A tag de configuração no config do Host referente a esta porta é a “HTTPPORT”.
  2. Neste momento será criada a árvore com os métodos e as requisições para comunicação com os DataServers RM.

Como inicializo uma requisição ao DataServer RM via SoapUI?

Após conectar ao WebService RM, estarão disponíveis uma série de métodos para serem criadas as requisições. Utilizaremos o RM_IwsDataServer para trabalhar com os DataServers RM. Veja como é apresentado no SoapUI:


Neste momento será criada a árvore com os métodos e as requisições para comunicação com os DataServers RM.

Expanda o método ReadRecord e clique duas vezes no Request 1. Um template da mensagem a ser enviada ao DataServer é gerado automaticamente, basta preenchermos devidamente os dados.


Abaixo estão exemplos das mensagens para salvar e ler os registros no sistema:

Template da mensagem do ReadRecord (Leitura de Registros): 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tot="http://www.totvs.com/">
  <soapenv:Header/>
  <soapenv:Body>
    <tot:ReadRecord>
      <!--Optional:-->
      <tot:DataServerName>?</tot:DataServerName>
      <!--Optional:-->
      <tot:PrimaryKey>?</tot:PrimaryKey>
      <!--Optional:-->
      <tot:Contexto>?</tot:Contexto>
    </tot:ReadRecord>
</soapenv:Body>
</soapenv:Envelope> 


Template
da mensagem do SaveRecord (Gravação de Registros):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tot="http://www.totvs.com/">

  <soapenv:Header/>
  <soapenv:Body>
    <tot:SaveRecord>
      <!--Optional:-->
   <tot:DataServerName>?</tot:DataServerName>
      <!--Optional:-->
      <tot:XML>?</tot:XML>
      <!--Optional:-->
      <tot:Contexto>?</tot:Contexto>
    </tot:SaveRecord>
  </soapenv:Body>
</soapenv:Envelope>
 

Para toda request solicitada é preciso preencher o usuário e a senha. Como proceder nesta configuração?

Devemos configurar qual o usuário e senha do sistema RM utilizaremos para fazer login, antes de executar os processos de leitura e gravação. Para tal, existe uma aba chamada Auth no canto esquerdo da parte inferior do Request selecionado.
Em Authorization selecione Add New Authorization:



Inclua o tipo de Autorização Basic:


Preencha o Username e Password do usuário do RM, o qual possui a permissão de acesso a este dataserver. Em Pre-emptive auth, selecione a opção Authenticate pre-emptively:


Para toda request solicitada é preciso preencher o usuário e senha, caso contrário a mensagem não poderá ser enviada ao dataserver.

Como obtenho a estrutura XML da mensagem de ReadRecord a ser enviada ao DataServer RM?
A resposta de uma requisição ReadRecord é uma boa forma de obtermos a estrutura XML para a inserção de novos registros (SaveRecord). Basicamente, é preciso enviar dados como a primary key, contexto e o dataserver do qual você deseja obter resposta.
Via requisição ReadRecord direto no SoapUI, com os parâmetros preenchidos...

Exemplo de requisição ReadRecord:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tot="http://www.totvs.com/">
<soapenv:Header/>
<soapenv:Body>
<tot:ReadRecord>
<!--Optional:-->
<tot:DataServerName>GlbUsuarioData</tot:DataServerName>
<!--Optional:-->
<tot:PrimaryKey>teste</tot:PrimaryKey>
<!--Optional:-->
<tot:Contexto>codcoligada=1;codusuario=mestre;codsistema=G</tot:Contexto>
</tot:ReadRecord>
</soapenv:Body>
</soapenv:Envelope>


Obtemos uma resposta como a abaixo:

Exemplo da Resposta:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <ReadRecordResponse xmlns="http://www.totvs.com/">
         <ReadRecordResult><![CDATA[<GlbUsuario>
<GUSUARIO>
  <CODUSUARIO>teste</CODUSUARIO>
  <NOME>teste</NOME>
  <STATUS>1</STATUS>
  <DATAINICIO>2023-02-10T00:00:00</DATAINICIO>
  <CONFIRMABTNOK>1</CONFIRMABTNOK>
  <SENHA>grLlwolC</SENHA>
  <CONTROLE>-14219</CONTROLE>
  <ULTIMACOLIGADA>6</ULTIMACOLIGADA>
  <CODACESSO>Acesso01</CODACESSO>
  <OBRIGAALTERARSENHA>F</OBRIGAALTERARSENHA>
  <EMAIL>tesste@gmail.com</EMAIL>
  <ACESSONET>F</ACESSONET>
  <DATAULTIMOACESSO>2023-06-02T12:43:36</DATAULTIMOACESSO>
  <FULLDETERMINED />
  <USERID>5f2e6ca0-baaf-4a62-ac19-94f93d963092</USERID>
  <IGNORARAUTENTICACAOLDAP>F</IGNORARAUTENTICACAOLDAP>
  <DATAULTIMOACESSOVALIDO>2023-06-02T12:43:36</DATAULTIMOACESSOVALIDO>
  <RECCREATEDON>2023-02-10T11:31:11</RECCREATEDON>
  <RECMODIFIEDON>2023-06-14T09:57:08</RECMODIFIEDON>
  <RECCREATEDBY>mestre</RECCREATEDBY>
  <RECMODIFIEDBY>mestre</RECMODIFIEDBY>
</GUSUARIO>
...

</GlbUsuario>]]></ReadRecordResult>
      </ReadRecordResponse>
   </s:Body>
</s:Envelope>


Quando extraímos apenas a parte do XML que consta na parte destacada em verde acima, encontramos algo como a estrutura abaixo. Esta será a responsável para trabalhar com inserções de dados no sistema.

Basta copiar a estrutura abaixo...

<![CDATA[<GlbUsuario>
<GUSUARIO>
<CODUSUARIO>teste</CODUSUARIO>
<NOME>teste</NOME>
<STATUS>1</STATUS>
<DATAINICIO>2023-02-10T00:00:00</DATAINICIO>
<CONFIRMABTNOK>1</CONFIRMABTNOK>
<SENHA>grLlwolC</SENHA>
<CONTROLE>-14219</CONTROLE>
<ULTIMACOLIGADA>6</ULTIMACOLIGADA>
<CODACESSO>Acesso01</CODACESSO>
<OBRIGAALTERARSENHA>F</OBRIGAALTERARSENHA>
<EMAIL>tesste@gmail.com</EMAIL>
<ACESSONET>F</ACESSONET>
<DATAULTIMOACESSO>2023-06-02T12:43:36</DATAULTIMOACESSO>
<FULLDETERMINED />
<USERID>5f2e6ca0-baaf-4a62-ac19-94f93d963092</USERID>
<IGNORARAUTENTICACAOLDAP>F</IGNORARAUTENTICACAOLDAP>
<DATAULTIMOACESSOVALIDO>2023-06-02T12:43:36</DATAULTIMOACESSOVALIDO>
<RECCREATEDON>2023-02-10T11:31:11</RECCREATEDON>
<RECMODIFIEDON>2023-06-14T09:57:08</RECMODIFIEDON>
<RECCREATEDBY>mestre</RECCREATEDBY>
<RECMODIFIEDBY>mestre</RECMODIFIEDBY>
</GUSUARIO>
</GlbUsuario>]]>


E colá-la no campo XML do SaveRecord do SoapUI, preenchendo os valores desejados nos campos a serem alterados e em seus parâmetros (Contexto, DataServerName).
No exemplo abaixo alteramos apenas o nome e o email do usuário:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tot="http://www.totvs.com/">
  <soapenv:Header/>
  <soapenv:Body>
    <tot:SaveRecord>
      <!--Optional:–>
     <tot:DataServerName>GlbUsuarioData</tot:DataServerName>
      <!--Optional:–>
      <tot:XML>
       <![CDATA[<GlbUsuario>
<GUSUARIO>
<CODUSUARIO>teste</CODUSUARIO>
<NOME>teste</NOME>
<EMAIL>tesste2@gmail.com</EMAIL>
</GUSUARIO>
</GlbUsuario>]]>
      </tot:XML>
      <!--Optional:–>
      <tot:Contexto>CODCOLIGADA=1;CODSISTEMA=G;CODUSUARIO=mestre</tot:Contexto>
    </tot:SaveRecord>
</soapenv:Body>
</soapenv:Envelope>


Lembrando que se os dados de PK não forem enviados devidamente não será retornado mais do que uma XSD sem o XML necessário à gravação do registro.


Como sei se a mensagem enviada funcionou?
No caso das mensagens de ReadRecord, a validação se a requisição funcionou basicamente é conseguir encontrar o XML que a resposta lhe informar, o XML irá apresentar os dados que deseja obter na resposta. No caso do SaveRecord a resposta é mais simples e possui a estrutura abaixo:


Resposta da requisição do SaveRecord:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SaveRecordResponse xmlns="http://www.totvs.com/">
<SaveRecordResult>teste</SaveRecordResult>
</SaveRecordResponse>
</s:Body>
</s:Envelope>

É preciso analisar a mensagem para verificar se houve a inserção/atualização do registro. Neste campo poderão ser apresentados erros comuns à MDI RM, como violação de chave estrangeria, chave duplicada, etc.
Esse artigo foi útil?
Usuários que acharam isso útil: 2 de 4

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _