ワークフローモデル内の変数は、そのデータ型に基づいて値を格納する方法です。 その後、任意のワークフロー手順で変数の名前を使用して、変数に保存されている値を取得できます。 変数名を使用して、ルーティング上の意思決定を行う式を定義することもできます。
AEMワークフローモデルでは、次のことができます。
次のビデオでは、AEMワークフローモデルで変数を作成、設定および使用する方法を示します。
変数は、既存のMetaDataMapインターフェイスの拡張です。 ECMAScriptでMetaDataMapを使用すると、変数を使用して保存されたメタデータにアクセスできます。
変数は、ワークフローモデルのサイドキックにある「変数」セクションを使用して作成します。 AEMワークフロー変数は、次のデータ型をサポートしています。
ワークフローでは、日付型変数に対してISO8601形式のみがサポートされています。
ドキュメントおよびフォームデータモデルのデータ型には、AEM Formsアドオンパッケージが必要です。 ArrayListデータ型を使用して、変数コレクションを作成します。 すべてのプリミティブデータ型と複合データ型に対してArrayList変数を作成できます。 例えば、ArrayList変数を作成し、その変数を使用して複数の文字列値を格納する場合は、「String」をサブタイプとして選択します。
次の手順を実行して、変数を作成します。
AEMインスタンスで、ツール/ワークフロー/モデルに移動します。
「作成」をタップし、ワークフローモデルのタイトルとオプション名を指定します。 モデルを選択し、編集をタップします。
ワークフローモデルのサイドキックにある変数アイコンをタップし、追加変数をタップします。
Variable追加ダイアログで、名前を指定し、変数のタイプを選択します。
タイプドロップダウンリストからデータタイプを選択し、次の値を指定します。
変数の説明(オプション)を指定し、をタップして変更を保存します。 変数は、左側のペインで使用可能なリストに表示されます。
変数を作成する場合、次のプラクティスをお勧めします。
変数の値を設定し、値が設定される順序を定義するには、変数の設定手順を使用します。 変数は、変数の設定手順で変数のマッピングが示される順序で設定されます。
変数値を変更すると、変更が発生したプロセスのインスタンスのみに影響します。例えば、ワークフローが開始され、変数データが変更されると、その変更はワークフローのそのインスタンスにのみ影響します。 この変更は、以前に開始された、または以降に開始されたワークフローの他のインスタンスには影響しません。
変数のデータタイプに応じて、次のオプションを使用して変数の値を設定できます。
リテラル:指定する値が正確に分かっている場合は、このオプションを使用します。
式:式に基づいて値が計算される場合は、このオプションを 使用します。式は、提供された式エディタで作成されます。
JSONドット表記:JSONまたはFDM型の変数から値を取得するには、このオプションを 使用します。
XPATH:XML型の変数から値を取得するには、このオプションを 使用します。
ペイロードとの相対:変数に保存する値が、ペイロードとの相対パスで使用可能な場合に このオプションを使用します。
絶対パス:変数に保存する値が絶対パスで使用できる場合に 使用します。
また、JSON DOT NotationまたはXPATH表記を使用して、JSONまたはXML型の変数の特定の要素を更新することもできます。
次の手順を実行して、変数間のマッピングを追加します。
XMLファイルを保存するXML型の変数を選択します。 XML変数をクエリして、XMLファイルで使用可能なプロパティの文字列変数の値を設定します。 XML変数フィールドのXPATHを指定して、文字列変数に格納するプロパティを定義します。
この例では、formdata XML変数を選択してcc-app.xmlファイルを保存します。 formdata変数をクエリして、emailaddress文字列変数の値を設定し、cc-app.xmlファイルで使用できるemailAddressプロパティの値を保存します。
式を使用して変数の合計を計算し、結果を変数に格納します。
この例では、式エディターを使用して、assetscost変数とbalanceamount変数の合計を計算し、結果をtotalvalue変数に格納する式を定義します。
また、式を使用して、実行時に変数の値を計算します。 変数は、式を定義する式エディターを提供します。
式エディターを使用して、次の操作を行います。
これは、次の変更を加えたアダプティブフォームのルールエディターに基づいています。 変数のルールエディター:
詳しくは、「アダプティブフォームのルールエディター」を参照してください。
変数を使用して、入力と出力を取得したり、ステップの結果を保存したりできます。 ワークフローエディターには、次の2種類のワークフロー手順が用意されています。
「移動先」、「分割」の各ステップと、すべてのAEM Formsワークフローステップで、変数がサポートされています。
OR 分割は、ワークフロー内に分割を作成し、以降は 1 つのブランチだけがアクティブになります。これを使用すると、ワークフローに条件付き処理パスを導入できます。必要に応じて、各ブランチにワークフローステップを追加できます。
ブランチのルーティング式は、ルール定義、ECMAスクリプトまたは外部スクリプトを使用して定義できます。
変数を使用して、式エディターを使用してルーティング式を定義できます。 OR分割手順でのルーティング式の使用について詳しくは、または分割手順を参照してください。
この例では、ルーティング式を定義する前に、例2を使用してtotalvalue変数の値を設定します。 totalvalue変数の値が50000より大きい場合、ブランチ1はアクティブです。 同様に、totalvalue変数の値が50000未満の場合に、Branch 2をアクティブにするルールを定義できます。
同様に、アクティブなブランチを評価するルーティング式に対して、外部スクリプトパスを選択するか、ECMAスクリプトを指定します。 「ブランチ名の変更」をタップして、ブランチの別の名前を指定します。
その他の例については、ワークフローモデルの作成を参照してください。
Gotoステップを使用すると、ルーティング式の結果に応じて、実行するワークフローモデルの次のステップを指定できます。
OR分割の手順と同様に、ルール定義、ECMAスクリプトまたは外部スクリプトを使用して、Goto手順のルーティング式を定義できます。
変数を使用して、式エディターを使用してルーティング式を定義できます。 Gotoステップでルーティング式を使用する方法について詳しくは、Gotoステップを参照してください。
この例では、actiontaken変数の値がNeed more infoと等しい場合、Goto手順で「Review Credit Card Application」を次の手順として指定します。
Goto手順でのルール定義の使用例については、Forループのシミュレーションを参照してください。
すべてのAEM Formsワークフローステップで、変数がサポートされています。 詳しくは、OSGiでのForms中心のワークフローを参照してください。
MetaDataMapインターフェイスを使用して、変数をサポートしないワークフロー手順の変数にアクセスできます。
ECMAスクリプトで次のAPIを使用して、データ型に基づいて既存の変数の値を取得します。
変数データ型 | API |
---|---|
プリミティブ(長整数型、重複型、ブール型、日付型、文字列型) | workItem.getWorkflowData().getMetaDataMap().get(variableName, type) |
ドキュメント | Packages.com.adobe.aemfd.docmanager.ドキュメントdoc = workItem.getWorkflowData().getMetaDataMap().get("docVar", Packages.com.adobe.aemfd.docmanager.ドキュメント.class); |
XML | Packages.org.w3c.dom.ドキュメントxmlObject = workItem.getWorkflowData().getMetaDataMap().get(variableName, Packages.org.w3c.dom.ドキュメント.class); |
フォームデータモデル | Packages.com.adobe.aem.aderame.api.FormDataModelInstance fdmObject = workItem.getWorkflowData().get(variableName, Packages.com.adobe.aem.api.FormDataModelInstance.class); |
JSON | Packages.com.gogoogle.gson.JsonObject jsonObject = workItem.getWorkflowData().getMetaDataMap().get(variableName, Packages.com.google.gson.JsonObject.class); |
ドキュメントおよびフォームデータモデルの変数データ型には、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);
例
docドキュメントオブジェクトをパス("a/b/c")に初期化し、docVar変数の値をドキュメントオブジェクトに保存されているパスに設定します。
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkflowData;
import com.adobe.granite.workflow.model.WorkflowModel;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import com.adobe.aemfd.docmanager.Document;
/*This example assumes that you already have a workflowSession and modelId along with the payloadType and payload */
WorkflowData wfData = workflowSession.newWorkflowData(payloadType, payload);
MetaDataMap metaData = wfData.getMetaDataMap();
Document doc = new Document("/a/b/c");// initialize a document object
metaData.put("docVar",doc); //Assuming that you have created a variable "docVar" of type Document in your workflow model
WorkflowModel model = workflowSession.getModel(modelId);
workflowSession.startWorkflow(model, wfData, metaData);
変数を削除する前に、ワークフローから変数の参照をすべて削除します。 この変数がワークフローで使用されていないことを確認します。
次の手順を実行して、変数を削除します。
AEM Formsのワークフロー手順で変数を使用する例については、AEMワークフローの変数を参照してください。