Trabalhar com Sandbox no Dynamics 365 da Microsoft não é tão simples quanto pode parecer, a primeira vista. Você sempre quer extrair ao máximo o poder da plataforma e isso é muito bom. Pois permite que novas aplicações surjam dentro do ecossistema e atendam cada vez mais necessidades de negócio.
Porém, quando estamos falando do Dynamics 365 temos que ter alguns cuidados no momento de criar nossos plugins e etapas customizadas pois, nesta modalidade, eles só podem ser executados em “sandbox mode”. Sandbox no dynamics é um conceito de “caixa fechada” que disponibiliza recursos específicos para a instância do plugin ou etapa customizada executada.
Como o ambiente em nuvem (cloud) é compartilhado por diversas empresas, usuários e aplicativos. O sandbox no dynamics tem algumas limitações para proteger as aplicações de outras aplicações que não foram muito bem escritas.
Uma destas limitações é o limite de dois minutos para executar um plugin ou etapa customizada, reduzindo muito a possibilidade de grandes processamentos.
Mas se existe a necessidade de executar tarefas de cálculos e processamentos que precisam acessar e manipular muitos dados. A saída é escrever uma etapa customizada que “dispare” uma outra etapa customizada por registro.
Sandbox no dynamics
Por exemplo: Imagine que você tem uma lista de produtos e criou uma entidade customizada para lançar o valor do IGPM. E mensalmente, precisa recalcular os preços de seus produtos com base neste índice. Num ambiente on-premises você poderia simplesmente fazer um loop com todos os produtos ativos e aplicar o índice que tudo estaria resolvido. Mas se você estiver rodando sua aplicação no ambiente online e tiver uma grande quantidade de registros de produto. Por melhor que seja seu código, dificilmente ficará dentro do limite de 2 minutos.
O que fazer? Escrever uma etapa customizada que seleciona todos os produtos ativos e dispara uma outra etapa customizada, para cada registro de produto. Essa sim que fará o calculo do novo preço de acordo com o IPGM.
E para não ter que fazer um loop para realizar a chamada das etapas customizadas unitárias, a melhor prática é utilizar o método bulk insert. Falaremos sobre ele em outro post deste blog.