+
+

ラボ 2: 顧客登録ロジックの実装

概要

前のラボでは、Customer APIからスケルトン・プロジェクトを作成しました。 いよいよ、スケルトンからの実装です。Customer APIは顧客データを管理するための全てのオペレーション ー作成(POST)、読み取り(GET)、更新(PUT)、削除(DELETE)ー を含んでいます。 このラボでは、POSTメソッドで表される、顧客登録を実装します。

顧客登録のロジックは以下の通りです:

  1. その顧客に該当する Salesforce (SFDC) のアカウントを作成

  2. アカウント作成が成功したことを確認

  3. アカウント作成が失敗した場合は、

    1. エラーを発生させ、Bad Requestにマップ (Bad Requestのステータスコードは400)

  4. 成功した場合は、

    1. アカウントの詳細を取得

    2. レスポンスをJSONに変換

ステップ 1: Customer APIの実装

実行するステップは以下の通りです:

  1. api ビューを選択し、Muleパレット にある Add Module module3 lab2 add module symbol のアイコンをクリックして、後続のステップで実装に必要となるSalesforceコネクターとValidationモジュールを追加します。

    module3 lab2 project add modules
  2. SalesforceコネクターValidationモジュール をドラッグ・アンド・ドロップして、 Finish をクリックして下さい。

    module3 lab2 studio add modules finish

    ユースケースをサポートするために、muleの軽量なモジュール・ベースのフレームワークを活用しています。 Salesforceコネクター はSalesforceへの接続、 Validationモジュール は、アサーションの概念と同様に、ブール式、null値、特定の値、およびその他の条件などの検証を実装するためのコンポーネントです。実装後にフローを実行すると、フロー内の エラー・ハンドリング のスコープで、すぐに使用できるカスタムの エラー・タイプ が生成されます。

    最終的に、パレットは以下のイメージのようになっているはずです。

    module3 lab2 palette
  3. では、リソースの POST オペレーションを実装しましょう。 post:\customer:application\json:api-config という名前のフローを見つけて下さい( api ビューの一番下にあるはずです)

    module3 lab2 find flow post
  4. API仕様で定義されたサンプル応答を返す、自動生成された Transform Message を削除します。

  5. Muleパレットから、Salesforce​ を選択し、 Create が見つかるまでスクロールして下さい。コンポーネントをフローにドラッグアンドドロップします。

    module3 lab2 sfdc drag
  6. Salesforce のアイコンをクリックすると、設定画面が下に表示されます。

  7. 名前を Create Account に変更して下さい。

    module3 lab2 change sfdc create account name
  8. module3 lab2 save all button Save All ボタンをクリックしてください。

ステップ 2: プロパティ・ファイルの作成

構成ファイルを作成し、プロジェクトのプロパティをパラメーター化して保持する方法は開発のベストプラクティスです。API実装が使用する接続認証情報を保持するプロパティ・ファイルを作成します。 最初にフォルダーを作成し、次に構成ファイルを作成します。

  1. Package Explorer ビューで src/main/resources を右クリックし、 New → Folder を選択してフォルダーを作成します。名前に configuration と入力し Finish をクリックして下さい。

    module3 lab2 configuration folder create
  2. Package Explorer ビューで src/main/resources/configuration を右クリックし、 New → File を選択してファイルを作成します。名前に config.yaml と入力し Finish をクリックして下さい。

    module3 lab2 properties create 1
    module3 lab2 properties create 2
  3. 以下の内容を config.yaml にコピーして下さい。あなたのAPIで使用するSalesforceコネクターの接続認証情報が含まれています。

    sfdc:
      username: "demos+mythical_lab@mulesoft.com"
      password: "Elum1379"
      securityToken: "7ZDtkYMazEtbvgdaaPrtMGit"
    module3 lab2 sfdc properties
  4. APIのプロパティ・ファイルの設定を完了するため、api ビューをクリックして、 Global Elements タブを開いて下さい。

    module3 lab2 properties create 3
  5. Create をクリックし、 properties と入力して検索して下さい。Configuration Properties を選択して OK をクリックして下さい。File:configuration/config.yaml と入力して OK をクリックします。

    module3 lab2 properties create 4
    module3 lab2 properties create 5
  6. module3 lab2 save all button Save All ボタンをクリックします。

ステップ 3: Salesforceコネクターの構成

  1. これでプロパティが設定されたので、コネクターの構成に進みましょう。 Message Flow のタブに戻り、先ほど追加したSalesforceコネクターを選択して下さい。

    module3 lab2 message flow
  2. コネクター構成の module3 lab1 plus button ボタンをクリックして下さい。

    module3 lab2 salesforce connector configuration
  3. コネクター構成に、以下のプロパティを入力します:

    • username: ${sfdc.username}

    • password: ${sfdc.password}

    • securityToken: ${sfdc.securityToken}

  4. Test Connection…​ をクリックして、接続できることを確認して下さい。

    module3 lab2 sfdc validate
  5. OK を (2回)クリックします。

  6. module3 lab2 save all button Save All ボタンをクリックしてください。

ステップ 4: アカウントの作成

Salesforceコネクターが、アカウント作成を行うよう構成します。Salesforceのパネルで引き続き作業します。

  1. Type: プロパティの横にある module3 lab2 sfdc type refresh button リフレッシュボタンをクリックし、 Account を選択して下さい。

    オプションが表示されない場合は、自分で Account と入力してください。
  2. Record 欄にある payload を削除し、 Refresh Metadata をクリックします。

    module3 lab2 sfdc create single

    これでSalesforceコネクターの構成ができました。続いて、リクエストのJSONメッセージを、Salesforceに保存されるアカウント・オブジェクトに変換するマッピングを作成します。

  3. Salesforceコネクター画面の Records セクションで、module3 lab2 dw iconをクリックします。

    module3 lab2 dw sfdc
  4. Dataweaveによるメッセージ変換が表示されます。入出力のパネルを確認してください。 リクエスト(入力)からSalesforceオブジェクト(出力)へと、各フィールドをドラッグ&ドロップしてマッピングを定義することができます。

    このマッピングでファンクション uuid() を使用して、固有の AccountNumber を生成することも可能です。

    module3 lab2 sfdc create dw complete

    以下は、画像に表示されたマッピングコードです。 コピーしてDataweaveテキストエディターに貼り付けると、UIに変更が反映されます。

    %dw 2.0
    output application/java
    ---
    [{
    	Name: payload.name,
    	BillingStreet: payload.billingAddress.address1,
    	BillingCity: payload.billingAddress.city,
    	BillingState: payload.billingAddress.state,
    	BillingPostalCode: payload.billingAddress.postalCode,
    	BillingCountry: payload.billingAddress.country,
    	ShippingStreet: payload.shippingAddress.address1,
    	ShippingCity: payload.shippingAddress.city,
    	ShippingState: payload.shippingAddress.state,
    	ShippingPostalCode: payload.shippingAddress.postalCode,
    	ShippingCountry: payload.shippingAddress.country,
    	Phone: payload.phone,
    	AccountNumber: uuid(),
    	Account_Email__c: payload.email
    }]

    Dataweave には多くの便利なファンクションがあり、Studioで確認することが可能です。 AccountNumberフィールドにカーソルを置いて F3 を押すと、適用可能な全てのファンクションが表示されます。 uuid と入力してフィルターすると、ファンクションについての情報が確認できます。

    module3 lab2 dw function tip

    Done を押して、マッピングを完了します。

    module3 lab2 sfdc create mapped
  5. module3 lab2 save all button Save All ボタンをクリックしてください。

ステップ 5: Salesforceのレスポンスの評価

顧客情報が保存されたら、Salesforceからのレスポンスを確認する必要があります。 (送信された情報が妥当でない場合は、リクエストが失敗するかもしれません。)

  1. レスポンスを確認するために、 Validation: is true コンポーネントを追加します。Muleパレットで、 is true​ と入力して下さい。

  2. アイコンを、フローの最後にドラッグ・アンド・ドロップして下さい。

    module3 lab2 validation in flow
  3. Validationモジュールのプロパティを以下のように設定します。

    1. Display Name​: Validate Response

    2. Expression​: #[payload.successful == true]

    3. Message​: Account Creation was Unsuccessful

      module3 lab2 validation config

      Validationコンポーネントでは、Salesforceからのレスポンスが評価されます。

  4. Validationでは、Expression および Message の2つの設定を変更します。また、Validationエラーを生成するためにすぐに使える(Out of the boxの)エラー・タイプが使用されることを確認して下さい。

    1. レスポンス値の評価

    2. エラーが発生した場合は、Bad Requestの応答を返す

  5. Validationモジュールのエラー・マッピングを確認します。Error Mapping タブをクリックし、 module3 lab2 validation error mapping plus button ボタンをクリックして、すぐに使用できる(Out of the boxの)エラー・タイプを確認して下さい。 VALIDATION:INVALID_BOOLEAN が事前に入力されているので、ここでは何もする必要はありません。

    module3 lab2 validation error mapping

    このケースでは、Validationエラーをカスタム・エラーにマップすることはしません。 その代わり、VALIDATION:INVALID_BOOLEAN をAPIKITのエラーに追加します。

  6. では、APIKIT:BAD_REQUEST エラー・ハンドラーに VALIDATION:INVALID_BOOLEAN を設定しましょう。 api メッセージ・フロー・ビューに移動し、エラー・ハンドラーを配置して、エラー・タイプを選択します。

  7. Type セクションに以下のテキストを追加してください。 ,VALIDATION:INVALID_BOOLEAN

    module3 lab2 validation bad request mapping

    Muleはカスタム・エラー・タイプだけでなく、すぐに使える(Out of the box)のエラー・タイプを提供し、 エラー・ハンドリングのシナリオを簡単に設定できるようにしています。

  8. module3 lab2 save all button Save All ボタンをクリックしてください。

ステップ 6: レスポンスの設定

このステップでは、作成されたアカウント情報を取得し、レスポンスに設定します。

  1. 前のステップと同様に、Salesforceコネクターの Query コンポーネントをフローの最後にドラッグ・アンド・ドロップしてください。

    module3 lab2 add query
  2. 以下のプロパティを設定します:

    1. Display Name​: Get Account Detail

    2. Connector Configurator​: Salesforce_Config (既に設定した構成を再利用します)

    3. Salesforce query​: SELECT Id, AccountNumber, Name FROM Account where Id = ':id'

    4. Parameters​:

      1. Name: "id"

      2. Value: payload.items[0].id

        module3 lab2 sfdc query single
  3. 続いて、サービスからのレスポンスを整形するTransformを追加します。前のステップで配置したSalesforceアイコンの後に、 Transform Message をドラッグ・アンド・ドロップして下さい。

    module3 lab2 tranform connector create
  4. Transform Message を右クリックしてRename(名前変更)を選択します。Transform Message のテキストを、SFDC Account Detail to JSON に変更して下さい。

    module3 lab2 rename transform icon
  5. アイコンをクリックして、Transformationの中身をみてみましょう。

    SFDCからのレスポンスと、APIのレスポンスが確認できます。

    module3 lab2 sfdc response
  6. 以下のdataweave スクリプトをコピーして貼り付けてください:

    %dw 2.0
    output application/json
    var customer = payload[0]
    ---
    {
    	name: customer.Name default "",
    	id: customer.AccountNumber default ""
    }
    module3 lab2 sfdc transf mapping

    以下の点を確認してください。

    1. レスポンスは配列になっています。そのため、最初の要素を customer 変数に保管しています。

    2. Id および AccountNumber は入力においてオプションに設定されています。一方、出力ではそれらは必須項目です。 そのため default 値を設定しています。

  7. module3 lab2 save button Save をクリックしてください。

これで顧客登録ロジックが完成し、APIをテストする準備ができました。

まとめ

このラボでは、以下を実施しました。

  • POSTフローの実装

  • Salesforce コネクターの構成

  • Salesforceのアカウント・オブジェクトの保存と取得

  • Salesforceのエラー処理

さらに学習するには:

おめでとうございます!ラボ2が完了しました。

ラボ 3に進んでください。

Submit your feedback!
Share your thoughts to help us build the best workshop experience for you!
Take our latest survey!