terça-feira, 22 de dezembro de 2015

External Object e Modules... Melhor não.

Um pequeno teste revelou que um External Object dentro de um Modulo (Modules), gera uma certa dificuldade para se criar uma variável do tipo External Object. O Genexus não monta uma referencia adequada para o objeto, e inclusive o mesmo não aparece na lista de seleção de External Objects em Data Type.

E na prática isso tem tudo a ver porque os módulos geram um namespace próprio, em termos de código nativo gerado (C#, Java), e como os External Objects referenciam classes em separado que possuem seus próprios namespaces, realmente fica meio difícil que eles se encaixem para participar da festinha privada na salinha VIP do modulo.

   namespace GeneXus.Programs.{

   }

Então, para projetos modulares que venham a utilizar este recurso, melhor criar uma pasta simples em Folder View e colocar lá todos os External Objects.

Para saber mais:

segunda-feira, 7 de dezembro de 2015

Gracias Genexando!

Meus sinceros agradecimentos a comunidade Genexando por suas insistentes visitas ao blog, que nos renderem um belo reconhecimento no Gx25 em Montevideo.
Genexus International Meeting 25!

terça-feira, 1 de dezembro de 2015

Coisinhas que complicam a vida

Geralmente quem inicia na aprendizagem de Genexus encontra alguns muros difíceis de serem transpostos. Além dos conceitos revolucionários da própria ferramenta, que mudam muito em relação ao que aprendemos nas Faculdades, temos outras dificuldades que vão atrasando o que é mais importante: aprender Genexus.

Claro que este muro pode ser baixo para alguns, mas para outros excessivamente alto, digo isto porque tenho acompanhado algumas pessoas que sofrem bastante para decifrar alguns enigmas deste novo mundo.
Motivado por esta divagação e no intuito de contribuir com os iniciantes, vamos destacar alguns pontos que, pra falar a verdade inicialmente considerava até simples, mas ao término deste trabalho já mudei de opinião. Isso porque depois que pulamos a cerca, já nem lembramos de como era estar lá dentro, rs.

Uma mensagem mal colocada e pronto, para onde correr? Muitos infelizmente perdem muito tempo tentando decifrar mensagens que parecem absurdas, e de fato ja viu alguma mensagem de erro que não pareça absurda? Apesar da evolução do instalador, ainda não é possível, para todos que instalam a ferramenta, terminar o processo sem nenhum enrosco. Isso pelo fato de que os computadores possuem diferentes recursos instalados, diferentes sistemas operacionais, e isso pode causar alguns desajustes.

Vou tentar reunir aqui neste artigo algumas coisas muito elementares mas que podem auxiliar um pouco o pessoal iniciante no processo de instalação e configuração do Genexus. Se você é Sênior, por favor, pule para o próximo artigo, rs.

Se você continuou a leitura, vamos dizer que dá um certo trabalhinho configurar tudo para começar a usar o Genexus.  Vamos desenvolver uma série de perguntas para buscar criar um norte para direcionar os navegantes neste mar de tubarões.  Se a sua pergunta não estiver dentre as apresentadas comente o artigo e vamos evoluindo.

Sistema Operacional

 

Qual é o sistema operacional indicado para o Genexus?

Comecemos por aqui! Genexus roda em Windows, portanto é recomendado que você tenha um instalado em sua máquina, preferencialmente as versões 7 em diante.  Tem uma turminha rodando o Genexus no Windows XP (SP2), 7, 8 e 10 sem problemas.

Genexus roda no Mac ou Linux?

A resposta é sim 'em parte', o que significa o seguinte, roda muito bem no Mac mas não nativamente no OS X, desta forma voltemos ao Windows. Voce precisará de uma Maquina Virtual com Windows instalada, em seguida poderá instalar o Genexus dentro desta.  Linux segue o mesmo principio.

Qual máquina virtual devo utilizar?

Se você já tem Windows nativo, pule esta.  Se você tem um Mac pode utilizar qualquer maquina virtual que rode neste sistema operacional, eu tenho usado a Parallels, que tem alguns modos que rodam como se você estivesse nativamente no OS X, permitindo compartilhar pastas, executáveis, enfim, nem parece que está rodando Windows no Mac.

Mas atenção aqui, seu Mac deve estar muito bem configurado pois estará rodando o OS X, a Maquina Virtual e o Windows abaixo deste, e em seguida o Genexus, ou seja, muitas camadas é igual a necessidade de uma maquininha meio fortinha.

Qual é o hardware exigido pelo Genexus?

Aqui você encontra as exigências para instalação. Tenho rodado bem o Genexus num notebook com 5 anos de idade, Intel I5-450M de primeira geração, com dois SQL Server instalados, sem nenhum problema. Fiz uns upgrades na maquina adicionando mais RAM (8Gb) e ta tudo certo, acho que a maquina aguenta mais uns 5 anos.

IIS - Microsoft Internet Information Service

O IIS é o servidor web para desenvolvimento de aplicações para a plataforma Windows (.Net Framework), portanto se você objetiva construir aplicações no Genexus para este ambiente deverá configurar este recurso. Caso desenvolva para Java, então poderá desconsiderar esta parte, pulando para a configuração do Tomcat.

Maiores informações aqui.

Preciso comprar o IIS?

Não, o servidor é disponibilizado gratuitamente nos Windows na versão Home Premium ou superior, e existe também uma versão Express que pode ser baixada.

Como instalo o IIS?

O processo consiste em ligar o recurso por meio do painel de controle do Windows, na opção de instalação de programas existe uma opção Turn Windows features on or off (Windows em ingles).


Abrir esse recurso e marcar a instalação do IIS.


Escolher as opções para ligar o servidor web, que você pode conhecer um pouco mais aqui.

Como saber se o IIS está instalado?


Abrir o navegador e digitar http://localhost, se instalado e respondendo deverá retornar uma tela semelhante a apresentada a seguir.


Java: Tomcat

Para os desenvolvedores Java já postei uns artigos sobre este assunto, mas como já faz um tempo, creio que deve ter evoluído alguma coisa. Desde esta instalação o Tomcat está funcionando legal na minha maquina então acho que as dicas continuam valendo.

Genexando: Apanhando do Tomcat



SQL Server

Este é um ponto meio controverso pois a partir da versão X, o Genexus passou a exigir também a instalação do SQL Server para gerenciar seus projetos. Quando cria uma nova KB (Knowlegde Base, mesmo que um projeto Genexus) estará também criando uma base de dados neste servidor.

De forma resumida, você precisará de um SQL Server instalado em algum lugar que possa ser alcançado pelo seu Genexus, mesmo se deseja desenvolver uma solução para outro banco de dados, como Oracle, por exemplo. Se for no seu notebook melhor, assim terá a mobilidade para trabalhar em qualquer lugar. Se em uma máquina na rede, você somente poderá desenvolver se tiver acesso de rede a esta maquina.

O que é SQL Server?

Um sistema gerenciador de banco de dados importante no mercado (ver).
Sob o ponto de vista do Genexus e do seu sistema, você tem que pensar o seguinte:
  1. Genexus utiliza o SQL Server para gerenciar a KB
  2. Seu sistema precisa de um servidor de banco de dados (SQL Server, Oracle, Mysql, ...) para armazenar os dados da aplicação
São dois temas distintos, porém o mesmo SQL Server utilizado pelo Genexus pode ser utilizado para construir seu sistema.

Dá para substituir o SQL Sever por outro Banco de Dados, isto para uso do Genexus?

Não. Na versão corrente o Genexus apenas utiliza o SQL Server para auxiliar no gerenciamento da KB.

Posso usar o Oracle, Mysql, PostgreSQL,... que já tenho instalado para o Genexus gerenciar a KB?

Não. Resposta meio redundante com a anterior, mas vamos deixar bem claro, o Genexus somente aceita SQL Server para este papel. O Oracle poderá ser usado para construir o sistema mas não pelo Genexus.

Qual a sequencia de instalação do Banco, Servidor Web, Genexus?

Principalmente se for utilizar o Genexus com o gerador .Net, melhor configurar primeiro o IIS (Internet Information Service) e depois instalar o banco de dados SQL Server e o Genexus.

Qual versão do SQL Server devo instalar?

Se você não tem a sua disposição uma versão digamos mais profissional, poderá instalar a SQL Server Express, que a mesmo dará conta do recado.  Esta é gratuita e tem suas peculiaridades, das quais creio a mais comentada, o limite máximo de dimensão do BD.

Se a Microsoft não mudar o link da página, poderá obtê-lo aqui.

Posso utilizar uma versão SQL Server 2000 ou 2005 que já tenho instalada?

Bom, você sabe que a tecnologia evolui né, a menos que viva no Alaska, digamos que essas versões não são as mais indicadas para você criar um sistema atualmente.  Se o seu sistema já roda nesta versão desde 2000, tudo bem, mas iniciar um novo projeto nestas versões não é legal. Melhor evoluir um pouco sua infraestrutura e melhorar o banco.Aqui você encontra um link com a evolução dos recursos do SQL Server (a versão atual é a 2014), mas pena que esta evolução implica em investimento, e o valor do banco é meio salgado.

Sob o ponto de vista do Genexus, você precisará, para instalar uma Trial da Evolution 3, por exemplo, de no mínimo um SQL Server Express versão 2012. Versões anteriores poderão ser utilizadas para a construção do sistema mas não pelo Genexus.

Um pouco mais de documentação sobre a instalação da Trial, pegue aqui.

O Genexus instala automaticamente o SQL Server Express se eu não tiver instalado?

Sim. Mas atenção no processo de instalação e seleção dos usuários, e também criar o usuário administrador (sa). Se falhar aqui dai terá um trabalhão para ajustar o que faltou.

Uma boa documentação sobre a instalação banco pode ser alcançada no link a seguir, mas a versão não ajuda muito: SQL Server Express 2005. Esta documentação é interessante quando trata do SQL Browser e da configuração do acesso de rede do banco.

Posso usar o Oracle junto com o SQL, na mesma máquina?

Sem problemas se usar o Oracle para construir sua aplicação, mas cuidado vai ter que ter uma boa jaulinha para colocar esses dois elefantes juntos.

Posso ter várias instâncias do SQL Server na mesma máquina?

Sim, o instalador criará as instâncias separadas, você apenas deverá escolher corretamente a instância no momento de criar a KB e selecionar o banco do seu sistema.

Na KB, por exemplo, na operação de configuração do Datastore, a operação Edit Connection possibilitará que defina a instância, banco de dados, usuário e senha para conexão. Na imagem a seguir apresento como em minha máquina, por exemplo, tenho duas instâncias do SQL Server (DOUGLAS-PC é um SQL Server 2008 e DOUGLAS-PC\MSSQL2012 outra.


Como diferenciar o Banco de Dados do Genexus do Banco de Dados do meu sistema?

São dois momentos distintos, o primeiro é a criação da KB na qual indicamos o banco de dados para o Genexus gerenciar nosso projeto.


O segundo momento é o da seleção do banco da aplicação, que ocorre assim que você cria a primeira transação e executa o sistema.

Posso deixar o Genexus e Meu Sistema no mesmo Banco de Dados?


Pelas boas praticas... Não, pois voce estará armazenando no mesmo banco de dados, informações a respeito da KB e dados de seu protótipo. Isso também poderá prejudicar o processo de Backup da KB. Não seja pão-duro e crie bancos separados, cada um com sua função.

Depois da instalação, terei que configurar alguma coisa no Banco de Dados?

No SQL Server Express provavelmente sim, porque os protocolos de rede serão desabilitados, e com isso provavelmente você será exposto a algum tipo de erro de conexão, como por exemplo, o apresentado a seguir.

Ocorreu um erro ao estabelecer uma conexão com o servidor.Ao conectar-se ao SQL Server, essa falha pode ser provocada porque, sob as configurações padrão, o SQL Server não permite conexões remotas.(provedor: Provedor TCP, erro: 0 – Falha em uma tentativa de conexão porque a parte conectada não respondeu corretamente após um período ou houve falha na conexão estabelecida devido a uma falha na resposta do host conectado). (Microsoft SQL Server, Erro: 10060)
  
Ou.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. the server was not found or was not accessible. verify that the instance name is correct and that sql server is configured to allow remote connections. (provider: TCP Provider, error: 0 - Uma tentativa de conexao falhou porque o componente conectado nao respondeu corretamente após um periodo de tempo ou a conexão estabelecida falhou porque o host conectado não respondeu) (Microsoft SQL Server, Error: 10060)

Para corrigir este problema você deverá deixar o serviço SQL Browser ativo e também habilitar o protocolo TCP/IP, através do SQL Server Configuration Manager.


Este programa permite acesso aos protocolos que serão liberados na instância do SQL Server Express. No caso da imagem a seguir temos duas instâncias na maquina a MSSQLSERVER e a MSSQL2012, e a liberação ocorre no Protocol Name TCP/IP (botão direito do mouse e em seguida Enable)


Um detalhe importante é a definição da porta a ser liberada para o protocolo TCP/IP, que voce escolhe ou deixa como 1433 (default). As vezes a maquina tem mais de um IP, e as portas precisam bem definidas. E pode ocorrer do firewall também bloquear esta porta.




Retomando a documentação que comentamos sobre a sobre a instalação e configuração do banco, é bastante boa na questão da liberação das portas SQL Server Express 005.

Como posso testar se o SQL Server esta respondendo?

Baixe o programa PortQry Command Line Port Scanner Version 2.0 no portal da Microsoft (aqui), e em seguida poderá executar o comando:



Se retornar um NOT LISTENING significará que o protocolo não se encontra liberado para a porta,  portanto, neste caso precisaríamos fazer um ajuste, tornando a porta Enabled=Yes para o Ip.



Será necessário reiniciar o SQL Server.

NET STOP MSSQLSERVER
NET START MSSQLSERVER


O que significa Add user IIS AppPool\Classic.Net?

Se você esta desenvolvendo sua aplicação com Microsoft .Net, e o SQL Server encontra-se configurado corretamente, ainda precisará realizar mais um ajuste no banco de dados adicionando o acesso a um usuário chamado IIS AppPool\Classic .Net, de forma a possibilitar que a aplicação possa acessar os dados e realizar as alterações nas tabelas por meio do usuário web padrão do servidor IIS.

Se você entrar no IIS verá que os tais pools são elementos de agrupamento de aplicações, e que precisam de uma conta de usuário para executar a aplicação web e fornecer os recursos necessários para que a mesma opere, a chamada application pool identity.  Com esse usuário padrão não será necessário criar contas locais para cada pessoa que acessa o sistema. O usuário padrão é definido na propriedade identity do Pool.



Quando se define o banco de dados da aplicação no Genexus será possível adicionar o mesmo usuário para acessar o banco de dados, e é exatamente isso que se oferece quando se está editando a conexão do datastore, mediante o link Add user IIS AppPool\Classic.Net.


Ao pressionar a mesma, será procedido um ajuste na lista de usuários atribuindo-lhe os privilégios necessários para o consulta e edição dos registros e tabelas.


Se o acesso for realizado por meio do usuário sa, esta adição de usuário não será necessária. Maiores informações aqui.

Porque a mensagem 'Connection Failed for user IIS AppPool/Classic ...' aparece?

Provavelmente porque o usuário já foi criado, feche a configuração e execute o Genexus. Na versão Evolution 3 o usuário é criado assim que voce pressiona o Create Database.


Como gerenciar os banco de dados das KBs?

O banco de dados da KB normalmente fica na pasta onde a mesma é criada (são dois arquivos com extensões mdf e ldf..


Basicamente não será necessário fazer nada no banco de dados da KB, a não ser tomar cuidado para que o mesmo não estrague. Se der algum problema neste arquivo o projeto será perdido, então um pouco de cautela e backup.

Para remover o banco de dados, tem um documento aqui que auxilia com algumas dicas.

Como fazer backup do banco de dados da KB?

A forma mais simples é realizar backup do arquivo GX_KB_..., diretamente no SQL Server.

Ja tratamos deste assunto em artigos anteriores, por favor consultar:

Genexando: Backup da Kb
Genexando: Backup da Kb II

Como faço para ver as tabelas que o Genexus criou no banco de dados?

Através de um programa que acesse e gerencie o banco, como por exemplo o Heidi, que funciona legal com Mysql e SQL Server também. (http://www.heidisql.com/)


---
Muitos temas distintos, mas acho que consegui cobrir o básico, caso tenha outras dificuldades além desta, vamos revisando o texto incluindo novos temas.

Boas instalações, configurações e aprendizagem!