カスタム関数

AEM Forms 6.5 では、ルールエディターを使用した複雑なビジネスルールの定義に使用できる JavaScript 関数を定義する機能が導入されました。
AEM Formsでは、すぐに使用できる多数のカスタム関数が用意されていますが、独自のカスタム関数を定義して複数のフォームで使用する必要があります。

最初のカスタム関数を定義するには、次の手順に従ってください。

  • crx にログインします。
  • アプリの下に experience-league という名前の新しいフォルダーを作成します(このフォルダー名は任意の名前を指定できます)。
  • 変更を保存します。
  • experience-league フォルダーの下に、cq:ClientLibraryFolder タイプの新しいノードを clientlibs という名前で作成します。
  • 新しく clientlibs フォルダーを作成し、スクリーンショットに示すように、allowProxy プロパティと categories プロパティを追加して、変更を保存します。

client-lib

  • clientlibs フォルダーの下に js というフォルダーを作成します。
  • functions.js の下に js フォルダーという名前のファイルを作成します。
  • js.txt の下に clientlibs フォルダーという名前のファイルを作成します。変更を保存します。
  • フォルダー構造は、次のスクリーンショットのようになります。

ルールエディター

  • functions.js をダブルクリックして、エディターを開きます。
    次のコードを functions.js にコピーし、変更を保存します。
/**
* Get List of County names
* @name getCountyNamesList Get list of county names
* @return {OPTIONS} drop down options
 */
function getCountyNamesList()
{
    var countyNames= [];
    countyNames[0] = "Santa Clara";
    countyNames[1] = "Alameda";
    countyNames[2] = "Buxor";
    countyNames[3] = "Contra Costa";
    countyNames[4] = "Merced";

    return countyNames;

}
/**
* Covert UTC to Local Time
* @name convertUTC Convert UTC Time to Local Time
* @param {string} strUTCString in Stringformat
* @return {string}
*/
function convertUTC(strUTCString)
{
    var dt = new Date(strUTCString);
    console.log(dt.toLocaleString());
    return dt.toLocaleString();
}

JavaScript 関数の注釈について詳しくは、jsdoc を参照してください。
上記のコードには次の 2 つの関数があります。
getCountyNamesList - 文字列の配列を戻す
convertUTC - UTC タイムスタンプをローカルタイムゾーンに変換する

js.txt を開き、次のコードを貼り付けて、変更を保存します。

#base=js
functions.js

​#base=js の行は、JavaScript ファイルを配置するディレクトリを指定します。
次の行は、JavaScript ファイルの基本位置を基準にした相対位置を示します。

カスタム関数の作成に問題がある場合は、このパッケージをダウンロードして AEM インスタンスにインストールしてください。

カスタム関数の使用

次のビデオでは、アダプティブフォームのルールエディターでカスタム関数を使用する手順について説明します。

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e