スーパーバッジ攻略 Data Integration Specialist③

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

コメント