使用 Apex 建立對外部服務的呼叫
設計和測試可將 Salesforce 中的使用者資訊傳送到外部員工銀行系統的自動化。使用所提供的範例,為使用者電話號碼建立變數,並將不同的電話號碼結合成資料片段。接著使用外部服務動作來建立使用者。
必要版本
| 提供版本:Lightning Experience |
| 提供版本:Enterprise、Performance、Unlimited 及 Developer Edition |
-
定義已命名認證
針對此簡化範例,請使用「舊版」已命名認證。從「新增」按鈕旁的下拉式功能表中選取「新增舊版」,而不是按一下「新增」。針對您組織用來存取銀行系統的已命名認證,指派 Bank 標籤。指派預留位置 URL,例如 https://api.example.com。請使用 example.com,因為您在註冊時將會貼上結構描述,而非使用 URL 以指向 API 規格。
在您使用 URL 的案例中,已命名認證 URL 對應至 API 規格的已宣告主機,以及其中一個傳輸通訊協定結構描述或 URL 通訊協定。只要 URL 主控相同的外部服務,就可以指向不同的端點。會在呼叫上將基本路徑新增至已命名認證 URL。
- 使用註冊外部服務中所述的步驟作為指南,註冊員工銀行系統的外部服務。使用 BankService 名稱和 Bank 已命名認證,然後從「外部服務 API 規格範例 2」(可在主題外部服務 OpenAPI 2.0 結構敘述中找到) 複製結構描述。
-
建立 Apex 類別
BankService:public class BankService { } -
若要儲存使用者詳細資料,請新增成員變數:
public class BankService { private ExternalService.BankService_z0User user; } -
若要以空白的電話清單初始化空白使用者,請新增方法:
public class BankService { private ExternalService.BankService_z0User user; private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
若要指派工作電話值,請新增方法:
public class BankService { private ExternalService.BankService_z0User user; public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
若要指派手機電話值,請新增方法:
public class BankService { private ExternalService.BankService_z0User user; public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } public void setCellPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Cell'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
若要指派使用者,請新增方法:
public class BankService { private ExternalService.BankService_z0User user; public void setUser(Integer userId, String userName) { setEmptyUser(); this.user.id = userId; this.user.name = userName; } public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } public void setCellPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Cell'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
建立自訂例外狀況類別,因為您無法擲回內建的 Apex 例外狀況。
Public class BankServiceException extends Exception{}如需詳細資訊,請參閱《Apex 開發人員指南》中的建立自訂例外狀況。
-
若要在外部銀行系統上建立使用者,請新增方法以呼叫外部 BankService:
public class BankService { private ExternalService.BankService_z0User user; public void createUser() { if (this.user == null || this.user.id == null) { throw new BankServiceException('Set the user to create first'); } ExternalService.BankService bankService = new ExternalService.BankService(); try { ExternalService.BankService.postUsers_Request request = new ExternalService.BankService.postUsers_Request(); request.z0user = this.user; bankService.postUsers(request); } catch (ExternalService.BankService.postUsers_ResponseException e) { throw new BankServiceException('Couldn\'t create user with ID: ' + this.user.id); } } public void setUser(Integer userId, String userName) { setEmptyUser(); this.user.id = userId; this.user.name = userName; } public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } public void setCellPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Cell'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
開啟開發人員主控台並透過在匿名執行類別中使用程式碼片段的某些範例值呼叫
BankService進行除錯。開啟除錯記錄,並與此範例呼叫記錄比較:BankService bankService = new BankService(); bankService.setWorkPhone('1234567890'); bankService.setCellPhone('0987654321'); bankService.setUser(1234, 'Maria'); bankService.createUser();
此文章是否解決您的問題?
請讓我們知道,以便我們改進!
