ワークフローモデルの変数は、そのデータタイプに基づいて値を格納する方法です。ワークフローステップで変数の名前を使用して、変数に格納されている値を取得できます。変数名を使用して、ルーティング上の決定を行う式を定義することもできます。
AEM ワークフローモデルでは、次のことができます。
次のビデオでは、AEM ワークフローモデルで変数を作成、設定および使用する方法を示します。
変数は、既存の MetaDataMap インターフェイスの拡張です。ECMAScript で MetaDataMap を使用すると、変数を使用して保存されたメタデータにアクセスできます。
変数は、ワークフローモデルのサイドキックにある「変数」セクションを使用して作成します。AEM ワークフロー変数は、次のデータタイプをサポートしています。
ワークフローでは、日付型変数に対して ISO8601 形式のみをサポートします。
ドキュメントとフォームデータモデルのデータタイプには、AEM Forms アドオンパッケージ が必要です。ArrayList データタイプを使用して、変数コレクションを作成します。すべてのプリミティブデータタイプと複合データタイプに対して ArrayList 変数を作成できます。例えば、ArrayList 変数を作成し、サブタイプとして String を選択して、変数を使用して複数の文字列値を格納します。
変数を作成するには、次の手順を実行します。
AEM インスタンスで、ツール /ワークフロー/モデルに移動します。
「作成」をタップし、ワークフローモデルのタイトルとオプション名を指定します。モデルを選択し、「編集」をタップします。
ワークフローモデルのサイドキックにある変数アイコンをタップし、「追加変数」をタップします。
「変数の追加」ダイアログで、名前を指定し、変数のタイプを選択します。
「タイプ」ドロップダウンリストからデータタイプを選択し、次の値を指定します。
変数の説明(オプション)を指定し、 をタップして変更を保存します。変数は、左側のペインで使用可能なリストに表示されます。
変数を作成する場合、次のプラクティスをお勧めします。
「変数を設定」ステップを使用して、変数の値を設定し、値が設定される順序を定義できます。変数は、変数の設定ステップで変数のマッピングがリストされている順序で設定されます。
変数値を変更すると、変更が発生したプロセスのインスタンスのみに影響します。例えば、ワークフローが開始され変数データが変更されると、変更はそのワークフローのインスタンスのみに影響します。変更は、以前に開始された、または後で開始されたワークフローの他のインスタンスには影響しません。
変数のデータタイプに応じて、次のオプションを使用して変数の値を設定できます。
リテラル:指定する値が正確に分かっている場合は、このオプションを使用します。
式:使用する値が式に基づいて計算される場合は、このオプションを使用します。式は、提供された式エディターで作成されます。
JSON ドット表記:このオプションを使用して、JSON または FDM タイプの変数から値を取得します。
XPATH:このオプションを使用して XML タイプ変数から値を取得します。
ペイロード基準:変数として格納する値が、ペイロードを基準としたパスにある場合は、このオプションを使用します。
絶対パス:変数として格納する値が絶対パスにある場合は、このオプションを使用します。
また、JSON DOT 表記法または XPATH 表記法を使用して、JSON または XML タイプの変数の特定の要素を更新することもできます。
変数間のマッピングを追加するには、次の手順を実行します。
XML タイプの変数を選択し、XML ファイルを格納します。XML 変数をクエリして、XML ファイルで使用可能なプロパティの文字列変数の値を設定します。「XML 変数に XPATH を指定」フィールドを使用して、文字列変数に格納するプロパティを定義します。
この例では、formdata XML 変数を選択して cc-app.xml ファイルを格納します。formdata 変数をクエリして、emailaddress 文字列変数の値を設定し、cc-app.xml ファイルで使用できる emailAddress プロパティの値を格納します。
式を使用して変数の和を計算し、結果を変数に格納します。
この例では、式エディターを使用して式を定義し、assetscost 変数と balanceamount 変数の和を計算し、その結果を totalvalue 変数に格納します。
実行時の変数の値を計算するのにも式を使用します。変数は、式を定義する式エディターを提供します。
式エディターを使用して、次の操作を行います。
これは、次の変更を加えたアダプティブフォームのルールエディターに基づいています。変数のルールエディター:
詳しくは、アダプティブフォームのルールエディターを参照してください。
変数を使用して、入力と出力を取得したり、ステップの結果を保存したりできます。ワークフローエディターには、次の 2 種類のワークフローステップが用意されています。
移動ステップ、OR 分割ステップおよびすべての AEM Forms Workflow ステップは変数をサポートします。
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 ループのシミュレーションを参照してください。
すべての AEM Forms Workflow ステップは、変数をサポートします。詳しくは、OSGi での Forms 中心のワークフローを参照してください。
MetaDataMap インターフェイスを使用して、変数をサポートしないワークフロー手順の変数にアクセスできます。
ECMA スクリプトで次の API を使用して、データタイプに基づいて既存の変数の値を取得します。
変数データタイプ | API |
---|---|
プリミティブ(Long、Double、Boolean、Date、String) | workItem.getWorkflowData().getMetaDataMap().get(variableName, type) |
ドキュメント | Packages.com.adobe.aemfd.docmanager.Document doc = workItem.getWorkflowData().getMetaDataMap().get("docVar", Packages.com.adobe.aemfd.docmanager.Document.class); |
XML | Packages.org.w3c.dom.Document xmlObject = workItem.getWorkflowData().getMetaDataMap().get(variableName, Packages.org.w3c.dom.Document.class); |
フォームデータモデル | Packages.com.adobe.aem.dermis.api.FormDataModelInstance fdmObject = workItem.getWorkflowData().getMetaDataMap().get(variableName, Packages.com.adobe.aem.dermis.api.FormDataModelInstance.class); |
JSON | Packages.com.google.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);
Forms Workflow を使用して処理されるデータには、個人を特定できる情報や個人情報などの機密性の高いユーザーデータを含めることができます。企業は、様々なワークフローステップで処理される(およびワークフロー変数を使用して渡される)データを、JCR ストレージから所有および管理する外部データストアに格納することを選択できます。外部ストレージへのワークフローデータの保持について詳しくは、顧客が所有するデータストアに対するワークフロー変数の使用を参照してください。
Adobe Experience Manager は、ワークフロー API UserMetaDataPersistenceProvider を提供して、外部の Azure BLOB ストレージにワークフロー変数を保存します。API の使用について詳しくは、ワークフロー変数を使用して、機密データをパラメータ化し、外部データストアに保存するを参照してください。
変数を削除する前に、ワークフローから変数のすべての参照を削除します。この変数がワークフローで使用されていないことを確認します。
以下の手順を実行し、変数を削除します。
AEM Forms Workflow ステップで変数を使用するその他の例については、AEM ワークフローの変数を参照してください。