Você está aqui:
Criar uma classe do Apex para definição de ação de estado do objeto
Crie uma classe do Apex invocável no Developer Console para cada uma das definições de ação de estado do objeto (ações personalizadas).
-
Clique no menu de acesso rápido (
) e clique em Console do desenvolvedor.
- Selecione .
- Insira um nome e clique em OK.
- Cole o código de amostra na caixa de diálogo.
- Salve suas alterações.
See Also
Classe de invocação do Apex de amostra para definição de ação de estado do objeto
Aqui estão alguns exemplos de classes do Apex para criar definições de ação de estado do objeto. Modifique o código de amostra para atender aos seus requisitos
A Assinatura do método inclui estes parâmetros obrigatórios:
| Parâmetro | Descrição |
|---|---|
| Mapa < String, Object > inputMap | Contém duas chaves:
|
| Mapa < String, Object > outMap |
|
Exemplo de Classe do Apex RestartContract
Reinicie um contrato encerrado usando uma ação personalizada.
global class RestartContract implements industries_clm.OpenInterface {
public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
Boolean success = true;
if (methodName == 'executeAction') {
makeCallout(request, outMap);
}
return success;
}
public static void makeCallout(Map < String, Object > inputMap, Map < String, Object > outMap) {
String ContractId = (String) inputMap.get('contractId');
List<Contract> contract = [SELECT Id, Name, Status FROM Contract WHERE Id =:contractId];
contract[0].Status = 'Draft';
update(contract);
outMap.put('isSuccess', true);
}
}
}
Classe do Apex ApprovalAction de amostra
Implemente uma lógica adicional executada ao mesmo tempo que o processo de aprovação padrão do Salesforce.
global class ApprovalAction implements industries_clm.OpenInterface {
public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
Boolean success = true;
if (methodName == 'executeAction') {
executeAction(request, outMap);
}
return success;
}
private void executeAction(Map < String, Object > inputMap, Map < String, Object > outMap) {
Approval.ProcessSubmitRequest req1 =
new Approval.ProcessSubmitRequest();
req1.setComments('Submitting request for approval.');
String contractId = (String) inputMap.get('contractId');
req1.setObjectId(contractId);
// Submit the record to specific process and skip the criteria evaluation
req1.setProcessDefinitionNameOrId('ContractApprovalProcessName');
req1.setSkipEntryCriteria(true);
// Submit the approval request for the account
Approval.ProcessResult result = Approval.process(req1);
outMap.put('isSuccess', true);
}
}
Classe do Apex EndContract de amostra
Para uma ação chamada, se várias transições de estado de objeto forem possíveis para um estado De porque vários estados Para estão disponíveis, o Apex não alterará o estado do contrato. Por exemplo, em um contrato ativado, há uma ação personalizada chamada Encerramento de contrato configurada para mover o contrato para dois estados: cancelado e encerrado. Para que a chamada do Apex seja bem-sucedida, é necessário o parâmetro finalStatusValue.
global class EndContract implements industries_clm.OpenInterface {
public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
Boolean success = true;
if (methodName == 'executeAction') {
executeAction(request, outMap);
}
return success;
}
private void executeAction(Map < String, Object > inputMap, Map < String, Object > outMap) {
String contractId = (String) inputMap.get('contractId');
outMap.put('isSuccess', true);
outMap.put('finalStatusValue', 'Canceled');
}
}
