Páginas filhas
  • FAQ - Utilização de DataServers RM via WebServices

Versões comparadas

Chave

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

...

  1. Acrescentar a tag abaixo no arquivo de config do Host do RM. Observe que é necessário que o nome da Alias do banco a ser utilizado seja CorporeRM

    Informações
    iconfalse

    <appSettings>

    <add key="DefaultDB" value="CorporeRM" />

     </appSettings>

     

  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.     
  4. 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”.
  5. Neste momento será criada a árvore com os métodos e as requisições para comunicação com os DataServersRM.

...

Expanda o método ReadRecord, e clique duas vezes no Request. Uma template da mensagem a ser enviada ao DataServer é gerada automaticamente, basta preenchermos devidamente os dados. Abaixo estão exemplos das mensagens para salvar e ler os registros no sistema:

 

Informações
iconfalse
titleTemplate 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> 

Informações
iconfalse
titleTemplate 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>

...


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

...

Via requisição ReadRecord direto no SoapUI, com os parâmetros preenchidos...

 

Informações
iconfalse
titleExemplo 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>GlbCalendData</tot:DataServerName>
      <!--Optional:-->
      <tot:PrimaryKey>0000008</tot:PrimaryKey>
      <!--Optional:-->
      <tot:Contexto>CODCOLIGADA=1;CODSISTEMA=G;CODUSUARIO=mestre</tot:Contexto>
    </tot:ReadRecord>
  </soapenv:Body>
</soapenv:Envelope>


... obtemos uma resposta como a abaixo:

Informações
iconfalse
titleExemplo da Resposta:


<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <ReadRecordResponse xmlns="http://www.totvs.com/">
      <ReadRecordResult>
        <![CDATA[<GlbCalend>
  <xs:schema id="GlbCalend" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"
   ...

   </xs:schema>

  <GCalend>
    <CODIGO>0000008</CODIGO>
    <NOME>Calendário 2.008</NOME>
  </GCalend>
  <GFeriado>
<CODCALENDARIO>0000008</CODCALENDARIO>
<DIAFERIADO>2007-02-05T00:00:00</DIAFERIADO>
    <NOME>Carnaval</NOME>
    <FERIADO>T</FERIADO>
    <TIPO>NA</TIPO>
  </GFeriado>
</GlbCalend>]]>

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

Quando extraímos apenas a parte do XML que constará 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...

Informações
iconfalse


<![CDATA[

<GlbCalend>
  <GCalend>
    <CODIGO>0000008</CODIGO>
    <NOME>Calendário 2.008</NOME>
  </GCalend>
  <GFeriado>
    <CODCALENDARIO>0000008</CODCALENDARIO>
    <DIAFERIADO>2007-02-05T00:00:00</DIAFERIADO>
    <NOME>Carnaval</NOME>
    <FERIADO>T</FERIADO>
    <TIPO>NA</TIPO>
  </GFeriado>
</GlbCalend>
 ]]>

... e colá-la no campo XML do SaveRecord do SoapUI, preenchendo o valor desejado nos campos e em seus parâmetros (Contexto, DataServerName...):

Informações
iconfalse


<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>GlbCalendData</tot:DataServerName>
      <!--Optional:–>
      <tot:XML>
        <![CDATA[
       <GlbCalend>
             <GCalend>
                    <CODIGO>0000008</CODIGO>
                    <NOME>Calendário 2.008</NOME>
             </GCalend>
             <GFeriado>
                    <CODCALENDARIO>0000008</CODCALENDARIO>
                    <DIAFERIADO>2007-02-05T00:00:00</DIAFERIADO>
                    <NOME>Carnaval</NOME>
                    <FERIADO>T</FERIADO>
                    <TIPO>NA</TIPO>
             </GFeriado>
       </GlbCalend>
             ]]>
      </tot:XML>
      <!--Optional:–>
      <tot:Contexto>CODCOLIGADA=1;CODSISTEMA=G;CODUSUARIO=mestre</tot:Contexto>
    </tot:SaveRecord>
</soapenv:Body>
</soapenv:Envelope>

 

Fique atento: 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.

...

No caso das mensagens de ReadRecord a validação se a requisição funcionou basicamente é se você conseguir encontrar o XML que a resposta lhe informar. No caso do SaveRecord a resposta é mais simples, e possui a estrutura abaixo:

...

Informações
iconfalse
title 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>    
1;00002;5
      </SaveRecordResult>
    </SaveRecordResponse>
  </s:Body>
</s:Envelope>

 

É preciso analisar a mensagem para verificar a mensagem para saber 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.

...