Saga GenX – Etapa Bumerangue

Publicado: 26 de fevereiro de 2014 em Desenvolvendo em Genexus, Trabalho
Tags:

Então, faz um tempo maior que o costumeiro para escrever aqui. Isso não é por falta de tempo, mas por falta do que dizer. Porém, quando você conclui um software, você precisa testa-lo.

Sim, acostumei muito facilmente a testar software usando JUnit. É trabalhoso, mas de certa forma facilita o desenvolvimento, me da segurança no momento de concluir o software realmente e entregar. Porém, quando não se tem, aí vc sentirá falta. Isso mesmo, senti muita falta de um JUNit, pois precisava realizar os seguintes testes:

  1. Upload de arquivo vazio
  2. Upload de arquivo repetido
  3. Substituir dados em Tabela A
  4. Quando Tabela A vazia, Inserir dados do Arquivo
  5. Quando Tabela A com dados:
  6. –  Verificar Data de Tabela A, se for maior que Arquivo não Alterar
  7. – Verificar Data de Tabela A, se for menor ou igual a Arquivo, Alterar
  8. Verificar se inserir vazio, quando CNAE não for encontrado.

Em Testes, seria trabalhoso, mas muito simples de realiza-los… mas ficar mudando arquivo, mudando nome, subindo arquivo toda hora, mexe no arquivo, mexe no código, mexe de novo no arquivo, mexe no código, aí não se sabe se a ultima alteração influencia na primeira, mas ai testa de novo a primeira…. pouts… foi quase 1 dia para pegar as possibilidades e corrigir pequenos erros não tratados… e imagino que tenha outros mais…

Então, dê valor ao seu TDD de cada dia. 

Recebi uma nova especificação de desenvolvimento (que é o nome de um documento que explica o que eu tenho q fazer na próxima etapa). É a mesma tela, mesmas funções, portanto continuo alterando o mesmo código. Apareceu coisas novas, e vamos inseri-las.

abraços

Saga Genx – Correções de Conceitos

Publicado: 21 de fevereiro de 2014 em Uncategorized

Well, neste mundo de OO e Procedural, só uma explicação de qual é a diferença para começar a entender

Entendida essas questões, vamos fazer as coisas de maneira procedural mesmo para que possamos atender esta demanda.

Percebi que usar técnicas de reuso de código pode ser bastante bem vinda, pois peguei este código para validar números e coloquei numa  Procedure, que recebe 1 parametro e devolve outro. Justamente pensando em reuso de codigo. No contexto da minha aplicação ela ficou lenta, e o primeiro passo foi trocar este código por Regex ficando assim

&Saida = &Entrada.isMatch(‘^\d+$’)

&Saida = boolean

&Entrada = Varchar

Isso não acelerou tanto o processo, mas ajudou um pouco.

Outra coisa foi retirar a inserção de CNAE que não existia na tabela. Assim o programa não tem q ir procurar no código se existe, e depois inserir, agora ele apenas procura. Retornando positivo, ele não faz nada, se retornar negativo ele atribui um valor vazio para o campo emitindo uma mensagem.

Descobri que existe uma forma de chamar um evento da webPanel por outro evento. Tipo um GOTO, mas funciona até como uma declaração de função sem parâmetros.

Vamos ver se é possível concluir hoje. Será?

Pois é, mais um dia com a conclusão eminente. Mas a vida é uma caixinha de surpresas.

Qdo se está para concluir o trabalho, ele parece até mais simples que era no começo, pois está pronto. Mas quando no final começam a aparecer outras coisas, elas começam a ficar problematicas.

Minha parte no projeto, salva dados em uma tabela no bd. Esses dados são importados de um arquivo txt com um layout específico. Só que o banco, precisa manter Integridade Referencial desta tabela com outra, que também é importada em outra atividade no sistema. Se vc conseguiu entender, a zica está armada… Tenho que colocar todos os dados, mas eles vem de tabelas diferentes e são relacionados, mas nem sempre na mesma versão.

Chato demais, pois terei que verificar se o cnae_codigo do CONTRIBUINTE existe na tabela CNAE, caso não exista, inserir. Eu entendo que isso pode zuar toda a tabela cnae, mas é o que os analistas orientaram a fazer.

Ainda consegui fazer um popup para confirmação de dados se eles forem dados já inseridos anteriormente. Mas o resultado ficou bastante aquém do que estou acostumado. E com a modificação que tive que fazer o sistema ficou bastante lento, então vou chamar ajuda dos universitários para tentar resolver estes dois problemas.

Vamos lá, ao infinito e além!

Vem com agente, já diria algum samba enredo. Pois é, tentei de todas as formas que eu conhecia para terminar. consegui avançar, mas não foi possível concluir.

Minha parte do sistema tem muitas telas, e verificações. Mentira, tem 2 telas, 1 de confirmação e outra de verificação de Sim/Não. Então não está pronto por quê?

Bem, trabalhar nisso é mais complexo do que parece, ao menos pra mim, que tenho OO nas veias pulsando. Tem coisas que não acredito serem desta maneira que devem ser feitas e vou atrás para realizá-la de outra forma, mas é isso que me atrasa.  Se tem um jeito feio esse é o jeito genexus.

Não tenho Array, então o jeito é pegar uma string e usar o subtring para retirar as posições que se deseja e um for para incluir posições que se deseja. Tenso não é?

Tem um SDT, mas ainda não usei, o tutor aqui disse que não há necessidade.

Mas nem é a falta de itens que são basicos em outras linguagens que me incomoda, mas a falta de framework e padronização. Mesmo ele me deixando livre pra programar do jeito que eu quiser, assim como em qualquer linguagem, mas não se tem um MVC ou uma regra a seguir. Então, fica tudo em todo lugar, com muitos if, cases, for, for each.

Avancei, mas não concluí, vamos ver se consigo hoje.

Saga GenX – A conclusão, ou não

Publicado: 18 de fevereiro de 2014 em Uncategorized

Sim amigos e amigas, era minha intenção terminar a parte do projeto nestes 2 dias q não postei, e dar uma opinião sobre o todo.

Mas a vida, é uma caixinha de surpresas. Realmente estou começando a ficar chateado com meu desempenho nesta ferramenta. Ela pode até ser boa, mas para mim até agora, não consegui encontrar o caminho das pedras preciosas e o valor da ferramenta.

Mas nesse meio tempo, descobri que ele não possui Try/Catch, só uma versão para C#, mas como nosso projeto está em Java, dançamos.

Não escrevi nos últimos dias, pois ficaria repetitivo. Mas tem coisas q só a philco faz pra vc.

Até mais!

Saga GenX – Um dia de Acertos

Publicado: 14 de fevereiro de 2014 em Desenvolvendo em Genexus, Trabalho

Como diria Obamis: “Well”, neste dia, corrigi o sistema para java, digitei bastante código e aprendi algumas outras coisas.

Digitei muito, mas o consegui resolver o problema que foi iniciado com a migração do código para Java. Importante dizer que o código gerado é o recomendado para leitura de arquivos no site da genexus, porém, existe alguns métodos de uma classe que funciona para .NET mas não funciona pra java. Corrigido e então vamos pra frente.

Fiz a validação de números dinamicamente, baseada numa procedure que recebe um varchar e retorna um boolean. Isso facilita na hora de saber se o numero é um numero mesmo, pra saber se o arquivo realmente contém os dados que precisamos.

Digitei muito, muito mesmo. Havia algum tempo que não realizada digitação de tanto código assim, mas parece que estamos patinando. Sem tração. Vamos ver se consigo ter tração hoje.

O que aprendi? Que não é comum o uso do Array no genexus, mas que se usa Debug e Breakpoint no genexus. Isso mesmo, eu havia perguntado e todos falavam que não existia, mas achei como fazer AQUI. Bem, entendi também o porque eles não usam, é que os esquemas das variáveis é bem simplista, sem aquelas apresentações ou alterações de variáveis.

Como já disse, ainda não consegui tração na programação dessa ferramenta, vamos ver se consigo hoje.

Então, alterar um produto de C# pra java no genX é muito simples. Como ele é uma ferramenta geradora de código, ele fará isso tudo sem problemas, sem alteração, e o sistema que vc fizer em .NET será simples a conversão para Java, ou não.

Sei que se usarmos apenas Transactions, a premissa da introdução será com certeza verdadeira, pois o genexus gerará tudo, desde as telas até as validações. Mas sabemos que um sistema não é só CRUD, principalmente um sistema DIPAM. Tem leitura de arquivo txt e não o grava no BD, tem leitura de arquivos XLS, leitura de PDFs, validações e verificações desses arquivo antes de inserir os dados no BD.

Pensando nessas coisas, e somado a pouca experiencia da equipe com a ferramenta só poderia dar problema. Algum tipo de importação de arquivo, algum tipo de importação de dados, alguns tipos de leitura de arquivo… Isso tudo se não for feito da maneira que o genexus prevê, vc não conseguirá a conversão com a facilidade que se prega.

Explico, a aplicação foi iniciada em com compilação em C#, aí encontrei esse CODIGO NA INTERNET para realizar validação de arquivo antes de importar, um código bem simples. Quando a KB foi gerada em JAVA o problema começou.

No início, a kb não funcionava, erro pra cá, erro pra lá, e os desenvolvedores experientes aqui, todos em nossas máquinas, tentando fazer funcionar e isso levou o período da manhã todo para que algumas máquinas funcionassem. Depois do almoço a KB estava funcionando, porem o código que funcionava em C#, não funcionava em JAVA. Não estava entendendo o porquê, imaginava que eu tinha feito algo errado, mas, não, o codigo em C# funciona, mas em Java não.

No próximo dia vamos ver se consigo fazer esse código funcionar em código Java.

até lá.