Telescope (core)

Como estabelecer a ordem do install das entidades?

ADS.FAQ-6755
Uma forma fácil de especificar a ordem com que as rotinas de install serão executadas é especificar a dependência da mesma no próprio código.
Tecnicamente o install deve poder ser reexecutado quantas vezes quiser. Na prática o método deve verificar o estado atual dos dados e completar o que for necessário. Aparentemente, isto está sendo respeitado. O que falta, é simplesmente chamar o install das dependências antes de executar o seu método.
Como não vai ter problema se uma das dependências estiver sendo chamada 2x, então isso acaba sendo apenas uma garantia.
O único cuidado que devemos ter é de não criar uma referência circular que acabe deixando o sistema em loop.
Por exemplo: O install do FISCAL.REGIOES_ICMS começa verificando se já existem registros. Caso não existam, então ele cria alguns registros básicos.
O que faltou ali é que este install é dependente dos estados estarem cadastrados, então a rotina deveria ter chamado o install dos mesmos antes executar as suas operações:
if (ctx.computeSqlValue("select 'S' from REGIOES_ICMS","N").equals("N")) {
  EntRegioes estadoOrigem = new EntRegioes(ctx);
  EntRegioes estadoDestino = new EntRegioes(ctx);
  estadoOrigem.install();
  ...