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 sent to your email.

Leave a Comment

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

Discover more from Coursity

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top
Powered by simon says web design. Frequently asked questions get a host.