Versão 24

Melhorias

Engine

  • Foram criadas as funções stringCompare e dateCompare com o objetivo de comparar valores de forma equivalente aos métodos String.prototype.compare() e Date.prototype.compare(). Essas extensões das classes nativas do JavaScript são uma característica do runtime JavaScript Ije e elas não existem no V8. Elas também são publicadas como ngin.text.compare() e ngin.date.compare() para uso em arquivos da Virtual File System que não são estruturados como módulos JavaScript.
  • Foram criadas as funções toSqlString e toHtmlString com o objetivo de formatar valores para serem inseridos em expressões SQL e HTML de forma equivalente aos métodos Object.prototype.toSqlString() e Object.prototype.toHtmlString(). Essas funções também são publicadas como ngin.text.toSqlString() e ngin.text.toHtmlString() para uso em arquivos da Virtual File System que não são estruturados como módulos JavaScript.
  • Foi criada a função truncateTimePart com o objetivo de remover a parte de tempo de uma data de forma equivalente ao realizado pelo ApplyUpdates na gravação de colunas do tipo date.
  • O Engine passa a suportar o parâmetro de linha de comando --v8-flags="<args>" com objetivo de configurar as flags do runtime JavaScript v8. Mais detalhes no manual Instalação do Engine.
  • O método DataSet.prototype.sum foi otimizado. Nos casos mais comuns de uso, ele passou a ser aproximadamente 3 vezes mais rápido que a versão anterior.
  • Foi criado o método TaskProgressStatusArray.prototype.item com o objetivo de obter um elemento de um TaskProgressStatusArray de forma compatível com o runtime JavaScript V8.
  • Ao criar um arquivo na Virtual File System relacionado a um produto (chave negativa) não era verificado se o produto associado ao arquivo poderia depender do produto associado ao diretório onde o arquivo estava sendo criado.

Web Framework

  • No diretório de configuração do tema, o Web Framework passa a carregar todos os arquivos CSS que iniciem com os prefixos “environment” e “simpleLayout”, permitindo que os temas padrões do sistema possam ser customizados sem a necessidade duplicar a configuração completa do tema. É importante ressaltar que essa é uma configuração avançada voltada para parceiros e não deve ser utilizada pelos clientes finais do sistema. Os nomes das classes CSS são detalhes internos da implementação do Web Framework e podem ser alterados a qualquer momento sem aviso prévio. Configurações sobre essas classes podem deixar de funcionar após uma atualização de sistema, exigindo uma revisão da customização.

Defeitos corrigidos

Admin

  • O filtro “Módulos” dos relatórios Admin > Segurança > Permissões > Análise de Permissões e Admin > Segurança > Permissões > Diferenças de permissões não exibia os módulos filhos da classe /Menu.
  • Em determinadas situações o relatório Admin > Segurança > Permissões > Diferenças de Permissões poderia gerar o erro “JSON parse error”.

Desenvolvimento

  • A propriedade ModelDef.prototype.dbIndexSpace era ignorada na criação de índices no banco de dados Oracle.
  • Em determinadas situações, a atualização do sistema poderia gerar o erro “ORA-01442: column to be modified to NOT NULL is already NOT NULL” no banco de dados Oracle.
  • Os registros da tabela iLog associados às alterações realizadas pelo processo Desenvolvimento > Atualização > Sincronizar Permissões de Papéis não indicavam o processo de origem no campo iReferrer, o que dificultava a rastreabilidade dessas modificações.
  • A ordem de execução dos “Scripts Pós-Atualização” durante a atualização do sistema era indeterminada. Esse comportamento poderia provocar erros durante a atualização de bases com versões muito defasadas, quando os scripts mais recentes dependiam dos dados inseridos por scripts mais antigos. Agora a execução passa a ser ordenada pela data de criação do script.
  • A rotina de ajuste de permissões executada durante a criação do diretório /Menu na Virtual File System poderia criar permissões duplicadas caso houvesse permissões na classe Raiz configuradas com o modo de aplicação “Classe e filhas”. Foi criada uma rotina de pós-upgrade para corrigir os eventuais erros introduzidos por essa rotina.
  • Os processos Sincronizar Permissões de Papéis e Atualizar Sistema poderiam criar registros inválidos de permissões de papéis, caso a base de origem da atualização contivesse permissões duplicadas. Os processos foram alterados para não propagar o erro da base de origem e eles passam a excluir as permissões inválidas criadas pelas versões anteriores do sistema.

Engine

  • O construtor new Date() criava datas inválidas quando era informado valores negativos de milissegundos.
  • O método DataSet.prototype.sum gerava uma totalização incorreta caso um dos campos a ser totalizado também fosse incluído na lista de campos a serem agrupados. Agora o sistema passa a gerar um erro para indicar que essa operação não é suportada.

Web Framework

  • Em determinadas situações os relatórios com grupos contraídos não podiam ser expandidos.
  • Scripts “x-find” que dependiam da variável global classKey poderiam falhar caso houvesse uma classe filha redefinido a pesquisa de uma classe mãe.

Outras alterações

Desenvolvimento

  • Nos processos Atualizar Sistema e Atualizar Estrutura, os comandos de criação de índices deixam de adicionar a opção compute statistics quando utilizado o banco de dados Oracle. Essa opção deixou de ser recomendada desde o Oracle 10g, conforme manual.

Web Framework

  • A função persistDataSets passa a ignorar DataSets que não possuem o campo Classe caso não haja dados a serem gravados na base de dados. Esse alteração tem o objetivo de permitir a criação de grades detalhes com dados com estruturas não convencionais, desde que a grade mestre se responsabilize pela efetivação desses dados.
  • Os campos calculados das grades de variáveis de relatórios deixam de ser exibidos como filtros no cabeçalho do relatório gerado. Esses campos normalmente são criados com a finalidade de auxiliar o usuário no preenchimento do relatório e exibição deles como filtros gerava uma poluição visual desnecessária no relatório.