Problema com DBOs Datasul no WebSpeed (cookies? será?)

Discussão em 'WebSpeed' iniciado por yurifranzoni, Novembro 8, 2011.

  1. yurifranzoni

    yurifranzoni Sem Pontuação

    Pessoal, preciso da ajuda de vocês, experts em WebSpeed e DBOs.

    Estamos dentro de um cronograma de conversão do nosso ambiente EMS 2.04 para o EMS 2.06, porém um dos nossos aplicativos específicos apresenta problemas que a Totvs não está conseguindo nos auxiliar. Nossa aplicação foi desenvolvida em Adobe Flex e efetua comunicação através de HTTPServices com um servidor Webspeed. Ou seja, o usuário utiliza a interface feita em Flex para enviar os dados a serem processados pelo servidor Webspeed, que irá interagir com o EMS através das BOs de negócio do sistema.

    Uma das funções do nosso específico é permitir a implantação de pedidos de venda no EMS, utilizando-se as BOs adequadas para essa tarefa (BODI159, BODI154 e outras). O problema: durante a implantação de pedidos de venda, a BODI154 (responsável pela implantação de item no pedido de venda) está sempre retornando o mesmo erro 8512 - Código do imposto inválido. Já verificamos uma série de cadastros envolvidos com essa mensagem, mas não encontramos nada que pudesse interferir nessa questão.

    Após abrir uma FO com a Totvs, o retorno que obtivemos foi o de que esse erro 8512 só é exibido para bases onde o país de impostos é diferente de Brasil. Verificamos e constatamos que não é o nosso caso e nossos cadastros estão corretos. A informação do código do país de impostos é um dado que, depois do login, fica armazenado na sessão do usuário, em uma variável global embutida na include utp/ut-glob.i chamada i-pais-impto-usuario.

    Analisando os logs do servidor webspeed, chegamos à possibilidade do famigerado License Server estar influenciando nessa conversa toda, da seguinte maneira: a tal variável de impostos está sempre com o valor ZERO, por mais que você dê um assign nela para gravar o valor 1, por exemplo, as BOs acabam por zerá-la novamente. Fomos mais adiante nos logs do servidor e vimos que a procedure responsável por alimentar as variáveis globais de sessão era justamente a procedure BTB910ZA.P, que faz login do usuário na base do EMS e que conversa com o LS. Durante a comunicação com o License Server, estavam aparecendo erros.

    Porém, na última análise, a Totvs nos enviou um pacotinho do LS para testes que até eliminou os tais erros durante o login do usuário, mas que não fizeram com que as variáveis globais fossem alimentadas corretamente. Em resumo, voltei à estaca zero. Para completar, temos o mesmo aplicativo rodando em outra empresa do nosso grupo (que já foi convertida ao EMS 2.06) e ele funciona perfeitamente, assim como os específicos criados em Progress dentro do EMS da empresa que apresenta problemas.

    Para fins de teste, modifiquei meu fonte e coloquei diversos messages para ver o conteúdo das tais variáveis globais de sessão, para ver quando elas passam a obter valores inválidos. Acompanhando os logs do servidor webspeed, consegui modificar meu serviço de tal forma que até o momento em que eu instancio alguma BO (com o comando run dibo/bodi154.p persistent), todas as variáveis estão alimentadas corretamente, porém, imediatamente após instanciar a BO, as variáveis voltam a ter valores zerados ou inválidos.

    No log do servidor (nível 4, ou seja, bem detalhado), percebe-se que em determinado momento ele chama um comando web/wutp/wu-sessao.p, primeiro para ler um cookie chamado SessionContextToken, que é previamente gerado com esse mesmo wu-sessao.p e fica armazenado na sessão do webspeed (com o comando set-cookie). Porém, depois esse wu-sessao.p é chamado com o comando getContext "<parametro>" e todos esses comandos retornam valor vazio.

    Entre esses valores, tem o comando getContext "pais.cod-internacional-pais", tem também o getContext "usuar_mestre.indPerfilUsuario", entre outros, que acredito que deveriam alimentar as famigeradas variáveis globais, mas estão sempre retornando valor vazio.

    Devido a isso tudo, os demais comandos de utilização das DBOs de pedidos e itens de pedidos acabam falhando, pois o código de país impostos está zerado... e ele foi zerado nesse momento do getContext no wu-sessao.p.

    Enfim... me estendi demais e já me perdi nas explicações, mas quem puder me ajudar, eu tenho um monte de logs e testes que realizei tentando solucionar o problema. Vale uma ceva gelada pra quem resolver :D :D

    Qualquer dica ou opinião será muito bem-vinda!

    Abraço a todos,

Compartilhe esta Página