2回で終わらせる予定でしたが、予想以上書く量が多かったので、第3弾です。
Step5 外部PMSシステムプロジェクトデータのSalesforceとの同期
カスタムRESTクラスの作成です。
RESTとして使用されるには、クラスに@RestResource(urlMapping=’/Project__c/*’)アノテーションを、メソッドに@HttpPostアノテーションが必要になります。
あとは、問題文にしたがって、元になった商談に対応するプロジェクトレコードをUpsertします。
商談のDeliveryInstallationStatus__cもIn progressに変更します。
ProjectRESTService.cls
@RestResource(urlMapping='/Project__c/*')
global class ProjectRESTService {
@HttpPost
global static String postProjectData(
String ProjectRef,String ProjectName,
String OpportunityId, Date StartDate, Date EndDate,
Double Amount, String Status){
String massage = '';
Project__c project = new Project__c();
Savepoint sp = Database.setSavepoint();
try{
// TODO ProjectのUpsert処理
// TODO OpportunityのUpsert処理
massage = 'OK';
}
catch(Exception e){
Database.rollback(sp);
massage = e.getMessage();
}
return massage;
}
}
Step6 インバウンドのApex RESTサービスロジックのテスト
ProjectRESTServiceクラスに対するテストクラスを作成します。
RESTのApexクラスですが、特別なことは必要なく、普通にカバレージが通るようにテストケースを作ればOKです。
Step7 SalesforceプロジェクトデータのSquare Peg Accountingにある外部請求システムとの同期
このステップでは3つのクラスを作成します。
1つは、SOAP呼び出し用のクラス(BillingCalloutService)、2つ目は非同期でSOAPを実行させるクラス、3つ目は起動元となるトリガ。
BillingServiceProxyクラス
SOAP呼び出し用のクラスです。
WSDLで自動生成されているため、改めて作成したり修正したりする必要はありません。
BillingCalloutServiceクラス
非同期でBillingServiceProxyクラスのInvoicesPortSoap11メソッドをコールします。
非同期かつコールアウトを伴うので、@future(callout=true)アノテーションが必要です。
引数のBillingServiceProxy.projectクラスには、ユーザIDとパスワードの設定が必要なので、カスタム設定ServiceCredentials__cから取得します。
ProjectTriggerトリガ
BillingCalloutService.callBillingServiceメソッドを呼ぶ処理を入れるのみです。
トリガはAfterで動作し、InsertとUpdateの時に動くようにしてください。
Step8 アウトバウンドApex SOAP呼び出しロジックのテスト
ここはBillingCalloutServiceクラスのテストクラスを作成します。
BillingCalloutServiceMockに成功パターン、BillingCalloutServiceMockFailureに失敗パターンのモックを設定します。
これもカバレージ90%以上を目指します。
自動生成されたBillingServiceProxyクラスは、BillingCalloutServiceクラスから呼ばれればkカバレージは満たせるので専用のテストクラスまでは不要です。
Step9 外部の請求データとSalesforceのリアルタイムの同期
ここは、カスタマイズ設定を間違えてなければ、設定済みです。
これで晴れてData Integration Specialistになりました^ – ^
連携まわりは設定やお作法を覚えないといけないのですが、画面周りの実装がない分まだやりやすかったかな。


コメント