Por favor, considere esta nota como altamente técnica.
O modelo de scripts do AICS isola rotinas para cada objeto instanciado,
isso permite que um ambiente seja montado para cada tela aberta do sistema,
o que gera segurança entre as regras para cada estrutura.
Entretanto, alguns problemas podem surgir desta característica, tais como:
- Alguns trechos de códigos são replicados em estruturas diferentes,
mesmo desempenhando a mesma função
- Grandes estruturas de objetos precisam ser montados na estrutura principal
para estarem disponíveis para execução a qualquer momento, mesmo que
nunca sejam executados
O primeiro item pode gerar uma complicação na gestão das regras e o
segundo pode gerar lentidão na entrada de algumas telas (máximo de 1
ou 2 segundos), porém, pode gerar maior ocupação de memória do que
o efetivamente necessário à sessão. Ainda, o item 2 pode gerar cópias de
objetos que poderiam ser únicos entre sessões abertas ao mesmo tempo.
Para resolver estes 2 problemas, criamos uma estrutura virtual denominada
STORED que poderá receber procedimentos completos na forma de "programa",
por exemplo, cada procedimento deverá ser completo e independente. Um
exemplo de um procedimento simples seria:
begin
Mostra('Este é um procedimento simples, '+webfields('nome'));
end.
Note que a rotina é completa e não tem visibilidade de qualquer outra
entidade que a executou, é um procedimento autônomo. Portanto, os
procedimentos criados sob a estrutura STORED devem ser chamados
com a nova rotina:
Function ExecStored(Event,Parameter:string):boolean
Por exemplo, poderíamos criar o procedimento acima num evento com
nome "Aviso", neste caso, a chamada em qualquer local do AICS do
procedimento acima e já com o parâmetro, seria simplesmente:
ExecStored('Aviso','nome=Manoel');
O interessante deste modelo é que não haverá cópias do mesmo
procedimento em execução simultânea, isso minimiza o gasto de
recursos do sistema e deixa os procedimentos mais rápidos.
Comentários desta novidade