mcpField
S
sf-industry-commoncore-omniscript

sf-industry-commoncore-omniscript

github.com/jaganpro開発424989 回インストール26 週間前に更新
リポジトリ

sf-industry-commoncore-omniscript について

sf-industry-commoncore-omniscriptは、OmniStudio OmniScriptの設計、生成、検証を支援するスキルです。ガイド付きの複数ステップのプロセスを構築するSalesforceチーム向けに、要素設定、データフロー、依存関係、デプロイ、テストを扱います。

主な機能

  1. 01ステップ形式のOmniScript生成
  2. 02要素と検証ルールの設定
  3. 03コンポーネント依存関係の分析
  4. 04共有JSONデータフローの追跡
  5. 05検証基準に基づく設計評価

活用シーン

  1. 01ガイド付きの複数ステップ業務プロセスの構築
  2. 02Integration ProceduresとDataRaptorsへの参照確認
  3. 03デプロイ前のOmniScriptレビュー
  4. 04条件分岐と入力検証のテスト

インストール

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

$npx skills add https://github.com/jaganpro/sf-skills --skill sf-industry-commoncore-omniscript

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

CREDITS.md
LICENSE
assets/
omni-process-element-step.json
omni-process-element-text-block.json
omni-process-omniscript.json
references/
best-practices.md
element-types.md

詳細

sf-industry-commoncore-omniscript:OmniStudio OmniScript の作成と検証

宣言型のステップベースのガイド付きデジタルエクスペリエンスを構築する、OmniStudio のエキスパート OmniScript ビルダーです。OmniScript は OmniStudio における画面フローに相当します。コードを使わずに、入力を収集し、サーバー側のロジック(Integration Procedures、DataRaptors)をオーケストレーションして、結果をユーザーに提示する、複数ステップのインタラクティブなプロセスです。

クイックリファレンス

スコア:6 カテゴリーで 120 ポイント。しきい値:✅ 90 以上(デプロイ) | ⚠️ 67~89(要レビュー) | ❌ 67 未満(ブロック — 修正が必要)


主な責務

  1. OmniScript の生成:要件に基づいて適切に構成された OmniScript を作成し、各ステップに適切な要素タイプを選択します
  2. 要素の設計:各要素の PropertySetConfig JSON を構成し、正しいデータバインディング、検証、条件付きロジックを設定します
  3. 依存関係の分析:デプロイ前に、Integration Procedures、DataRaptors、埋め込み OmniScript へのすべての参照をマッピングします
  4. データフローの分析:OmniScript の JSON 構造内のデータを追跡します。事前入力からユーザー入力、最終保存アクションまでをたどります

重要:オーケストレーションの順序

sf-industry-commoncore-omnistudio-analyze → sf-industry-commoncore-datamapper → sf-industry-commoncore-integration-procedure → sf-industry-commoncore-omniscript → sf-industry-commoncore-flexcard(現在の項目:sf-industry-commoncore-omniscript)

OmniScript は Integration Procedures と DataRaptors を使用します。これらを最初に構築してください。FlexCard から OmniScript を起動する場合があります。FlexCard はその後に構築してください。開始前に sf-industry-commoncore-omnistudio-analyze を使用して、依存関係ツリー全体をマッピングしてください。


主なポイント

ポイント詳細
Type/SubType/Language の組み合わせOmniScript を一意に識別します。3 つの値すべてが必須で、複合キーを構成します。例:Type=ServiceRequest、SubType=NewCase、Language=English
PropertySetConfigすべての要素設定を含む JSON の塊です。レイアウト、データバインディング、検証ルール、条件付き表示などを設定します。実際のロジックはここに記述します
Core 名前空間IsIntegrationProcedure = false(同等の値は OmniProcessType='OmniScript')の OmniProcess です。要素は子の OmniProcessElement レコードです
要素の階層要素は Level/Order フィールドを使ってツリー構造を表します。Level 0 = ステップ、Level 1 以上 = ステップ内の要素です。Order によって各レベル内の順序が決まります
バージョン管理複数のバージョンを作成できますが、Type/SubType/Language の組み合わせごとに有効にできるのは 1 つだけです。IsActive フィールドで有効化します
データ JSONOmniScript はすべてのステップで単一の JSON データ構造を受け渡します。要素はマージフィールド構文を使って、この共有 JSON からデータを読み取り、書き込みます

ワークフロー設計(5 フェーズのパターン)

フェーズ 1:要件の収集

構築前に、代替手段を検討してください:OmniScript は、複雑な複数ステップのガイド付きプロセスに最適です。シンプルな単一画面でのデータ入力には、画面フローを検討してください。インタラクションを伴わないデータ表示には、FlexCard を検討してください。

ユーザーに確認し、以下の情報を収集します。

  • Type:プロセスのカテゴリー(例:ServiceRequest、Enrollment、ClaimSubmission)
  • SubType:具体的なバリエーション(例:NewCase、UpdateAddress、FileAppeal)
  • Language:通常は English。多言語対応が必要な場合を除きます
  • 目的:この OmniScript がユーザーを案内する業務プロセス
  • 対象 org:デプロイ先の Org エイリアス
  • データソース:クエリまたは更新が必要なオブジェクト/API

次に:既存の OmniScript を確認して重複を避け、再利用可能な Integration Procedures または DataRaptors を特定し、依存関係の連鎖をマッピングします。

フェーズ 2:設計と要素の選択

各ステップを設計し、インタラクションのパターンに適した要素タイプを選択します。

コンテナー要素
要素タイプ目的主な設定
ステップUI 要素グループの最上位コンテナーです。各ステップはウィザードのページですchartLabel、knowledgeOptions、show(条件付き表示)
条件ブロック条件に基づいて要素グループを表示/非表示にしますconditionType、show 式
ループブロックデータリストを反復処理し、各項目の要素を描画しますloopData(配列への JSON パス)
編集ブロック表形式データのインライン編集用コンテナーですeditFields、dataSource
入力要素
要素タイプ目的主な設定
テキスト1 行のテキスト入力label、placeholder、pattern(正規表現による検証)
テキストエリア複数行のテキスト入力label、maxLength、rows
数値書式設定可能な数値入力label、min、max、step、format
日付日付ピッカーlabel、dateFormat、minDate、maxDate
日時日付と時刻のピッカーlabel、dateFormat、timeFormat
チェックボックス真偽値の切り替えlabel、defaultValue
ラジオ単一選択用のラジオボタングループlabel、options(静的またはデータ駆動型)
選択ドロップダウン選択label、options、optionSource(静的/データ)
複数選択複数項目の選択label、options、maxSelections
入力補完検索/オートコンプリート入力label、dataSource、searchField、minCharacters
署名署名の入力パッドlabel、penColor、backgroundColor
ファイルファイルのアップロードlabel、maxFileSize、allowedExtensions
通貨ロケールに応じた書式設定の通貨入力label、currencyCode、min、max
メール形式検証付きのメール入力label、placeholder
電話番号マスキング付きの電話番号入力label、mask、placeholder
URL形式検証付きの URL 入力label、placeholder
パスワードマスクされたテキスト入力label、minLength
範囲スライダー入力label、min、max、step
時刻時刻ピッカーlabel、timeFormat
表示要素
要素タイプ目的主な設定
テキストブロック静的コンテンツの表示(HTML 対応)textContent、HTMLTemplateId
見出しセクションの見出しtext、level(h1-h6)
集計計算されたサマリーの表示aggregateExpression、format
開示展開/折りたたみ可能なコンテンツlabel、defaultExpanded
画像画像の表示imageURL、altText
チャートデータの可視化chartType、dataSource
アクション要素
要素タイプ目的主な設定
DataRaptor 抽出アクションSalesforce からデータを取得しますbundle、inputMap、outputMap
DataRaptor 読み込みアクションSalesforce にデータを送信しますbundle、inputMap
Integration Procedure アクションサーバー側の Integration Procedure を呼び出しますipMethod(Type_SubType)、inputMap、outputMap、remoteOptions
リモートアクションApex @RemoteAction または REST を呼び出しますremoteClass、remoteMethod、inputMap
ナビゲーションアクションページ移動またはリダイレクトtargetType、targetId、URL
DocuSign エンベロープアクションDocuSign エンベロープを起動しますtemplateId、recipientMap
メールアクションメールを送信しますemailTemplateId、recipientMap
ロジック要素
要素タイプ目的主な設定
値の設定変数の割り当てとデータ変換elementValueMap(キーと値のペア)
検証カスタムメッセージを使用した入力検証ルールvalidationFormula、errorMessage
数式数式表現を使用した値の計算expression、dataType
送信アクション収集したデータの最終送信postMessage、preTransformBundle、postTransformBundle
フェーズ 3:生成と検証
# Verify no duplicate Type/SubType/Language exists
sf data query -q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM OmniProcess WHERE Type='<Type>' AND SubType='<SubType>' AND Language='<Language>' AND OmniProcessType='OmniScript'" -o <org>

OmniScript の構築:

  1. Type、SubType、Language、OmniProcessType='OmniScript' を指定して OmniProcess レコードを作成します
  2. 各 Step の OmniProcessElement 子レコードを作成します(Level=0)
  3. Step 内の各要素について OmniProcessElement 子レコードを作成します(Level=1+。Order フィールド順)
  4. 各要素の PropertySetConfig JSON を設定します
  5. アクション要素を対応する Integration Procedure / DataRaptor に接続します

検証(厳格モード):

  • ブロック:Type/SubType/Language の欠落、循環する OmniScript の埋め込み、参照先の IP/DataRaptor の不備、必須の PropertySetConfig フィールドの欠落
  • 警告:要素のない Step、検証が設定されていない入力要素、アクションのエラーハンドリングの欠落、未使用のデータパス、深くネストされた要素(4 レベル超)

検証レポート形式(6 カテゴリのスコアリング、0~120):

Score: 102/120 ---- Very Good
-- Design & Structure: 22/25 (88%)
-- Data Integration: 18/20 (90%)
-- Error Handling: 17/20 (85%)
-- Performance: 18/20 (90%)
-- User Experience: 17/20 (85%)
-- Security: 10/15 (67%)
フェーズ 4:デプロイ
  1. 最初にすべての依存関係をデプロイします:DataRaptor、Integration Procedure、参照されている OmniScript
  2. OmniScript メタデータを取得またはデプロイします:
    sf project retrieve start -m OmniScript:<Name> -o <org>
    sf project deploy start -m OmniScript:<Name> -o <org>
    
  3. デプロイが成功した後に OmniScript のバージョンを有効化します
  4. 有効化を確認します:
    sf data query -q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM OmniProcess WHERE Type='<Type>' AND SubType='<SubType>' AND OmniProcessType='OmniScript' AND IsActive=true" -o <org>
    
フェーズ 5:テスト

さまざまなデータシナリオを使用して、すべてのパスを確認します:

  • 正常系:有効なデータですべてのステップを完了し、送信を確認します
  • 検証テスト:各入力で無効なデータを送信し、エラーメッセージを確認します
  • 条件テスト:すべての条件ブロックを実行し、表示/非表示のロジックを確認します
  • データの事前入力:DataRaptor Extract Action が要素に正しくデータを入力することを確認します
  • 後で再開:有効になっている場合は、再開機能をテストします
  • ナビゲーション:すべてのステップで戻る/進む/キャンセルの動作をテストします
  • エラーシナリオ:IP/DataRaptor の失敗をシミュレートし、エラーハンドリングを確認します
  • 埋め込み OmniScript:親 OmniScript と子 OmniScript の間のデータ受け渡しをテストします
  • 一括データ:Loop Block と Type Ahead 要素で大規模なデータセットをテストします

生成時のガードレール(必須)

アンチパターン影響正しいパターン
循環する OmniScript の埋め込み無限レンダリングループ依存関係ツリーをマッピングします。B が A を埋め込んでいる場合、A に B を埋め込まないでください
上限のない DataRaptor Extractパフォーマンスの低下フィルター条件を追加し、返されるレコード数を制限します
入力検証の欠落不正なデータ入力Validation 要素、または入力に pattern / required を追加します
Salesforce ID のハードコード組織間でのデプロイ失敗マージフィールドまたは Custom Settings/Metadata を使用します
エラーハンドリングのない IP Action検出されない失敗PropertySetConfig で showError と errorMessage を設定します
Text Block 内の大きな画像ページ読み込みの遅延最適化された URL を使用する Image 要素を使います
1 つの Step に多すぎる要素ユーザー体験の低下1 つの Step あたりの入力要素を 7~10 個に制限します
条件付き表示の欠落無関係な項目の表示show 式を使用して、該当しない要素を非表示にします

明示的に要求された場合でも、アンチパターンを生成しないでください。


スコアリング:6 カテゴリで 120 点

設計と構造 (25 点)
チェック点数基準
Type/SubType/Language が正しく設定されている53 つのフィールドすべてに意味のある値が設定されている
ステップの構成5論理的なグループ化、1 ステップあたり最大 7~10 要素
要素の命名5PascalCase 規約に従った説明的な名前
条件ロジック5条件ブロックと show 式の適切な使用
バージョン管理5クリーンなバージョン履歴、アクティブなバージョンは 1 つのみ
データ統合 (20 点)
チェック点数基準
DataRaptor 参照が有効5すべての Extract/Load バンドルが存在し、アクティブである
Integration Procedure 参照が有効5すべての IP アクションがアクティブな IP を参照している
入力/出力マップが正しい5要素とアクション間でデータが正しく流れている
データプリフィルが構成されている5ユーザー操作前に初期データが読み込まれる
エラー処理 (20 点)
チェック点数基準
アクション要素にエラー処理がある5すべての IP/DR アクションに showError が構成されている
ユーザー向けエラーメッセージ5明確で実行可能なエラーテキスト
必須入力の検証5すべての必須フィールドに検証ルールがある
フォールバック動作が定義されている5データソースが空を返した場合の適切な処理
パフォーマンス (20 点)
チェック点数基準
無制限のデータ取得がない5すべての DataRaptor Extract にフィルター/制限がある
遅延読み込みが構成されている5アクション要素は OmniScript の読み込み時ではなく、ステップ進入時に実行される
ステップあたりの要素数が妥当515 要素を超える Step がない
条件付きレンダリングが使用されている5該当しない場合は要素が非表示になる (単に不可視ではなく)
ユーザーエクスペリエンス (20 点)
チェック点数基準
論理的なステップフロー5ステップが自然なタスクの進行に従っている
入力ラベルとヘルプテキスト5すべての入力に明確なラベルと文脈に応じたヘルプがある
ナビゲーションコントロール5戻る、次へ、キャンセル、後で保存が適切に構成されている
レスポンシブレイアウト5モバイルとデスクトップのブレークポイント向けに要素が構成されている
セキュリティ (15 点)
チェック点数基準
クライアント側 JSON に機密データがない5パスワード、SSN、トークンはサーバー側に保持される
IP アクションがサーバー側処理を使用している5機密ロジックはクライアントの OmniScript ではなく Integration Procedure にある
フィールドレベルのアクセスが尊重されている5データアクセスがユーザープロファイル/権限セットと一致している

CLI コマンド

# List active OmniScripts
sf data query -q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM OmniProcess WHERE IsActive=true AND OmniProcessType='OmniScript'" -o <org>

# Query elements for a specific OmniScript
sf data query -q "SELECT Id,Name,ElementType,PropertySetConfig,Level,Order FROM OmniProcessElement WHERE OmniProcessId='<id>' ORDER BY Level,Order" -o <org>

# Retrieve OmniScript metadata
sf project retrieve start -m OmniScript:<Name> -o <org>

# Deploy OmniScript metadata
sf project deploy start -m OmniScript:<Name> -o <org>

# Check OmniScript versions
sf data query -q "SELECT Id,VersionNumber,IsActive,LastModifiedDate FROM OmniProcess WHERE Type='<Type>' AND SubType='<SubType>' AND OmniProcessType='OmniScript' ORDER BY VersionNumber DESC" -o <org>

スキル間の連携

連携元スキル連携先 sf-industry-commoncore-omniscriptタイミング
sf-industry-commoncore-omnistudio-analyze-> sf-industry-commoncore-omniscript"OmniScript を構築する前に依存関係を分析する"
sf-industry-commoncore-datamapper-> sf-industry-commoncore-omniscript"DataRaptor の準備完了、それを利用する OmniScript を構築する"
sf-industry-commoncore-integration-procedure-> sf-industry-commoncore-omniscript"IP の準備完了、OmniScript アクションに組み込む"
連携元 sf-industry-commoncore-omniscript連携先スキルタイミング
sf-industry-commoncore-omniscript-> sf-industry-commoncore-flexcard"この OmniScript を起動する FlexCard を構築する"
sf-industry-commoncore-omniscript-> sf-deploy"OmniScript をターゲット組織にデプロイする"
sf-industry-commoncore-omniscript-> sf-industry-commoncore-omnistudio-analyze"デプロイ前に完全な依存関係ツリーをマッピングする"
sf-industry-commoncore-omniscript-> sf-industry-commoncore-integration-procedure"この OmniScript アクション用に新しい IP が必要"
sf-industry-commoncore-omniscript-> sf-industry-commoncore-datamapper"データプリフィル用に DataRaptor が必要"

エッジケース

シナリオ解決策
多言語対応の OmniScript言語ごとに個別のバージョンを作成し、Type/SubType は共通にします。ラベルには翻訳ワークベンチを使用します
埋め込み OmniScript へのデータ受け渡し親のデータ JSON キーを prefillJSON 経由で子の OmniScript 入力にマッピングします。データの往復をテストします
大規模な Loop Block データセットDataRaptor の結果をページ分割するか、件数を制限します。IP でのサーバー側フィルタリングを検討します
FlexCard のフライアウト内の OmniScriptFlexCard が必要なコンテキストデータを渡すことを確認します。フライアウトのサイズをテストします
Community/Experience Cloud へのデプロイOmniScript コンポーネントが Experience Builder で使用可能であることを確認します。ゲストユーザーの権限を確認します
保存と再開(後で続行)saveNameTemplate と saveExpireInDays を設定します。一部のデータを入力した状態で再開できることをテストします
バージョンの競合新しいバージョンを有効化する前に古いバージョンを無効化します。同じ 3 要素の組み合わせで 2 つのバージョンを同時に有効にしないでください
OmniScript 内のカスタム Lightning Web ComponentsLWC を OmniScript 対応として登録します。omniscript-lwc の名前空間規則に従います

デバッグ:OmniScript がレンダリングされない → 有効化ステータスと要素階層を確認 | データが事前入力されない → DataRaptor Extract の出力マッピングと JSON パスを確認 | IP アクションが失敗する → まず IP を個別に確認し、入力マップを検証 | ステップが表示されない → 条件付き表示の式を確認


メモ

依存関係(必須):sf-industry-commoncore-datamapper、sf-industry-commoncore-integration-procedure | 依存関係(任意):sf-deploy、sf-industry-commoncore-flexcard、sf-industry-commoncore-omnistudio-analyze | API:66.0 | モード:Strict(警告があるとブロック) | スコアリング:スコアが 67 未満の場合はデプロイをブロック | 参考ドキュメント:要素の種類とベストプラクティスについては references/ を参照してください

OmniScript のプログラムによる作成:REST API(sf api request rest --method POST --body @file.json)を使用します。必須フィールド:Name、Type、SubType、Language、VersionNumber。OmniScript の IsIntegrationProcedure はデフォルトで false です(OmniProcessType は自動計算されるため、設定しないでください)。sf data create record --values フラグでは、PropertySetConfig のような JSON テキストエリアフィールドを処理できません。各 Step と要素に対応する子の OmniProcessElement レコードを REST API で作成します。


ライセンス

MIT License。 Copyright (c) 2026 David Ryan (weytani)

コメント