RayKit よくある質問

プロセスビルダーのTIPSと注意点

ご注意:Salesforceは、株式会社セールスフォース・ドットコムが提供するCRMなどのクラウドサービスです。この記事では、グレープシティにおけるSalesforceの利用から知りえたノウハウを公開しています。正確な情報や最新の情報は、Salesforceのドキュメントを参照してください。

Salesforceのプロセスビルダー(Lightningプロセスビルダー)の注意点です。

1. プロセスビルダーのプロセスの実行権限

プロセスビルダーは、プロセスを起動したユーザの権限で実行されます。たとえばユーザAがオブジェクトBのレコードを変更したタイミングで、プロセスビルダーを使って別のオブジェクトBやメール送信を実行したい場合があるとします。このユーザAがオブジェクトBの更新権限やメールの送信権限を持たない場合、プロセスの実行は失敗します。

別の場合、たとえばユーザAがオブジェクトBを変更したとき、プロセスビルダーでChatterへの自動投稿を構成したとします。Chatterの投稿者はプロセスの作成者ではなく、ユーザAになります。

システム権限で自動処理を実行するには、プロセスビルダーではなくApexトリガーを使用します。もしくは、ワークフローの場合は「デフォルトのワークフローユーザ」にシステム管理者権限を持つユーザを指定できます。

2. 「レコードが追加されたとき」で新規にプロセスを作る

新規にプロセスを作るとき、「プロセスを開始するタイミング」で「レコードが追加されたとき」を選択できません。「プロセスを開始するタイミング」に「レコードが変更されたとき」を選んで新規にプロセスを作り始めたのち、「オブジェクトを選択してプロセスを開始するタイミングを指定」で「レコードを作成したときのみ」を選択します。

3. 構成済みの条件の演算子を区別できない

Salesforceの画面を日本語で使用しているとき、プロセスビルダーのプロセスの構成済みの条件の演算子が「次の文字列と一」まで表示され、「次の文字列と一致する」なのか「次の文字列と一致しない」なのか、判断が難しい場合があります。このような場合、次の対処があります。

  1. 作成済みのプロセスを確認する場合、ログインユーザの言語を一時的に英語に切り替えると「Equals」と「Does not equal」で判断ができます。ただし、英語の画面のまま操作すると後述(#4)の制限があります。
  2. 新規にプロセスを作ることができる場合、「条件を設定」で「次の文字列を一致する」のように肯定条件だけを使うことにします。そして、「ロジック」で「NOT」を使って条件を反転します。このようにすると、英語に切り替える手間を減らすことができます。ただし、このルールを他のシステム管理者に強制する方法はないので、トラブルシューティング時には英語に切り替える方法が有効かもしれません。

4. 「レコードを作成」や「レコードを更新」の項目名が現在の言語のラベルで保存される

プロセスの「ルール適用時のアクション」で「レコードを作成」や「レコードを更新」を指定するとき、レコードのどの項目のどの値を変更するのか指定できます。Salesforceの言語を英語で操作し、その後日本語に切り替えたとき、項目名は英語のままで表示されます。逆も同様なので、設定の言語を揃えたい場合は事前に統一しておく必要があります。

5. プロセスビルダーの画面が一部だけ英語で表示される

Salesforceを日本語で使用しているにもかかわらず、プロセスビルダーの画面の一部が英語で表示される場合があります。これには、次の原因が考えられます。

  • 単にまだ翻訳されていない。「Cancel(キャンセル)」「Choose(選択)」「Use this Formula(この数式を使う)」のようにボタン名などが英語になる。
  • 日本語名ではなく英語名が表示される。たとえば「取引先」オブジェクトを選択した直後に「Account」と表示される。
  • ラベル名ではなくAPI参照名が表示される。たとえば「取引先名」を選んだ直後に「[Account].Name」と表示される。

いずれもプロセスビルダーの既定の動作と考えられるので、回避する方法がありません。

6. 組織のプロセスの上限

組織全体でフローとプロセスの合計は1,000個の上限があります。これに加えて、Salesforceのエディションごとに契約上のプロセス数の上限が存在する場合があります。1オブジェクトにつき、50個までという上限もあります。

たとえば、あるオブジェクトで製品Aと製品Bの処理をプロセスビルダーで自動化したい場合があるとします。製品Aと製品Bで別々にプロセスを作るよりも、1つのプロセス内で製品Aと製品Bに処理を分岐するほうが、プロセスの総数を節約できます。分岐のための条件ノードの最大数は200です。

7. エディションごとの有効なプロセス数の上限

Essential EditionとProfessional Editionでは有効なプロセスの数が5つに制限されています。それら以外のエディションは500です。

8. エラーメールの送信先

プロセスがエラーになったとき、エラーメールの送信先は「プロセスを有効化したユーザ」です。たとえば、ユーザAがプロセスを作成し、その後ユーザBがそのプロセスを有効化したとき、エラーメールはユーザBに送信されます。プロセスの一覧画面では、どのユーザがプロセスを作成、有効化したか判断することはできません。

プロセスビルダーのプロセス一覧は「私のプロセス(My Processes)」と表記されていますが、他のユーザが作成したプロセスも表示されます。

エラーメールの送信先は「プロセスの自動化設定」で「プロセスまたはフローを最後に変更したユーザ。」または「Apex例外メールの受信者」から選択できます。既定値は「プロセスまたはフローを最後に変更したユーザ。」です。

9. スケジュール済みのプロセス

スケジュール済みのプロセスの一覧は、「設定 > ビルド > 作成 > ワークフローと申請 > フロー」の「一時停止中および待機中のインタビュー」に表示されます。

10. 商談の成立とロストの判定に「フェーズ」よりも「成立フラグ」を使う

フェーズには「成立(直営ショップ)」「成立(販売店)」のように、複数の成立やロストを定義して使用できます。このような場合、「フェーズ」で判定しようとすると条件が複雑になるうえ、定義が変わった時にプロセスを変更する必要が生じます。
「フェーズ」の代わりに代わりに、「成立フラグ」を使用すると複数の成立や複数のロストに対応できます。

11. 特定の項目が変更されたときだけプロセスを起動したいが、レコードの別の項目が変更されてもプロセスが起動してしまう

たとえば、ある商談が成立したとき、プロセスを使ってChatterに「おめでとう」と投稿したいと想定します。プロセスの起動条件に「商談の成立フラグがTRUE」という条件だけを指定すると、商談が成立したときだけでなく、成立後に商談名が変更された場合にもプロセスが起動してしまいます。これを避けるには、「成立フラグが変更済み TRUE」という条件も合わせて設定します。

12. レコードを削除できない

プロセスビルダーではレコードの削除はできません。代わりの次の方法を検討します。

  • レコードを削除するApexを呼び出す。
  • 代わりにフロー(Visual Workflow)を使う。

13. メールテンプレートの「使用回数」が更新されない

プロセスビルダーからメールアラートでメールを送信するとき、メールテンプレートの「使用回数」は更新されません。したがって、メールテンプレートの「使用回数」をもとにプロセスビルダーでメールが送信されたかどうかを判断することはできません。なお、Visual Workflowでメールアラートで送信する場合も同様です。

14. 特定の組織だけでプロセスを実行する

たとえば本番環境ではプロセスを実行するが、Sandboxでは実行したくない場合、「このアクショングループの条件を定義」で「数式の評価がtrueになる」を選び、「数式の構築」に「$Organization.Id = "組織ID"」のように記入します。「組織ID」の部分は、実際の組織のIDを記入します。Sandboxでは組織IDが異なるので、実行されません。

15. ToDoを通知できない

プロセスビルダーでToDoを作成した場合は、任命先に通知することができません。通知が必須の場合は、代わりにワークフロールールの使用を検討します。

16. 使用できるオブジェクト

プロセスビルダーは、標準オブジェクトやカスタムオブジェクトのレコードの追加や変更をきっかけにプロセスを実行できます。外部オブジェクトやBigObjectのレコード追加や変更をきっかけにすることはできません。また、プロセスビルダーのみで外部オブジェクトやBigObjectのレコードを参照することはできません。

17. 参照項目の未入力をチェックできない

プロセスビルダーには項目のNullを判定するための条件が3つありますが、参照項目の未入力をチェックできるのは「数式の評価がtrueになる」場合だけです。

  • アクションの実行条件が「条件を満たしている」で、条件の演算子が「Null」
  • アクションの実行条件が「条件を満たしている」で、条件の演算子が「次の文字列と一致する」で、種別が「グローバル変数」、値が「$GlobalConstant.Null」
  • アクションの実行条件が「数式の評価がtrueになる」で、たとえば商談の取引先の場合「[Opportunity].Account = NULL」

18. ドラッグ&ドロップ操作で条件を並び替えできる

プロセスの条件はマウスのドラッグ&ドロップ操作によって、順序を並び替えることができます。一方、アクションを並び替えることはできません。

19. Chatterの投稿先にプロセスを開始したレコードを選べない場合

プロセスの「ルール適用時のアクション」の「Chatterに投稿」で投稿先に「ユーザ」「Chatterグループ」は選べるが、「このレコード」を選べない場合、そのオブジェクトの「フィード追跡」を有効化する必要があります。

20. プロセス数式の最大文字数

プロセスで使う数式は最大3,000文字までです。数式項目の場合の最大4,000文字よりも短くなります。

21. 「プロセスを開始するタイミング」と「オブジェクト」が同じ時の実行順序

作成日時の新しいものから先に実行されます。作成日時の古いプロセスに新しいバージョンを作っても
、プロセスの最初のバージョンの作成日時が基準になります。これはプロセスの古いバージョンを削除しても変わりません。

この順序は、実際に開発環境で検証した結果でありドキュメントの記載は見つけることができませんでした。プロセスを開始するタイミングとオブジェクトが同じ時の実行順序は将来変わるかもしれません。できれば、プロセスを開始するタイミングが同じ場合は1つのプロセスにまとめるか、「呼び出し可能なプロセス」としてプロセス間で親子関係を作るのが望ましいです。それが難しい場合は、プロセスの作成順に連番を振ると管理やデバッグが容易になるかもしれません。

22. スケジュール済みのアクションと無効化されたユーザ

プロセスビルダーでは「スケジュール済みのアクション」を使って、たとえばプロセスの起動後に指定した日のn日後にアクションを実行できます。このとき、プロセスを起動したユーザがスケジュール済みのアクションを実行する日までに無効化された場合、スケジュール済みのアクションは実行できません。

スケジュール済みのアクションを実行できなかった時、プロセスを有効化したユーザに次のようなメールで通知されます。

すべての待機フローインタビューには、インタビューが待機を開始する原因となったユーザが関連付けられています。そのユーザが無効な場合、インタビューは再開できません。
ユーザ名 (ユーザID) が無効なため、次のフローインタビューを削除してください。

一方、ワークフローの場合は「プロセスの自動化設定」を使って、ユーザが無効の場合に代わりに使用するデフォルトのユーザを指定できます。

以上

0 コメント

記事コメントは受け付けていません。