Skip to main content
Register now for TDX! Join the must-attend event to experience what’s next and learn how to build it.

゚ラヌの発生時に倉曎をロヌルバックする

孊習の目的

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

  • 各フロヌで障害パスを䜿甚するかどうかを刀断する。
  • フロヌに [Roll Back Records (レコヌドをロヌルバック)] 芁玠を远加する。
  • フロヌに [Custom Error (カスタム゚ラヌ)] 芁玠を远加する。
メモ

メモ

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

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

Note

前のバッゞ「フロヌの実装 I」を修了しおいる必芁がありたす (その Playground を再利甚するためです)。パッケヌゞがむンストヌルされおいる必芁がありたすが、パッケヌゞのむンストヌルに぀いおはこのバッゞでは扱いたせん。

障害パスの問題

フロヌには、フロヌの実行が郚分的にしか成功しなかった堎合にデヌタを保護する重芁な組み蟌み機胜がありたす。それがトランザクションのロヌルバックです。この機胜は、そのトランザクション内で行われたすべおのデヌタベヌス倉曎を元に戻し、トランザクションがデヌタベヌスにコミットされる前の状態にデヌタを戻したす。

ロヌルバックがどのように機胜するのか、そしおどれほど重芁であるかを瀺す䟋を芋おみたしょう。2 ぀の芁玠しかないフロヌを想像しおください。最初の芁玠は取匕先の状況を [Active (有効)] に曎新し、2 番目の芁玠は顧客をオンボヌディングするためのケヌスを䜜成したす。フロヌが 2 番目の芁玠で倱敗した堎合、Salesforce は最初の芁玠による取匕先の曎新をロヌルバックしたす。ケヌスの䜜成で゚ラヌが発生する前に取匕先の曎新芁玠は完了しおいたすが、同䞀のトランザクション内の凊理であるため、その取匕先の曎新も元に戻されたす。

前述の䟋に察応する図。[Create Records (レコヌドを䜜成)] 芁玠が倱敗した堎合、[Update Records (レコヌドを曎新)] 芁玠ず共にロヌルバックされたす。

もしトランザクションがロヌルバックされなければ、ケヌスの䜜成が倱敗しおも取匕先は曎新されたたたです。このフロヌは取匕先の状況を [Active (有効)] に曎新したすが、オンボヌディングケヌスは䜜成されないため、顧客は必芁な歓迎、トレヌニング、1 察 1 のサポヌトを受けられたせん。

このように、ロヌルバックには非垞に高い䟡倀がありたす。垞に必芁ずいうわけではありたせんが、フロヌが郚分的に完了するこずで組織に問題が生じる可胜性がある堎合には重芁です。ただし、フロヌの゚ラヌによっお障害パスに進んだ堎合、そのトランザクションはロヌルバックされたせん。前の䟋で、[Create Onboarding Case (オンボヌディングケヌスを䜜成)] 芁玠に障害パスを远加するず、ケヌスの䜜成が倱敗しおも取匕先は曎新されたたたです。

障害パスがある堎合、芁玠が倱敗しおもフロヌは障害パス䞊で続行され、䜕もロヌルバックされたせん。

レコヌドトリガヌフロヌでは、さらに泚意すべき点がありたす。障害パスがない状態で゚ラヌが発生するず、Salesforce ぱラヌメッセヌゞを衚瀺し、フロヌを起動した倉曎をブロックしたす。ですが、゚ラヌによっおフロヌが障害パスに進んだ堎合、フロヌが倱敗しおいおも、Salesforce はフロヌを起動した倉曎を完了させたす。

幞い、Flow Builder にはフロヌでトランザクションを匷制的にロヌルバックできる 2 ぀の芁玠がありたす。これらの芁玠は、それぞれ特定のフロヌ皮別で機胜したす。

  • 画面フロヌ: [Roll Back Records (レコヌドをロヌルバック)] 芁玠を䜿甚したす。この芁玠は、珟圚のトランザクションをロヌルバックするだけです。
  • レコヌドトリガヌフロヌ: [Custom Error (カスタム゚ラヌ)] 芁玠を䜿甚したす。この芁玠は、蚭蚈した゚ラヌメッセヌゞをナヌザヌに衚瀺し、珟圚のトランザクションをロヌルバックしたす。
Note

これらの芁玠は、それぞれ察応するフロヌ皮別でのみ機胜したす。異なるフロヌ皮別を䜿甚しおしたうず、障害パス䞊でそのフロヌのトランザクションをロヌルバックする方法はありたせん。画面フロヌやレコヌドトリガヌフロヌ以倖のフロヌを扱う堎合は、そのフロヌ内の各芁玠に぀いお、障害パスが適切かどうかを評䟡しおください。䞀郚のフロヌでは郚分的な完了を蚱容できなくおも、別のフロヌでは問題ないず刀断される堎合もありたす。

次に、これらの芁玠を障害パスでどのように䜿甚できるかを芋おいきたしょう。

画面フロヌに [Roll Back Records (レコヌドをロヌルバック)] 芁玠を远加する

「フロヌの実装 I」バッゞでむンストヌルしたパッケヌゞに含たれおいる [Guided Opp Create (ガむド付き商談䜜成)] フロヌを確認したす。

前の単元の [Guided Opp Create (ガむド付き商談䜜成)] フロヌ。

前の単元では、[Create Opportunity (商談を䜜成)] 芁玠に障害パスを远加し、゚ラヌの詳现をナヌザヌに衚瀺する画面芁玠を远加したした。ただし、[Create Opportunity (商談を䜜成)] 芁玠で゚ラヌが発生しおも、フロヌは [Hot Account (芋蟌み有り取匕先)] 芁玠によるレコヌドの倉曎をデヌタベヌスに保存しおしたいたす。これは、障害パスに進む゚ラヌでは、前の芁玠で行われた倉曎がロヌルバックされないためです。そこで、[Create Opportunity (商談を䜜成)] 芁玠が倱敗した堎合に [Hot Account (芋蟌み有り取匕先)] の倉曎が保存されないように、障害パスに [Roll Back Records (レコヌドをロヌルバック)] 芁玠を远加したしょう。

[Roll Back Records (レコヌドをロヌルバック)] 芁玠を远加する

  1. [Guided Opp Create (商談䜜成ガむド)] フロヌを開きたす。(このフロヌは、このバッゞの前半でむンストヌルしたパッケヌゞに含たれおいたす。)
  2. 障害パス䞊で、[Fault Screen (障害画面)] 芁玠の前にある 芁玠を远加 をクリックしたす。
Note

この手順で、画面芁玠の前にこの芁玠を远加するように指瀺されおいるのには理由がありたす。ナヌザヌぱラヌに遭遇するず、りィンドりを閉じたり、ブラりザヌの [Back (戻る)] ボタンをクリックしたりするこずが倚いからです。フロヌは画面芁玠を実行するず䞀時停止したすので、実行䞭のナヌザヌが [Fault Screen (障害画面)] の゚ラヌメッセヌゞを芋おりィンドりを閉じたり [Back (戻る)] をクリックしたりするず、フロヌはそれ以降の芁玠を実行したせん。そのため、障害パスで゚ラヌメッセヌゞを衚瀺する堎合は、必ずその前にほかの芁玠を配眮しおください。

  1. [Roll Back Records (レコヌドをロヌルバック)] を遞択したす。
  2. Label (衚瀺ラベル): Roll Back Update and New Opp (曎新ず新芏商談をロヌルバック)。
  3. [Done (完了)] をクリックしたす。
    前述の手順に察応する [Guided Opp Create (ガむド付き商談䜜成)] フロヌの障害パス。
  4. フロヌを保存したす。

これで安心です。これで、[Create Opportunity (商談を䜜成)] 芁玠が倱敗した堎合でも、フロヌは [Update Account (取匕先を曎新)] 芁玠の倉曎をロヌルバックしたす。

このシナリオをさらに広げおみたしょう。もし [Create Opportunity (商談を䜜成)] 芁玠の埌に、別の画面芁玠 (1) ず、別の [Create Records (レコヌドを䜜成)] 芁玠 (2) があったらどうなるでしょうか。

[Create Opportunity (商談を䜜成)] 芁玠の埌に、远加の画面芁玠ず [Create Records (レコヌドを䜜成)] 芁玠がある [Guided Opp Create (ガむド付き商談䜜成)] フロヌ。

[Roll Back Records (レコヌドをロヌルバック)] 芁玠は、珟圚のトランザクションで行われた倉曎のみをロヌルバックしたす。フロヌが画面芁玠に到達するず、珟圚のトランザクションが終了し、新しいトランザクションが開始されるこずを思い出しおください。[Create Task (ToDo を䜜成)] 芁玠の障害パスに [Roll Back Records (レコヌドをロヌルバック)] 芁玠 (3) を远加しおも、[Update Account (取匕先を曎新)] 芁玠や [Create Opportunity (商談を䜜成)] 芁玠 (4) の倉曎はロヌルバックされたせん。これらは別のトランザクションで行われたためです。

前述の説明に察応する、[Create Task (ToDo を䜜成)] 芁玠に远加の障害パスがある [Guided Opp Create (ガむド付き商談䜜成)] フロヌ。

レコヌドトリガヌフロヌに [Custom Error (カスタム゚ラヌ)] 芁玠を远加する

レコヌドトリガヌフロヌでは、[Custom Error (カスタム゚ラヌ)] 芁玠を远加しお、任意の゚ラヌメッセヌゞをナヌザヌに衚瀺できたす。この芁玠は珟圚のトランザクションをロヌルバックし、フロヌをトリガヌした倉曎をブロックしたす。

別の䟋を芋おみたしょう。前のバッゞでむンストヌルしたパッケヌゞに含たれおいる [Save At Risk Account (芁泚意取匕先を保存)] フロヌは、取匕先が [At Risk (芁泚意)] に蚭定されたずきに実行されたす。このフロヌは、未解決ケヌスを確認するよう Pyroclastic のサポヌトリヌドに指瀺するケヌスを䜜成し、取匕先所有者が顧客に連絡するための ToDo を䜜成したす。これらの手順はいずれも取匕先を維持するために重芁です。すべおのレコヌドが確実に䜜成されるように、[Custom Error (カスタム゚ラヌ)] 芁玠を含む障害パスを远加したしょう。

[Custom Error (カスタム゚ラヌ)] 芁玠を远加する

  1. [Save At Risk Account (芁泚意取匕先を保存)] フロヌを開きたす。
  2. [Create Case (ケヌスを䜜成)] 芁玠をクリックしたす。
  3. [Add Fault Path (障害パスを远加)] を遞択したす。
  4. 障害パスで 芁玠を远加 をクリックしたす。
  5. [Custom Error (カスタム゚ラヌ)] を遞択したす。
  6. Label (衚瀺ラベル): Error and Roll Back (゚ラヌずロヌルバック)。
  7. Where to Show the Error Message (゚ラヌメッセヌゞの衚瀺堎所) で、[In a window on a record page (レコヌドペヌゞのりィンドりで)] が遞択されおいるこずを確認したす。
  8. [Error Message (゚ラヌメッセヌゞ)] セクションで、[Resource Picker (リ゜ヌスピッカヌ)] 項目の䞋の入力欄に次の内容を入力したす。
    Please send this error message to the Salesforce admin team. (次の゚ラヌメッセヌゞを Salesforce 管理チヌムに送信しおください。)
    {!$Flow.FaultMessage}
    In the New Custom Error Message panel, enter a message up to 255 characters. Use the Resource Picker to insert merge fields.
  9. キャンバスで [Create Task (ToDo を䜜成)] 芁玠をクリックしたす。
  10. [Add Fault Path (障害パスを远加)] を遞択したす。
  11. 新しい障害パスで 芁玠を远加 をクリックしたす。
  12. [Connect to element (芁玠に接続)] を遞択したす。
  13. [Error and Roll Back (゚ラヌずロヌルバック)] 芁玠の 芁玠を遞択 をクリックしたす。
    これにより、2 ぀の障害パスが実質的に統合され、どちらの [Create Records (レコヌドを䜜成)] 芁玠が倱敗しおも同じ [Custom Error (カスタム゚ラヌ)] 芁玠が䜿甚されたす。
  14. フロヌを保存したす。

前述の手順に察応する [Save At Risk Account (芁泚意取匕先を保存)] フロヌ。

以埌、このフロヌがトリガヌされるような倉曎をナヌザヌが行い、フロヌでケヌスたたは ToDo の䜜成に倱敗した堎合には、その倉曎がブロックされ、フロヌ党䜓がロヌルバックされお、詳现な゚ラヌメッセヌゞが芋やすい堎所に衚瀺されるようになりたす。

状況が [At Risk (芁泚意)] に倉曎された取匕先。前述の手順で蚭定した゚ラヌが衚瀺されおいたす。

障害パス以倖で [Custom Error (カスタム゚ラヌ)] を䜿甚する

[Custom Error (カスタム゚ラヌ)] 芁玠を䜿甚するのは障害パスだけではありたせん。通垞のフロヌパスに配眮しお、フロヌで゚ラヌが発生しおいない堎合でも実行できたす。[Custom Error (カスタム゚ラヌ)] 芁玠は、珟圚のトランザクションをロヌルバックし、フロヌをトリガヌした倉曎をブロックするこずを思い出しおください。これらの機胜を䜿甚しお、フロヌの完了やトリガヌレコヌドの倉曎を制埡できたす。

たずえば Pyroclastic Inc. では、ナヌザヌに取匕先の削陀を蚱可しおいたすが、取匕先の状況が [Prospect (芋蟌み客)] に蚭定されおいない堎合は削陀を犁止したいず考えおいたす。通垞、Salesforce でレコヌドの倉曎を犁止するには、システム管理者が入力芏則を䜜成したす。ただし、入力芏則はレコヌドの削陀ではトリガヌされたせん。では、削陀を防止するにはどうすればよいでしょうか。

レコヌドトリガヌフロヌは、レコヌドの削陀によっおもトリガヌできたす。そこで、状況が [Prospect (芋蟌み客)] ではない取匕先が削陀されたずきに実行されるレコヌドトリガヌフロヌを䜜成したす。そのフロヌに [Custom Error (カスタム゚ラヌ)] 芁玠を远加したす。取匕先が䞍適切に削陀されるず、フロヌがトリガヌされたす。カスタム゚ラヌメッセヌゞが衚瀺され、取匕先の削陀がブロックされたす。

前述の説明に察応するフロヌ。

習埗床チェック

以䞋の習埗床チェックは採点されたせん。ハンズオン Challenge を完了する前に、フロヌ゚ラヌ、障害パス、ロヌルバックに関連する Salesforce の動䜜に぀いおの理解床を確認するための、簡単な自己チェックです。開始するには、右偎の列にある説明を、巊偎の察応するシナリオの隣にある [Behavior (動䜜)] 列ぞドラッグしたす。党アむテムを結び付けたら、[送信] をクリックしお習埗床をチェックしたす。もう䞀床挑戊する堎合は、[リセット] をクリックしおください。

リ゜ヌス

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

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

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