5. SOQLによるレコードの検索¶
5.1. チュートリアル¶
このチュートリアルが終了すると、次のような事ができるようになります。
- SOQL クエリを発行し、Salesforce のレコードを検索する
SOQL クエリの詳細は次の URL を参照してください。
- Force.com SOQL および SOSL リファレンス - Salesforce Object Query Language (SOQL) (日本語)
- Force.com SOQL and SOSL Reference - Salesforce Object Query Language (SOQL) (English)
5.1.1. ゴールの説明¶
このチュートリアルでは、Salesforceオブジェクトのレコード操作 で作成した Expense オブジェクトを Name で検索し、そのレコードを更新し、Reimbursed(支払い済み)が true であればレコードを削除する、というフローを作成します。
5.1.2. 準備¶
チュートリアルの準備 に書かれている準備が行われていることを確認してください。
また、Salesforceオブジェクトのレコード操作 のチュートリアルが終了していることを確認してください。
5.1.3. レコードの検索¶
IM-LogicDesignerのユーザ定義タスクを作成します。作成するのは SalesforceSOQL定義 です。
intra-mart Accel Platformにテナント管理者またはLogicDesigner管理者でログインします。
「サイトマップ」- 「LogicDesigner」-「ユーザ定義」-「Salesforce SOQL定義新規作成」から、「 SalesforceSOQL定義編集」を開きます。
Salesforceへ接続するクライアントIDを選択します。ここでは default を選択していますが、ご自分の環境にあったものを選択してください。
「バージョン一覧取得」リンクをクリックし、「バージョン」一覧を取得します。「バージョン」一覧の中から使用する「バージョン」を選択します。ここでは「37.0 - Summer‘16」を選択しています。
「入力値」を以下のように設定します。
- name <string>
- nextRecordsUrl <string>
「返却値」を以下のように設定します。
「クエリ」に以下のように入力します。
SELECT Id, Name, Amount__c, Client__c, Date__c, Reimbursed__c, MatterNumber__c FROM Expense__c WHERE Name LIKE /*name*/'dummy' ORDER By Id ASC
コラム
SOQL のユーザ定義タスクは、SQL のユーザ定義タスクと異なりテスト実行ができません。 Salesforceで正常に動作することを確認した SOQL をこのユーザ定義タスクに指定することになります。 Salesforceで SOQL の動作を確認するにはいくつかの方法があります。
- 「開発者コンソール」の “Query Editor” を利用する
- “workbench” の “SOQL Query” を利用する
これらの方法を利用して動作を確認した SOQL を指定してください。
その他の項目は以下のように入力してください。
ユーザ定義ID SearchExpense ユーザ定義名 SearchExpense ユーザカテゴリID SampleCategory
「登録」ボタンをクリックします。
確認ダイアログで「OK」ボタンをクリックします。
ユーザ定義一覧が表示され、作成したユーザ定義が表示されます。
「サイトマップ」- 「LogicDesigner」-「フロー定義一覧」を開きます。
「新規作成」リンクをクリックし、「ロジックフロー定義編集」画面を表示します。
「入出力設定」リンクをクリックし、「入力」に次のような項目を追加し、「決定」ボタンをクリックします。
キー名 型 name string Reimbursed boolean ロジックフロー定義編集画面のデザイナに、先ほど作成した「SearchExpense」タスクと、レコードの更新 と レコードの削除 で作成した「UpdateExpense」「DeleteExpense」、「分岐」「繰り返し」を追加し、下の画像のように接続します。
「SearchExpense」タスクをクリックし、「マッピング設定」ボタンをクリックします。
「入力」の name と、「SearchExpense1」の name を紐づけ、「決定」ボタンをクリックします。
「繰り返し開始」タスクをクリックし、繰り返し対象の「選択」リンクをクリックします。
「SearchExpense1/records」をクリックし、「決定」ボタンをクリックします。
「UpdateExpense」タスクをクリックし、「マッピング設定」ボタンをクリックします。
「im_startLoop1」を追加した上で、「入力」の Reimbursed と UpdateExpense1/body/Reimbursed__c 、im_startLoop1/item/id と UpdateExpense1/id を紐づけ、「決定」ボタンをクリックします。
「ReadExpense」タスクをクリックし、「マッピング設定」ボタンをクリックします。
「im_startLoop1」を追加した上で、im_startLoop1/item/id と ReadExpense1/id を紐づけ、「決定」ボタンをクリックします。
「分岐」タスクをクリックします。
「条件式(EL式)」に ${ReadExpense1.Reimbursed__c==true} と入力します。
「DeleteExpense」タスクをクリックし、「マッピング設定」ボタンをクリックします。
「im_startLoop1」を追加した上で、im_startLoop1/item/id と DeleteExpense1/id を紐づけ、「決定」ボタンをクリックします。
「新規保存」リンクをクリックし、新規保存ダイアログを表示します。ダイアログに次のような内容を入力し「決定」ボタンをクリックします。
フロー定義ID UpdateExpense フロー定義名 標準 UpdateExpense フローカテゴリID SampleCategory 「確認」ダイアログで「決定」ボタンをクリックします。
「ロジックフロー定義一覧」画面に遷移します。作成した「Expenes」フローが表示されていることを確認できます。
これでフロー定義の作成が終了です。
最後に動作確認を行います。 IM-LogicDesignerのデバッグ機能を使ってフローを実行し、 Salesforceのレコードが更新、削除されることを確認します。
「UpdateExpense」フローの「編集」アイコンをクリックします。
「ロジックフロー定義編集」画面の「デバッグ」リンクをクリックします。
「ロジックフロー定義のデバッグ」画面の「実行」リンクをクリックします。
「デバッグの実行」ダイアログが表示されるので、次のように入力し「実行」ボタンをクリックし、「確認」ダイアログで「決定」ボタンをクリックします。
name 文房具 Reimbursed true 「フローの実行が正常終了しました。」とメッセージが表示されます。
Reimbursed を true として更新したので、 Salesforce上のレコードが削除されました。
本当に削除されたかどうかを確認します。
Salesforceにログインし、「Expense」タブをクリックします。
「ごみ箱」リンクをクリックします。
「ごみ箱」画面に「文房具」の行が表示されているのがわかります。
以上で Salesforceのレコード検索と、オブジェクトの更新、削除が行えました。
5.1.4. まとめ¶
以上で SOQLによるレコードの検索 のチュートリアルは全て完了です。
これまでのチュートリアルを通して、以下のことを学びました。
- SOQL クエリを発行し、Salesforce のレコードを検索する
次章 Salesforce バッチ定義新規作成 では、大量データを登録するチュートリアルを用意しています。