アダプティブフォームのルールエディタ- adaptive-forms-rule-editor

CAUTION
AEM 6.4 の拡張サポートは終了し、このドキュメントは更新されなくなりました。 詳細は、 技術サポート期間. サポートされているバージョンを見つける ここ.

概要 overview

Adobe Experience Manager Formsのルールエディター機能を使用すると、フォームのビジネスユーザーや開発者は、アダプティブフォームのオブジェクトにルールを作成できます。 これらのルールは、フォームオブジェクト上でトリガーできるアクションを定義します。それらのアクションは、プリセットされた条件、ユーザー入力、およびフォーム上のユーザーアクションに基づいてトリガーされます。これにより、フォームへの入力を正確かつ迅速に行うことができます。

ルールエディターでは、ルールを記述するための直感的でシンプルなユーザーインターフェイスを備えています。ルールエディターは、すべてのユーザーに対してビジュアルエディターを提供します。また、フォームのパワーユーザーに対してのみ、ルールエディターには、ルールとスクリプトを記述するコードエディターが用意されています。 アダプティブフォームオブジェクトでルールを使用して実行できる主なアクションは次のとおりです。

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

ルールエディタは、AEM 6.1 Forms 以前のリリースにおけるスクリプト作成機能を置き換えるものです。ただし、既存のスクリプトは、新しいルールエディターで保持されます。 ルールエディターでの既存のスクリプトの操作について詳しくは、 既存のスクリプトに対するルールエディターの影響

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

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

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

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

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

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

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

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

ルールエディターで「Show」、「Hide」、「Enable」、「Disable」、「Set Value Of」、「Validate 」の各ルールを設定すると、「アクション - 条件」ルール構文が適用されます。デフォルトでは、「表示」の代替アクションは「非表示」、「有効」の代替アクションは「無効」です。逆も同様です。 デフォルトの代替アクションは変更できません。

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

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

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

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

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

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

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

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

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

ルールエディターには、ルールの記述に使用できる、事前定義済みのルールタイプのセットが用意されています。 各ルールタイプについて詳しく見てみましょう。 ルールエディターでルールを記述する詳細については、「ルールの記述」を参照してください。

When when

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;

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

例えば、リストには次の 4 つのオプションがあります。赤、青、緑、黄。 ルールの作成時に、オプション(ラジオボタン)が自動的に取得され、次のようにルールクリエイターが使用できるようになります。

multivaluefcdisplaysoptions

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

clearvalue

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

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

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

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

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

フォームデータモデルサービスに加えて、直接 WSDL URL を指定して Web サービスを呼び出すことができます。 ただし、フォームデータモデルサービスには多くの利点があり、サービスを呼び出す方法を推奨します。

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

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

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

プロパティを設定 指定したオブジェクトのプロパティの値を設定します。

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

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

Save Form (フォームの保存):フォームを保存します。

Submit Forms (フォームの送信):フォームを送信します。

Reset Form (フォームのリセット):フォームをリセットします。

Validate Form (フォームの検証):フォームを検証します。

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

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

次の値を設定 set-value-of

次の値を設定」のルールタイプを使用すると、指定した条件に応じてフォームオブジェクトの値を設定することができます。この値は、別のオブジェクトの値、リテラル文字列、数式や関数から派生した値、別のオブジェクトのプロパティの値、フォームデータモデルサービスの出力に設定できます。 同様に、コンポーネント、文字列、プロパティ、または関数や数式から算出された値に対する条件を確認できます。

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

Set value of Object A to:

(ABC 文字列)または
(オブジェクト C のオブジェクトプロパティ X) OR
(関数の値) OR
(数式の値) OR
(データモデルサービスまたは Web サービスの出力値)

When (オプション):

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

次の例では、dependentid フィールドの値を入力とし、Relation フィールドの値を getDependent フォームデータモデルサービスの Relation 引数の出力に設定します。

set-value-web-service

フォームデータモデルサービスを使用した Set Value ルールの例

NOTE
また、「値の設定」ルールを使用して、フォームデータモデルサービスまたは Web サービスの出力からコンボボックスコンポーネント内のすべての値を入力することもできます。 ただし、選択する出力引数が配列型であることを確認してください。 配列で返される値は、指定したドロップダウンリストで使用できるようになります。

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」ルールの構造は次のようになります。

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 がビジュアルエディターモード(デフォルト)で表示されます。
    ルールエディターのユーザーインターフェイス

    クリックして拡大

ルールエディター UI の各コンポーネントについて詳しく説明します。

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

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

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

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

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

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

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

関数タブ

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

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

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

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

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

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

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

E.ビジュアルコードエディタースイッチャー e-visual-code-editors-switcher

forms-power-users グループのユーザーは、コードエディターにアクセスできます。 他のユーザーの場合、コードエディターは使用できません。 権限を持っている場合は、ルールエディターのすぐ上にある切り替えボタンを使用して、ビジュアルエディターモードからルールエディターのコードエディターモードに切り替え、またはその逆に切り替えることができます。 ルールエディターを初めて起動すると、ビジュアルエディターモードで開きます。 ルールは、ビジュアルエディターモードで記述するか、コードエディターモードに切り替えてルールスクリプトを記述することができます。 ただし、コードエディターでルールを変更したり、ルールを記述した場合は、コードエディターをクリアしない限り、そのルールの Visual Editor に戻すことはできません。

AEM Formsは、ルールの記述で最後に使用したルールエディターモードを追跡します。 次回ルールエディターを起動すると、そのモードで開きます。 ただし、デフォルトのモードを設定して、ルールエディターを指定したモードで開くこともできます。 この作業を行うには、以下の手順を実行します。

  1. AEM Web コンソール ( https:// ) に移動します。[ホスト]:[ポート]/system/console/configMgr.

  2. アダプティブフォームとインタラクティブ通信の Web チャネル設定 ​をクリックして編集します。

  3. 選択 Visual Editor または コードエディター から ルールエディターのデフォルトモード ドロップダウン

  4. 保存」をクリックします。

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

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

この キャンセル ボタンを押すと、ルールに加えた変更が破棄され、ルールエディターが閉じます。

ルールを記述 write-rules

ルールは、ビジュアルルールエディターまたはコードエディターを使用して記述できます。 ルールエディターの初回起動時は、ビジュアルエディターモードで開きます。コードエディターモードに切り替えて、ルールを記述することができます。 ただし、コードエディターでルールを記述または変更した場合は、コードエディターをクリアしない限り、そのルールの Visual Editor に切り替えることはできません。 次回ルールエディターを起動すると、前回ルールを作成したときに使用したモードで開きます。

まず、ビジュアルエディターを使用してルールを記述する方法を見てみましょう。

Visual Editor の使用 using-visual-editor

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

Create-rule-example

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

  • 配偶者の「給与」フィールドは、配偶者の有無が「既婚」の場合にのみ表示されます。
  • 融資適格額は、全給与の 50 パーセントとして計算されます。

ルールを記述するには、次の手順を実行します。

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

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

    write-rules-visual-editor-1

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

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

  2. 状態の選択」のドロップダウンをタップし、「is equal to (に等しい)」を選択します。「文字列を入力」フィールドが表示されます。

    write-rules-visual-editor-2

    「Marital Status(配偶者の有無)」のラジオボタンでは、「Married (既婚)」と「Single (独身)」のオプションに対して、それぞれ 01 の値が割り当てられています。以下に示すように、割り当てられた値は、「編集」ラジオボタンダイアログの「タイトル」タブから確認することができます。

    ルールエディターから割り当てたラジオボタンの値

  3. ルール内の「文字列を入力」フィールドで、0 を指定します。

    write-rules-visual-editor-4

    条件をWhen Marital Status is equal to Marriedと定義しました。次に、この条件が True の場合に実行するアクションを定義します。

  4. Then 文で、 表示 から アクションを選択 」ドロップダウンリストから選択できます。

    write-rules-visual-editor-5

  5. オブジェクトをドロップするか、または次から選択」フィールドの「フォームオブジェクト」タブから「Spouse Salary (配偶者の給与)」フィールドをドラッグ・ドロップします。あるいは、「オブジェクトをドロップするか、または次から選択」フィールドをタップし、ポップアップメニューから「Spouse Salary (配偶者の給与)」フィールドを選択します。この中には、フォーム内のすべてのフォームオブジェクトが一覧表示されます。

    write-rules-visual-editor-6

    ルールエディターでは、ルールが次のように表示されます。

    write-rules-visual-editor-7

    完了」をクリックして、ルールを保存します。

  6. 配偶者の有無が「Single(独身)」の場合は「Spouse Salary(配偶者の給与)」フィールドを非表示にするため、手順 1~5 を繰り返して別のルールを定義します。ルールエディターでは、ルールが次のように表示されます。

    write-rules-visual-editor-8

    note note
    NOTE
    また、同じ動作を実装する場合は、「Marital Status(配偶者の有無)」フィールドに 2 つの「いつ」ルールを記述する代わりに、「Spouse Salary(配偶者の給与)」フィールド上に 1 つの「表示」ルールを設けることもできます。

    write-rules-visual-editor-9

  7. 次に、融資適格金額を算出するためのルールを記述します。ここでは、総給与の 50% として計算され、「Loan Eligibility(貸付資格)」フィールドに表示されます。これを実現するには、 次の値を設定 「Loan Eligibility」フィールドのルール

    オーサリングモードで「Loan Eligibility (貸付資格)」フィールドをタップし、 edit-rules をタップします。次に、ルールエディターを起動し「作成」をタップします。

  8. ルールのドロップダウンから「指定値」ルールを選択します。

    write-rules-visual-editor-10

  9. オプションの選択」をタップして「数式」を選択します。数式記述用のフィールドが表示されます。

    write-rules-visual-editor-11

  10. 式フィールドで、以下の操作を行います。

    • 「 Formsオブジェクト」タブから、 給与 最初の オブジェクトをドロップするか、ここから選択 フィールドに入力します。
    • 選択 プラス から 演算子を選択 フィールドに入力します。
    • 「フォームオブジェクト」タブから、他の​ ドロップオブジェクトの「 Spouse Salary (配偶者の給与)」フィールドを選択またはドラッグ&ドロップするか、「ここ」 ​フィールドを選択します。

    write-rules-visual-editor-12

  11. 次に、式フィールドの周りの強調表示された領域をタップし、「拡張式」をタップします。

    write-rules-visual-editor-13

    「拡張式」フィールドで、「 ~で割られる から 演算子を選択 フィールドと 数値 から オプションを選択 フィールドに入力します。 次に、 2 を設定します。

    write-rules-visual-editor-14

    note note
    NOTE
    「オプションを選択」(Select Option) フィールドで、コンポーネント、関数、数式、プロパティ値を使用して複雑な式を作成できます。

    次に、True を返した場合に式を実行する条件を作成します。

  12. 条件の追加」をタップして、「When」文を追加します。

    write-rules-visual-editor-15

    When 文内:

    • 「 Formsオブジェクト」タブから、 配偶者の有無 最初の オブジェクトをドロップするか、ここから選択 フィールドに入力します。
    • i を選択​ 次と等しい から 演算子を選択 フィールドに入力します。
    • 他の「オブジェクトをドロップまたは次から選択」フィールドから「文字列」を選択し、「文字列を入力」フィールドに「Married (既婚)」を入力します。

    ルールは、ルールエディターで最終的には次のように表示されます。 write-rules-visual-editor-16

    完了」をクリックして、ルールを保存します。

  13. ステップ 7~12 を繰り返し、配偶者の有無が「Single(独身)」であれば融資適格額を計算する別のルールを定義します。ルールエディターでは、ルールが次のように表示されます。

    write-rules-visual-editor-17

NOTE
また、「次の値を設定」ルールを使用して、「配偶者の給与」フィールドの表示/非表示を切り替えるために作成した「次の日付」ルールで融資適格性を計算することもできます。 「Marital Status (配偶者の有無)」が「Single (独身)」の場合、ルールエディターでは組み合わせルールが次のように表示されます。
同様に、「Spouse Salary (配偶者の給与)」フィールドの表示・非表示を切り替えるための別の組み合わせルールを記述することで、「Marital Status (配偶者の有無)」が「Married (既婚)」の場合にも融資適格性を計算することができます。

write-rules-visual-editor-18

コードエディターの使用 using-code-editor

forms-power-users グループに追加されたユーザーは、コードエディターを使用できます。 ルールエディターは、ビジュアルエディターを使用して作成するルールの JavaScript コードを自動生成します。 Visual Editor からコードエディターに切り替えて、生成されたコードを表示することができます。 ただし、コードエディターでルールコードを変更した場合、Visual Editor に戻すことはできません。 Visual Editor ではなく、コードエディターでルールを記述する場合は、コードエディターで新しくルールを記述できます。 ビジュアルコードエディターの切り替えボタンを使用して、2 つのモードを切り替えることができます。

アダプティブフォームのコードエディターで使用される式言語は JavaScript です。すべての式は有効な JavaScript 式で、アダプティブフォームのスクリプティングモデル API を使用します。 これらの式は、特定のタイプの値を返します。アダプティブフォームのクラス、イベント、オブジェクト、パブリック API の完全なリストについては、 アダプティブフォームの JavaScript ライブラリ API リファレンス.

コードエディターでルールを記述する際のガイドラインについて詳しくは、 アダプティブフォームの式.

ルールエディターで JavaScript コードを記述する際に、次の視覚的なキューを参照すると、構造と構文を把握できます。

  • 構文のハイライト
  • 自動インデント
  • フォームオブジェクト、関数、およびそのプロパティに関するヒントと候補
  • フォームコンポーネント名と一般的な JavaScript 関数の自動入力

javascriptruleeditor

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

「関数出力」の下にリストされている「合計」などの既製の関数に加え、頻繁に必要なカスタム関数を記述することができます。 記述した関数は、その上に jsdoc が付記されていることを確認してください。

この jsdoc は、

  • カスタムの設定や説明を使用する場合に必須です。
  • JavaScript,では関数を宣言する方法が複数存在するためコメントを活用して関数を区別することが大切です。

詳しくは、usejsdoc.org を参照してください。

サポートされるjsdocタグ:

  • プライベート

    構文:@private

    プライベート関数は、カスタム関数として含まれていません。

  • 名前

    構文:@name funcName <Function Name>

    または , 以下を使用できます。 @function funcName <Function Name> または @func funcName <Function Name>.

    funcName :関数の名前です(スペースは使用不可)。

    <Function Name>:関数の表示名です。

  • メンバー

    構文:@memberof namespace

    (メンバー構文):関数に名前空間を追加します。

  • パラメーター

    構文:@param {type} name <Parameter Description>

    または、次を使用できます。 @argument {type} name <Parameter Description> または @arg {type} name <Parameter Description>.

    関数で使用されるパラメーターを表示します。関数には、複数のパラメータタグを設けることができます。各パラメーターは、実行順序に応じて 1 個のタグを設けることができます。

    {type} は、パラメータータイプを表します。許可されているパラメータータイプは、以下のとおりです。

    1. 文字列
    2. 数値
    3. ブール値

    他のすべてのパラメータータイプは、上記のいずれかに分類されます。なしはサポートされていません。 上記のタイプの 1 つを選択していることを確認します。 タイプでは大文字と小文字が区別されません。 パラメーターでは、スペースは使用できませんname<Parameter Descrption>

  • 戻り値の型

    構文:@return {type}

    または、 @returns {type}.

    目的などの、関数に関する情報を追加します。

    {type} は、関数の戻り値のタイプを表します。許可されている戻り値のタイプは次のとおりです。

    1. 文字列
    2. 数値
    3. ブール値
    4. date
    5. 配列

    他のすべての戻り値のタイプは、上記のいずれかに分類されます。なしはサポートされていません。 上記のタイプの 1 つを選択していることを確認します。 戻り値の型では、大文字と小文字が区別されません。

NOTE
カスタム関数の前のコメントは、概要に使用されます。 概要は、タグが見つかるまで複数行にまで拡張できます。 説明を簡潔にするため、ルールビルダーでは 1 行以内に抑えるように心がけてください。

カスタム関数の追加

例えば、正方形の面積を計算するカスタム関数を追加するとします。横の長さは、ユーザーの入力を使用します。ユーザー入力は、フォーム内の数値ボックスを通して受け取ります。計算された出力は、フォーム内の別の数値ボックスに表示されます。 カスタム機能を追加するには、最初にクライアントライブラリを作成し、次に CRX リポジトリーに追加する必要があります。

次の手順を実行して、クライアントライブラリを作成し、CRX リポジトリに追加します。

  1. クライアントライブラリを作成します。詳しくは、「クライアント側ライブラリの使用」を参照してください。

  2. CRXDE 上で、categories文字列タイプの値を持つプロパティをcustomfunctionとしてclientlibフォルダーに追加します。

    note note
    NOTE
    customfunctionはカテゴリの例です。clientlib フォルダーで作成したカテゴリには、任意の名前を付けることができます。

CRX リポジトリにクライアントライブラリを追加した後は、アダプティブフォームでそれを使用します。これにより、カスタム関数をルールとしてフォーム内で使用することができます。次の手順を実行して、アダプティブフォームにクライアントライブラリを追加します。

  1. フォームを編集モードで開きます。

    フォームを編集モードで開くには、フォームを選択し、「開く」をタップします。

  2. 編集モードで、コンポーネントを選択し、 フィールドレベル アダプティブフォームコンテナ ​をタップしてから、 cmppr をタップします。

  3. サイドバーの「クライアントライブラリの名前」の下から、クライアントライブラリを追加します。(この例では、「customfunction」)。

    カスタム関数をクライアントライブラリを追加する

  4. 入力数値ボックスを選択し、 edit-rules をタップしてルールエディターを開きます。

  5. ルールを作成」をタップします。フォームの出力フィールドに入力の自乗値を保存するルールを、次のオプションを使用して作成します。
    カスタム関数を利用したルールの作成 完了」をタップします。これでカスタム関数が追加されました。

関数の宣言でサポートされるタイプ function-declaration-supported-types

文関数

function area(len) {
    return len*len;
}

この関数は、jsdoc コメント無しで追加されています。

関数式

var area;
//Some codes later
/** */
area = function(len) {
    return len*len;
};

関数式と文関数

var b={};
/** */
b.area = function(len) {
    return len*len;
}

変数としての関数宣言

/** */
var x1,
    area = function(len) {
        return len*len;
    },
    x2 =5, x3 =true;

制限事項:カスタム関数は、変数リストから最初の関数宣言のみを取得します(共に使用する場合)。 関数式は、すべての関数宣言に使用することができます。

オブジェクトとしての関数宣言

var c = {
    b : {
        /** */
        area : function(len) {
            return len*len;
        }
    }
};
NOTE
カスタム関数では、必ず jsdoc を使用します。jsdoc 型のコメントが奨励されていますが、カスタム関数として区別できるよう、空の jsdoc 型コメントを含めてください。これにより、カスタム関数のデフォルト処理が可能になります。

ルール管理 manage-rules

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

リストルール

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

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

  • 並べ替え:新しく作成したルールは、すべてルールリストの下部に積み重ねられます。 ルールは上から下に順に実行されます。 最上部のルールが最初に実行され、その後に同じタイプの他のルールが実行されます。 例えば、「When」、「Show」、「Enable」、および「When」の各ルールが、リストの 1~4 番目にある場合、一番上にある「When」ルールが最初に実行され、次に 4 番目の「When」ルールが実行されます。そして、「Show」ルールおよび「Enable」ルールが実行されます。

    ルールの順序を変更するには、 sort-rules をタップするか、リスト内の目的の位置にドラッグアンドドロップします。

  • 編集:ルールを編集するには、ルールタイトルの横にあるチェックボックスを選択します。ルールを編集および削除するための追加のオプションが表示されます。 「編集」をタップし、選択したルールをルールエディターで開きます。ルールエディターは、以前にルールを作成する際に使用したモードに応じて、ビジュアルエディターモードまたはコードエディターモードで開きます。

  • 削除:ルールを削除するには、ルールを選択し「削除」をタップします。

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

disablerule

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

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

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

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

    copyrule

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

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

    copyrule2

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

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

ネスト式 nestedexpressions

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

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

complexexpression

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

drag-and-drop

日付式の条件 dateexpression

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

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

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

dateexpressioncondition

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

dateexpressionconditionmet

数値比較条件 number-comparison-conditions

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

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

numbercomparisoncondition

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

additionalproofrequested

既存のスクリプトに対するルールエディターの影響 impact-of-rule-editor-on-existing-scripts

AEM 6.1 Forms機能パック 1 より前のバージョンでは、フォーム作成者や開発者は、アダプティブフォームに動的な動作を追加するために、編集コンポーネントダイアログの「スクリプト」タブで式を記述していました。 「スクリプト」タブがルールエディターに置き換えられました。

「スクリプト」タブで記述する必要のあるスクリプトや式は、ルールエディターで使用できます。 ビジュアルエディターでは表示や編集ができませんが、forms-power-users グループに含まれるユーザーであれば、コードエディターでスクリプトを編集できます。

ルールの例 example

フォームデータモデルサービスを呼び出す invoke

ローン額、加入年数、申請者の信用度スコアを入力として、EMI 額と利率を含むローンプランを返す、web サービス GetInterestRates を考えます。Web サービスをデータソースとして使用し、フォームデータモデルを作成します。データモデルオブジェクトと get サービスをフォームモデルに追加します。フォームデータモデルの「サービス」タブにサービスが表示されます。次に、データモデルオブジェクトのフィールドを含むアダプティブフォームを作成して、ローン金額、年齢、クレジットスコアに関するユーザー入力を取得します。 計画の詳細を取得するために Web サービスをトリガーするボタンを追加します。出力は、該当するフィールドに入力されます。

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

example-invoke-services

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

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

  • Are you an existing Geometrixx customer?(Geometrixx に既に登録されていますか?)」のラジオボタンでは、「はい」と「いいえ」のオプションが設けられています。「はい」の値は次のとおりです。 0 そして No is 1.

  • テキストフィールド Geometrixx顧客 ID:顧客 ID を指定します。

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

この例のルールでは、When セクション内の文が条件で、True を返す場合、Then セクションで指定されたアクションを実行します。

コードエディターでは、ルールは次のように表示されます。

when-rule-example-code

ルール内で関数出力を使用する 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

example-function-output-code

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

前の例で説明した発注書フォームでは、価格が 10000 を超える商品については、ユーザーが複数個発注することを制限します。これをおこなうには、次に示すように「 Validate 」ルールを記述します。

example-validate

example-validate-code

recommendation-more-help
a6ebf046-2b8b-4543-bd46-42a0d77792da