
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:
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!