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()));
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();
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();
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;
}
}
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)