Process Automation, Logic, and Integration Flashcards
あるCosmic Geminaの開発者は最近、会社で使用しているTMS(輸送管理システム)にコールアウトするApexクラスを作成しました。コールアウトは、特定の貨物に関する情報を取得し、応答に基づいてカスタムオブジェクトのレコードを更新する必要があります。RESTまたはSOAPコールアウトを実行する前に、TMSのエンドポイントを構成するには、次のうちどれを利用できますか?
答えを2つ選んでください。
A. 外部データソース
B. 指定ログイン情報
C. リモートサイト設定
D. 外部サービス
B. 指定ログイン情報
C. リモートサイト設定
外部システムへのコールアウトを成功させるには、まず、そのシステム用に指定ログイン情報 (レガシー) またはリモートサイト設定のいずれかを構成する必要がある。指定ログイン情報は、コールアウトエンドポイントの URL と認証パラメータの両方を指定する。指定ログイン情報が設定されている場合、リモートサイト設定は不要である。認証が OAuth を使用する場合、外部クレデンシャルを介して動作する新しい指定ログイン情報スキーマを定義できる。外部サービスは外部システムへの接続(Apexコーディングなしで外部システムのAPIを実行)に使用されるが、REST または SOAP コールアウトを実行する必要はない。外部データソースは、Salesforce Connect を設定するために作成されます。
Cosmic FoodsのIT部門は、複雑な要件を多く含むSalesforceの開発プロジェクトを任されました。しかし、開発チームは小規模で、プロジェクト完了まで3ヶ月しか与えられていないため、ITマネージャーは、ネイティブプラットフォームの機能とFlow Builderなどの自動化ツールを使用したローコード開発アプローチを利用したいと考えています。このアプローチを採用することで実現できるメリットは、次のうちどれでしょうか?
答えを2つ選びなさい。
A. 開発ライフサイクル全体の時間を短縮できる。
B. 既存の組織の人材を、より簡単な開発タスクに活用できる。
C. データへのアクセスを管理するために、コードを通じてセキュリティ設定を行うことができる。
D. 外部パートナーとのコラボレーションによって要件を満たすことができる。
A. 開発ライフサイクル全体の時間を短縮できる。
B. 既存の組織の人材を、より簡単な開発タスクに活用できる。
ローコード開発アプローチを用いると、開発ライフサイクル全体の時間が短縮される。より簡単な開発タスクは、非技術系ユーザーで構成される既存の組織人材に割り当てることができる。複雑で革新的なタスクはIT部門が処理できる。ビジネス・ユーザーとのコラボレーションにより、要件を直感的に満たすことができ、ワークフローがより効果的に強化される。プロファイル設定、権限セット、組織全体のデフォルト、共有ルールなどのネイティブ機能により、コードを使用せずにセキュリティ設定を簡単に構成できる。
オブジェクトには、UpdateCount というフィールドの値を常に 1 だけ増加させる ‘before update’ トリガが定義されています。オブジェクトには、フィールドの更新を引き起こすワークフロールールもあり、’Re-evaluate Workflow Rules After Field Change’ が有効になっています。UpdateCount の元の値が 53 で、レコードの更新によってワークフロー・ルールが発火した場合、レコードが保存された後の UpdateCount の値はどうなりますか?
答えを1つ選んでください。
A. 56
B. 55
C. 54
D. 53
B. 55
この場合、「before update」トリガは、ワークフローフィールド更新の前に実行されます。
ワークフローフィールドの更新によってレコードが更新された後、トリガはもう1回実行されます。(これは仕様)
トリガは、2回実行されるので、UpdateCount フィールドの新しい値は、55になります。
Apexトリガの追加実行は、全てのタイプのDML操作に適用されることに注意することが重要です。例えば、レコードを挿入すると、’before insert’トリガとレコードを更新するワークフロー ルールが起動される場合、’before insert’トリガは、ワークフロー ルールがレコードを更新する実行順に、もう1回起動されます。
レコードを削除する前に、Salesforce 内のレコードをクエリするバリデーションを実行する必要があります。レコードがバリデーションに合格した場合のみ、削除を許可する必要があります。この要件に最も適した自動化機能はどれでしょうか。
答えを1つ選んでください。
A. 割り当てルール
B. Apexトリガー
C. フロービルダー
D. バリデーションルール
C. フロービルダー
レコードが削除されたときに起動するレコードトリガーフローを設定できます。Get Records’、’Decision’、’Assignments’ などの要素を使用して、必要なカスタム検証ロジックを構築できます。レコードが検証に失敗した場合、カスタムエラー要素を呼び出してユーザーインターフェイスにエラーメッセージを表示し、削除操作を中止することができます。
割り当てルールは、指定された条件に基づいてリードまたはケースをユーザに自動的に割り当てるために使用されます。バリデーションルールはレコードの削除には使用できません。Apex トリガーも要件を満たすことができますが、レコード トリガー フローを使用できるため、必要ありません。
未処理のApex例外が発生すると、Apex例外メールリストで指定された開発者とユーザーに未処理の例外メールが送信されます。未処理のApex例外を追跡し、例外に関連する情報を表示するための別の推奨オプションは何ですか?
答えを1つ選んでください。
A. 標準のExceptionObjectのリストビューを作成して、未処理の例外を簡単に追跡して表示します。
B. プラットフォーム・イベント・トリガー・フローを使用して、Apexの予期しない例外イベント・タイプをサブスクライブします。
C. UnhandledException例外タイプを実装して、処理できない例外を捕捉する。
D. イベント・ログ・ファイル(ELF)ブラウザを使用して、org内のApex予期しない例外イベントを表示します。
D. イベント・ログ・ファイル(ELF)ブラウザを使用して、org内のApex予期しない例外イベントを表示します。
これは、セキュリティ、コンプライアンス、およびパフォーマンス分析に役立てるために、組織内のユーザのアクティビティやイベントを追跡してログに記録するための製品です。Event Monitoringは、イベントログファイル(ELF)ブラウザを使用してセットアップで表示できるイベントログファイルに、処理されなかった例外(Apex Unexpected Exceptionイベントタイプ)の詳細をキャプチャします。
UnhandledException例外タイプまたはExceptionObject標準オブジェクトが存在しない。未処理のApex例外をサブスクライブするようにプラットフォーム・イベント・トリガー・フローを構成できません。
コズミックシエラのITディレクターは、Salesforceのすべてのカスタムアプリケーションの開発にローコード開発アプローチを利用したいと考えている。主な目的は、開発に必要な全体的なコストと人的リソースの利用を削減することです。この目的を達成するために、Salesforce プラットフォームはどのように役立つでしょうか。
答えを 3 つ選んでください。
A. Lightning プラットフォームの拡張機能であるさまざまなローコード開発機能を簡単に設定できる。
B. AppExchange を使用して、複雑なコードを必要とする開発プロジェクトの支援を探すことができる。
C. Flow Builderなどの自動化ツールを使用すると、コードを使用せずに複雑な要件を満たすことができる。
D. 変更セットは、ある環境から別の環境へメタデータを迅速に展開するために使用できます。
E. 人的資源管理ツールを利用することで、技術者でないユーザーに簡単な開発タスクを割り当てることができる。
A. Lightning プラットフォームの拡張機能であるさまざまなローコード開発機能を簡単に設定できる。
C. Flow Builderなどの自動化ツールを使用すると、コードを使用せずに複雑な要件を満たすことができる。
D. 変更セットは、ある環境から別の環境へメタデータを迅速に展開するために使用できます。
Salesforceは、ローコード開発に使える様々な機能や自動化ツールを提供している。これらのツールは、IT部門だけでなく、企業の既存の人材によって構成することができる。フロービルダーなどのツールは、複雑な要件に対応するために使用できる。変更セットは、ある環境から別の環境へメタデータを移行するために使用できる。しかし、非技術系ユーザーにタスクを割り当てるために使用できる人的資源管理ツールはない。AppExchange は支援を探すために使用できるが、Salesforce の主な目的は全体的なコストと開発に使用される人的資源を削減することであるため、ローコード開発に活用できる方法の 1 つではない。
ある製造業のSalesforceユーザは、数百のレコードを処理し、外部システムから取り込んだデータでレコードを更新するキューイング可能なジョブを生成します。処理中のリソース競合や競合状態を避けるため、ジョブの重複は避ける必要があります。myRecord」が処理するレコードを表す場合、処理キュー内の各ジョブが一意であることを保証するために使用される署名を生成するための有効なコードは、次のうちどれですか?
答えを2つ選びなさい。
A.
UniqueSignature.Builder()
.addInteger(System.hashCode(myRecord))
.build();
B.
QueueableDuplicateSignature.Builder().addInteger(System.hashCode(myRecord)).build();
C.
QueueableDuplicateSignature.Builder().addString(myRecord.Id).build();
D.
UniqueSignature.Builder().addId(myRecord.Id).build();
B.
QueueableDuplicateSignature.Builder().addInteger(System.hashCode(myRecord)).build();
C.
QueueableDuplicateSignature.Builder().addString(myRecord.Id).build();
各キューイング可能なApexジョブが処理キュー内で一意であることを保証するために、QueueableDuplicateSignatureクラスを使用して署名を生成し、AsyncOptionsのDuplicateSignatureプロパティに格納することができます。QueueableDuplicateSignature クラスは、シグネチャを作成するための addId(), addInteger(), addString() メソッドを提供します。これらのメソッドは、シグネチャを作成するために ‘組み合わせる’ こともできます。例えば
AsyncOptions options = new AsyncOptions(); options.DuplicateSignature = QueueableDuplicateSignature.Builder() .addId(UserInfo.getUserId()) .addString(record.Id) .build(); System.enqueueJob(new ExampleQueueableJob(), options);
UniqueSignature’クラスが存在しません。
外部サービスに関して正しいことは?
答えを2つ選んでください。
A. 外部サービスを登録する場合は、常にリモートサイト設定を使用する必要があります。
B. 外部サービスとのフローは、Apexユニットテストを構築して実行することでテストできます。
C. 登録時にスキーマに使用できる最大文字数は100,000文字です。
D. スキーマの個々の操作を外部サービスに登録できる。
B. 外部サービスとのフローは、Apexユニットテストを構築して実行することでテストできます。
D. スキーマの個々の操作を外部サービスに登録できる。
外部サービスを登録する際、個々のオペレーションを選択することができる。また、外部サービスを使用したフローは、HTTPコールアウトモックを使用してApexユニットテストを行うことができます。
登録時にスキーマを指定するには、「相対URL」、「絶対URL」、「完全JSON」(コピーペースト)、「ローカルからアップロード」(JSONファイル)の4つのオプションがあります。リモートサイト設定は、スキーマ指定のオプションとして「絶対 URL」を選択した場合のみ使用する必要がある。ただし、外部サービスを登録する場合は、Named Credential が常に必要である。
外部サービス登録で使用するスキーマは、最大 4,000,000 文字(4.0 MB)である。
ある開発者が、いくつかのクラス・メソッドを SOAP Web サービスとして公開したいと考えています。メソッドを SOAP Web サービスとして公開する場合、次のどの操作を行う必要がありますか?
答えを3つ選んでください。
A. クラスは webservice キーワードで定義する必要があります。
B. 公開されるメソッドと変数を含むクラスは、public 宣言されなければなりません。
C. 公開メソッドと変数は、webservice キーワードを使用する必要があります。
D. 静的メソッドにのみ、webservice キーワードを付けることができます。
E. コンシューマがウェブサービスを呼び出す方法を知っているように、WSDL ファイルを生成する必要があります。
C. 公開メソッドと変数は、webservice キーワードを使用する必要があります。
D. 静的メソッドにのみ、webservice キーワードを付けることができます。
E. コンシューマがウェブサービスを呼び出す方法を知っているように、WSDL ファイルを生成する必要があります。
SOAP Webサービスを作成する場合、Apexクラスをグローバルとして定義する必要があります。次に、webserviceキーワードとstaticキーワードを使用して、公開する必要があるSOAPメソッドを宣言する必要があります。コンシューマ・システム(SOAPクライアント)が適切なフォーマットを使用してWebサービスにコールアウトできるように、WSDLファイルを生成する必要があります。
WebService キーワードは、クラスの Apex メソッドと変数に定義できますが、クラス自体には定義できません。
Cosmic Sierraは、Salesforceを使用して大量の商談レコードを保存しており、そのうちの50,000件近くが’Closed Won’または’Closed Lost’商談です。同社の開発者は、SOQLクエリを使用してすべてのクローズした商談を取得するApexトリガを定義しました。このトリガには、クエリによって返された商談を処理する’for’ループも含まれています。しかし、トリガが実行されると、ヒープサイズエラーが発生します。この例外を回避するには、何を推奨しますか?
答えを1つ選んでください。
A. すべてのクローズされた商談を返すメソッドを含むヘルパークラスを使用します。
B. 動的 SOQL クエリを使用して、すべてのクローズされた商談を取得します。
C. forループ内で SOQL クエリを使用します。
D. forループの定義でSOQLクエリを使用します。
D. for’ループの定義でSOQLクエリを使用します。
SOQLクエリから取得できるレコードの最大数は50,000です。しかし、クエリから返されるデータのサイズによっては、ヒープサイズの制限を超える場合があります。大きなデータセットにクエリを実行する場合は、SOQLのforループを使用して、queryとqueryMoreの内部呼び出しを使用して、結果のレコードの複数のバッチを処理する必要があります。SOQLクエリをforループ定義で定義すると、クエリ結果は200レコードのバッチにチャンクされ、forループのロジックはそれらの個々のバッチを処理するように設計できます。
SOQLクエリは、Apexトリガ内のforループの中にあってはなりません。それは、Apexトランザクション内で発行できるSOQLクエリの数に関連するガバナー制限を超えることになるからです。動的SOQLは、Apexコードで実行時に作成されるSOQL文字列です。このシナリオで LimitException を回避するために使用することはできません。ヘルパー・クラスを使用することも、そのメソッドの呼び出しが同じApexトランザクションの一部となるため、役に立ちません。
HTTPのGETリクエストをRESTベースのWebサービスにコールアウトするApexクラスが開発者によって作成されました。外部サイトがアクセスに認証を必要としない場合、コールアウト要求の設定に関して、次のうちどれがNULLになりませんか?
答えを2つ選びなさい。
A. エンドポイント
B. ボディ
C. ヘッダー
D. メソッド
A. エンドポイント
D. メソッド
HTTPリクエストを作成して送信する場合、エンドポイントとメソッドをNULLにすることはできません。メソッドは setMethod(method) で指定でき、エンドポイントは setEndpoint(url) で指定できます。
コズミックサービスソリューションズのサポートエージェントは、Salesforce上で定期的にケースを作成・更新しています。サポートマネージャのために、サポートエージェントに割り当てられたすべてのケースの概要を提供するLightning Webコンポーネントが作成されました。サポートマネージャは、このコンポーネントを表示している間、サポートエージェントによってケースが作成または更新されると、すぐに通知を受けたいと考えています。この要件のために、Salesforce でプラットフォームイベントが定義されています。次のソリューションのうち、要件を満たすために使用すべき正しいパブリッシュ/サブスクライブロジックはどれですか?
答えを1つ選んでください。
A. 新しい Lightning Web コンポーネントを使用してイベントメッセージを自動的に発行し、既存の Lightning Web コンポーネントを使用してメッセージを購読します。
B. Lightning Web コンポーネントを使用してイベントメッセージを自動的に発行し、Apex トリガーを使用してメッセージをサブスクライブします。
C. Apexトリガーを使用してイベントメッセージを自動的に発行し、Lightning Webコンポーネントを使用してメッセージをサブスクライブする。
D. フローを使用してイベントメッセージを自動的に発行し、Lightning Web コンポーネントを使用してメッセージをサブスクライブする。
D. フローを使用してイベントメッセージを自動的に発行し、Lightning Web コンポーネントを使用してメッセージをサブスクライブする。
アフターセーブレコードトリガーフローを使用して、新しいケースが作成されたとき、または既存のケースが更新されたときに、プラットフォームイベントメッセージを自動的に発行することができます。サポートマネージャによって使用されるLightningウェブコンポーネントは、プラットフォームイベントチャネルをサブスクライブし、イベントメッセージを受信することができます。empApiメソッドを含むlightning/empApiモジュールをコンポーネントのJavaScriptコントローラ経由でインポートすることで、Lightningウェブコンポーネントがプラットフォームイベントをサブスクライブできるようになります。プラットフォームイベントメッセージを受信すると、コールバック関数を使用して、コンポーネントを表示しているサポートマネージャにトーストメッセージを表示することができます。
メッセージのソースは、サポートエージェントによる新しいケースレコードの作成と既存のケースレコードの変更であるため、Lightningウェブコンポーネントをイベントメッセージの発行に使用するべきではありません。Lightning ウェブコンポーネントには、サポートマネージャのみがアクセスできます。Apex トリガーのようなプログラムによるソリューションは必要ありません。
外部IDとSOAP APIを使用して、1回の呼び出しで親レコードと子レコードの両方を作成する適切な方法は何ですか?
答えを1つ選んでください。
A. 子 sObject、親参照 sObject、親オブジェクトを作成し、親と親参照に外部 ID を指定し、upsert() メソッドを呼び出します。
B. 子 sObject、親オブジェクトを作成し、親の外部 ID を指定して、upsert() メソッドを呼び出します。
C. 子 sObject、親オブジェクトを作成し、親の外部 ID を指定して create() メソッドを呼び出します。
D. 子 sObject、親参照 sObject、親オブジェクトを作成し、親と親参照に外部 ID を指定し、 create() メソッドを呼び出します。
D. 子 sObject、親参照 sObject、親オブジェクトを作成し、親と親参照に外部 ID を指定し、 create() メソッドを呼び出します。
SOAP API を使用して、1 回の呼び出しで親レコードと子レコードの両方を作成するには、外部 ID フィールド、 create() メソッド、および親参照レコードを使用できます。upsert() メソッドを使用して、1 回の呼び出しで親レコードと子レコードの両方を作成することはできません。
開発者は、特定のオブジェクト上のすべての標準フィールドとカスタムフィールドに関するメタデータ情報を取得する必要があります。この要件に使用できるApexデータ型は次のうちどれですか。
答えを2つ選びなさい。
A. Map<String, Schema.SObjectField>
B. Schema.DescribeTabResult
C. Schema.DescribeSObjectResult
D. Map<String, Schema.SObjectResult>
A. Map<String, Schema.SObjectField>
C. Schema.DescribeSObjectResult
Schema.DescribeSObjectResult を使用して、オブジェクトの describe 結果を取得することができます。オブジェクトの全フィールドのマップは getMap メソッドを用いて生成し、Map<String, Schema.SObjectField> 型の変数に代入することができます。Schema.DescribeFieldResult を FOR ループ内で使用することで、各フィールドの describe 結果を得ることができます。
Map<String, Schema.SObjectResult> は有効な Schema クラスではありません。Schema.DescribeTabResult は、標準アプリまたはカスタムアプリのタブのメタデータ情報として使用されます。
ある開発者は SOAP ウェブ・サービスを実装しており、そのサービスのクラス・ファイルには webservice キーワードが含まれていなければならないことを知っています。このキーワードはどこで使用できますか?
答えを 3 つ選んでください。
A. クラス宣言の中
B. トップレベルの外部クラス変数
C. トップレベルの内側クラスの静的メソッド
D. トップレベルの外側クラスの静的メソッド
E. 内部クラスのメンバ変数
B. トップレベルの外部クラス変数
D. トップレベルの外側クラスの静的メソッド
E. 内部クラスのメンバ変数
WebService 修飾子を使用すると、トップレベル、外部クラスのメソッドと変数、内部 クラスのメンバ変数を定義できます。クラス自体やインターフェイス、インターフェイスのメソッドや変数には使用できません。