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になりました^ – ^
連携まわりは設定やお作法を覚えないといけないのですが、画面周りの実装がない分まだやりやすかったかな。
コメント