您位於此處:
建立物件狀態動作定義的 Apex 類別
在「開發人員主控台」中為每個物件狀態動作定義 (自訂動作) 建立可叫用 Apex 類別。
-
按一下快速存取功能表 (
),然後按一下「開發人員主控台」。
- 選取「 」。
- 輸入名稱,然後按一下「確定」。
-
將範例程式碼貼到對話方塊中。
請參閱物件狀態動作定義的範例 Apex 叫用類別。
- 儲存您的變更。
See Also
物件狀態動作定義的範例 Apex 叫用類別
以下是建立物件狀態動作定義的一些範例 Apex 類別。修改範例程式碼以符合您的需求
「方法簽名」包含以下必要參數:
| 參數 | 描述 |
|---|---|
| 對應 < 字串、物件 > inputMap | 包含兩個鍵值:
|
| 對應 < 字串、物件 > 對應 |
|
範例 RestartContract Apex 類別
使用自訂動作重新啟動已終止的契約。
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);
}
}
}
範例 ApprovalAction Apex 類別
實作與標準 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);
}
}
範例 EndContract Apex 類別
針對呼叫的動作,如果「寄件者」狀態有多個物件狀態轉換是可能的,因為有多個「收件者」狀態可用,則 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');
}
}
