Geração de IDs únicos no Salesforce sem chance de colisão

Geração de IDs únicos no Salesforce sem chance de colisão

Para garantir a geração de IDs únicos no Salesforce sem chance de colisão, é possível utilizar algumas abordagens eficazes. A seguir, descrevo algumas dessas abordagens:

1. Utilizar a API padrão de Salesforce (UUID)

Salesforce possui uma função nativa para gerar UUIDs (Identificadores Únicos Universais) no Apex, o que praticamente elimina as chances de colisão. O UUID é um padrão internacional para criar identificadores únicos.

String uniqueId = String.valueOf(Math.abs(Crypto.getRandomLong()));
Enter fullscreen mode
Exit fullscreen mode

2. Combinar campos exclusivos

Você pode criar um ID único combinando vários campos que, juntos, são garantidos como únicos. Por exemplo, concatenar o ID do registro com a data e hora atual, um código único de usuário, ou outros campos exclusivos.

String uniqueId = 'ID-' + System.currentTimeMillis() + '-' + UserInfo.getUserId();
Enter fullscreen mode
Exit fullscreen mode

3. Usar Sequências Automáticas

Criar um campo do tipo “Auto Number” que incrementa automaticamente para cada novo registro. Isso garante unicidade por definição.

  • Exemplo de uso:

    • Configure um campo “Auto Number” no objeto desejado.
    • No campo “Display Format”, defina o formato como “UNQ-{000000}” para que os números sejam gerados como UNQ-000001, UNQ-000002, etc.

4. Combinar Data e Hora com um Incremento

Combinar a data e hora atual com um incremento para assegurar unicidade.

Datetime dt = Datetime.now();
String uniqueId = dt.format('yyyyMMddHHmmssSSS') + '-' + UserInfo.getUserId();
Enter fullscreen mode
Exit fullscreen mode

5. Uso de Chaves Externas

Se você está integrando com outro sistema, pode utilizar chaves externas que garantem a unicidade no sistema original. Isso pode ser útil, por exemplo, em integrações com ERP, CRM, ou outros sistemas que já garantem a unicidade das chaves.

Exemplo Completo em Apex:

Aqui está um exemplo completo utilizando várias técnicas para garantir a unicidade:

public with sharing class UniqueIdGenerator { public static String generateUniqueId() { // Utilize a função de geração de UUID String uuid = String.valueOf(Math.abs(Crypto.getRandomLong())); // Combine com a data e hora atual para mais segurança Datetime dt = Datetime.now(); String timestamp = dt.format('yyyyMMddHHmmssSSS'); // Combine com o ID do usuário para garantir mais unicidade String userId = UserInfo.getUserId(); // Crie o ID único final String uniqueId = uuid + '-' + timestamp + '-' + userId; return uniqueId; }
}
Enter fullscreen mode
Exit fullscreen mode

Este exemplo utiliza um UUID, a data e hora atual e o ID do usuário para criar um ID único. A combinação desses elementos reduz drasticamente a chance de colisão.

Escolher a abordagem correta depende das suas necessidades específicas e do contexto de uso no Salesforce. Essas técnicas combinadas garantem que você terá um ID único para cada registro sem a preocupação de colisões.


Discover more from Coursity

Subscribe to get the latest posts to your email.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *