Вы находитесь здесь:
Создание класса Apex для определения действия состояния объекта
Создайте вызываемый класс Apex в консоли разработчика для каждого определения действия состояния объекта (настраиваемые действия).
-
Нажмите на меню быстрого доступа (
), потом нажмите Developer Console.
- Выберите .
- Введите имя и нажмите OK.
- Вставьте образец кода в диалоговое окно.
- Сохраните внесенные изменения.
See Also
Пример класса вызова Apex для определения действия состояния объекта
Ниже указаны примеры классов Apex для создания определений действий состояния объекта. Измените образец кода в соответствии с вашими требованиями
Подпись метода содержит следующие обязательные параметры:
| Параметр | Описание |
|---|---|
| Карта < Строка, Объект > inputMap | Содержит два ключа:
|
| Карта < Строка, Объект > OutMap |
|
Пример класса Apex RestartContract
Перезапустите прекращенный контракт посредством настраиваемого действия.
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);
}
}
}
Пример класса Apex ApprovalAction
Внедрите дополнительную логику, выполняемую параллельно со стандартным процессом утверждения 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);
}
}
Пример класса Apex EndContract
В вызываемом действии, если для состояния «От» возможны несколько переходов в состояние объекта из-за доступности нескольких состояний «Кому», Apex не изменит состояние контракта. Например, в активированном контракте существует настраиваемое действие «Конечный контракт», настроенное на перемещение контракта в два состояния: отменено и прекращено. Для успеха вызова Apex необходим параметр 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');
}
}
