Visão geral
Atualmente, ao criar um objeto no Latromi, é gerado um identificador global único (Global ID) de 38 caracteres.
Em versões anteriores, essa geração era feita através de um código GUID, que pode variar entre 32 a 38 caracteres, dependendo da formatação aplicada.
Exemplos de formatação para GUID:
00000000000000000000000000000000→ 32 caracteres, sem caracteres especiais00000000-0000-0000-0000-000000000000→ 36 caracteres, com traços{00000000-0000-0000-0000-000000000000}→ 38 caracteres, com chaves
Simulando
Para a simulação deste erro é necessário usar um objeto que possui uma geração de ID Global no padrão GUID.
- Efetue alguma alteração no objeto, e commit a revisão.
- Na tela de ‘log de revisão’, busque pelo objeto
- Clique para restaurar o objeto em questão
Após esses passos poderá ser capturado a seguinte mensagem de erro:
Não foi possível restaurar o formulário: value ‘00000000-0000-0000-0000-000000000000’ violates the length restriction (38) of the ‘code’ parameter. Parameter name: code.
Causa
O erro ocorre devido a uma validação presente no core do sistema, que identifica o padrão de geração do código global (Global ID).
Mesmo quando o objeto utiliza o padrão antigo baseado em GUID, o sistema aplica a validação do novo padrão de 38 caracteres, ocasionando a falha.
Solução paleativa
Como o GUID pode ser reconhecido em múltiplos formatos e, independentemente da formatação, continuará sendo um GUID válido, é possível contornar o problema adicionando chaves à sua composição no upgrade code.
Exemplo de ajuste via SQL:
update wecdb.globalidmapping
set upgradecode = '{CÓDIGO_DO_OBJETO}'
where upgradecode = 'CÓDGIO_DO_OBJETO' -- Necessário garantir ser o mesmo que está sendo feito o update
Solução
A correção definitiva requer ajuste no core do sistema, mais especificamente no objeto Struct responsável pelo tratamento do upgradecode.
Será necessário revisar a lógica de validação para identificar corretamente, qual foi o padrão de geração do código global do objeto em questão.