terça-feira, 22 de janeiro de 2013

Cuidados Básicos com Business Component

Business component é um recurso essencial atualmente, não justifica mais programar procedures para realizar atualizações nas informações armazenadas, uma vez que pode ser usado em qualquer lugar, executa as Rules programadas na transação, não dá erros de integridade referencial, em resumo, reduz nosso esforço de programação.

Muita gente reluta porque de vez em quando BC costuma causar alguns efeitos colaterais, como por exemplo, quando a aplicação está pronta e 'funcionando' e você precisa executar um Rebuild All, e justamente na transação que foi marcada como Business Component=true, aparece erro de compilação.  Normalmente isso ocorre quando criamos um novo Environment, ou apagamos a pasta Web e o Gx a recria novamente.  O erro tem algo de SDT (bla, bla, bla), o nome do BC not found, ou seja é uma confusão que não deixa nada claro a razão de tanta rebeldia.

Não adianta dar outro rebuild, desligar o Gx, reiniciar a maquina, o problema vai persistir, e a causa é que o GeneXus não consegue recriar o BC, então vamos a algumas dicas para evitar isso:

1) Quando programar uma transação do tipo BC tenha o cuidado de usar as regiões demarcadoras:

[web] {
 ...
}
[bc]
{
 ...
}

2) Inclua nessas regiões a regra Parm() e outras Rules que foram definidas que não são responsáveis pela determinação de valores default, como por exemplo:

prompt
noaccept
update

3) Na área EVENTS da transação inclua nas regiões os comandos de controle de interface, tais como:

.visible   = 0
.enabled = 1

4) Cuidado com o que programa em AFTER TRN, pois o BC vai executar o que se encontra dentro desse evento, se o efeito é desejado apenas na interface, inclua dentro de uma região [web]{...}

Ou seja, tenha sempre o cuidado de deixar para o BC executar apenas os elementos que não envolvam controle sobre a interface da transação.  Por alguma razão desconhecida, quando o BC é criado pela primeira vez ele não acusa problemas relacionados com isso, mas em um segundo environment é muito comum isso acontecer, e muitas vezes perdemos muito tempo até entender que na verdade o que falta é um simples [web]{...}

É como um bebezinho, não dá pra evitar que ocorra, mas quando ocorre, se não cuidar direito, assa!