トランザクションマネージャー:ルールとルールのグループ化

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:16分
  • トランザクションマネージャーのルールは、構成ルールに似ています。また、一緒に実行するルールをグループ化することもできます。

    構成の場合と同様に、トランザクションマネージャーのルールは、ユーザーがトランザクションマネージャーのバイサイド UI に入力したときに実行されるアクションを制御します。ルールは、トランザクションマネージャーの 3 つのコンポーネント (レベル、条件、およびアクション) で構成されています。

    レベルによって、ルールがトランザクションレベルで実行されるか、トランザクションラインレベルで実行されるかが決まります。レベルによって、ルールの条件とアクションの定義に使用できるフィールドが決まります。

    条件は、ルールがそのアクションを実行するタイミングを決定します。ルールに定義された条件が TRUE と評価された場合、ルールアクションが実行されます。ルールの条件が FALSE と評価された場合、ルールアクションは実行されません。

    アクションは、実行時にルールが実行される内容を決定します。

    アクションの各タイプには、定義する必要がある一意のルールパラメーターのセットがあります。アクションの詳細については、次のセクションを参照してください。

    新しいルールの作成

    [トランザクションマネージャー管理] メニューで、[ 関連ルール] をクリックします。新しいルールを作成するには、[ + 新しいルール] をクリックします。

    新しいルールを作成

    [ 新規ルール] ポップアップウィンドウで、新しいルールの名前を入力し、変数名を確認します。変数名を変更するには、右側の鉛筆アイコンをクリックします。

    新しいルールのレベルを設定するには、[ トランザクション] または [トランザクション明細行] をクリックします。

    • トランザクションレベルのルールでは、ルールの条件とアクションの両方でトランザクションレベルのフィールドを使用できます。
    • トランザクション明細レベルのルールでは、ルールの条件でトランザクションレベルおよびトランザクション明細レベルのフィールドを使用できますが、ルール内のアクションではトランザクション明細レベルのフィールドのみを使用できます。

    [保存] をクリックします。

    新しいルールを作成

    ルールエディターページでは、ルールの名前と説明を変更できます。[アクティブ] トグルを使用すると、ルールをアクティブ化または非アクティブ化できます。

    [説明] フィールドの下には [条件] 領域があります。[ アクションを実行するタイミング ] メニューをクリックすると、この新しいルールの条件を実装するためのオプションが表示されます。この新しいルールに使用する条件メソッドを選択します。

    • 常に True を指定すると 、ユーザーがトランザクションマネージャーのバイサイド UI に変更を加えるたびにルールが実行されます。
    • ずれかの条件が満たされている場合は、いずれかの条件が TRUE と評価された場合にルールを実行します。(条件は論理的に OR で結合されます)。
    • すべての条件が満た されている場合は、すべての条件が TRUE と評価された場合にルールを実行します。(条件は論理的に AND 結合されます)。
    • カスタムロジック を使用すると、括弧内および AND と OR の組み合わせを使用して、条件リスト内の条件のカスタムロジック評価を作成できます (If Cond_1 AND (Cond_2 OR Cond_3) など)。
    • 詳細関数 を使用すると、アドミンはルールを実行するかどうかを判断するスクリプトを作成できます。スクリプトは、TRUE または FALSE のいずれかの値を返します。

    新しいルールを作成

    [ アクション実行タイミング] メニューの値をデフォルト値の [常時] から変更する場合は、ルールを実行するかどうかを決定する条件のリストを指定する必要があります。ルールに対して 1 つ以上の個別の条件を定義できます。条件を定義するには、[フィールドを入力/選択] メニューを使用してテストする [トランザクションマネージャー] フィールドを選択し、[均等] メニューで条件の演算子を選択してから、[値を入力/選択] メニューでフィールドのテスト値を設定して、条件が TRUE か FALSE かを判断します。ルールに複数の条件を追加するには、[+条件を追加] ボタンを使用します。

    トランザクションマネージャー:ルールとルールのグループ化

    条件が定義されると、ルールが実行するアクションを定義できます。条件と同様に、1 つ以上のアクションをルールに追加でき、異なるタイプのアクションを同じルールに含めることができます。

    アクションを追加するには、追加するアクションのタイプを選択し、[アクション] エリアでクリックします。次に、アクションを定義するための [アクションタイプ] パラメーターセットに移動します。

    • 非表示アクションは、条件付きでフィールドを非表示にします。
    • メッセージアクションは、バイサイドユーザーにテキストメッセージを表示します。
    • 除外アクションは、選択リストフィールドのメニューオプションを非表示または無効にします。
    • 包含アクションでは、選択リストフィールドにメニューオプションが表示されます。
    • 決定アクションは、フィールドの値を設定またはクリアします。

    新しいルールアクション

    以下では、さまざまなアクションパラメーターセットを確認します。

    非表示アクション

    非表示アクションを使用すると、購入側レイアウトのフィールドを非表示にできます。このタイプのアクションのパラメーターは、非表示にするフィールドのみです。フィールド検索ボックスを使用してフィールドを識別します。

    非表示アクション

    メッセージアクション

    メッセージアクションを使用すると、トランザクションマネージャーレイアウトでバイサイドユーザーにテキストメッセージを表示できます。[ 表示する] メニューには、次の 4 つのメッセージタイプがあります。

    • 情報メッセージでは、円形の青いアイコンと青色のメッセージテキストが使用されます。アイコンとテキストの色は変更できません。
    • 警告メッセージでは、黄色の三角形のアイコンと黄色のメッセージテキストが使用されます。アイコンとテキストの色は変更できません。
    • エラーメッセージには、赤い三角形のアイコンと赤色のメッセージテキストが使用されます。アイコンとテキストの色は変更できません。
    • カスタムメッセージには、任意のアイコンとテキストの色を設定できます。

    メッセージアクション

    [ メッセージの表示先] フィールドを使用して、バイサイドレイアウトのどこにメッセージを表示するかを定義します。多くの場合、メッセージはフィールドに添付されますが、層や列セットなどのレイアウトコンポーネントに添付することもできます。

    [ メッセージコンテンツ] フィールドでは、バイサイドユーザーに表示するメッセージを書き込むことができます。[ 詳細] トグルを設定すると、メッセージをビルドするスクリプトを記述できます。[ メッセージが表示されるタイミング] フィールドを使用して、メッセージが表示されたときにトランザクションを保存できるかどうかを決定します。

    除外/包含アクション

    除外および包含アクションでは、選択リストフィールドに定義されたメニューオプションの可視化と使用を設定できます。除外アクションを使用すると、メニューオプションを非表示または無効にすることができます。包含アクションでは、メニューオプションを表示または有効にすることができます。除外アクションと包含アクションは同じパラメーターのセットを使用します。

    [ このフィールドの場合] メニューを使用して、メニューオプションを除外またはメニューに含める選択リストフィールドを選択します。

    除外/包含アクション

    [ I want to [exclude|include] these options メニューを使用して、メニューで除外または含める選択リストメニューオプションを選択します。一度に複数のオプションを選択できます。[詳細] トグルを使用して、スクリプトを使用して、ルール実行の一部であるメニューオプションを決定します。

    [ 除外されたオプションの場合 ] メニューを使用して、除外されたメニューオプションをどのように処理するかを決定します。(包含アクションでは、メニューに含まれていないメニューオプションは除外メニューオプションとして扱われます)。オプションを非表示にするには、[ 非表示 にする] を選択します。メニューに無効な状態のまま保持するには、[ 無効化 ] を選択します。

    [ 既に選択されている場合] メニューを使用して、ルールの実行時にユーザーが除外されたメニューアイテムを既に選択している場合の処理を決定します。

    • そのまま変更しないと、除外されたアイテムが選択済みアイテムのままになります。
    • 選択を解除 すると、除外されたオプションの選択が解除され、ユーザーは別のオプションを選択する必要があります。
    • 代わりに最初の有効なオプションを選択する と、除外されたオプションの選択が解除されますが、ルールの実行後にメニューで最初に使用可能なオプションに置き換えられます。

    決定アクション

    決定アクションを使用すると、トランザクションマネージャーのフィールドの値を設定およびクリアできます。

    [ このフィールドの場合] メニューを使用して、ルールを処理するフィールドを検索して選択します。

    決定アクション

    [ I Wanna ...] で、フィールドの値を設定するかクリアするか、およびルールによって値が変更された後にユーザーがその値を編集することを許可するか禁止するかを定義します。

    [ ユーザーが値を変更した場合 ] メニューでは、ユーザーが変更したフィールドの値を保持するか、ルール内の値で値を上書きするかを選択できます。ユーザーが入力した値を保持するには、[ ユーザー値が保持されるタイミング ] メニューを使用して、フィールドの値に関する推奨事項を含むメッセージをユーザーに表示するかどうかを定義します。

    決定アクション

    最後に、フィールドに割り当てる値を定義します。[ この値を使用] フィールドでこの値を定義します。[ 詳細 ] トグルを使用して、スクリプトを有効にして値を決定できます。

    決定アクション

    ルールのグループ化

    ルールのグループ化は、一緒に実行されるルールのコレクションです。ルールグループには、トランザクションレベルとトランザクション明細レベルの両方のルールを含めることができます。

    ルールのグループ化は、実行するルールのグループをリンクするためにステージとイベントで使用されます。各ステージには、任意の数のルールグループを関連付けることができ、ユーザーがステージ内のフィールドを変更したときに実行されるルールを決定します。ルールを実行するには、アドミニストレーターがルールのグループ化をステージまたはイベントに関連付ける必要があります。これを行う方法については、次の記事を参照してください。

    トランザクションマネージャー:イベント

    トランザクションマネージャー:ステージ

    ルールのグループ化の作成

    まず、[管理] メニューの [ルールのグループ化 ] をクリックし、[ + 新しいルールのグループ化] をクリックします。

    ルールのグループ化の作成

    新規ルール・グループ化」 ウィンドウで、新規ルール・グループの変数名を入力し、「 保存」をクリックします。

    ルールのグループ化の作成

    ルールのグループ化エディターページが開きます。[ + ルールの関連付け] をクリックします。

    ルールのグループ化の作成

    スライドアウトペインが表示され、新しいルールグループに含めるルールを選択できます。[結果] 列で [+] をクリックして、ルールを [選択済み] 列に移動します。ルールグループに含める各ルールに対してこれを繰り返します。

    ルールグループの関連付け

    ルールの関連付け

    ルールの選択が完了したら、[ 完了] をクリックします。ルールグループ化エディターページに戻り、グループに追加されたルールが表示されます。

    ルールの関連付け

    ルールアグリゲート

    集計は、ルール決定アクションで使用するスクリプト機能です。集計は、自動化の強化、価格設定計算の最適化、見積もりおよびトランザクションワークフローにおけるデータ編成の改善に役立ちます。これは、トランザクションマネージャーでルールエンジンのパフォーマンスを最適化するために作成されました。

    集計関数は、取引明細フィールドに対してさまざまな数式計算を実行します。これらの計算の結果は、トランザクション (ヘッダー) フィールドまたはトランザクション明細フィールドのいずれかに保存されます。

    注:
    集計関数に子がない場合でも、集計は常に実行されます。集計関数にデフォルトが設定されておらず、子がない場合、集計によって返される値は null であり、ルックアップの場合、返される値は空の配列です。エラーを回避するには、デフォルトを設定するか、空のアレイ応答を処理します。

    ルール集計には、次のカテゴリが含まれます。

    • 平均、カウント、最小、最大、合計
    • AvgIf、CountIf、SumIf
    • 合計子
    • ルックアップ

    平均、カウント、最小、最大、合計

    これらの集計関数は、すべての明細の取引明細フィールド値を集計し、結果をヘッダーフィールド (決定アクションのターゲットフィールド) に保管します。

    return txn.line.functions.<function>(txn.line.<fieldVarName>)

    <function> の値には、avgField、countField、minField、maxField、sumField が含まれます。

    AvgIf、CountIf、SumIf

    これらの集計関数は、すべての明細のトランザクション明細フィールド値にフィルターを適用してから、残りの明細に対して計算を実行し、結果をヘッダーフィールド (決定アクションのターゲットフィールド) に格納します。

    txn.line.functions.<function>(txn.line.<fieldVarName>, <condition> [, <default>])

    <function> の値には、avgFieldIf、countFieldIf、sumFieldIf が含まれます。

    <condition> は、次のような式に設定できます。
    • booleanField = true
    • txn.line.functions.sumChildrenField(txn.line.<fieldVarName>)> 0

    アグリゲートする子がなく、デフォルト値が未定義の場合、この関数は null を返します。

    テキストの条件付きチェックでは大文字と小文字が区別されます。

    ユースケースの例:販売 BOM タイプの表示価格の合計

    以下のドラフトステージのサンプルトランザクションでは、BOM タイプが SALES の品目の表示価格の合計を計算します。BOM タイプは、構成アイテムが作成されたときに最初に設定されたタイプを反映するシステム派生の線フィールドです。

    ルールアグリゲート

    手順:

    1. [ Total Sales Type Price] という名前のヘッダーフィールドを作成します。

      合計販売タイプ価格

    2. それをレイアウトに追加し、トランザクションを展開します。

      トランザクションを展開する

    3. 次のスクリプトを使用してドラフトステージで適用されたsumFieldIf 関数を使用して、決定ルールを設定します。
      return txn.line.functions.sumFieldIf(txn.line.pricing.list,
              txn.line.configuration.item.bomType == 'SALES');
      注:
      条件付きチェックでは大文字と小文字が区別されます。sales ではなく SALES を使用します。大文字と小文字が間違ってもエラーは発生しませんが、ユースケースでは BOM タイプが [売上] の明細行がないため、合計は 0 になります。

      トランザクションを展開する

    4. トランザクションを展開して再ロードします。このフィールドは、一致する明細行価格の合計を正しく返します:$46,000 (0、40,000、2,500、1,000、2,500 から)。

      トランザクションを展開する

    合計子

    この集計関数は、すべての子明細のトランザクション明細フィールド値を集計し、結果を子明細の直接の親明細レベルフィールド (決定アクションのターゲットフィールド) に保管します。

    txn.line.functions.sumChildrenField(txn.line.<fieldVarName>)

    ルックアップ

    これらの集計関数は、合計を計算する代わりに値を取得します。単一の値または値のアレイのいずれかを返すため、ユーザーは重要な情報を動的に抽出して、価格設定の計算、検証ルール、および出力ドキュメントで使用できます。

    基本的なルックアップ関数には次のものが含まれます。

    • txn.line.functions.lookupField(<field>)

      すべてのトランザクション明細にわたって、指定されたフィールドから値のアレイを取得します。

    • txn.line.functions.lookupFirstField(<field> [, <default>])

      最初に一致したフィールド値を取得します。何も見つからない場合は、オプションのデフォルトを返します。

    • txn.line.functions.lookupChildrenField(<field>)

      子品目から値のアレイを取得します。

    • txn.line.functions.lookupFirstChildrenField(<field> [, <default>])

      オプションのデフォルトを使用して、子品目から最初に一致した値を取得します。

    テキストの条件付きチェックでは大文字と小文字が区別されます。条件付きルックアップ関数には次のものが含まれます。

    • txn.line.functions.lookupFieldIf(<field>, <condition>)

      条件に基づいてフィールド値のアレイを取得します。

    • txn.line.functions.lookupFirstFieldIf(<field>, <condition> [, <default>])

      オプションのデフォルトを使用して、条件に基づいて最初に一致したフィールド値を取得します。

    • txn.line.functions.lookupChildrenFieldIf(<field>, <condition>)

      条件に基づいて子品目から値のアレイを取得します。

    • txn.line.functions.lookupFirstChildrenFieldIf(<field>, <condition> [, <default>])

      条件に基づいて、オプションのデフォルトを使用して、最初に一致した子品目フィールド値を取得します。

    関数は、明確さと一貫性のために構造化された命名規則に従います。

    • ルックアップ はアレイを返します。 lookupFirst は単一の値を返します。
    • コンテキスト:コンテキストなし (すべての明細)、または (子明細品目のみ)。
    • オブジェクト: フィールド (フィールドルックアップにのみ適用)。
    • 条件:条件なし、 または If (条件付きルックアップ)。

    ルックアップ関数は、取得した値を中間フィールドに格納し、さらなる計算や自動化に使用できるようにします。これにより、価格設定ルール、承認、および出力ドキュメントとの統合が可能になります。

    中間フィールドのメリットは次のとおりです。

    • 一般的に参照される値を格納することで、冗長な計算を最小限に抑えます
    • 価格設定および見積プロセス全体で一貫したフィールド値のセットを維持する
    • 依存フィールドの動的な更新が可能になり、価格設定と承認のリアルタイムの正確性が確保されます

    ルックアップ集計は、見積もり付き品目が削除されたときに動的に調整されます。削除された取引明細行への参照が確実にクリアされ、再計算された価格設定と割引のデータの正確性が維持されます。次の例を参照してください。

    var taxCodes =
                  txn.line.functions.lookupFieldIf("taxCode", txn.line.amount > 0);
                var firstPrice =
                txn.line.functions.lookupFirstField("price", 0);   var childService =
                txn.line.functions.lookupChildrenField("serviceType");   var totalTax =
                txn.line.functions.lookupFirstField(txn.line.taxAmount, 0);   return totalTax * 1.05; //
                Applies a 5% surcharge based on retrieved tax amount