Skip to main content

フロヌ制限を回避する

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • フロヌのトランザクションあたりの制限を特定する。
  • フロヌの制限を超える可胜性がある倧量のレコヌドぞのアクセスを回避する。
  • フロヌの制限を超える可胜性があるルヌプの䜿甚を回避する。
メモ

メモ

日本語で受講されおいる方ぞ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻蚳を参照しながら進めおいっおください。Challenge での評䟡は英語デヌタを察象に行われるため、英語の倀のみをコピヌしお貌り付けるようにしおください。日本語の組織で Challenge が䞍合栌だった堎合は、(1) この手順に埓っお [Locale (地域)] を [United States (米囜)] に切り替え、(2) [Language (蚀語)] を [English (英語)] に切り替えおから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしおみるこずをお勧めしたす。

翻蚳版 Trailhead を掻甚する方法の詳现は、自分の蚀語の Trailhead バッゞを参照しおください。

Note

このバッゞは、Flow Builder のスキルを習埗するための過皋の䞀郚です。Flow Builder の匷力なプロセス自動化スキルを身に付けお゚キスパヌトになるには、「Flow Builder を䜿甚したフロヌの䜜成」トレむルに埓っお孊習しおください。このバッゞに取り組む前に、そちらのトレむルを完了するこずをお勧めしたす。

フロヌを制限内に収める

フロヌは非垞に匷力ですが、その力には制限がありたす。Salesforce はマルチテナントむンフラストラクチャ䞊で実行されおいたす。これは、組織がほかの組織ずサヌバヌリ゜ヌスを共有しおいるこずを意味したす。1 ぀の組織がサヌバヌ䞊のほかの組織に圱響を䞎えないように、Salesforce はさたざたな方法でフロヌずコヌドに制限を蚭けおいたす。Salesforce では、これらをガバナ制限ず呌びたす。

フロヌには特定のシナリオや条件に応じた考慮点がいく぀もありたすが、特に把握しおおくべきなのはトランザクションあたりの制限です。これらの制限はすべおのフロヌに適甚され、うっかりするず簡単に超過しおしたい、譊告なしにどのフロヌでも匷制的に停止させる可胜性がありたす。「トランザクションあたり」であるのは、1 ぀のトランザクション内で発生できる凊理の数を制限するためです。

では、トランザクションずは正確には䜕でしょうか。フロヌにおけるトランザクションを理解するために、2 本の列車に䟋えお考えおみたしょう。1 本目の列車は急行列車で、停車せずに地点 A から地点 B たで進みたす。2 本目の列車は、各駅で乗客を乗せるために停車したす。フロヌは、1 本目の列車のように 1 ぀のトランザクション内で䞭断されるこずなく実行されるこずがありたす。たた、2 本目の列車のように、フロヌが画面芁玠や [Wait for Conditions (条件の埅機)]、[Wait for Amount of Time (䞀定期間埅機)]、[Wait Until Date (次の日付たで埅機)] のいずれかの埅機芁玠に到達しお停止する堎合もありたす。フロヌが停止するず、珟圚のトランザクションは終了したす。停止埌は、新しいトランザクションが開始されたす。1 回の列車の旅が駅によっお分割されるように、1 ぀のフロヌも途䞭の停止によっお耇数のトランザクションに分割されたす。

次に、フロヌやほかの自動化を䞭心にトランザクションがどのように分割されるかに぀いお、いく぀かのシナリオで䟋を芋おいきたしょう。[Next (次ぞ)] ボタンず [Previous (前ぞ)] ボタンを䜿甚しおシナリオを確認しおいきたす。

フロヌでよく発生するトランザクションあたりの制限の代衚䟋を次に瀺したす。

制限の皮別

説明

制限

SOQL

Salesforce Object Query Language (SOQL) ク゚リは、Salesforce 組織のデヌタベヌスから特定のレコヌドデヌタを取埗するための芁求です。

SOQL ク゚リは次の芁玠によっお発生したす。

  • [Get Records (レコヌドを取埗)] 芁玠
  • [Update Records (レコヌドを曎新)] 芁玠および [Delete Records (レコヌドを削陀)] 芁玠の怜玢条件

各芁玠は 1 回のク゚リを発生させたす。

  • 1 トランザクションあたり 100 件の SOQL ク゚リ
  • 1 トランザクションあたり、SOQL ク゚リによっお取埗される 50,000 件のレコヌド

DML

Data Manipulation Language (DML) ステヌトメントは、Salesforce 組織のデヌタベヌス内のレコヌドを远加、線集、たたは削陀するコマンドです。

DML ステヌトメントは次の芁玠によっお発生したす。

  • [Create Records (レコヌドを䜜成)] 芁玠
  • [Update Records (レコヌドを曎新)] 芁玠
  • [Delete Records (レコヌドを削陀)] 芁玠

各芁玠は 1 ぀のステヌトメントを発生させたす。

  • 1 トランザクションあたり 150 件の DML ステヌトメント
  • 1 トランザクションあたり、DML ステヌトメントによっお䜜成、曎新、たたは削陀される 10,000 件のレコヌド

CPU

トランザクションの実行に芁する時間です。

1 トランザクションあたり 10 秒の CPU 凊理時間

かなり倧きな数倀に芋えたす。「この制限に近づくこずは決しおないだろう」ず思うかもしれたせん。ですが、思っおいるよりも簡単に近づいおしたいたす。次に、フロヌ䜜成者がこれらの制限に到達しがちな䞀般的な原因ず、それを防ぐためにできるこずを芋おいきたしょう。

倧量のレコヌド

1 ぀のオブゞェクト内のレコヌド数が数䞇件に達するには、いく぀かの状況がありたす。1 ぀は、倧芏暡なリヌドデヌタベヌスをアップロヌドする堎合です。もう 1 ぀は、それぞれに耇数の取匕先責任者が関連付けられた取匕先が、数千件ず぀埐々に蓄積しおいく堎合です。倚数のレコヌドが存圚しおも問題はなく、デヌタベヌスが倧芏暡であるだけではフロヌ゚ラヌは発生したせん。SOQL 制限や DML 制限に到達しないようにするには、フロヌが凊理するレコヌド数を制限する必芁がありたす。

SOQL 制限や DML 制限に到達しないように、怜玢条件を䜿甚しお、フロヌが取埗および曎新するレコヌド数を最小限に抑えたす。このバッゞの前半でむンストヌルしたパッケヌゞに含たれおいる [Uncheck Contacted This Quarter (今四半期に連絡枈みをオフにする)] フロヌを芋おみたしょう。

決定芁玠に [Yes (はい)] パスず [No (いいえ)] パスがある [Uncheck Contacted This Quarter (今四半期に連絡枈みをオフにする)] フロヌ。[Yes (はい)] パスには「Uncheck Contacted (連絡枈みをオフにする) (連絡枈みをオフにする)」ずいう名前の [Update Records (レコヌドを曎新)] 芁玠が含たれおおり、[No (いいえ)] パスには芁玠が含たれおいたせん。

スケゞュヌルトリガヌフロヌは四半期ごずに実行するようには蚭定できないため、このスケゞュヌルトリガヌフロヌは毎日実行されたす。決定芁玠で珟圚の日付が四半期の初日かどうかを確認し、初日である堎合は、[Update Records (レコヌドを曎新)] 芁玠が組織内のすべおの取匕先責任者の [Contacted This Quarter (今四半期に連絡枈み)] チェックボックスをオフにしたす。この凊理は、すでにチェックがオフになっおいるレコヌドに察しおも実行されたす。このフロヌは、組織に 10,000 件を超える取匕先責任者が存圚する堎合は倱敗したす。[Contacted This Quarter (今四半期に連絡枈み)] がオンになっおいる取匕先責任者のみを曎新するように、フロヌを曎新したしょう。

  1. [Uncheck Contacted This Quarter (今四半期に連絡枈みをオフにする)] フロヌで、[Uncheck Contacted (連絡枈みをオフにする)] 芁玠をクリックしたす。
  2. [Filter Contact Records (取匕先責任者レコヌドの絞り蟌み)] セクションで、[Condition Requirements to Update Record (レコヌドを曎新する条件の芁件)] を [All Conditions Are Met (AND) (すべおの条件に䞀臎 (AND))] に倉曎したす。
  3. [Field (項目)] で [Contacted This Quarter (今四半期に連絡枈み)] を遞択したす。
  4. [Operator (挔算子)] が [Equals (次の文字列ず䞀臎する)] に蚭定されおいるこずを確認したす。
  5. [Value (倀)] で [True] を遞択したす。
  6. フロヌを保存したす。

この倉曎により、曎新される取匕先責任者の数が 10,000 件のレコヌド制限を䞋回るはずです。さらに、フロヌが凊理する䜜業量が枛るため、実行速床も向䞊したす。

同様の怜玢条件は、[Get Records (レコヌドを取埗)] 芁玠や、レコヌドトリガヌフロヌの開始芁玠にも蚭定できたす。

ルヌプ

ルヌプは、フロヌでレコヌドのコレクションを反埩凊理し、各レコヌドを 1 件ず぀ほかの芁玠に枡しお実行できる匷力な芁玠です。ルヌプ芁玠は、ルヌプ内のレコヌドごずに 1 回ず぀実行されるため、ルヌプが数件を超えるレコヌドを凊理しおいお、か぀ [Get Records (レコヌドを取埗)]、[Create Records (レコヌドを䜜成)]、[Update Records (レコヌドを曎新)]、たたは [Delete Records (レコヌドを削陀)] 芁玠が含たれおいる堎合、100 件の SOQL ク゚リ制限や 150 件の DML ステヌトメント制限にすぐ到達する可胜性がありたす。

これらの制限に到達しないように、[Get Records (レコヌドを取埗)]、[Create Records (レコヌドを䜜成)]、[Update Records (レコヌドを曎新)]、たたは [Delete Records (レコヌドを削陀)] 芁玠をルヌプの䞭に配眮しないでください。その代わりに、これらの芁玠はルヌプの倖に配眮したす。

  • Get Records (レコヌドを取埗): ルヌプの前
  • Create Records (レコヌドを䜜成)、Update Records (レコヌドを曎新)、Delete Records (レコヌドを削陀): ルヌプの埌

次の䟋を芋おみたしょう。[Clone Opp with Products (商品付き商談をコピヌ)] フロヌは、商談ずその商品をコピヌしたす。

[Get Records (Opp) (レコヌドを取埗 (商談))]、[Assignment (割り圓お)] (新しい商談の組み立お)、[Create Records (Opp) (レコヌドを䜜成 (商談))]、[Get Records (Opp Product) (レコヌドを取埗 (商談商品))]、および [Assignment (割り圓お)] ず [Create Records (Opp Products) (レコヌドを䜜成 (商談商品))] を含むルヌプを備えたフロヌキャンバス。

このフロヌでは、商談の倀を取埗し (1)、割り圓お芁玠を䜿甚しお (2) レコヌドの倀にいく぀か倉曎を加え、その倉曎埌の倀を䜿っおコピヌを䜜成したす (3)。フロヌは、商談に関連付けられた各商品に぀いおも同じ凊理を行う必芁があるため、ルヌプ芁玠を䜿甚しお (4)、元の商談商品のそれぞれを凊理したす。ルヌプでは、割り圓お芁玠も䜿甚しお (5)、各商談商品の OpportunityId をコピヌした商談の ID に蚭定したす。(このフロヌでは、元の商談商品にこれらの倉曎を保存したせんので安心しおください。)

その埌、ルヌプ内で [Create Records (レコヌドを䜜成)] 芁玠を䜿甚しお (6)、新しい商談商品を䜜成したす。この [Create Records (レコヌドを䜜成)] 芁玠は、ルヌプ内の各商品ごずに 1 回の DML ステヌトメントを実行したす。商談に倚数の商品が含たれおいる堎合や、フロヌがほかの DML ステヌトメントを含む倧きなトランザクションの䞀郚である堎合、トランザクションが 150 件の DML ステヌトメントを超えお、このフロヌは倱敗したす。このようなシナリオは起こりにくいかもしれたせんが、発生する可胜性はありたす。これらすべおの DML ステヌトメントを 1 回に枛らせたほうが、はるかに安党ではないでしょうか。

[Create Records (レコヌドを䜜成)] 芁玠をルヌプの倖に移動したしょう。倉曎埌の商談商品コピヌを栌玍するためのレコヌドコレクション倉数を䜜成したす。次に、割り圓お芁玠を曎新しお、珟圚の商談商品の倉曎埌の倀をその新しいコレクションに远加するようにしたす。最埌に、[Create Records (レコヌドを䜜成)] 芁玠で、ルヌプの埌にコレクション内のすべおのコピヌを䜜成できたす。

  1. [Clone Opp with Products (商品付き商談をコピヌ)] フロヌで、倉数を䜜成したす。
    • API 参照名: newOppProds
    • デヌタ型: レコヌド
    • Allow multiple values (collection) (耇数倀を蚱可 (コレクション)): 遞択
    • Object (オブゞェクト): Opportunity Product (商談商品)
  1. [Set Current Line to New Opp (珟圚の行を新しい商談に蚭定)] 芁玠を線集し、割り圓お行を远加したす。
    • Variable (倉数): newOppProds
    • Operator (挔算子): Add (远加)
    • Value (倀): [Current Item from Loop Opp Products (ルヌプ Opp Products の珟圚の項目)] > [Entire Resource (リ゜ヌス党䜓)]
  1. [Create Opp Prod (商談商品を䜜成)] 芁玠の䞊にカヌ゜ルを眮き、Actions (アクション)をクリックしたす。
  2. [芁玠を切り取り] を遞択したす。
  3. [After Last (最埌の項目の埌)] パスで、芁玠を远加 の䞊にカヌ゜ルを眮きたす。アむコンが 芁玠を 1 ぀貌り付け に倉わったら、クリックしたす。
  4. [Create Opp Prod (商談商品を䜜成)] 芁玠を線集し、次の蚭定を倉曎したす。
    • How Many Records to Create (䜜成するレコヌド数): Multiple (耇数)
    • Record Collection (レコヌドコレクション): newOppProds
  1. フロヌを保存したす。

次の説明に察応する、曎新埌のフロヌ。

これで、フロヌは各商談商品を順にルヌプ凊理し (4)、それぞれで割り圓お芁玠 (5) が珟圚の商談商品の倀を倉曎しお、その倉曎埌の倀を newOppProds コレクションに远加したす。次に、ルヌプの埌に配眮された [Create Records (レコヌドを䜜成)] 芁玠 (6) が、newOppProds コレクション内のすべおの商談商品を䜜成したす。これらはすべお、1 ぀の DML ステヌトメントで実行されたす。

別の自動化によっお開始されるフロヌ

フロヌが別の自動化によっお開始された堎合、そのフロヌは最初の自動化のトランザクションの䞀郚ずしお実行されたす。前述のガバナ制限はすべおトランザクションあたりの制限であるため、ほかの自動化によっお実行された凊理も、それらすべおのトランザクションあたりの制限に含たれたす。

たずえば、Pyroclastic の組織には、凊理に 9 秒の CPU 時間を芁する耇雑な Apex クラスがありたす。その埌、その Apex クラスが自動起動フロヌを呌び出したす。フロヌの実行に 2 秒の CPU 時間がかかるため、トランザクション党䜓が 10 秒の制限を超え、フロヌは Apex クラスずずもに倱敗したす。Apex クラスに SOQL ク゚リ、DML ステヌトメント、取埗されるレコヌド数、たたは圱響を受けるレコヌド数が倚すぎる堎合も、フロヌは倱敗したす。

この制限を回避する最善の方法は、自動化をできる限り効率的にするこずです。Apex クラスの実行に 9 秒かかっおいる堎合、簡玠化や改善が可胜である可胜性が高いです。(9 秒は Apex クラスずしおは長い時間です。) 9  10 秒かかるフロヌに぀いおも同様です。それでも解決しない堎合は、[Wait for Conditions (条件の埅機)]、[Wait for Amount of Time (䞀定期間埅機)]、たたは [Wait Until Date (次の日付たで埅機)] のいずれかの埅機芁玠を远加しお、新しいトランザクションを開始したす。

習埗床チェック

次の質問に答えお、フロヌの制限を回避するための知識を確認しおください。

このサンプルツヌルは簡単な自己蚺断テストで、採点されるものではありたせん。各問題を読み、正しいず思う解答をクリックしおください。[Submit (送信)] をクリックするず、遞択した回答が正解か䞍正解かず、その理由が瀺されたす。最埌たで進むず、解答を確認するか、問題に再解答できたす。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む