スクリプト
スクリプトが単純なルールを超えて CPQ を拡張する方法を学び、スクリプトが実行される場所、返される内容、およびスクリプトを使用して高度な構成ロジックを安全かつ効率的にモデル化する方法を理解します。
スクリプティングは、構成ロジックが単純なルールよりも柔軟性を必要とする場合に CPQ を強化します。アドミニストレーターは、スクリプトを使用して複雑な値を計算したり、条件を評価したり、製品データを動的に操作したりすることができます。スクリプトは、ルール条件、アクション、および初期化、検証、または価格設定のための詳細計画拡張で使用できます。
スクリプティングは宣言型オプションを補完しますが、置き換えるものではありません。最初に標準ルール、選択リスト拡張、および製品ピッカーを使用します。特殊なシナリオ用にスクリプティングを予約します。
スクリプトを使用できる場所
- ルール条件:
trueまたはfalseを返して、アクションを実行するかどうかを決定します。 - ルールアクション:フィールド値の設定、要素の非表示または表示、または製品リストの動的な作成。
- 詳細計画の拡張:「構成時」または「再構成」イベント中に、データの初期化、外部システムの呼び出し、または構成の拡張を行います。
予測可能な結果が得られるように、スクリプトタイプごとに特定の戻り値が必要です。
予想される戻り値
| スクリプトタイプ | 戻り値の形式 | 例 |
|---|---|---|
| 詳細条件 | ブーリアン | true または false |
| 詳細非表示 | 文字列 | 「field_to_hide」 |
| フィールド決定 | フィールドタイプに依存 | 番号 →5;「 赤」→テキスト。複数選択→ |
| 包含と除外 | アレイ | ["オプションA", "オプションB"] |
| 製品アクション | ProductList オブジェクト | ProductList.add({id:"123", 数量:2}) |
| 拡張 | 更新された構成オブジェクト | cfgRequestを返します。 |
構成オブジェクト
スクリプトは、次の構成オブジェクトとやり取りします。
cfg:ルールで使用されている現在のフィールド値の読み取り専用スナップショット。cfgRequest: 拡張で利用可能な書き込み可能なオブジェクト。フィールドを変更するには、.set("value", x)を使用します。ProductList: 部品表 (BOM) の品目を追加または変更するために使用されます。
ドット表記または角かっこ表記を使用してプロパティを参照できます (cfgRequest.fieldName または cfgRequest["fieldName"])。
外部データの操作
外部データを使用して構成を動的に拡張します。
- 管理テーブル:
lookup()でデータをクエリし、結果をフィールドまたは製品にマッピングします。 - 外部接続:承認された呼び出し (Salesforce への SOQL クエリなど) を行い、拡張のセットまたはフィールド値を入力します。
これらのテクニックにより、ハードコードされたロジックが削減され、データ管理が一元化されます。
デバッグとテスト
スクリプティングインターフェイスには、次のツールが組み込まれています。
- コード提案:関数、変数、およびフィールドのオートコンプリート。
- ヘルプパネル:サポートされているすべての関数とパラメーターを例とともに一覧表示します。
- デバッガー:JSON 入力を受け取り、出力と
console.log()の結果を表示します。一般的なテスト入力をコメントとして保存し、再利用します。
一般的なガイドライン
- 可能な場合は宣言ルールを優先します。
- スクリプトを簡潔にし、1 つのタスクに焦点を当てます。
- 常に想定されるデータ型を返します。
- 明確な変数名とコメントを使用します。
- ネストされたロジックや長い条件付きロジックは避け、代わりにテーブルまたは外部接続を使用します。