AEMワークフローの変数

ワークフローモデルの変数は、そのデータタイプに基づいて値を格納する方法です。その後、任意のワークフロー手順で変数の名前を使用して、変数に保存された値を取得できます。 変数名を使用して、ルーティング上の決定を行う式を定義することもできます。

AEMワークフローモデルでは、次の操作を実行できます。

  • 保存する情報タイプに基づいて、データタイプの変数を作成します
  • 変数の値を設定するには、「変数を設定する」ワークフローステップを使用します。
  • OR分割と移 動のAEMワークフローステップで変数を使用して、ルーティングの決定を下す式を定義します。また、すべてのAEM Formsワークフローステップで変数を使用することもできます。

次のビデオでは、AEMワークフローモデルで変数を作成、設定、使用する方法を説明します。

変数は、MetaDataMapインターフェイスの拡張です。 ECMAScript で MetaDataMap を使用すると、変数を使用して保存されたメタデータにアクセスできます。

変数の作成

変数は、ワークフローモデルのサイドキックにある「変数」セクションを使用して作成します。AEMワークフロー変数は、次のデータ型をサポートしています。

  • プリミティブデータタイプ:Long、Double、Boolean、Date、String
  • 複雑なデータ型: 🔗 XMLと JSON
メモ

ワークフローでは、日付型変数に対して ISO8601 形式のみをサポートします。

AEM Formsワークフローで使用できる追加の複雑なデータタイプについては、「AEM Formsワークフローの変数」を参照してください。 ArrayList データタイプを使用して、変数コレクションを作成します。すべてのプリミティブデータタイプと複合データタイプに対して ArrayList 変数を作成できます。例えば、ArrayList変数を作成し、サブタイプとしてStringを選択して、変数を使用して複数の文字列値を格納します。

変数を作成するには、次の手順を実行します。

  1. AEM インスタンスで、ツール/ワークフロー/モデルに移動します。

  2. 作成」をタップし、ワークフローモデルのタイトルとオプション名を指定します。モデルを選択し、「編集」をタップします。

  3. ワークフローモデルのサイドキックにある変数アイコンをタップし、「追加変数」をタップします。

    変数を追加

  4. 「変数の追加」ダイアログで、名前を指定し、変数のタイプを選択します。

  5. タイプ」ドロップダウンリストからデータタイプを選択し、次の値を指定します。

    • プリミティブデータタイプ - 変数のオプションのデフォルト値を指定します。
    • JSON または XML - オプションの JSON または XML スキーマパスを指定します。システムは、このスキーマで使用可能なプロパティを別の変数にマッピングおよび保存しながら、スキーマパスを検証します。
    • フォームデータモデル - フォームデータモデルのパスを指定します。
    • ArrayList — コレクションのサブタイプを指定します。
  6. 変数の説明(オプション)を指定し、 をタップして変更を保存します。変数は、左側のペインで使用可能なリストに表示されます。

変数を作成する場合、次のプラクティスをお勧めします。

  • ワークフローで必要な数の変数を作成します。ただし、データベースのリソースを確保するため、必要最低限の変数を使用し、必要に応じて変数を再利用してください。
  • 変数では大文字と小文字が区別されます。ワークフローで変数を参照する場合には同じように大文字と小文字を区別してください。
  • 変数名に特殊文字を使用しないでください。

変数の設定

「変数を設定」ステップを使用して、変数の値を設定し、値が設定される順序を定義できます。変数は、変数の設定ステップで変数のマッピングがリストされている順序で設定されます。

変数値を変更すると、変更が発生したプロセスのインスタンスのみに影響します。例えば、ワークフローが開始され変数データが変更されると、変更はそのワークフローのインスタンスのみに影響します。この変更は、以前に開始された、または以降に開始された、ワークフローの他のインスタンスには影響しません。

変数のデータタイプに応じて、次のオプションを使用して変数の値を設定できます。

  • リテラル:​指定する値が正確に分かっている場合は、このオプションを使用します。
  • 式:​使用する値が式に基づいて計算される場合は、このオプションを使用します。式は、提供された式エディターで作成されます。
  • JSON ドット表記:​このオプションを使用して、JSON または FDM タイプの変数から値を取得します。
  • XPATH:​このオプションを使用して XML タイプ変数から値を取得します。
  • ペイロード基準:​変数として格納する値が、ペイロードを基準としたパスにある場合は、このオプションを使用します。
  • 絶対パス:​変数として格納する値が絶対パスにある場合は、このオプションを使用します。

また、JSON DOT 表記法または XPATH 表記法を使用して、JSON または XML タイプの変数の特定の要素を更新することもできます。

変数間マッピングの追加

変数間にマッピングを追加するには、次の手順を実行します。

  1. ワークフローの編集ページで、ワークフローモデルのサイドキックにある「ステップ」アイコンをタップします。
  2. 変数を設定」ステップをワークフローエディターにドラッグ&ドロップし、手順をタップして (設定)を選択します。
  3. 「変数を設定」ダイアログで、マッピングマッピングを追加​を選択します。
  4. 変数のマップ」セクションで、データを格納する変数を選択し、マッピングモードを選択して、変数に格納する値を指定します。マッピングモードは、変数のタイプによって異なります。
  5. より多くの変数をマップして、意味のある式を作成します。をタップして変更を保存します。

例 1:XML 変数をクエリして、文字列変数の値を設定

XML タイプの変数を選択し、XML ファイルを格納します。XML 変数をクエリして、XML ファイルで使用可能なプロパティの文字列変数の値を設定します。「XML 変数に XPATH を指定」フィールドを使用して、文字列変数に格納するプロパティを定義します。

この例では、formdata XML 変数を選択して cc-app.xml ファイルを格納します。formdata 変数をクエリして、emailaddress 文字列変数の値を設定し、cc-app.xml ファイルで使用できる emailAddress プロパティの値を格納します。

[!VIDEO] (https://helpx.adobe.com/content/dam/help/en/experience-manager/6-5/forms/using/set_variable_example1.mp4 “変数の値を設定”)

例 2:式を使用して、他の変数に基づいて値を格納

式を使用して変数の和を計算し、結果を変数に格納します。

この例では、式エディターを使用して式を定義し、assetscost 変数と balanceamount 変数の和を計算し、その結果を totalvalue 変数に格納します。

式エディタの使用

実行時の変数の値を計算するのにも式を使用します。変数は、式を定義する式エディターを提供します。

式エディターを使用して、次の操作を行います。

  • 他のワークフロー変数、数値または数式を使用して、変数の値を設定します。
  • ワークフロー変数、文字列、数値、または式を数式内で使用
  • 変数の値を設定する条件を追加します。
  • 条件の間に演算子を追加します。

式エディター

これは、次の変更を加えたアダプティブフォームのルールエディターに基づいています。 変数のルールエディター:

  • 関数はサポートしていません。
  • ルールの概要を表示するための UI は提供していません
  • コードエディターはありません。
  • オブジェクトの値の有効化と無効化はサポートしていません。
  • オブジェクトのプロパティの設定はサポートしていません。
  • Web サービスの呼び出しはサポートしていません。

詳しくは、「アダプティブフォームのルールエディター」を参照してください。

変数を使用

変数を使用して、入力と出力を取得したり、ステップの結果を保存したりできます。ワークフローエディターには、次の 2 種類のワークフローステップが用意されています。

  • 変数をサポートするワークフローステップ
  • 変数をサポートしないワークフローステップ

変数をサポートするワークフローステップ

移動ステップ(OR分割ステップ)と、すべてのAEM Formsワークフローステップは変数をサポートします。

OR 分割ステップ

OR 分割は、ワークフロー内に分割を作成し、以降は 1 つのブランチだけがアクティブになります。これを使用すると、ワークフローに条件付き処理パスを導入できます。必要に応じて、各ブランチにワークフローステップを追加できます。

ルール定義、ECMA スクリプト、または外部スクリプトを使用して、ブランチのルーティング式を定義できます。

変数を使用して、式エディターを使用したルーティング式を定義できます。OR 分割ステップでルーティング式を使用する方法について詳しくは、「OR 分割ステップ」を参照してください。

この例では、ルーティング式を定義する前に、例 2 を使用して totalvalue 変数の値を設定します。totalvalue 変数の値が 50000 より大きい場合、ブランチ 1 はアクティブになります。同様に、totalvalue 変数の値が 50000 未満の場合に、Branch 2 をアクティブにするルールを定義できます。

同様に、外部スクリプトパスを選択するか、ルーティング式の ECMA スクリプトを指定して、アクティブなブランチを評価します。「ブランチ名の変更」をタップして、ブランチの別の名前を指定します。

その他の例については、ワークフローモデルの作成を参照してください。

移動ステップ

移動ステップ​を使用すると、ルーティング式の結果に応じて、ワークフローモデル内で実行する次のステップを指定できます。

OR 分割ステップと同様に、ルール定義、ECMA スクリプト、または外部スクリプトを使用して、移動ステップのルーティング式を定義できます。

変数を使用して、式エディターを使用したルーティング式を定義できます。移動ステップでルーティング式を使用する方法について詳しくは、「移動ステップ」を参照してください。

移動のルール

この例では、actiontaken 変数の値が Need more info に等しい場合、移動ステップは次のステップとして「Review Credit Card Application」を指定します。

移動ステップでのルール定義の使用するその他の例については、For ループのシミュレーションを参照してください。

Forms中心のワークフローステップ

すべてのAEM Formsワークフローステップで変数がサポートされます。 詳しくは、OSGi での Forms 中心のワークフローを参照してください

変数をサポートしないワークフローステップ

MetaDataMap インターフェイスを使用して、変数をサポートしないワークフロー手順の変数にアクセスできます。

変数値の取得

ECMA スクリプトで次の API を使用して、データタイプに基づいて既存の変数の値を取得します。

変数データタイプ API
プリミティブ(Long、Double、Boolean、Date、String) workItem.getWorkflowData().getMetaDataMap().get(variableName, type)
XML Packages.org.w3c.dom.Document xmlObject = workItem.getWorkflowData().getMetaDataMap().get(variableName, Packages.org.w3c.dom.Document.class);
JSON Packages.com.google.gson.JsonObject jsonObject = workItem.getWorkflowData().getMetaDataMap().get(variableName, Packages.com.google.gson.JsonObject.class);

AEM Formsワークフローで使用できる追加の複雑な変数データ型のAPIについて詳しくは、「 AEM Formsワークフローの変数🔗 」を参照してください。

次の API を使用して、string データタイプの値を取得します。

workItem.getWorkflowData().getMetaDataMap().get(accname, Packages.java.lang.String)

変数値の更新

ECMA スクリプトで次の API を使用して、変数の値を更新します。

workItem.getWorkflowData().getMetaDataMap().put(variableName, value)

workItem.getWorkflowData().getMetaDataMap().put(salary, 50000)

salary​変数の値を50000に更新します。

ワークフローを呼び出す変数の設定

API を使用して変数を設定し、それらを渡してワークフローインスタンスを呼び出すことができます。

workflowSession.startWorkflowsは、モデル、wfData、metaDataを引数として使用します。MetaDataMap を使用して変数の値を設定します。

この API では、variableName 変数は metaData.put(variableName, value) を使用して value に設定されます。

import com.adobe.granite.workflow.model.WorkflowModel;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import com.adobe.aemfd.docmanager.Document;

/*Assume that you already have a workflowSession and modelId along with the payloadType and payload*/
WorkflowData wfData = workflowSession.newWorkflowData(payloadType, payload);
MetaDataMap metaData = wfData.getMetaDataMap();
metaData.put(variableName, value); //Create a variable "variableName" in your workflow model
WorkflowModel model = workflowSession.getModel(modelId);
workflowSession.startWorkflow(model, wfData, metaData);

変数の編集

  1. ワークフローの編集ページで、ワークフローモデルのサイドキックにある「変数」アイコンをタップします。左側のペインの「変数」セクションには、既存のすべての変数が表示されます。
  2. 編集する変数名の横にある(編集)アイコンをタップします。
  3. 変数情報を編集し、 をタップして変更を保存します。変数の「名前」フィールドと「タイプ」フィールドは編集できません。

変数の削除

変数を削除する前に、ワークフローから変数のすべての参照を削除します。この変数がワークフローで使用されていないことを確認します。

変数を削除するには、次の手順を実行します。

  1. ワークフローの編集ページで、ワークフローモデルのサイドキックにある「変数」アイコンをタップします。左側のペインの「変数」セクションには、既存のすべての変数が表示されます。
  2. 削除する変数名の横にある削除アイコンをタップします。
  3. をタップして、変数を確定して削除します。

このページ