Process Automation, Logic, and Integration Flashcards

1
Q

あるCosmic Geminaの開発者は最近、会社で使用しているTMS(輸送管理システム)にコールアウトするApexクラスを作成しました。コールアウトは、特定の貨物に関する情報を取得し、応答に基づいてカスタムオブジェクトのレコードを更新する必要があります。RESTまたはSOAPコールアウトを実行する前に、TMSのエンドポイントを構成するには、次のうちどれを利用できますか?
答えを2つ選んでください。

A. 外部データソース
B. 指定ログイン情報
C. リモートサイト設定
D. 外部サービス

A

B. 指定ログイン情報
C. リモートサイト設定

外部システムへのコールアウトを成功させるには、まず、そのシステム用に指定ログイン情報 (レガシー) またはリモートサイト設定のいずれかを構成する必要がある。指定ログイン情報は、コールアウトエンドポイントの URL と認証パラメータの両方を指定する。指定ログイン情報が設定されている場合、リモートサイト設定は不要である。認証が OAuth を使用する場合、外部クレデンシャルを介して動作する新しい指定ログイン情報スキーマを定義できる。外部サービスは外部システムへの接続(Apexコーディングなしで外部システムのAPIを実行)に使用されるが、REST または SOAP コールアウトを実行する必要はない。外部データソースは、Salesforce Connect を設定するために作成されます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cosmic FoodsのIT部門は、複雑な要件を多く含むSalesforceの開発プロジェクトを任されました。しかし、開発チームは小規模で、プロジェクト完了まで3ヶ月しか与えられていないため、ITマネージャーは、ネイティブプラットフォームの機能とFlow Builderなどの自動化ツールを使用したローコード開発アプローチを利用したいと考えています。このアプローチを採用することで実現できるメリットは、次のうちどれでしょうか?
答えを2つ選びなさい。

A. 開発ライフサイクル全体の時間を短縮できる。
B. 既存の組織の人材を、より簡単な開発タスクに活用できる。
C. データへのアクセスを管理するために、コードを通じてセキュリティ設定を行うことができる。
D. 外部パートナーとのコラボレーションによって要件を満たすことができる。

A

A. 開発ライフサイクル全体の時間を短縮できる。
B. 既存の組織の人材を、より簡単な開発タスクに活用できる。

ローコード開発アプローチを用いると、開発ライフサイクル全体の時間が短縮される。より簡単な開発タスクは、非技術系ユーザーで構成される既存の組織人材に割り当てることができる。複雑で革新的なタスクはIT部門が処理できる。ビジネス・ユーザーとのコラボレーションにより、要件を直感的に満たすことができ、ワークフローがより効果的に強化される。プロファイル設定、権限セット、組織全体のデフォルト、共有ルールなどのネイティブ機能により、コードを使用せずにセキュリティ設定を簡単に構成できる。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

オブジェクトには、UpdateCount というフィールドの値を常に 1 だけ増加させる ‘before update’ トリガが定義されています。オブジェクトには、フィールドの更新を引き起こすワークフロールールもあり、’Re-evaluate Workflow Rules After Field Change’ が有効になっています。UpdateCount の元の値が 53 で、レコードの更新によってワークフロー・ルールが発火した場合、レコードが保存された後の UpdateCount の値はどうなりますか?
答えを1つ選んでください。

A. 56
B. 55
C. 54
D. 53

A

B. 55

この場合、「before update」トリガは、ワークフローフィールド更新の前に実行されます。

ワークフローフィールドの更新によってレコードが更新された後、トリガはもう1回実行されます。(これは仕様)

トリガは、2回実行されるので、UpdateCount フィールドの新しい値は、55になります。

Apexトリガの追加実行は、全てのタイプのDML操作に適用されることに注意することが重要です。例えば、レコードを挿入すると、’before insert’トリガとレコードを更新するワークフロー ルールが起動される場合、’before insert’トリガは、ワークフロー ルールがレコードを更新する実行順に、もう1回起動されます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

レコードを削除する前に、Salesforce 内のレコードをクエリするバリデーションを実行する必要があります。レコードがバリデーションに合格した場合のみ、削除を許可する必要があります。この要件に最も適した自動化機能はどれでしょうか。
答えを1つ選んでください。

A. 割り当てルール
B. Apexトリガー
C. フロービルダー
D. バリデーションルール

A

C. フロービルダー

レコードが削除されたときに起動するレコードトリガーフローを設定できます。Get Records’、’Decision’、’Assignments’ などの要素を使用して、必要なカスタム検証ロジックを構築できます。レコードが検証に失敗した場合、カスタムエラー要素を呼び出してユーザーインターフェイスにエラーメッセージを表示し、削除操作を中止することができます。

割り当てルールは、指定された条件に基づいてリードまたはケースをユーザに自動的に割り当てるために使用されます。バリデーションルールはレコードの削除には使用できません。Apex トリガーも要件を満たすことができますが、レコード トリガー フローを使用できるため、必要ありません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

未処理のApex例外が発生すると、Apex例外メールリストで指定された開発者とユーザーに未処理の例外メールが送信されます。未処理のApex例外を追跡し、例外に関連する情報を表示するための別の推奨オプションは何ですか?
答えを1つ選んでください。

A. 標準のExceptionObjectのリストビューを作成して、未処理の例外を簡単に追跡して表示します。
B. プラットフォーム・イベント・トリガー・フローを使用して、Apexの予期しない例外イベント・タイプをサブスクライブします。
C. UnhandledException例外タイプを実装して、処理できない例外を捕捉する。
D. イベント・ログ・ファイル(ELF)ブラウザを使用して、org内のApex予期しない例外イベントを表示します。

A

D. イベント・ログ・ファイル(ELF)ブラウザを使用して、org内のApex予期しない例外イベントを表示します。

これは、セキュリティ、コンプライアンス、およびパフォーマンス分析に役立てるために、組織内のユーザのアクティビティやイベントを追跡してログに記録するための製品です。Event Monitoringは、イベントログファイル(ELF)ブラウザを使用してセットアップで表示できるイベントログファイルに、処理されなかった例外(Apex Unexpected Exceptionイベントタイプ)の詳細をキャプチャします。

UnhandledException例外タイプまたはExceptionObject標準オブジェクトが存在しない。未処理のApex例外をサブスクライブするようにプラットフォーム・イベント・トリガー・フローを構成できません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

コズミックシエラのITディレクターは、Salesforceのすべてのカスタムアプリケーションの開発にローコード開発アプローチを利用したいと考えている。主な目的は、開発に必要な全体的なコストと人的リソースの利用を削減することです。この目的を達成するために、Salesforce プラットフォームはどのように役立つでしょうか。
答えを 3 つ選んでください。

A. Lightning プラットフォームの拡張機能であるさまざまなローコード開発機能を簡単に設定できる。
B. AppExchange を使用して、複雑なコードを必要とする開発プロジェクトの支援を探すことができる。
C. Flow Builderなどの自動化ツールを使用すると、コードを使用せずに複雑な要件を満たすことができる。
D. 変更セットは、ある環境から別の環境へメタデータを迅速に展開するために使用できます。
E. 人的資源管理ツールを利用することで、技術者でないユーザーに簡単な開発タスクを割り当てることができる。

A

A. Lightning プラットフォームの拡張機能であるさまざまなローコード開発機能を簡単に設定できる。
C. Flow Builderなどの自動化ツールを使用すると、コードを使用せずに複雑な要件を満たすことができる。
D. 変更セットは、ある環境から別の環境へメタデータを迅速に展開するために使用できます。

Salesforceは、ローコード開発に使える様々な機能や自動化ツールを提供している。これらのツールは、IT部門だけでなく、企業の既存の人材によって構成することができる。フロービルダーなどのツールは、複雑な要件に対応するために使用できる。変更セットは、ある環境から別の環境へメタデータを移行するために使用できる。しかし、非技術系ユーザーにタスクを割り当てるために使用できる人的資源管理ツールはない。AppExchange は支援を探すために使用できるが、Salesforce の主な目的は全体的なコストと開発に使用される人的資源を削減することであるため、ローコード開発に活用できる方法の 1 つではない。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

ある製造業の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();

A

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’クラスが存在しません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

外部サービスに関して正しいことは?
答えを2つ選んでください。

A. 外部サービスを登録する場合は、常にリモートサイト設定を使用する必要があります。
B. 外部サービスとのフローは、Apexユニットテストを構築して実行することでテストできます。
C. 登録時にスキーマに使用できる最大文字数は100,000文字です。
D. スキーマの個々の操作を外部サービスに登録できる。

A

B. 外部サービスとのフローは、Apexユニットテストを構築して実行することでテストできます。
D. スキーマの個々の操作を外部サービスに登録できる。

外部サービスを登録する際、個々のオペレーションを選択することができる。また、外部サービスを使用したフローは、HTTPコールアウトモックを使用してApexユニットテストを行うことができます。

登録時にスキーマを指定するには、「相対URL」、「絶対URL」、「完全JSON」(コピーペースト)、「ローカルからアップロード」(JSONファイル)の4つのオプションがあります。リモートサイト設定は、スキーマ指定のオプションとして「絶対 URL」を選択した場合のみ使用する必要がある。ただし、外部サービスを登録する場合は、Named Credential が常に必要である。

外部サービス登録で使用するスキーマは、最大 4,000,000 文字(4.0 MB)である。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

ある開発者が、いくつかのクラス・メソッドを SOAP Web サービスとして公開したいと考えています。メソッドを SOAP Web サービスとして公開する場合、次のどの操作を行う必要がありますか?
答えを3つ選んでください。

A. クラスは webservice キーワードで定義する必要があります。
B. 公開されるメソッドと変数を含むクラスは、public 宣言されなければなりません。
C. 公開メソッドと変数は、webservice キーワードを使用する必要があります。
D. 静的メソッドにのみ、webservice キーワードを付けることができます。
E. コンシューマがウェブサービスを呼び出す方法を知っているように、WSDL ファイルを生成する必要があります。

A

C. 公開メソッドと変数は、webservice キーワードを使用する必要があります。
D. 静的メソッドにのみ、webservice キーワードを付けることができます。
E. コンシューマがウェブサービスを呼び出す方法を知っているように、WSDL ファイルを生成する必要があります。

SOAP Webサービスを作成する場合、Apexクラスをグローバルとして定義する必要があります。次に、webserviceキーワードとstaticキーワードを使用して、公開する必要があるSOAPメソッドを宣言する必要があります。コンシューマ・システム(SOAPクライアント)が適切なフォーマットを使用してWebサービスにコールアウトできるように、WSDLファイルを生成する必要があります。

WebService キーワードは、クラスの Apex メソッドと変数に定義できますが、クラス自体には定義できません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cosmic Sierraは、Salesforceを使用して大量の商談レコードを保存しており、そのうちの50,000件近くが’Closed Won’または’Closed Lost’商談です。同社の開発者は、SOQLクエリを使用してすべてのクローズした商談を取得するApexトリガを定義しました。このトリガには、クエリによって返された商談を処理する’for’ループも含まれています。しかし、トリガが実行されると、ヒープサイズエラーが発生します。この例外を回避するには、何を推奨しますか?
答えを1つ選んでください。

A. すべてのクローズされた商談を返すメソッドを含むヘルパークラスを使用します。
B. 動的 SOQL クエリを使用して、すべてのクローズされた商談を取得します。
C. forループ内で SOQL クエリを使用します。
D. forループの定義でSOQLクエリを使用します。

A

D. for’ループの定義でSOQLクエリを使用します。

SOQLクエリから取得できるレコードの最大数は50,000です。しかし、クエリから返されるデータのサイズによっては、ヒープサイズの制限を超える場合があります。大きなデータセットにクエリを実行する場合は、SOQLのforループを使用して、queryとqueryMoreの内部呼び出しを使用して、結果のレコードの複数のバッチを処理する必要があります。SOQLクエリをforループ定義で定義すると、クエリ結果は200レコードのバッチにチャンクされ、forループのロジックはそれらの個々のバッチを処理するように設計できます。

SOQLクエリは、Apexトリガ内のforループの中にあってはなりません。それは、Apexトランザクション内で発行できるSOQLクエリの数に関連するガバナー制限を超えることになるからです。動的SOQLは、Apexコードで実行時に作成されるSOQL文字列です。このシナリオで LimitException を回避するために使用することはできません。ヘルパー・クラスを使用することも、そのメソッドの呼び出しが同じApexトランザクションの一部となるため、役に立ちません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

HTTPのGETリクエストをRESTベースのWebサービスにコールアウトするApexクラスが開発者によって作成されました。外部サイトがアクセスに認証を必要としない場合、コールアウト要求の設定に関して、次のうちどれがNULLになりませんか?
答えを2つ選びなさい。

A. エンドポイント
B. ボディ
C. ヘッダー
D. メソッド

A

A. エンドポイント
D. メソッド

HTTPリクエストを作成して送信する場合、エンドポイントとメソッドをNULLにすることはできません。メソッドは setMethod(method) で指定でき、エンドポイントは setEndpoint(url) で指定できます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

コズミックサービスソリューションズのサポートエージェントは、Salesforce上で定期的にケースを作成・更新しています。サポートマネージャのために、サポートエージェントに割り当てられたすべてのケースの概要を提供するLightning Webコンポーネントが作成されました。サポートマネージャは、このコンポーネントを表示している間、サポートエージェントによってケースが作成または更新されると、すぐに通知を受けたいと考えています。この要件のために、Salesforce でプラットフォームイベントが定義されています。次のソリューションのうち、要件を満たすために使用すべき正しいパブリッシュ/サブスクライブロジックはどれですか?
答えを1つ選んでください。

A. 新しい Lightning Web コンポーネントを使用してイベントメッセージを自動的に発行し、既存の Lightning Web コンポーネントを使用してメッセージを購読します。
B. Lightning Web コンポーネントを使用してイベントメッセージを自動的に発行し、Apex トリガーを使用してメッセージをサブスクライブします。
C. Apexトリガーを使用してイベントメッセージを自動的に発行し、Lightning Webコンポーネントを使用してメッセージをサブスクライブする。
D. フローを使用してイベントメッセージを自動的に発行し、Lightning Web コンポーネントを使用してメッセージをサブスクライブする。

A

D. フローを使用してイベントメッセージを自動的に発行し、Lightning Web コンポーネントを使用してメッセージをサブスクライブする。

アフターセーブレコードトリガーフローを使用して、新しいケースが作成されたとき、または既存のケースが更新されたときに、プラットフォームイベントメッセージを自動的に発行することができます。サポートマネージャによって使用されるLightningウェブコンポーネントは、プラットフォームイベントチャネルをサブスクライブし、イベントメッセージを受信することができます。empApiメソッドを含むlightning/empApiモジュールをコンポーネントのJavaScriptコントローラ経由でインポートすることで、Lightningウェブコンポーネントがプラットフォームイベントをサブスクライブできるようになります。プラットフォームイベントメッセージを受信すると、コールバック関数を使用して、コンポーネントを表示しているサポートマネージャにトーストメッセージを表示することができます。

メッセージのソースは、サポートエージェントによる新しいケースレコードの作成と既存のケースレコードの変更であるため、Lightningウェブコンポーネントをイベントメッセージの発行に使用するべきではありません。Lightning ウェブコンポーネントには、サポートマネージャのみがアクセスできます。Apex トリガーのようなプログラムによるソリューションは必要ありません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

外部IDとSOAP APIを使用して、1回の呼び出しで親レコードと子レコードの両方を作成する適切な方法は何ですか?
答えを1つ選んでください。

A. 子 sObject、親参照 sObject、親オブジェクトを作成し、親と親参照に外部 ID を指定し、upsert() メソッドを呼び出します。
B. 子 sObject、親オブジェクトを作成し、親の外部 ID を指定して、upsert() メソッドを呼び出します。
C. 子 sObject、親オブジェクトを作成し、親の外部 ID を指定して create() メソッドを呼び出します。
D. 子 sObject、親参照 sObject、親オブジェクトを作成し、親と親参照に外部 ID を指定し、 create() メソッドを呼び出します。

A

D. 子 sObject、親参照 sObject、親オブジェクトを作成し、親と親参照に外部 ID を指定し、 create() メソッドを呼び出します。

SOAP API を使用して、1 回の呼び出しで親レコードと子レコードの両方を作成するには、外部 ID フィールド、 create() メソッド、および親参照レコードを使用できます。upsert() メソッドを使用して、1 回の呼び出しで親レコードと子レコードの両方を作成することはできません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

開発者は、特定のオブジェクト上のすべての標準フィールドとカスタムフィールドに関するメタデータ情報を取得する必要があります。この要件に使用できるApexデータ型は次のうちどれですか。

答えを2つ選びなさい。

A. Map<String, Schema.SObjectField>
B. Schema.DescribeTabResult
C. Schema.DescribeSObjectResult
D. Map<String, Schema.SObjectResult>

A

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 は、標準アプリまたはカスタムアプリのタブのメタデータ情報として使用されます。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

ある開発者は SOAP ウェブ・サービスを実装しており、そのサービスのクラス・ファイルには webservice キーワードが含まれていなければならないことを知っています。このキーワードはどこで使用できますか?
答えを 3 つ選んでください。

A. クラス宣言の中
B. トップレベルの外部クラス変数
C. トップレベルの内側クラスの静的メソッド
D. トップレベルの外側クラスの静的メソッド
E. 内部クラスのメンバ変数

A

B. トップレベルの外部クラス変数
D. トップレベルの外側クラスの静的メソッド
E. 内部クラスのメンバ変数

WebService 修飾子を使用すると、トップレベル、外部クラスのメソッドと変数、内部 クラスのメンバ変数を定義できます。クラス自体やインターフェイス、インターフェイスのメソッドや変数には使用できません。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

コズミックアクアは、Salesforceを含む複数の基幹システムを利用している企業です。Salesforceのユーザが他システムの外部データにアクセスできるようにしたい。ある開発者が外部IDの利用を提案してきました。このユースケースで外部IDを使用して実装できるのは、次のうちどれでしょうか?
答えを1つ選んでください。

A. Salesforce Connect
B. ビッグオブジェクト
C. Canvasアプリを使用したマッシュアップ
D. コネクテッドアプリ

A

C. Canvasアプリを使用したマッシュアップ

外部 ID は、キャンバスアプリを使用してマッシュアップ(および外部システムのレコードへのリンクを定義するディープリンク)を実装するために使用できます。キャンバスアプリは、外部データを Salesforce で可視化するために使用できます。ビッグオブジェクトは、Salesforce に大量のデータを格納するために使用され、外部 ID を使用して実装されることはありません。Salesforce Connect は、Salesforce で外部レコードを可視化するために使用されますが、External ID フィールドを使用して実装されていません。接続アプリを使用すると、指定したユーザに代わって外部システムが Salesforce API を利用できるようになります。

17
Q

VisualforceでContinuationクラスを実装する際の注意点は何ですか?
答えを3つ選んでください。

A. 非同期コールアウトを使用するには、Continuation クラスのインスタンスを作成し、そのコールバックメソッドを指定します。
B. 継続の実行中は、継続固有の制限は適用されません。
C. コールアウトリクエストを連鎖させることが可能であり、前のリクエストが完了した後にのみ次のリクエストが処理される。
D. 継続を実装するメソッドでは、常に @AuraEnabled アノテーションが必要です。
E. addHttpRequest() メソッドを使用することで、1 つの継続インスタンスに最大 3 つのコール アウト要求を持つことができます。

A

A. 非同期コールアウトを使用するには、Continuation クラスのインスタンスを作成し、そのコールバックメソッドを指定します。
C. コールアウトリクエストを連鎖させることが可能であり、前のリクエストが完了した後にのみ次のリクエストが処理される。
E. addHttpRequest() メソッドを使用することで、1 つの継続インスタンスに最大 3 つのコール アウト要求を持つことができます。

AuraEnabled アノテーションは、継続を実装する Apex メソッドを Lightning コンポーネントから呼び出す必要がある場合にのみ必要です。そのため、Visualforce の実装では必要ありません。継続固有の制限は、継続が実行されているときに適用され、実行フローが完了するとリセットされます。

継続インスタンスの addHttpRequest() メソッドを使用すると、最大 3 つのコールアウトを同時に実行できます。コールアウトからのすべての応答を受信した後にのみ、処理が再開される。また、コールアウトを連鎖させることも可能で、前のリクエストが完了したか、条件を満たした場合にのみ、次のリクエストが処理されます。Continuationクラスを使用する場合、コールバックメソッドを実装する必要があります。

18
Q

ある Salesforce 開発者が、SOQL クエリを使用して 1 つの Account レコードを取得し、その結果を ‘myAccount’ という変数に代入しています。ヌル参照を避けるため、SOQL クエリが結果を返さなかった場合にデフォルトのアカウントを割り当てたいと考えています。defaultAccount’がデフォルトのアカウントを表す変数である場合、次のオプションのどれを使用すれば要件を満たすことができますか?

A.
Account myAccount = [SELECT Name FROM Account LIMIT 1] ?? defaultAccount;

B.
Account myAccount = [SELECT Name FROM Account LIMIT 1] !? defaultAccount;
C.
Account myAccount = [SELECT Name FROM Account LIMIT 1].isEmpty() ? [SELECT Name FROM Account LIMIT 1] : defaultAccount;

D.
Account myAccount = [SELECT Name FROM Account LIMIT 1] ?? defaultAccount : [SELECT Name FROM Account LIMIT 1];

A

A.
Account myAccount = [SELECT Name FROM Account LIMIT 1] ?? defaultAccount;

次の文では、ヌル合体演算子(? <右引数>という構文で動作します。この演算子を使用すると、左側の引数がNULLを返すたびに右側の引数が返されます。つまり、この例のSOQLクエリが結果を返さなかった場合、'defaultAccount'は'myAccount'に代入されます。</右引数>

Account myAccount = [SELECT Name FROM Account LIMIT 1] ?? defaultAccount;
以下の文は三項演算子を使用している。ただし、この例では、SOQLクエリの結果が空でない場合、’defaultAccount’が’myAccount’に割り当てられます。

Account myAccount = [SELECT Name FROM Account LIMIT 1].isEmpty() ? [SELECT Name FROM Account LIMIT 1] : defaultAccount;
残りのオプションは、無効な演算子または構文を使用したApexコードを表しています。

19
Q

コスミックエレクトロニクスは、SalesforceとERPシステムを含む複数の企業システムを使用している。ERP システムには、アカウント、販売注文、請求書、報酬、業績評価など、顧客と従業員のデータが含まれています。データテーブルの一部は、ルックアップリレーションシップによって関連付けられています。特定の Salesforce ユーザーは、別途ログインすることなく、ERP システムに保存されているデータを表示および編集する必要があります。同社の CTO は、このユースケースのために Salesforce Connect をセットアップしたいと考えていますが、データテーブルの数が多いため、接続タイムアウトを懸念しています。さらに、Salesforce には、ERP システムとの同期中に名前の衝突を引き起こす可能性のあるオブジェクトがいくつか含まれています。この要件を満たすために Salesforce Connect を構成する際に考慮すべきことは、次のうちどれでしょうか。
答えを 3 つ選んでください。

A. 外部オブジェクト名が既存の名前と競合する場合は、インライン編集を使用して名前を編集できます。
B. 同期操作が接続タイムアウトを引き起こす可能性がある場合、バックグラウンドジョブとして非同期に実行できます。
C. 外部参照リレーションシップは、参照リレーションシップを介して関連付けられた2つの外部オブジェクトに対して自動的に作成されます。
D. 外部データ・ソースの同期操作は、バッチで実行し、一時停止し、後で再開することができます。
E. 外部データ・ソースの同期は、外部オブジェクトが100を超えると失敗します。

A

A. 外部オブジェクト名が既存の名前と競合する場合は、インライン編集を使用して名前を編集できます。
B. 同期操作が接続タイムアウトを引き起こす可能性がある場合、バックグラウンドジョブとして非同期に実行できます。
C. 外部参照リレーションシップは、参照リレーションシップを介して関連付けられた2つの外部オブジェクトに対して自動的に作成されます。

Salesforce Connect のセットアップ中に外部データソースを同期すると、外部オブジェクト名と組織内の既存の名前との間で名前の衝突が発生する場合、名前をインラインで編集して時間とクリック数を節約できます。外部データテーブルが多いなど、同期操作が接続タイムアウトを引き起こす可能性がある場合は、バックグラウンドで非同期に実行できます。同じ外部システム・スキーマにマッピングされた親オブジェクトと子オブジェクトの間に、外部参照関係が自動的に作成されます。

外部データソースの同期は、Org の外部オブジェクト数が 200 を超えると失敗します。Salesforce では、同期操作をバッチで実行することはできません。また、同期操作を一時停止または再開することもできません。

20
Q

Policy__c’ という名前のカスタム・オブジェクトのすべてのフィールドに関するメタデータ情報 (フィールド・ラベルやピックリストの値など) を表示する Visualforce ページを作成する必要があります。この情報だけに基づいて、この要件を満たすには、次のどの方法を使用する必要がありますか?

答えを3つ選びなさい。

A. getSObjectField()
B. getMap()
C. getLabel()
D. getPicklistNames()
E. getPicklistValues()

A

B. getMap()
C. getLabel()
E. getPicklistValues()

getmap() メソッドを使用すると、すべてのフィールド名 (キー) とフィールドトークン (値) のマップを生成できます。getLabel() メソッドを使用すると、フィールドの記述結果に対してフィールド・ラベルを返します。getPicklistValues() メソッドは、PicklistEntry オブジェクトのリストを返します。getSObjectField() メソッドはフィールドのトークンを返しますが、カスタムオブジェクトのすべてのフィールドに関するメタデータ情報を取得する必要があります。

21
Q

コズミックオーロラでは、営業関連業務にSalesforceとレガシーCRMシステムを利用している。Salesforce は商談などのレコードを管理する主要なシステムですが、一部の拠点ではレガシーシステムを使用してレコードにアクセスしています。Salesforce で商談が作成または更新されるたびに、その商談に関する情報が、SOAP ベースのエンドポイントを使用するレガシーシステムに自動的に送信される必要があります。この要件を宣言的に満たすために使用できるオプションは、次のうちどれですか?

答えを2つ選びなさい。

A. Apex Trigger
B. Process Builder
C. Flow Builder
D. Outbound Message

A

C. Flow Builder
D. Outbound Message

レコードトリガフローとアウトバウンドメッセージアクションは、宣言的に別の企業システムに情報を送信するように構成できます。商談が作成または更新されると、送信メッセージに必要な商談フィールドが含まれ、レガシーCRMシステムに送信されます。

プロセスビルダを使用して、Apexコードを使用せずに別のシステムに情報を送信するプロセスを作成することはできません。Apexトリガーを利用することはできますが、宣言的に要件を満たすことはできません。

ワークフロールールは、アウトバウンドメッセージを送信できることに注意することが重要です。しかし、新しいワークフロールールの作成は、’23年冬リリースからできなくなりました。既存のワークフロールールは引き続き使用可能であり、編集、無効化、再有効化が可能である。

22
Q

Cosmic Financial Solutionsの人事部門は、入社プロセスの管理にSalesforceを使用し、給与管理にはERPシステムを使用している。同社は最近、MuleSoft Anypoint Platformを使用してAPIの構築を開始した。APIの1つは、ERPシステムで指定された従業員に必要な給与属性を持つ新しいプロファイルを自動的に作成する。人事担当者は、人事スペシャリストの作業効率を向上させるために、ERPシステムで従業員プロファイルを作成する際にSalesforceを使用できるようにしたいと考えています。開発者は、フロービルダーを使用してフローを構築し、この要件にMulesoftの外部サービスを使用することにしました。ソリューションを構築する上で、次に推奨されるステップはどれですか?
答えを1つ選んでください。

A. MuleSoft ServicesページからMuleSoft Anypoint Platformにログインします。
B. MuleSoft Anypoint Platform で接続アプリをセットアップします。
C. Salesforce で認証プロバイダと名前付きクレデンシャルを作成します。
D. Salesforceで接続アプリとリモート・サイト設定を作成します。

A

A. MuleSoft ServicesページからMuleSoft Anypoint Platformにログインします。

External Services for Mulesoftを使用して、MuleSoft Anypoint Platform APIをインポートし、フローを使用して呼び出すことができる関連アクションを自動的に生成できます。すなわち、SalesforceがMuleSoft APIを呼び出せるようにするMuleSoft Anypoint Platformの接続アプリの作成、MuleSoft Anypoint Platform接続アプリのIDとシークレットを使用してSalesforceに認証プロバイダを作成、認証プロバイダのコールバックURLを使用して接続アプリを更新、Salesforceから接続アプリにアクセスするための名前付きクレデンシャル(レガシー)の作成です。ただし、これらの手順はすべて、セットアップのMuleSoft ServicesページからMuleSoft Anypoint Platformにログインすることですでに自動化できます。次に、MuleSoft APIと指定されたクレデンシャルを使用する外部サービスがSalesforceに作成され、MuleSoft API操作に対応するアクションが生成されます。これらのアクションは、Flow Builderを使用して構築したフローで使用できます。

Salesforceで接続アプリやリモートサイト設定を作成する必要はありません。接続アプリは、外部システムがSalesforceで操作を実行する必要がある場合にSalesforceで作成されます。

23
Q

Thanks_Email_Sent__c’チェックボックスフィールドで示される、感謝状を受け取ったContactの総数を計算し、Contactのアカウントに関連するカスタムオブジェクトレコードに表示する必要があります。開発者は、この要件にSOQLクエリを使用することにしました。各アカウントに関連するContactの数を計算するために、SOQLクエリで使用する必要があるのは次のうちどれですか?

答えを3つ選びなさい。

A. COUNT(Id)
B. AggregateResult
C. WHERE clause
D. SUM(Thanks_Email_Sent__c)
E. COUNT(Thanks_Email_Sent__c)

A

A. COUNT(Id)
B. AggregateResult
C. WHERE clause

集約関数を含むクエリは、その結果を AggregateResult オブジェクトの配列で返します。SOQL クエリは、COUNT() メソッドを使用すると整数を返すことができます。WHERE 節を使用して、返されるレコード数をカウントする条件を指定できます。チェックボックス・フィールドは、COUNT(fieldName) および SUM(fieldName) ではサポートされません。

24
Q

ある開発者が、将来の定期的な間隔で実行できるように ‘Schedulable’ インターフェイスを実装するバッチ Apex クラスを作成しました。バッチ Apex クラスをスケジュールするために使用できるのは、次のうちどれですか?

A. System.execute
B. System.scheduleBatch
C. System.enqueueJob
D. System.schedule

A

D. System.schedule

System.scheduleは、’Schedulable’インターフェイスを実装するApexクラスをスケジュールするために使用できます。System.scheduleBatchは、バッチApexクラスが’Schedulable’インターフェイスを実装していない場合に、将来的に一度だけ実行する代替方法です。System.enqueueJobは、キューイング可能なApexジョブをキューに追加するために使用します。

25
Q

ある開発者はSOAP Webサービスを実装したいが、許されないデータ型があることを知っている。次のデータ型のうち、’webservice’ キーワードで定義されたメソッドのパラメータまたは戻り値として使用できるものはどれですか?

答えを2つ選びなさい。

A. Maps
B. Lists
C. Sets
D. sObjects

A

B. Lists
D. sObjects

webservice」キーワードで定義されたメソッド(すなわち、SOAP Webサービスとして公開されるメソッド)は、パラメータまたは戻り値として以下をサポートしない:
1) Maps
2) Sets
3) Pattern objects
4) Matcher objects
5) Exception objects

一方、リストとsObjectはパラメータと戻り値としてサポートされている。

26
Q

コスミックソリューションズでは、営業担当者がアップグレード見込み客の未解決のサポートケースに気づかないことが、売上を落とす原因になっていると認識しています。そこで、Salesforceの開発者は、オポチュニティレコードページに配置するLightningコンポーネントを作成することになりました。このコンポーネントは、オポチュニティのアカウントに関するいくつかの重要な情報と、そのアカウントに関連するオープンケースのテーブルを表示します。コンポーネントのサーバー側コントローラは、コンポーネントに返すデータを効率的にクエリする必要があります。どのクエリがコンポーネントに適切なデータを提供するか?

A.

SELECT Name, AnnualRevenue, (SELECT CaseNumber, Status, Subject FROM Cases\_\_r WHERE IsClosed = FALSE) FROM Account WHERE Id = :accountId

B.

SELECT Name, AnnualRevenue, (SELECT CaseNumber, Status, Subject FROM Case WHERE IsClosed = FALSE) FROM Account WHERE Id = :accountId

C.

SELECT Name, AnnualRevenue, (SELECT CaseNumber, Status, Subject FROM Case\_\_r WHERE IsClosed = FALSE) FROM Account WHERE Id = :accountId

D.

SELECT Name, AnnualRevenue, (SELECT CaseNumber, Status, Subject FROM Cases WHERE IsClosed = FALSE) FROM Account WHERE Id = :accountId
A

D.

SELECT Name, AnnualRevenue, (SELECT CaseNumber, Status, Subject FROM Cases WHERE IsClosed = FALSE) FROM Account WHERE Id = :accountId

サブクエリ(親子関係クエリ)は、検索された親レコードごとに関連する子レコードのリストを取得するために使用され、SELECT句の括弧内に記述されます。サブクエリのFROM句では、子のルックアップ関係の子リレーション名を使用します。標準オブジェクトの場合、これは通常オブジェクトの複数形です(この例では’Cases’)。
カスタム・オブジェクトのみ、子リレーション名の末尾に __r が付加されます。子リレーション名は、オブジェクト・マネージャのルックアップ・フィールド設定ページと、オブジェクトの WSDL ファイルで確認できます。

27
Q

外部アプリケーションが Salesforce の Apex REST Web サービスに次のメッセージを送信します。Webサービスがメッセージを解析するとき、結果のデータはどのように表現されますか。

{
“name” : “Linda”,
“name” : “John”,
“name” : “Sammy”
}

答えを1つ選びなさい。

A. 1つのオブジェクトが作成され、nameコンポーネントの値は 「Linda 」になります。
B. 3つの別々のオブジェクトが作成されます。
C. HTTP 400ステータスコード・エラーが発生します。
D. 1つのオブジェクトが作成され、nameコンポーネントの値が 「Sammy 」になる。

A

C. HTTP 400ステータスコード・エラーが発生します。

JSONまたはXMLリクエストデータに同名のパラメータが複数含まれる場合、HTTP 400ステータスコードのエラー・レスポンスが生成されます。

28
Q

ある開発者が REST ウェブサービスをテストしており、リクエストパラメータ用の JSON データを作成しています。次のうち、どのJSONデータが許可されていますか?

答えを3つ選びなさい。

A. { “middleName”: NULL, “isMale” : FALSE, “age” : 39 }
B. { “firstName” : “Richard”, “age”: 39 }
C. { “pets” : { “cats” : [“Fluffy”,”Tiger”], “dogs” : [“Fido”,”Buster”] } }
D. { “lastName”: Jones, “isMale” : true, “age” : “39” }
E. { “middleName”: null, “isMale” : true, “age” : “39” }

A

B. { “firstName” : “Richard”, “age”: 39 }
C. { “pets” : { “cats” : [“Fluffy”,”Tiger”], “dogs” : [“Fido”,”Buster”] } }
E. { “middleName”: null, “isMale” : true, “age” : “39” }

JSON標準によると、JSONパラメータは、二重引用符で囲まれた文字列、角括弧で囲まれた配列、数値、または大文字と小文字を区別するキーワード(true、false、null)のいずれかになります。JSONパーサーによっては、二重引用符の代わりに一重引用符を使用できる場合もありますが、標準に準拠するためには二重引用符を使用するのがベストプラクティスです。

注意:「age 」パラメータを引用符で囲むと、数値ではなく文字列として解釈されます。JSONメッセージの検証には、https://jsoneditoronline.org/ などのツールを使用できます。

29
Q

コスミック・ソリューションズは、社内の生産性向上ツールの1つに含まれるカスタム検索機能を開発している。ユーザーが検索語を入力すると、ツールで使用されている3つのカスタムオブジェクトからその語を検索する必要があります。また、必要に応じて、検索結果を絞り込むための検索フィルタも利用できなければなりません。必要な検索結果を得るために、開発者は何をすべきでしょうか?

A. Execute a static SOSL Query
B. Execute Database.query()
C. Execute a static SOQL Query
D. Execute Search.query()

A

D. Execute Search.query()

特定のフィールドを持たない複数のオブジェクトに対して検索を実行する必要があるため、SOSLが最良の選択肢となります。これにより、静的なSOQLクエリ(特定のフィールドを持つ1つのプライマリオブジェクトのみを検索)やDatabase.query(SOSLではなくSOQLのみをクエリ)を排除することができます。

静的な SOSL クエリは、クエリするオブジェクトや適用する検索フィルタが実行時までわからないため、良い選択肢ではありません。したがって、実行時にSOSLクエリー文字列を生成し、結果を得るために動的SOSLを使用すべきである。動的SOSLは、Search.query(soslString)を実行することにより実行される。

30
Q

Rogerは、スクリーンフローで使用できるAuraコンポーネントの作成を依頼されました。彼が設計を準備する際に考慮すべき項目はどれですか?
答えを3つ選んでください。

A. フローで使用可能な入力または出力は、コンポーネントのデザインファイルで指定する必要があります。
B. コンポーネントを使用した画面フローは、Salesforce Classic で正しく動作しない可能性があります。
C. コンポーネントは lightning:FlowScreenComponent インターフェイスを実装する必要があります。
D. コンポーネントは、アクセスレベルを「public」に指定する必要があります。
E. コンポーネントは lightning:availableForFlowScreens インターフェイスを実装する必要があります。

A

A. フローで使用可能な入力または出力は、コンポーネントのデザインファイルで指定する必要があります。
B. コンポーネントを使用した画面フローは、Salesforce Classic で正しく動作しない可能性があります。
E. コンポーネントは lightning:availableForFlowScreens インターフェイスを実装する必要があります。

コンポーネントをスクリーン要素として公開するには、lightning:availableForFlowScreens インターフェイスを実装する必要があります。

lightning:FlowScreenComponent というインターフェイスはありません。デザインファイルに記載されている属性は、値を設定するため、または値を出力として使用するために、フローで利用できます。入力と出力のデザイン属性を区別するための特定のマークアップは定義されていないことに注意してください。このため、デザイン属性のラベルや説明には、その属性がどのように使用されるべきかをエンドユーザーに示すテキストを含めることが推奨されます。

コンポーネントのアクセス・レベルには、「public」または「global」を指定できます。アクセスレベルを「グローバル」に設定すると、コンポーネントを別の組織で使用できるようになります。Lightning コンポーネントを使用するには、Lightning Runtime を使用して Salesforce の画面フローを実行する必要があります。一部のフローは自動的に Lightning ランタイムでレンダリングされますが、ボタンや URL 経由で起動したフローはクラシックランタイムで実行され、正しく動作しない場合があります。

31
Q

ApexクラスがREST Webサービスをコールアウトします。応答で返されるボディは、JSON エンコードされたコンテンツです。コンテンツを解析するために JSONParser クラスのオブジェクトに割り当てることができる新しいパーサーを返すために、JSON クラスの次の静的メソッドのどれを使用できますか?

A. parseContent()
B. createParser()
C. generateParser()
D. parse()

A

B. createParser()

JSON クラスの createParser() メソッドを使用すると、新しい JSON パーサーを返すことができます。JSONParser クラスのメソッドを使用して、JSON 形式のコンテンツを解析できます。

32
Q

Cosmic Ordersはプラットフォームイベントを使用して、注文配信を行う外部システムからの更新情報を受信している。増加するイベント量に対応し、より高速に処理するために、開発者はプラットフォームイベントにサブスクライブするApexトリガーにパラレルサブスクリプションを実装したいと考えています。このソリューションに関する有効な記述は次のうちどれですか?
答えを1つ選びなさい。

A. 並列サブスクリプションは、セットアップで「並列サブスクリプションを有効にする」オプションを選択することで有効にできます。
B. パラレル・サブスクリプションを機能させるには、プラットフォーム・イベント・パブリッシャに追加の構成が必要です。
C. パラレル・サブスクリプションは、カスタム大量プラットフォーム・イベント、標準イベント、および変更イベントをサポートします。
D. パラレル・サブスクリプションは、Apexトリガがパーティションを使用して複数のイベントを同時に処理することを可能にします。

A

D. パラレル・サブスクリプションは、Apexトリガがパーティションを使用して複数のイベントを同時に処理することを可能にします。

サブスクライブされたApexトリガでパラレルサブスクリプションが有効になっている場合、プラットフォームイベントはパーティションに分散され、同時に処理されます。各 Apex トリガー・サブスクライバには、パラレル・サブスクリプションと呼ばれる最大 10 のパーティションを指定できます。

並列サブスクリプションは、カスタム大容量プラットフォーム・イベントのみをサポートします。パラレル・サブスクリプションを有効にするには、Tooling API または Metadata API を使用した要求が必要です。パラレル・サブスクリプションを機能させるために、プラットフォーム・イベント・パブリッシャに構成は必要ありません。

33
Q

Cosmic SolutionsのSalesforce開発者は、アカウントのカスタム一括インポートツールを設計しています。一括インポートを効率的に処理するため、Database.insert() を使用しています。Database.insert()を実行した後、彼女はどのアカウントが挿入に失敗したかを特定する必要があります。Database.insert() の結果へのアクセスについて正しい記述はどれですか?
答えを 1 つ選んでください。

A. Database.getResult(originalSObjectRecord) を呼び出すと、対応する SaveResult オブジェクトが返されます。
B. 返された Map は、元の sObject を SaveResult 値のキーとして使用します。
C. 返されたリスト内の各 SaveResult は、元の sObject リスト内の対応するレコードと同じインデックスを持ちます。
D. 元の sObject のいずれかで getDatabaseResult() を呼び出すと、対応する SaveResult オブジェクトが返されます。

A

C. 返されたリスト内の各 SaveResult は、元の sObject リスト内の対応するレコードと同じインデックスを持ちます。

部分的な成功が許可されている場合 (allOrNone パラメータが false の場合)、Database.insert() メソッドは SaveResult オブジェクトのリストを返します。結果リストは、Database.insert() に渡された sObject レコードの元のリストにインデックスごとに対応します。各 SaveResult レコードには、各レコードの挿入試行に関する情報 (成功したか失敗したかなど) と、レコードの挿入に失敗した場合のエラーのリストが含まれます。

Database.getResult() および [sObjectRecord].getDatabaseResult() は有効なメソッドではありません。
Database.insert() 呼び出しは、結果のマップを返さず、リストを返します。

34
Q

ある Salesforce 開発者は、作成中のトリガが、多すぎる DML ステートメントのためにトランザクションを失敗させないようにしたいと考えています。これを避けるために、開発者は何をすればよいですか。
答えを 2 つ選んでください。

A. DML 文を try-catch ブロックで囲みます。
B. Limits クラスを使用して、残りの DML 文を計算します。
C. 個々のレコードではなく、コレクションに対して DML 文を実行する
D. getDMLRows() および getLimitDMLRows() を使用して、残りの DML 文を計算します。

A

B. Limits クラスを使用して、残りの DML 文を計算します。
C. 個々のレコードではなく、コレクションに対して DML 文を実行する

トリガーは常にバルクフレンドリーであるべきです。レコードのコレクション(リストやセットなど)に対して DML ステートメントを実行すると、多くのステートメントが実行されるのを避けることができます。具体的には、DML文はループの中に置くべきではありません。ループの繰り返しごとにDML文が実行されるからです。

ネイティブの Limits クラスには、トランザクション内の残りの DML 文を計算するために使用できる 2 つのメソッドがあります: Limits.getDMLStatements() と Limits.getLimitDMLStatements() です。getDMLStatements メソッドは既に呼び出された DML 文の数を返し、getLimitDMLStatements はトランザクションの制限を返します。DML 文の前にこれを計算することで、開発者は制限を超えないようにし、代わりに他の適切な処理を行うことができます。

getDMLRows() メソッドと getLimitDMLRows() メソッドは、 DML 文が処理したレコード数を返すもので、文自体の数を返すものではありません。DML 行数の制限を超えるだけのレコードを持つ DML 文がある場合は、 その文だけで制限を超えることもあります。

制限例外はキャッチできないため、DML ステートメントを try-catch ブロックで囲んでも、このシナリオでは役に立ちません。

制限は Salesforce のエディションによって異なります。。

35
Q

家具配送センターの営業担当者は、顧客から見積もりが依頼され、受け取った後、標準化されたフォローアッププロセスを案内する画面フローを使用している。フロー内で特定の段階に達した後、「ジョブオーダー」レコードを作成し、ジョブオーダーの詳細を含むinvocableメソッドを使用して、パートナーの製造会社にHTTPコールアウトを実行する必要があります。この要件を満たすには、次のうちどれを実行すればよいですか。
答えを 1 つ選んでください。

A. Create Records’ 要素の直後にコールアウトの ‘Action’ 要素が続くようにします。
B. 呼び出し可能なメソッドアノテーションに ‘callout’ 属性を追加し、それに応じてフロー内の Action を構成します。
C. レコードの作成後、呼び出し可能メソッドがフロー内で呼び出される前に、フロー内で Screen 要素を使用します。
D. レコードの作成後に呼び出し可能なメソッドを呼び出すために、フローのAction要素の代わりにプロセスを使用する。

A

B. 呼び出し可能なメソッドアノテーションに ‘callout’ 属性を追加し、それに応じてフロー内の Action を構成します。

Apexでは、(DMLの前に)セーブポイントが作成され、ロールバックが実行され、(DMLの後に)セーブポイントが解放されない限り、DML操作の後にコールアウトを実行することは許可されず、「uncommitted work pending」エラーがスローされる。ただし、スクリーン・フローでは、コールアウトを別のトランザクションで実行することで、この制限を回避することができる。呼び出し可能なApexメソッドに’callout’属性を追加して、Apexメソッドがコールアウトを実行することをフローに認識させる必要があります。次に、Action要素のTransaction Control設定を構成して、フローが実行時にメソッドを実行する方法を決定できるようにします。

レコード作成の後にScreen要素を挿入すると、Screenの後に続くパスが新しいトランザクションで実行されるため、コールアウト例外を回避できます。しかし、これはトランザクション制御機能により必要なくなった。呼び出し可能なメソッドを実行するためにプロセスが使用された場合、フローによって開始されたのと同じトランザクションに属するため、コールアウト例外は依然としてスローされる。

Flow Builderは、Apexを使用せずにHTTPコールアウトを実行するために、External Servicesを利用したHTTPコールアウトアクションも提供しています。

36
Q

あるSalesforce開発者が、カスタム連絡先管理アプリケーションで使用されているApexメソッドが、特定の場面でNULLポインタ例外をスローしていることに気づきました。調査したところ、このエラーは、アカウントに関連付けられていない Contact レコードの Account フィールドにアクセスし、Account sObject の ‘isSet’ メソッドを実行するコードが原因であることが判明しました。以下のコードのスニペットがある場合、例外を回避するために使用できるオプションはどれですか?

public static void assignPrimaryContact() {

    Contact con = getContact();
    Boolean hasAssigned = con.Account.isSet('Has_Primary_Contact\_\_c');
    // ...
}

A.
Boolean hasAssigned = con.Account?Account.Has_Primary_Contact\_\_c:null;
B.
Boolean hasAssigned = con.Account.?isSet('Has_Primary_Contact\_\_c');
C.
Boolean hasAssigned = con.Account?.isSet('Has_Primary_Contact\_\_c');
D.
Boolean hasAssigned = con.Account:Account.Has_Primary_Contact\_\_c?null;

A
C.
Boolean hasAssigned = con.Account?.isSet('Has_Primary_Contact\_\_c');

安全なナビゲーション演算子は、明示的なNULL参照チェックの代わりに使用することができ、クエスチョンマークにピリオドを続けた構文「? 演算子の左辺がNULLと評価された場合は、NULLが返されます。そうでない場合は、メソッド、変数、プロパティを含む右辺が演算子の左辺に連結されて返されます。この場合、連鎖した値は ‘isSet’ メソッドです。

したがって、上記の正解では、’hasAssigned’変数に返される結果の値は、コンタクトがアカウントに関連している場合、getContact().Account.isSet(‘Has_Primary_Contact__c’)と表現されます。

他のオプションには無効な構文や戻り値が含まれています。

37
Q

新しい要件により、開発者は、Salesforce データに変更が加えられたときに外部アプリケーションに通知をプッシュするために PushTopics を使用する組織内の既存の自動化を更新する必要があります。PushTopics に関する次の記述のうち、妥当なものはどれですか。
答えを 2 つ選んでください。

A. PushTopic が作成されると、チャネルが自動的に作成されます。
B. PushTopicを定義する際に必要なのは、名前とクエリのみです。
C. レコードが条件に一致する場合、すべてのレコードフィールドの変更に対して通知を生成できます。
D. 削除取り消し操作に対して通知を生成することはできません。

A

A. PushTopic が作成されると、チャネルが自動的に作成されます。
C. レコードが条件に一致する場合、すべてのレコードフィールドの変更に対して通知を生成できます。

PushTopicを定義する際には、名前、クエリ、APIバージョンが必要です。pushTopic.NotifyForFieldsを’All’に設定すると、すべてのレコードフィールドの変更に対して通知を生成できます。作成、更新、削除、および削除解除の操作に対して通知を生成できます。PushTopicが作成されると、チャネルが自動的に作成されます。チャネル名の形式は ‘/topic/PushTopicName’ です。

38
Q

Creekside ConsultingのSalesforce管理者は、プロセスビルダーから呼び出される自動起動フローを作成しました。この管理者は、200件のレコードを同時に更新すると、フローがDML制限エラーで失敗することに気づきました。自動起動フローには更新文が1つしか含まれていないため、管理者は開発者にDML問題のトラブルシューティングを依頼しました。制限の原因を調査し、問題を解決するために、開発者が考慮すべきことは何ですか?
答えを2つ選んでください。

A. DML 制限はトランザクション全体でカウントされます。
B. 自動起動されたフローは、独自のDML制限セットを取得します。
C. ループ内に配置されたクエリは、DML制限にヒットする可能性が高くなります。
D. フロー、プロセスビルダー、およびトリガーはすべて、トランザクション内のDML制限の合計に寄与する。

A

A. DML 制限はトランザクション全体でカウントされます。
D. フロー、プロセスビルダー、およびトリガーはすべて、トランザクション内のDML制限の合計に寄与する。

自動起動されたフローがレコードを更新するとき、プロセスビルダとフローがレコードをバッチ処理するため、DML制限に対して1回だけカウントされるはずである。しかし、トリガは、追加のDML要求を実行するアクションを実行する可能性があります。例えば、トリガが既にDML制限に達しそうになっているオブジェクトの関連レコードを更新した場合(多くのカスタマイズや不十分な設計のため)、DML制限はトランザクション全体でカウントされるため、一見 「小さな 」更新がDML制限を超える可能性があります。

自動起動されたフローはDML制限の新しいセットを取得しません。
クエリをループの中に置くべきではないことは事実ですが、クエリはDML制限にはカウントされず、SOQLまたはSOSLクエリ制限にカウントされます。