Os relatórios “Registros de login de usuário” e “Usuários habilitados” passam a permitir
filtrar as informações apresentadas pela classe dos usuários. Os relatórios estão disponíveis
em “Administração do sistema > Segurança > Grupos, papéis e usuários”.
Engine
O método PermissionManager.prototype.fixInheritance
passa a eliminar as eventuais permissões duplicadas que possam ter sido introduzidas por
movimentações de diretórios e arquivos que não tenham sido realizadas pela classe
VirtualFileSystem.
Esse método também passa a reaproveitar as chaves dessas eventuais duplicações sempre que for
possível.
Web Framework
Foi criado o evento afterCreateProcess na classe
ProcessManager
com o objetivo de permitir customizações aplicadas em todos os processos do sistema.
Foi criado o método Process.prototype.hasButton
com o objetivo de identificar se um botão existe em um processo.
Defeitos corrigidos
Administração do sistema
O botão “Replicar nas classes filhas” do processo “Administração do sistema > Segurança >
Permissões > Permissões” criava permissões duplicadas caso houvesse uma permissão em uma
classe filha da replicada com o modo de aplicação “Classe e filhas” configurado.
Ao alterar a classe de um usuário no processo
“Administração do sistema > Segurança > Grupos, papéis e usuário > Usuários” ocorria o erro
“syntax error at or near ‘and’”.
Desenvolvimento
Em situações bem específicas, a atualização do sistema poderia não sincronizar registros da tabela
Virtual File System.
O processo “Desenvolvimento > Atualização > Atualização do sistema” era interrompido com o erro
“Chave NNNNN não localizada no cache local” se houvesse uma permissão com herança para um
grupo, papel ou usuário não existente na base destino. Agora o processo de atualização passa
a ignorar essa inconsistência, pois ela pode estar sendo corrigida pelo próprio processo
de atualização.
Os processos “Atualização de permissões de papéis” e “Atualização do sistema” não removiam
as permissões órfãs da base destino geradas pela exclusão manual de classes e arquivos sem
a utilização da classe
VirtualFileSystem.
Os processos “Atualização do sistema” e “Remoção dos produtos não licenciados” não atualizavam as
informações das bases origem e destino selecionadas pelo usuário, mesmo que ele retornasse para
a tela inicial e selecionasse uma outra base de dados, exigindo que ele recarregasse o processo
para que as informações corretas fossem exibidas.
Os processos “Atualização do sistema” e “Atualização do Engine” poderiam criar registros na
tabela “iLog” com o campo “iReferrer” vazio, dificultando a rastreabilidade das alterações.
O processo Desenvolvimento > Produtos > Mover chaves entres produtos não deixava claro
para quais produtos a senha mestre solicitada na tela inicial era aplicada. Agora ele
passa a solicitar a senha apenas quando é necessário reativar o desenvolvimento dos
produtos na base de dados corrente.
Engine
O método Security.prototype.getPermission
passou a gerar o erro “Invalid key argument” caso fosse informada uma chave de classe inválida. Foi
restaurado o comportamento anterior de tratar a classe inválida como null a fim
de garantir a compatibilidade com códigos legados que fazem uso dessa API com valores potencialmente
inválidos, como os obtidos a partir de uma importação de dados.
A IDE do Engine poderia criar permissões duplicadas se um arquivo fosse modificado logo após
a sua criação.
Quando o módulo indicado pela propriedade controller de uma rota HTTP não exportava uma
função, era gerado o erro “value is not a Function object” sem nenhuma informação adicional
que permitisse o desenvolvedor compreender o motivo do erro. Agora o Engine passa a indicar
o motivo do erro e o caminho do módulo controlador que retornou o valor inválido.
O roteador HTTP não detectava alterações nos códigos-fontes dos controladores HTTP,
exigindo que o servidor fosse reiniciado ou que as sessões JavaScript fossem descartadas para
que as alterações fossem consideradas.
Ocorria uma falha na carga da DLL do V8 em versões desatualizadas do Windows.
Quando ocorria um erro de estouro de memória no Heap do JavaScript, esse erro ocasionalmente
gerava um erro de Access Violation no Engine.
Web Framework
A abertura do processo inicial do Web Framework falhava caso a senha do usuário estivesse
expirada.
Os totais gerais de relatórios SimpleLayout com grupos colapsáveis, recurso habilitado pela
propriedade SimpleLayout.prototype.groupExpansionLevel,
poderiam não ser exibidos.
O campo chave da ajuda do processo estava sendo apresentado vazio.
Arquivos do tipo “application/x-layoutLink” haviam deixado de suportar comentários em seu
conteúdo.
Em determinadas situações era registrado no console do navegador o erro
“Uncaught TypeError: saved.shift is not a function”, sem maiores implicações para o usuário final.
O botão “Localizar” da grade não estava fechando a pesquisa quando esta estava aberta e era
realizado um novo acionamento do botão.
Ao acionar a tecla “Esc” em uma grade era registrado no console do navegador o erro “Uncaught
TypeError: Cannot read property ‘inputNodeId’ of null”, sem maiores implicações para o usuário final.
Ao alternar o modo de visão da grade para formulário e navegar pelos registros, em certas situações,
ao retornar para o modo tabela, dois registros apresentavam-se selecionados.
Ao clicar em um botão de um processo poderia ocorrer o erro “Id x not found at
DomMap.getObject(). Caller: Unknown.” caso uma mesma instância Label fosse escrita em mais
de uma interação.
Os botões do Web Framework não funcionavam corretamente no navegador Microsoft Edge 14 ou
inferior.