DEV Community

Lucas Valhos
Lucas Valhos

Posted on

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.

Top comments (0)