Tempo aproximado para leitura: 00:05:00 min
Dúvida
Pode se utilizado RPCSetEnv() para efetuar a abertura de ambiente em Web Service?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - a partir da versão 12.1.27
Solução
Não se deve utilizar funções de abertura e fechamento de ambiente em API (RpcSetEnv/ RpcClearEnv e Prepare Environment/Reset Environment), a abertura do ambiente é efetuada através do PREPAREIN informado no AppServer.ini.
As informações de empresa/filial devem ser passadas no header da requisição no TenantId.
A definição do PREPAREIN no REST é diferente do conceito utilizado nos webservices convencionais.
Cada valor da chave PREPAREIN representa um grupo de empresas diferente para acesso ao serviço.
Por exemplo:
A chave PREPAREIN configurada com o valor 19 (PREPAREIN=19) avisa ao serviços REST que o grupo de empresa 19 vai receber requisições, e deve então ter threads preparadas para isso.
Para que todos os grupos possam receber requisição, a chave PREPAREIN deve estar configurada como PREPAREIN=ALL
Cada thread é montada com a primeira filial válida para aquele grupo. Para que o valor da filial seja trocada pela camada do REST é necessário enviar, no cabeçalho da requisição REST o parâmetro tenantid, conforme abaixo:
tenantid: 19,D MG 02. //EMPRESA,FILIAL
Neste caso, o servidor REST irá buscar uma thread disponível para o grupo 19 e a execução será realizada na filial D MG 02. Se o tenantid não for enviado no header da requisição ela será processada na primeira filial válida.
Obs.: O REST passará a receber o header x-erp-module, que representa o módulo do Protheus, esse header suporta os valores de módulos do Protheus válidos, como: FIN, EST, FAT, ATF.
Exemplo:
Saiba mais
REST com ERP Microsiga Protheus
Rest
0 Comentários