アダプティブフォームコアコンポーネントへのルールの追加 adaptive-forms-rule-editor

この記事では、アダプティブフォームコアコンポーネントの最新のルールエディター機能として、次の機能を紹介します。

  • when-then-else 機能を使用したネストされた条件の実装のサポート
  • パネルやフォーム(フィールドを含む)の検証またはリセット
  • カスタム関数内の let 関数や arrow 関数(ES10 サポート)などの最新の JavaScript 機能をサポートします。

ルールエディター機能により、フォームのビジネスユーザーや開発者がアダプティブフォームオブジェクトにルールを容易に追加できるようになります。 これらのルールは、フォームオブジェクト上でトリガーされるアクションを定義します。これらのアクションは、事前に定義された条件、ユーザーによる入力、ユーザーがフォーム上で実行した操作に基づいてトリガーされます。 これにより、フォームへの入力を正確かつ迅速に行うことができます。

ルールエディターでは、ルールを記述するための直感的でシンプルなユーザーインターフェイスを備えています。 ルールエディターは、すべてのユーザーに対してビジュアルエディターを提供します。 ルールを使用してアダプティブフォームオブジェクトに対して実行する主なアクションには、次のようなものがあります。

  • オブジェクトの表示/非表示を切り替える
  • オブジェクトの有効/無効を切り替える
  • オブジェクトの値を設定する
  • オブジェクトの値を検証する
  • 関数を実行することにより、オブジェクトの値を計算する
  • フォームデータモデル(FDM)サービスを呼び出して操作を実行する
  • オブジェクトのプロパティを設定

forms-power-users グループに追加されたユーザーは、スクリプトの作成と既存のスクリプトの編集を行うことができます。 forms-users group のユーザーは、スクリプトを使用できますが、スクリプトの作成と編集はできません。

ルールを理解する understanding-a-rule

ルールとは、アクションと条件を組み合わせたものです。 ルールエディターでは、アクションには、フォーム内のオブジェクトの値を非表示、表示、有効化、無効化、または計算するなどのアクティビティが含まれます。 「条件」とは、フォームオブジェクトの状態、値、またはプロパティに対して確認や操作を実行し、それによって評価されるブール式を指します。 「アクション」は、条件を評価して返された値(True または False)に基づいて実行されます。

ルールエディターには、「When」、「Show」、「Hide」、「Enable」、「Disable」、「Set Value Of」、「Validate」など、ルールを記述するのに便利な一連の定義済みルールタイプが用意されています。 各ルールタイプでは、ルール内の条件とアクションを定義できます。 この記事では、各ルールタイプについてさらに詳細に説明します。

一般的なルールは、次のいずれかの構文に従います。

条件 - アクション この構文では、条件を最初に定義し、トリガーするアクションを次に定義します。 構文は、プログラミング言語における if-then statement に相当します。

ルールエディターで「When」ルールタイプを使用することで、条件 - アクションの構文が適用されます。

アクション - 条件 この構文では、トリガーするアクションを最初に定義し、続いて評価条件を定義します。 この構文の別の様式は、「アクション - 条件 - 代替アクション」型です。この中では、条件が False を返した場合にトリガーする代替アクションも定義します。

ルールエディターの「Show」、「Hide」、「Enable」、「Disable」、「Set Value Of」、「Validate」の各ルールタイプでは、「action-condition」ルール構文が適用されます。 デフォルトでは、「Show」の代替アクションは「Hide」、「Enable」の代替アクションは「Disable」(それらの逆も同様)です。 デフォルトの代替アクションは変更できません。

NOTE
利用可能なルールタイプ(ルールエディターで定義した条件やアクションを含む)は、ルールを作成しているフォームオブジェクトの種類によっても異なります。 ルールエディターには、特定のフォームオブジェクトタイプに対して条件およびアクションステートメントを記述するための、有効なルールタイプとオプションのみが表示されます。 例えば、パネルオブジェクトでは、「Validate」タイプと「Set value of」タイプは表示されません。

ルールエディターで使用可能なルールタイプついて詳しくは、ルールエディターで利用できるルールタイプを参照してください。

ルール構文の選択ガイドライン guidelines-for-choosing-a-rule-construct

どのルール構文を使用しても大部分の使用例を満たすことはできますが、ここでは特定のルールを選択するための、いくつかのガイドラインを紹介します。 ルールエディターで使用可能なルールの詳細については、「ルールエディターで利用できるルールタイプ」を参照してください。

  • ルールを作成する際は一般に、ルールを作成するオブジェクトのコンテキストでルールを考えることです。 「フィールド A」にユーザーが入力した値に応じて、「フィールド B」の表示/非表示を切り替える場合を想定します。この場合、「フィールド A」の状態を評価し、その戻り値に基づいて「フィールド B」のアクションをトリガーします。

    従って、「フィールド B」(状態を評価するオブジェクト)上にルールを記述する場合は、「condition-action」構文または「When」ルールタイプを使用します。 同様に、「フィールド A」についても、action-condition 構文か、または Show or Hide のルールタイプを使用します。

  • 時には、1 つの条件に基づいて複数のアクションを実行する必要がある場合があります。 そのような場合は、condition-action 構文の使用を推奨します。 この構文では、一度条件を評価し、その後に複数のアクション文を指定することができます。

    例えば、ユーザーが「フィールド A」に入力した値を確認する条件を設け、その戻り値に応じて「B」、「C」、「D」の各フィールドを非表示にするには、まず、「フィールド A」に対して「条件 - アクション」の構文を記述するか、あるいは「When」のルールタイプを使用し、「B」、「C」、「D」の各フィールドについて表示状態を制御するアクションを作成します。この形式を取らない場合は、「B」、「C」、「D」のフィールドごとに別々のルールを 3 つ記述し、それぞれ「フィールド A」の状態を確認させる必要が生じます。 この例では、3 つのオブジェクトに「Show」・「Hide」のルールのタイプを記述するよりも、むしろ単一のオブジェクトに「When」のルールタイプを記述する方が効率的です。

  • 複数の条件に基づいてアクションをトリガーする場合は、「アクション - 条件」構文の使用を推奨します。 例えば、「B」、「C」、「D」の各フィールドの状態を評価し、その戻り値に応じて「フィールド A」の表示・非表示を切り替える場合は、「フィールド A」に「表示・非表示」のルールタイプを記述します。

  • 1 つの条件に対して 1 つのアクションが指定されているルールでは、「条件 - アクション」または「アクション - 条件」構文を使用してください。

  • フィールドに値を入力した直後や、フィールドを閉じた直後にルールによって条件を確認し、アクションを実行する場合は、条件を評価するフィールドに対して「条件 = アクション」型の構文か、「When」のルールタイプを記述することが奨励されます。

  • 「When」のルール内に記述した条件は、その条件が適用されるオブジェクトの値をユーザーが変更した際に評価されます。 しかし、値が変更された場合にサーバーサイドでアクションをトリガーする場合(値を事前入力する場合など)は、フィールドの初期化時にアクションをトリガーする「When」ルールを記述することが推奨されます。

  • ドロップダウン、ラジオボタン、チェックボックスの各オブジェクトに対してルールを記述する場合、フォーム内のこれらのフォームオブジェクトのオプションや値は、ルールエディターで事前入力されます。

ルールエディターで使用可能な演算子の種類とイベント available-operator-types-and-events-in-rule-editor

ルールエディターでは、次のような論理演算子やイベントを使用してルールを作成することができます。

  • Is Equal To(次と等しい)
  • Is Not Equal To(次の値と等しくない)
  • Starts With(次の値で始まる)
  • Ends With(次の値で終わる)
  • Contains(次を含む)
  • Does not contain(次の値を含まない)
  • Is Empty(空である)
  • Is Not Empty(空ではない)
  • Has Selected(選択済み):​チェックボックス、ドロップダウン、ラジオボタンの特定のオプションをユーザーが選択した場合に true を返します。
  • Is Initialized (event)(初期化(イベント型)):​フォームオブジェクトがブラウザーでレンダリングされたときに true を返します。
  • Is Changed (event)(変更(イベント型)):​フォームオブジェクトに入力された値または選択したオプションをユーザーが変更したときに true を返します。

ルールエディターで利用可能なルールタイプ available-rule-types-in-rule-editor

ルールエディターでは、ルールを記述するための、事前定義された一連のルールタイプを利用できます。 ここからは、各ルールタイプについて詳しく説明します。 ルールエディターでルールを記述する詳細については、「ルールの記述」を参照してください。

When whenruletype

「When」のルールタイプは、「条件 - アクション - 代替アクション」のルール構文に従います。また、単に「条件 - アクション」構文が使用されることもあります。 このルールタイプでは、評価条件を指定し、条件が満たされた(True)場合にトリガーするアクションを記述します。 「When」のルールタイプの使用中、複数の「AND」および「OR」演算子を使用してネスト式を作成することができます。

「When」のルールタイプを使用することで、フォームオブジェクトの状態を評価し、1 つ以上のオブジェクトに対してアクションを実行することができます。

代表的な「When」のルール構文は、次のようになります。

When on Object A:

(Condition 1 AND Condition 2 OR Condition 3) is TRUE;

Then, do the following:

Action 2 on Object B;
AND
Action 3 on Object C;

Else, do the following:

Action 2 on Object C;
_

ラジオボタンやリストなどの複数値コンポーネントに対してルールを作成する場合、オプションが自動的に取得され、それらのオプションを使用してルールを作成できるようになりました。 これらのオプションの値を再入力する必要はありません。

例えばリストの場合、赤、青、緑、黄という 4 つのオプションがあります。 ルールを作成する場合、オプション(ラジオボタン)が自動的に取得され、これらのオプションを使用してルールを作成することができます。以下に例を示します。

複数値表示オプション

「When」ルールを記述するときに、「Clear Value Of」アクションをトリガーできます。 Clear Value Of アクションは、指定したオブジェクトの値をクリアします。 When ステートメントに Clear Value of をオプションとして含めると、複数フィールドで複雑な条件を作成できます。 Else ステートメントを追加して、さらに条件を追加できます。

次の値をクリア

NOTE
ルールタイプが単一レベルの then-else ステートメントのみをサポートする場合。

When で許可された複数のフィールド allowed-multiple-fields

When 条件では、ルールが適用されるフィールドとは別に他のフィールドを追加するオプションがあります。

例えば、「When」のルールタイプを使用すると、様々なフォームオブジェクトの条件を評価し、アクションを実行できます。

When:

(Object A Condition 1)

AND/OR

(Object B Condtion 2)

Then, do the following:

Action 1 on Object A

_

When で許可された複数のフィールド

When 条件機能で許可された複数のフィールドを使用する際の考慮事項

When 条件機能で許可された複数のフィールドで問題が発生した場合は、次のトラブルシューティング手順に従います。

  1. フォームを編集モードで開きます。
  2. コンテンツブラウザーを開き、アダプティブフォームの​ ガイドコンテナ ​コンポーネントを選択します。
  3. ガイドコンテナプロパティ ガイドプロパティ アイコンをクリックします。 アダプティブフォームコンテナダイアログボックスが開きます。
  4. 「完了」をクリックして、ダイアログを再度保存します。

Hide (非表示):指定したオブジェクトを非表示にします。

Show (表示):指定したオブジェクトを表示します。

Enable (有効):指定したオブジェクトを有効にします。

Disable (無効):指定したオブジェクトを無効にします。

Invoke service (サービスを起動):フォームデータモデル(FDM)で設定されたサービスを起動します。 「サービスを起動」オプションを選択すると、フィールドが表示されます。 このフィールドをタップすると、Experience Manager インスタンス上のすべてのフォームデータモデル(FDM)で設定されたすべてのサービスが表示されます。 フォームデータモデルサービスを選択すると、さらにフィールドが表示され、指定したサービスに対する入出力パラメーターを使用して、ここでフォームオブジェクトをマップすることができます。 フォームデータモデル(FDM)サービスの呼び出しについて詳しくは、ルールの例を参照してください。

フォームデータモデルサービスに加えて、ダイレクト WSDL URL を指定して Web サービスを起動することができます。 ただし、フォームデータモデルサービスには数多くの利点があるので、この方法でサービスを起動することをお勧めします。

フォームデータモデル(FDM)でのサービス設定について詳しくは、Experience Manager Forms のデータ統合機能を参照してください。

Set value of (設定値):指定したオブジェクトの値を計算し、設定します。 オブジェクト値には、文字列、他のオブジェクトの値、数式や関数を使用して計算された値、オブジェクトのプロパティの値、または設定されたフォームデータモデルサービスからの出力値を設定することができます。 Web サービスオプションを選択すると、Experience Manager インスタンス上のすべてのフォームデータモデル(FDM)で設定されたすべてのサービスが表示されます。 フォームデータモデルサービスを選択すると、さらにフィールドが表示され、指定したサービスに対する入出力パラメーターを使用して、ここでフォームオブジェクトをマップすることができます。

フォームデータモデル(FDM)でのサービス設定について詳しくは、Experience Manager Forms のデータ統合機能を参照してください。

プロパティを設定​のルールタイプを使用すると、条件アクションに基づいて、指定したオブジェクトのプロパティの値を設定できます。 プロパティは、次のいずれかに設定できます。

  • visible(ブーリアン)
  • label.value(文字列)
  • label.visible(ブーリアン)
  • description(文字列)
  • enabled(ブーリアン)
  • readOnly(ブーリアン)
  • required(ブーリアン)
  • screenReaderText(文字列)
  • valid(ブーリアン)
  • errorMessage(文字列)
  • default(数値、文字列、日付)
  • enumNames(文字列[])
  • chartType(文字列)

例えば、ボタンをクリックした際に、テキストボックスを表示するルールを定義できます。 ルールを定義するには、カスタム関数、フォームオブジェクト、オブジェクトプロパティ、またはサービス出力を使用できます。

プロパティを設定

カスタム関数に基づいてルールを定義するには、ドロップダウンリストから「関数の出力」を選択し、「関数」タブからカスタム関数をドラッグアンドドロップします。 条件アクションが満たされると、テキスト入力ボックスが表示されます。

フォームオブジェクトに基づいてルールを定義するには、ドロップダウンリストから「フォームオブジェクト」を選択し、「フォームオブジェクト」タブからフォームオブジェクトをドラッグ&ドロップします。 条件アクションが満たされると、アダプティブフォームにテキスト入力ボックスが表示されます。

オブジェクトプロパティに基づく「プロパティを設定」ルールを使用すると、アダプティブフォームに含まれる別のオブジェクトプロパティに基づいて、アダプティブフォームにテキスト入力ボックスを表示することができます。

次の図は、アダプティブフォームでのテキストボックスの表示/非表示に基づいてチェックボックスを動的に有効にする例を示しています。

オブジェクトプロパティ

Clear value of (値のクリア):指定したオブジェの値をクリアします。

Set Focus (フォーカスの設定):指定したオブジェクトにフォーカスを設定します。

フォームを送信:フォームを送信します。

リセット:フォームまたは指定されたオブジェクトをリセットします。

検証:フォームまたは指定されたオブジェクトを検証します。

Add Instance (インスタンスの追加):指定した繰り返し可能なパネルまたは表の行のインスタンスを追加します。

Remove Instance (インスタンスの削除):指定した繰り返し可能なパネルまたは表の行のインスタンスを削除します。

関数の出力:定義済み関数またはカスタム関数に基づいてルールを定義します。

に移動​他のアダプティブ Forms、画像やドキュメントフラグメントなどの他のアセット、または外部URLに移動します。

イベントのディスパッチ:定義済みの条件またはイベントに基づいて、特定のアクションまたは動作をトリガーします。

次の値を設定 set-value-of

「Set Value Of」のルールタイプを使用すると、指定した条件に応じてフォームオブジェクトの値を設定できます。 この値には、他のオブジェクトの値や、リテラル文字列、数式や関数から算出された値、または他のオブジェクトのプロパティ値、フォームデータモデルサービスの出力値を指定することができます。 同様に、関数や数式から算出された構成要素、文字列、プロパティ、または値を確認することもできます。

「Set Value Of」のルールタイプは、パネルやツールバーボタンなどのすべてのフォームオブジェクトで使用できるわけではありません。 標準的な「Set Value Of」ルールは、次の構文を有します。

Set value of Object A to:

(string ABC) OR
(オブジェクト Cのオブジェクト プロパティ X) OR
(関数の値) OR
(数式の値) OR
(データモデルサービスの出力値);

When (オプション):

(Condition 1 AND Condition 2 AND Condition 3) is TRUE;

次の例では、Question2 の値を True に、Result の値を correct に設定しています。

Set-value-web-service

フォームデータモデルサービスを使用した値の設定ルールの例

Show(表示) show

「Show」のルールタイプでは、条件を満たしているかどうかに基づいて、フォームオブジェクトの表示・非表示を切り替えることができます。 「Show」のルールタイプでは、条件が満たされていないか、あるいは False が返された場合に、「Show」アクションをトリガーします。

代表的な「Show」のルール構文は、次のようになります。

Show Object A;

When:

(Condition 1 OR Condition 2 OR Condition 3) is TRUE;

Else:

Hide Object A;

Hide(非表示) hide

「Hide」のルールタイプでは、「Show」のルールタイプと同様に、条件を満たしているかどうか基づいて、フォームオブジェクトの表示・非表示を切り替えることができます。 「Hide」のルールタイプでは、条件が満たされていないか、あるいは False が返された場合に、「非表示」アクションをトリガーします。

代表的な「Hide」のルール構文は、次のようになります。

Hide Object A;

When:

(Condition 1 AND Condition 2 AND Condition 3) is TRUE;

Else:

Show Object A;

Enable(有効) enable

「Enable」のルールタイプを使用すると、条件を満たしているか否かに基づいて、フォームオブジェクトを有効または無効にすることができます。 「Enable」のルールタイプでは、条件が満たされていないか、あるいは False が返された場合に、「Disable」アクションをトリガーします。

代表的な「Enable」のルール構文は、次のようになります。

Enable Object A;

When:

(Condition 1 AND Condition 2 AND Condition 3) is TRUE;

Else:

Disable Object A;

Disable(無効) disable

「Disable」のルールタイプでは、「Enable」のルールタイプと同様に、条件を満たしているか否かに基づいて、フォームオブジェクトを有効または無効にすることができます。 「Disable」のルールタイプでは、条件が満たされていないか、あるいは False が返された場合に、「Disable」アクションをトリガーします。

代表的な「Disable」のルール構文は、次のようになります。

Disable Object A;

When:

(Condition 1 OR Condition 2 OR Condition 3) is TRUE;

Else:

Enable Object A;

Validate(検証) validate

「検証」ルールタイプでは、式を使用してフィールド内の値を検証します。 例えば、式を記述することで、特定の名前のテキストボックスに特殊文字や数字が含まれていないことを確認することができます。

代表的な「検証」ルールは、次のようになります。

Validate Object A;

Using:

(Expression 1 AND Expression 2 AND Expression 3) is TRUE;

NOTE
入力値が検証ルールと一致しない場合は、ユーザーに検証メッセージを表示できます。 メッセージの内容は、サイドバー内のコンポーネントプロパティにある「スクリプト検証メッセージ」フィールドから指定できます。

スクリプトの検証

ルールエディターのユーザーインターフェイスを理解する understanding-the-rule-editor-user-interface

ルールエディターでは、ルールの記述や管理のための、総合的でシンプルなユーザーインタフェイスが用意されています。 オーサリングモードのアダプティブフォーム内からルールエディターのユーザーインターフェイスを起動できます。

ルールエディターのユーザーインターフェイスを起動するには:

  1. アダプティブフォームをオーサリングモードで開きます。

  2. ルールを記述するフォームオブジェクトを選択し、コンポーネントツールバーで edit-rules をクリックします。 ルールエディターのユーザーインターフェイスが表示されます。

    create-rules

    選択したフォームオブジェクトの既存のルールが、このビューに一覧表示されます。 既存ルールの詳細な管理方法については、ルール管理を参照してください。

  3. 「作成」を選択して、新しいルールを記述します。 ルールエディターの初回起動時は、ルールエディターの UI がビジュアルエディターモード(デフォルト)で表示されます。

    ルールエディターのユーザーインターフェイス

ここからは、ルールエディターのユーザーインターフェイスに含まれる各要素について説明します。

A. コンポーネントルールの表示 a-component-rule-display

ルールエディターを起動したアダプティブフォームオブジェクトのタイトルと、現在選択されているルールタイプを表示します。 上記の例では、ルールエディターは「Question 1」と名付けられたアダプティブフォームオブジェクトから起動されており、「When」ルールタイプが選択されています。

B. フォームオブジェクトと関数 b-form-objects-and-functions-br

ルールエディターのユーザーインターフェイスの左側のペインには、「フォームオブジェクト」と「関数」の 2 つのタブがあります。

「フォームオブジェクト」タブには、アダプティブフォームに含まれているオブジェクトがすべて階層表示されます。 ここには、オブジェクトのタイトルとタイプが表示されます。 ルールの作成時は、フォームオブジェクトをルールエディターまでドラッグ&ドロップすることができます。 オブジェクトまたは関数をプレースホルダーにドラッグ&ドロップしてルールの作成や編集を行うと、適切な値の型がプレースホルダーに自動的に取り込まれます。

1 つ以上の有効なルールが適用されているフォームオブジェクトには、緑のドットが付いています。 フォームオブジェクトに適用されているルールのいずれかが無効な場合、フォームオブジェクトには黄色のドットが付きます。

「関数」タブには、「合計」、「最小」、「最大」、「平均」、「回数」や「フォームを検査」などのビルトインの関数のセットが含まれています。 これらの関数をルールに記述することで、繰り返しパネルや表の行の値を計算し、計算結果をアクションや条件文の中で使用することができます。 また、カスタム関数も作成できます。

次の図には、関数のリストの一部が表示されています。

関数タブ

NOTE
「フォームオブジェクト」と「関数」の各タブ内では、オブジェクトや関数の名前やタイトルを基にテキスト検索を行うことができます。

フォームオブジェクトの左側のツリーで、フォームオブジェクトを選択すると、各オブジェクトに適用されるルールが表示されます。 様々なフォームオブジェクトのルール間を移動できるだけでなく、フォームオブジェクト間でルールをコピー&ペーストすることもできます。 詳しくは、ルールをコピー&ペーストを参照してください。

C. フォームオブジェクトと関数の切り替え c-form-objects-and-functions-toggle-br

切替スイッチをタップすると、フォームオブジェクトと関数のペインの表示が切り替わります。

D. ルールのビジュアルエディター visual-rule-editor

ルールを記述するビジュアルエディターは、ルールエディターのユーザーインターフェイスをビジュアルエディターモードに切り替えると表示されます。 ルールタイプを選択し、それに応じて条件とアクションを定義できます。 ルールで条件やアクションを定義する場合、フォームオブジェクトと関数ペインからフォームオブジェクトと関数をドラッグ&ドロップできます。

ルールのビジュアルエディターの詳細については、「ルールの作成」を参照してください。

E. 「完了」ボタンと「キャンセル」ボタン done-and-cancel-buttons

ルールを保存するには、「完了」ボタンを押します。 不完全なルールでも保存できます。 ただし、不完全なルールは無効なため、実行されることはありません。 フォームオブジェクトに保存されたルールは、同じフォームオブジェクトから次回ルールエディターを起動すると一覧表示されます。 このビューでは、既存のルールを管理できます。 詳しくは、ルールを管理を参照してください。

「キャンセル」ボタンは、ルールに加えた変更を破棄し、ルールエディターを閉じます。

ルールを記述 write-rules

ビジュアルルールエディター を使用して、ルールを記述します。

最初に、ビジュアルエディターを使用してルールを作成する方法を説明します。

ビジュアルエディターの使用 using-visual-editor

ここでは、次のフォーム例を使って、ビジュアルエディターでルールを作成する方法について説明します。

Create-rule-example

ローン申し込みフォームの例の「ローン要件」セクションでは、配偶者の有無、給与、および配偶者の給与(既婚の場合)を申請者が指定する必要があります。 ユーザー入力に基づいて、ルールはローン適格額を計算し、「Loan Eligibility(貸付資格)」フィールドに表示します。 次のルールを適用して、シナリオを実装します。

  • 配偶者の「Salary(給与)」フィールドは、婚姻状況に「Married(既婚)」を選んだ場合にのみ表示されます。
  • 融資適格額は、全給与の 50 パーセントとして計算されます。

ルールを記述するには、次のステップを実行します。

  1. まず、「Marital Status(配偶者の有無)」のラジオボタンの選択内容に応じて「Spouse Salary(配偶者の給与)」フィールドの表示・非表示を制御するためのルールを記述します。

    融資申請フォームをオーサリングモードで開きます。 「配偶者の有無」コンポーネントを選択し、「 edit-rules 」を選択します。 次に、「作成」を選択し、ルールエディターを起動します。

    write-rules-visual-editor-1

    ルールエディターを起動すると、「When」ルールがデフォルトで選択されます。 また、ルールエディターを起動したフォームオブジェクト(この場合は「Marital Status(配偶者の有無)」)は、「When」文に入力されています。

    選択したオブジェクトを変更または修正できませんが、以下に示すように、ルールドロップダウンを使用して別のルールタイプを選択できます。 別のオブジェクトにルールを作成する場合は、「キャンセル」を選択してルールエディターを終了し、目的のフォームオブジェクトから再度起動します。

  2. 「状態の選択」ドロップダウンを選択し、「次の値と等しい」を選択します。 「文字列を入力」フィールドが表示されます。

    write-rules-visual-editor-2

    ルールエディターでのカスタム関数 custom-functions

    「関数出力」の下にリストされている「合計」のような既存の関数に加え、ルールエディターでカスタム関数を使用することもできます。 ルールエディターでは、スクリプトおよびカスタム関数の JavaScript ECMAScript 2019 構文がサポートされています。 カスタム関数の作成手順について詳しくは、アダプティブフォームのカスタム関数の記事を参照してください。

    ルール管理 manage-rules

    フォームオブジェクトを選択し、続けて¥ edit-rules1 」を選択すると、オブジェクト上に既存のルールが一覧表示されます。 タイトルを表示し、ルール概要をプレビューできます。 さらに、UI を使用すると、ルールの概要の展開および表示、ルールの順序変更、ルールの編集、ルールの削除を行えます。

    リストルール

    ルールに対して、次の操作を実行できます。

    • 展開/折りたたみ:ルールリスト内の「コンテンツ」の列には、ルールの内容が表示されます。 デフォルトビューにルール内容の全体が表示されていない場合は、「 expand-rule-content 」を選択してビューを展開します。

    • 並べ替え:新しく作成したルールはすべて、ルールリストの一番下に追加されます。 ルールは上から下に順に実行されます。 一番上のルールが最初に実行され、続けて同じタイプの他のルールが実行されます。 例えば、「When」、「Show」、「Enable」、および「When」の各ルールが、リストの 1~4 番目にある場合、一番上にある「When」ルールが最初に実行され、次に 4 番目の「When」ルールが実行されます。 そして、「Show」ルールおよび「Enable」ルールが実行されます。
      ルールの順序を変更するには、 sort-rules をタップするか、リスト内の目的の位置にドラッグアンドドロップします。

    • 編集:ルールを編集するには、ルールタイトルの横にあるチェックボックスを選択します。 ルールを編集・削除するためのオプションが表示されます。 「編集」を選択して、選択したルールをルールエディターで開きます。

    • 削除:ルールを削除するには、ルールを選択してから「削除」をクリックします。

    • 有効/無効:ルールの使用を一時的に停止する必要がある場合、1 つ以上のルールを選択し、アクションツールバーの「無効」を選択して無効にすることができます。 ルールが無効化されている場合は、ランタイムには実行されません。 無効になっているルールを有効にするには、そのルールを選択して、アクションツールバーの「有効にする」を選択します。 ルールの「ステータス」列には、ルールが有効か無効かが表示されます。

    ルールを無効にする

    ルールのコピー&ペースト copy-paste-rules

    ルールを 1 つのフィールドから他の類似したフィールドにコピー&ペーストすると、時間を節約できます。

    ルールをコピー&ペーストするには、次の手順を実行します。

    1. ルールをコピーするフォームオブジェクトを選択し、コンポーネントツールバーから「 ルールを編集 」をクリックします。 フォームオブジェクトが選択された状態でルールエディターのユーザーインタフェイスが表示され、既存のルールが表示されます。

      ルールのコピー

      既存ルールの詳細な管理方法については、ルール管理を参照してください。

    2. ルールタイトルの横にあるチェックボックスを選択すると、ルールを管理するオプションが表示されます。 「コピー」を選択します。

      copyrule2

    3. ルールをペーストする別のフォームオブジェクトを選択し、「ペースト」を選択します。 さらに、ルールを編集して、変更を加えることができます。

      note
      NOTE
      ルールを別のフォームオブジェクトに貼り付けることができるのは、そのフォームオブジェクトがコピーしたルールのイベントをサポートしている場合に限られます。 例えば、ボタンはクリックイベントをサポートします。 クリックイベントを含むルールをボタンに貼り付けることはできますが、チェックボックスに貼り付けることはできません。
    4. 「完了」を選択し、ルールを保存します。

    ネスト式 nestedexpressions

    ルールエディターでは、複数の AND 演算子と OR 演算子を使用して、ネストされたルールを作成できます。 ルール内には、複数の「AND」と「OR」演算子を混在させることもできます。

    以下の例では、ネストされたルールを紹介します。ここでは、必要な条件が満たされた際に、子供の親権適格性についてのメッセージをユーザーに表示します。

    複雑な式

    ルール内で条件をドラッグアンドドロップして編集することもできます。 条件の前のハンドル( handle )を選択し続けます。 次に示すようにポインターがハンドシンボルになったら、ルール内の任意の場所に条件をドラッグ&ドロップします。 ルール構造が変化します。

    Drag-and-drop

    日付式の条件 dateexpression

    ルールエディターでは、日付比較を使用して条件を作成できます。

    次に示す条件の例では、ユーザーが日付フィールドに入力することによって指定する家屋の住宅ローンが既に取得されている場合、静的テキストオブジェクトを表示します。

    ユーザーが入力した物件の住宅ローンの日付が過去のものである場合、アダプティブフォームは収入計算に関する注記を表示します。 次のルールは、ユーザーが入力した日付を現在の日付と比較し、ユーザーが入力した日付が現在の日付より前の場合、フォームは(Income という名前の)テキストメッセージを表示します。

    日付式条件

    入力された日付が現在の日付よりも前の場合、フォームはテキストメッセージ(Income)を次のように表示します。

    日付式条件が満たされました

    数値比較条件 number-comparison-conditions

    ルールエディターでは、2 つの数値を比較する条件を作成できます。

    次に示す条件の例では、申込者が現在の住所に住んでいる月数が 36 に満たない場合、静的テキストオブジェクトを表示します。

    数値比較条件

    現在の居住地住所に住んでいる期間が 36 か月に満たないことをユーザーが指定した場合、フォームは、その他の居住地証明が要求される場合があるという通知を表示します。

    その他の証明が要求されました

    ルールの例 example

    フォームデータモデルサービスを起動 invoke

    ローン額、加入年数、申請者の信用度スコアを入力として、EMI 額と利率を含むローンプランを返す、web サービス GetInterestRates を考えます。 Web サービスをデータソースとして使用し、フォームデータモデル(FDM)を作成します。 データモデルオブジェクトと get サービスをフォームモデルに追加します。 フォームデータモデル(FDM)の「サービス」タブにサービスが表示されます。 その後、データモデルオブジェクトのフィールドを含むアダプティブフォームを作成し、ローン総額、加入年数、申込者の信用度についてユーザーの入力を取得します。 計画の詳細を取得するために Web サービスをトリガーするボタンを追加します。 適切なフィールドで出力が算出されます。

    次のルールは、「サービスを起動」アクションを設定してシナリオ例を実行する方法を示しています。

    Example-invoke-services

    note
    NOTE
    入力が配列タイプの場合、配列をサポートするフィールドが「出力」ドロップダウンセクションに表示されます。

    「When」ルールを使用して複数のアクションをトリガーする triggering-multiple-actions-using-the-when-rule

    ローン申し込みフォームでは、ローンの申請者が既存の顧客であるかどうかを判断する必要があります。 ユーザーが提供する情報に基づいて、顧客 ID フィールドの表示と非表示を切り替えます。 また、申請者が既存の顧客であれば、顧客 ID フィールドにフォーカスを置きます。 ローン申し込みフォームの構成要素は次のとおりです。

    • ラジオボタン「既存のGeometrixxのお客様ですか?」は、はいおよびいいえのオプションを提供します。 「はい」の値は 0、「いいえ」の値は 1 です。

    • 「Geometrixx 顧客 ID」テキストフィールドには、顧客 ID が入力されます。

    この動作を実装するためラジオボタンに When ルールを記述すると、ビジュアルルールエディターにはルールが次のように表示されます。

    When-rule-example

    ビジュアルエディターに表示されたルール

    上のルール例では、「When」セクション内の文は条件に当たります。これが True を返すと、「Then」セクションで指定されたアクションが実行されます。

    ルール内で関数出力を使用する using-a-function-output-in-a-rule

    発注フォームでは、次の表が表示されます。この中には、発注者が注文を入力します。 このテーブルの内容:

    • 最初の行は反復可能なので、ユーザーは複数の製品を注文し、それぞれ異なる数量を指定することができます。 この要素の名前は、「Row1」です。
    • 反復可能な行と「Product Quantity(製品数量)」の列が重なるセルでは、タイトルが「Quantity(数量)」になっています。 このセルの要素名は「productquantity」です。
    • 表の 2 行目は反復しません。また、この行と「Product Quantity(製品数量)」の列が重なるセルでは、タイトルが「Total Quantity(合計数量)」になっています。

    Example-function-table

    A. 行 1 B. 数量 C. 合計数量

    ここでは、「Product Quantity(製品数量)」列で指定された数量を全製品について合計し、「Total Quantity(合計数量)」セルに合計値を表示する必要があります。 以下に示すように、「Total Quantity(合計数量)」セルに「Set Value Of」ルールを記述することにより、この合計を達成できます。

    Example-function-output

    ビジュアルエディターに表示されたルール

    式を使用してフィールド値を検証する validating-a-field-value-using-expression

    上の例で説明した注文書フォームでは、価格が 10000 を超える商品について、1 個を超える数量は発注が制限されています。 この検証を行うには、以下に示すように検証ルールを記述します。

    例 – 検証
    ビジュアルエディターのルール

recommendation-more-help
experience-manager-65-help-main-toc