mcpField
S
sf-flow

sf-flow

github.com/clientell-ai開発21101 回インストール33 週間前に更新
リポジトリ

sf-flow について

sf-flowは、SalesforceのFlow XML生成とProcess Builder移行を支援するスキルです。Salesforceの自動化を構築・保守する開発者向けに、エラー処理、依存関係のデプロイ、カバレッジ確認を案内します。

主な機能

  1. 01.flow-meta.xmlファイルの生成
  2. 02Process Builderの移行と統合
  3. 03複数のFlowタイプに対応
  4. 04DMLとコールアウトへの障害パス追加
  5. 05カスタム権限メタデータの生成
  6. 06Flowテストカバレッジの確認

活用シーン

  1. 01Process Builderを統合したFlowへ変換
  2. 02レコードトリガーFlowや画面Flowの作成
  3. 03DMLエラーのログ記録や通知経路の追加
  4. 04Flowをデプロイして分岐カバレッジを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/clientell-ai/salesforce-skills --skill sf-flow

インストール後、Claude Code で/sf-flowを入力して読み込まれたか確認します。

同梱ファイルreferences/flow-elements.mdreferences/global-variables.md

詳細

フロージェネレーターとプロセスビルダーマイグレーター

Salesforce Flow のスペシャリストとして、適切な .flow-meta.xml ファイルを生成し、Process Builder を最適化された Flow に移行します。

Flow のベストプラクティス

アーキテクチャルール
  • オブジェクトごとにレコードトリガーフローは最大 3 つ(保存前、保存後、削除前)
  • すべてのレコードトリガーフローで、カスタム権限によるバイパスメカニズムを使用します
  • Process Builder のロジックを統合します。安易に 1 対 1 で変換しないでください
  • 再利用可能なロジックにはサブフローを使用します
  • すべての DML 要素とコールアウト要素にフォールトコネクタを設定します
バイパスパターン

すべてのレコードトリガーフローは、次を確認する Decision 要素から開始します。

<decisions>
    <name>Check_Bypass</name>
    <label>Check Bypass</label>
    <defaultConnector>
        <targetReference>Main_Logic</targetReference>
    </defaultConnector>
    <defaultConnectorLabel>Continue</defaultConnectorLabel>
    <rules>
        <name>Is_Bypassed</name>
        <conditionLogic>or</conditionLogic>
        <conditions>
            <leftValueReference>$Permission.Bypass_Automation</leftValueReference>
            <operator>EqualTo</operator>
            <rightValue>
                <booleanValue>true</booleanValue>
            </rightValue>
        </conditions>
        <label>Bypassed</label>
    </rules>
</decisions>
Flow の種類
  1. レコードトリガーフロー(Process Builder と Workflow Rules を置き換えます)

    • before save — 項目の更新(DML が不要で、最も効率的です)
    • after save — 関連レコードの更新、コールアウト、プラットフォームイベント
    • before delete — 検証、カスケード操作
  2. 画面フロー — ユーザー向けのウィザード、ガイド付きプロセス

  3. 自動起動フロー — Apex、他のフロー、またはプラットフォームイベントから起動

  4. スケジュール済みフロー — 時間ベースのバッチ処理

Flow XML 構造
<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>62.0</apiVersion>
    <label>Account Before Save</label>
    <processType>AutoLaunchedFlow</processType>
    <triggerType>RecordBeforeSave</triggerType>
    <objectType>Account</objectType>
    <triggerOrder>1</triggerOrder>
    <status>Active</status>
    
</Flow>

Process Builder の移行

移行手順
  1. インベントリ:force-app/main/default/flows/ から Process Builder のメタデータを読み取ります
  2. 分析:すべての条件ノードとアクションを特定します
  3. 統合:同じオブジェクトの関連する PB を 1 つのフローにまとめます
  4. 生成:次の要素を含む最適化された Flow XML を作成します
    • エントリ時のバイパス判定
    • 統合した条件を Decision 要素として設定
    • 項目の更新を Assignment 要素(保存前)または Record Update 要素(保存後)として設定
    • 関連レコードの更新を Get 要素と Update 要素として設定
  5. 依存関係:最初にカスタム権限とカスタムメタデータをデプロイします
  6. デプロイ:sf project deploy start -d force-app/main/default/flows/
  7. 確認:フローが有効で、PB が無効化されていることを確認します
よくある PB → Flow の変換
Process BuilderFlow での対応
条件ノードDecision 要素
項目の更新(同じレコード)保存前の Assignment
項目の更新(関連レコード)保存後の Get Records + Update Records
レコードの作成保存後の Create Records
Email Alert保存後のアクション(Email Alert)
Chatter への投稿保存後の Create Records(FeedItem)
Apex の呼び出し保存後のアクション(Apex)
スケジュール済みアクション保存後のフロー上のスケジュール済みパス

エラー処理

  • すべての DML 要素とコールアウト要素にフォールトコネクタを追加します
  • フォールトパスではログレコードを作成するか、管理者に通知します
  • エラーログでは $Flow.FaultMessage と $Flow.InterviewGuid を使用します
Flow の全種類
  1. レコードトリガー — 保存前、保存後、削除前
  2. 画面フロー — 画面、入力、選択肢を備えたユーザー向けのウィザード
  3. 自動起動 — Apex、他のフロー、または REST API から起動
  4. スケジュール済み — 時間ベースのバッチ処理(1 日あたり最大 250K 件のインタビュー)
  5. プラットフォームイベントトリガー — Platform Events を購読
  6. オーケストレーション — ステージを含む複数ステップの承認/業務プロセス
グローバル変数
変数説明例
$Recordトリガーされたレコード(すべての項目){!$Record.Name}
$Record__Prior以前の項目値{!$Record__Prior.Status__c}
$Apiセッション/サーバー情報{!$Api.Session_ID}
$Organization組織情報{!$Organization.Name}
$Profile現在のユーザーのプロファイル{!$Profile.Name}
$User現在のユーザーの項目{!$User.Email}
$Flow実行時情報{!$Flow.FaultMessage}
$Permissionカスタム権限の確認{!$Permission.Bypass_Automation}
$Labelカスタム表示ラベル{!$Label.Error_Message}
$Setupカスタムメタデータ{!$Setup.Config__mdt.Value__c}
画面フローの要素
  • 選択肢セット:静的な選択肢、SOQL による動的な選択肢、選択リストの選択肢
  • 条件付き表示:条件に基づいてコンポーネントを表示または非表示にします
  • ステージ:ガイド付きフロー用の複数ステップの進行状況インジケーター
  • 検証:コンポーネント単位および画面単位の検証数式
コレクション操作
  • ループ:ループ変数を使ってコレクションを反復処理します
  • コレクションに追加:Add 演算子を使う割り当て要素
  • フィルター:ループ内の Decision 要素でフィルター済みコレクションを構築します
スケジュール済みパス

Workflow の時間ベースのアクションを置き換えるには、レコード項目値を基準とした時間オフセット(時間、日数)を指定して、保存後フローにスケジュール済みパスを追加します。

フローテストのカバレッジ
  • フローでテストカバレッジを追跡できるようになりました(FlowTestCoverage オブジェクト)
  • すべての Decision 分岐を実行するフローテストを作成します
  • 次のコマンドでカバレッジを確認します:SELECT FlowVersionId, NumElementsCovered, NumElementsNotCovered FROM FlowTestCoverage

注意点

  • フローインタビューの上限はスケジュール済みフローで 1 日あたり 250,000 件です。計画に反映してください
  • フロー内のループでの DML は、Apex と同様にガバナ制限に達します
  • 保存前フローでの$Recordの変更は、レコードが保存されるときにのみ確定します
  • 数式項目には、同じフロー内で先に行われた変更は反映されません
  • スケジュール済みフローはシステムコンテキストで実行されます。WITH USER_MODE に相当するものはありません
  • フローには、失敗したコールアウトに対するネイティブの再試行メカニズムがありません
  • 大規模なデータセットでは、コレクション変数が大量のメモリを消費することがあります
  • サブフローの変数マッピングでは、型を正確に一致させる必要があります。null や型の不一致があると実行時エラーが発生します
  • カスタム権限のチェック結果はキャッシュされるため、最近の変更がすぐには反映されないことがあります

ワークフロー

  1. 移行する場合:Glob/Read ツールで既存の PB メタデータを読み取ります
  2. 要件または既存の自動化ロジックを分析します
  3. .flow-meta.xml ファイルを生成します
  4. 必要なカスタム権限メタデータを生成します
  5. 依存関係を先にデプロイし、その後フローをデプロイします
  6. フローテストのカバレッジを確認します:FlowTestCoverageをクエリして、すべての Decision 分岐が実行されていることを確認します
  7. 検証手順を提示します

参考資料

  • フロー要素 — すべての要素タイプ、コネクタ、障害処理に関する完全な XML リファレンス
  • グローバル変数 — アクセス可能なすべての項目を含む、$Variableの完全なリファレンス

コメント