
ラボ 2: 顧客登録ロジックの実装
概要
前のラボでは、Customer APIからスケルトン・プロジェクトを作成しました。 いよいよ、スケルトンからの実装です。Customer APIは顧客データを管理するための全てのオペレーション ー作成(POST)、読み取り(GET)、更新(PUT)、削除(DELETE)ー を含んでいます。 このラボでは、POSTメソッドで表される、顧客登録を実装します。
顧客登録のロジックは以下の通りです:
-
その顧客に該当する Salesforce (SFDC) のアカウントを作成
-
アカウント作成が成功したことを確認
-
アカウント作成が失敗した場合は、
-
エラーを発生させ、Bad Requestにマップ (Bad Requestのステータスコードは400)
-
-
成功した場合は、
-
アカウントの詳細を取得
-
レスポンスをJSONに変換
-
ステップ 1: Customer APIの実装
実行するステップは以下の通りです:
-
api ビューを選択し、Muleパレット にある Add Module
のアイコンをクリックして、後続のステップで実装に必要となるSalesforceコネクターとValidationモジュールを追加します。
-
Salesforceコネクター と Validationモジュール をドラッグ・アンド・ドロップして、 Finish をクリックして下さい。
ユースケースをサポートするために、muleの軽量なモジュール・ベースのフレームワークを活用しています。 Salesforceコネクター はSalesforceへの接続、 Validationモジュール は、アサーションの概念と同様に、ブール式、null値、特定の値、およびその他の条件などの検証を実装するためのコンポーネントです。実装後にフローを実行すると、フロー内の エラー・ハンドリング のスコープで、すぐに使用できるカスタムの エラー・タイプ が生成されます。
最終的に、パレットは以下のイメージのようになっているはずです。
-
では、リソースの POST オペレーションを実装しましょう。 post:\customer:application\json:api-config という名前のフローを見つけて下さい( api ビューの一番下にあるはずです)
-
API仕様で定義されたサンプル応答を返す、自動生成された Transform Message を削除します。
-
Muleパレットから、Salesforce を選択し、 Create が見つかるまでスクロールして下さい。コンポーネントをフローにドラッグアンドドロップします。
-
Salesforce のアイコンをクリックすると、設定画面が下に表示されます。
-
名前を
Create Account
に変更して下さい。 -
Save All ボタンをクリックしてください。
ステップ 2: プロパティ・ファイルの作成
構成ファイルを作成し、プロジェクトのプロパティをパラメーター化して保持する方法は開発のベストプラクティスです。API実装が使用する接続認証情報を保持するプロパティ・ファイルを作成します。 最初にフォルダーを作成し、次に構成ファイルを作成します。
-
Package Explorer ビューで src/main/resources を右クリックし、 New → Folder を選択してフォルダーを作成します。名前に configuration と入力し Finish をクリックして下さい。
-
Package Explorer ビューで src/main/resources/configuration を右クリックし、 New → File を選択してファイルを作成します。名前に config.yaml と入力し Finish をクリックして下さい。
-
以下の内容を config.yaml にコピーして下さい。あなたのAPIで使用するSalesforceコネクターの接続認証情報が含まれています。
sfdc: username: "demos+mythical_lab@mulesoft.com" password: "Elum1379" securityToken: "7ZDtkYMazEtbvgdaaPrtMGit"
-
APIのプロパティ・ファイルの設定を完了するため、api ビューをクリックして、 Global Elements タブを開いて下さい。
-
Create をクリックし、 properties と入力して検索して下さい。Configuration Properties を選択して OK をクリックして下さい。File: に configuration/config.yaml と入力して OK をクリックします。
-
Save All ボタンをクリックします。
ステップ 3: Salesforceコネクターの構成
-
これでプロパティが設定されたので、コネクターの構成に進みましょう。 Message Flow のタブに戻り、先ほど追加したSalesforceコネクターを選択して下さい。
-
コネクター構成の
ボタンをクリックして下さい。
-
コネクター構成に、以下のプロパティを入力します:
-
username:
${sfdc.username}
-
password:
${sfdc.password}
-
securityToken:
${sfdc.securityToken}
-
-
Test Connection… をクリックして、接続できることを確認して下さい。
-
OK を (2回)クリックします。
-
Save All ボタンをクリックしてください。
ステップ 4: アカウントの作成
Salesforceコネクターが、アカウント作成を行うよう構成します。Salesforceのパネルで引き続き作業します。
-
Type: プロパティの横にある
リフレッシュボタンをクリックし、 Account を選択して下さい。
オプションが表示されない場合は、自分で Account と入力してください。 -
Record 欄にある payload を削除し、 Refresh Metadata をクリックします。
これでSalesforceコネクターの構成ができました。続いて、リクエストのJSONメッセージを、Salesforceに保存されるアカウント・オブジェクトに変換するマッピングを作成します。
-
Salesforceコネクター画面の Records セクションで、
をクリックします。
-
Dataweaveによるメッセージ変換が表示されます。入出力のパネルを確認してください。 リクエスト(入力)からSalesforceオブジェクト(出力)へと、各フィールドをドラッグ&ドロップしてマッピングを定義することができます。
このマッピングでファンクション uuid() を使用して、固有の AccountNumber を生成することも可能です。
以下は、画像に表示されたマッピングコードです。 コピーして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 と入力してフィルターすると、ファンクションについての情報が確認できます。
Done を押して、マッピングを完了します。
-
Save All ボタンをクリックしてください。
ステップ 5: Salesforceのレスポンスの評価
顧客情報が保存されたら、Salesforceからのレスポンスを確認する必要があります。 (送信された情報が妥当でない場合は、リクエストが失敗するかもしれません。)
-
レスポンスを確認するために、 Validation: is true コンポーネントを追加します。Muleパレットで、 is true と入力して下さい。
-
アイコンを、フローの最後にドラッグ・アンド・ドロップして下さい。
-
Validationモジュールのプロパティを以下のように設定します。
-
Display Name:
Validate Response
-
Expression:
#[payload.successful == true]
-
Message:
Account Creation was Unsuccessful
Validationコンポーネントでは、Salesforceからのレスポンスが評価されます。
-
-
Validationでは、Expression および Message の2つの設定を変更します。また、Validationエラーを生成するためにすぐに使える(Out of the boxの)エラー・タイプが使用されることを確認して下さい。
-
レスポンス値の評価
-
エラーが発生した場合は、Bad Requestの応答を返す
-
-
Validationモジュールのエラー・マッピングを確認します。Error Mapping タブをクリックし、
ボタンをクリックして、すぐに使用できる(Out of the boxの)エラー・タイプを確認して下さい。 VALIDATION:INVALID_BOOLEAN が事前に入力されているので、ここでは何もする必要はありません。
このケースでは、Validationエラーをカスタム・エラーにマップすることはしません。 その代わり、VALIDATION:INVALID_BOOLEAN をAPIKITのエラーに追加します。
-
では、APIKIT:BAD_REQUEST エラー・ハンドラーに VALIDATION:INVALID_BOOLEAN を設定しましょう。 api メッセージ・フロー・ビューに移動し、エラー・ハンドラーを配置して、エラー・タイプを選択します。
-
Type セクションに以下のテキストを追加してください。
,VALIDATION:INVALID_BOOLEAN
Muleはカスタム・エラー・タイプだけでなく、すぐに使える(Out of the box)のエラー・タイプを提供し、 エラー・ハンドリングのシナリオを簡単に設定できるようにしています。
-
Save All ボタンをクリックしてください。
ステップ 6: レスポンスの設定
このステップでは、作成されたアカウント情報を取得し、レスポンスに設定します。
-
前のステップと同様に、Salesforceコネクターの Query コンポーネントをフローの最後にドラッグ・アンド・ドロップしてください。
-
以下のプロパティを設定します:
-
Display Name:
Get Account Detail
-
Connector Configurator:
Salesforce_Config
(既に設定した構成を再利用します) -
Salesforce query:
SELECT Id, AccountNumber, Name FROM Account where Id = ':id'
-
Parameters:
-
Name:
"id"
-
Value:
payload.items[0].id
-
-
-
続いて、サービスからのレスポンスを整形するTransformを追加します。前のステップで配置したSalesforceアイコンの後に、 Transform Message をドラッグ・アンド・ドロップして下さい。
-
Transform Message を右クリックしてRename(名前変更)を選択します。Transform Message のテキストを、SFDC Account Detail to JSON に変更して下さい。
-
アイコンをクリックして、Transformationの中身をみてみましょう。
SFDCからのレスポンスと、APIのレスポンスが確認できます。
-
以下のdataweave スクリプトをコピーして貼り付けてください:
%dw 2.0 output application/json var customer = payload[0] --- { name: customer.Name default "", id: customer.AccountNumber default "" }
以下の点を確認してください。
-
レスポンスは配列になっています。そのため、最初の要素を customer 変数に保管しています。
-
Id および AccountNumber は入力においてオプションに設定されています。一方、出力ではそれらは必須項目です。 そのため default 値を設定しています。
-
-
Save をクリックしてください。
これで顧客登録ロジックが完成し、APIをテストする準備ができました。
まとめ
このラボでは、以下を実施しました。
-
POSTフローの実装
-
Salesforce コネクターの構成
-
Salesforceのアカウント・オブジェクトの保存と取得
-
Salesforceのエラー処理
さらに学習するには:
-
Dataweave についての詳細は、ドキュメントを確認して下さい。
-
Salesforce コネクター についての詳細は、ドキュメントを確認して下さい。
-
Validationモジュール についての詳細は、ドキュメントを確認して下さい。
おめでとうございます!ラボ2が完了しました。
ラボ 3に進んでください。