Dataset codificado Dúvidas sobre os perigos de exportação/importação

Tenho um processo que foi codificado por terceiros.

Há programação nos eventos.

Toda a vez que o processo entra no evento beforeStateEntry dá um erro em uma situação especial.

Fui verificar o código desse evento e ele está fazendo uma busca num dataset.

Entrei no Painel de Controle e em Datasets localizei-o e, ao tentar pesquisar, o resultado está em branco.

No evento citado, uma mensagem no Throw mostra que não foi possível encontrar o dado procurado, como era mesmo de se esperar, uma vez que, como referido acima, o dataset está em branco.

Como é um dataset codificado, não consigo sincronizar com a tabela do banco de dados a que ele se refere, pois uma mensagem diz

'Este dataset não está completamente preparado para sincronização, sendo necessário implementar a estrutura padrão para utilizá-lo em cache ou offline mobile'

Impossibilitado de forçar a carga de dados, verifiquei o código do dataset, descobri a instrução SQL, tirei a cláusula WHERE e a executei na janela SQL do banco de dados, que trouxe com sucesso todos os dados. (Eu queria saber se a tabela estava populada).

Me faltava agora recodificar o dataset a fim de que eu pudesse trazer os dados.

Para isto, importei o processo para o Eclipse (TDS) e criei um dataset novo a fim de que ficasse populado.

Alterei o evento beforeStateEntry no Eclipse para apontar a pesquisar para o dataset que acabei de criar.

Mas, minha preocupação é que, como dito sendo uma aplicação de terceiros e eu não tendo experiência, receio que se eu cometer algum erro conceitual posso prejudicar mais do propriamente ajudar.

E a minha dúvida caiu justamente na hora de 'devolver' todo o processo para o servidor de produção.

Tentei exportar somente o evento, mas o TDS diz que não é aquele arquivo que devo enviar.

Quando se faz a importação do processo, várias partes caem em difentes pastas do Eclipse: caem arquivos nas subpastas da pasta Workflow, tais como Diagrams e Scripts; outra parte, caem arquivos em Forms, com o código HTML de uma página do processo.

O que devo exportar? A pasta Workflow? Todos os demais vão juntos, incluindo o arquivo .js dos eventos?

Qual o perigo de devolver para o servidor de produção?

A cláusula WHERE tinha erro de escrita ou lógica? Você entendeu o motivo dela estar lá? Pergunto por que se for da lógica do processo o WHERE pode ser importante e realmente não trazer resultados seria a situação correta.

Como é um erro em um processo feito por terceiros o ideal seria pedir pra eles corrigirem, afinal é uma falha do processo deles.

Pra Exportar você deve exportar o processo. Na pasta diagrams, dentro da pasta workflow, estão os processos (arquivos .process). Clique no arquivo referente ao processo e mande exportar para o servidor (de preferência um de homologação/testes primeiro). O Eclipse vai exportar o processo e todos os eventos associados ao processo. Quando você vai exportar um formulário você clica na pasta do formulário, dentro da pasta forms, e manda exportar que ele já envia tudo do formulário pro servidor.

Talvez o ideal seria você alterar o dataset original ao invés de criar um novo, pois pode ser que esse dataset seja utilizado em outros lugares né.

E faça backup dos arquivos. Melhor ainda é utilizar um controlador de versões, GIT.

Ah, sobre a sincronização, ela serve pra criar uma tabela de cache na qual ficarão os dados da consulta. Como você está pesquisando direto num banco de dados talvez queira os dados mais atualizados ao invés de sincronizar de tempos em tempos. Mas pra fazer um dataset sincronizado você tem que mudar algumas coisas do arquivo .js. Olha a documentação pra ter uma ideia melhor se quiser realmente fazer o dataset sincronizado https://tdn.totvs.com/pages/releaseview.action?pageId=212899013

Sei bem como é chato achar um erro e não poder consertar por que foi feito por terceiros e precisa aguardar eles terminarem de desenvolver pra mexer, se não pode dar mais problema ainda.

Caro @Bruno Gasparetto, obrigado por sua resposta longa e cuidadosa. A cláusula Where foi retirada apenas para não mascarar qualquer resposta, pois minha intenção era saber se existiam dados. Infelizmente, não tenho como pedir para procurarem o erro, uma vez que rompemos com esse fornecedor. Na exportação do processo, no Eclipse, não tenho a pasta processo, filha de Workflow; Vasculhando os códigos dos eventos, não há chamadas noutro lugar deste dataset. Poderia haver em outro lugar, sem ser em eventos no processo?

Ainda, caro @Bruno, à ideia de ‘sincronização’ quis dizer que gostaria de ver o dataset populado. Outros datasets que existem, e mesmos feitos por mim, com código apenas no método Create Dataset, mostram o conteúdo. E, tais, têm somente cláusula SELECT numa tabela qualquer.

@Mausim, me desculpe, falei errado. Dentro da pasta workflow tem a pasta diagrams, cada arquivo .process ali é um processo. Você clica no arquivo .process e manda exportar ele. (eu estava mexendo muito em formulário e não conferi que falei errado)

@Mausim, um dataset pode ser acessado de diversos lugares. Tudo depende do motivo dele ter sido criado. Por exemplo, eu tenho um dataset com todos os usuários e senhas que utilizo pra acesso a WebServices. Assim todas as vezes que preciso acessar um WebService eu busco o usuário desse dataset ao invés de deixar tudo escrito no código fonte. O dataset colleague, do Fluig, também é utilizado em vários locais. Então realmente depende do motivo de existir desse dataset.

Ah, caro @Bruno, isto sim. Mas esses datasets são apenas para uso do processo. E, outra coisa, se não estão funcionando, nenhum outro ‘aplicativo’ também poderia usar, não é mesmo? Valeu!

@Bruno, confere. Achei um arquivo que fala de processo, dentro da pasta apontada. Quer dizer que, exportando esse arquivo de volta, os formulários e códigos de evento vão ser atualizados no servidor depois que eu mexer neles no Eclipse?

@Mausim, exatamente. Ele vai exportar todos os arquivos de eventos referentes a esse processo. Se você marcar a opção “Exportar Formulário” ele vai exportar o formulário junto e se marcar a opção “Liberar Versão” ele já vai deixar essa nova versão do processo disponível para uso.