工作流程模型中的變數是根據其資料型別儲存值的方法。 然後,您就可以在任何工作流程步驟中使用變數的名稱,來擷取儲存在變數中的值。 您也可以使用變數名稱來定義用於進行路由決定的運算式。
在AEM工作流程模型中,您可以:
以下影片示範如何在AEM工作流程模型中建立、設定和使用變數:
變數是 中繼資料對應 介面。 您可以使用 中繼資料對應 以存取使用變數儲存的中繼資料。
您可以使用工作流程模型Sidekick中可用的變數區段來建立變數。 AEM工作流程變數支援下列資料型別:
工作流程僅支援日期型別變數的ISO8601格式。
如需AEM Forms工作流程中可用的其他複雜資料型別,請參閱 AEM Forms工作流程中的變數. 使用ArrayList資料型別建立變數集合。 您可以為所有基本和複雜資料型別建立ArrayList變數。 例如,建立ArrayList變數並選取String作為子型別,以使用變數儲存多個字串值。
若要建立變數,
在AEM執行個體上,導覽至「工具>工作流程>模型」。
點選 建立 和指定工作流程模型的標題和選用名稱。 選取模型並點選 編輯.
點選工作流程模型Sidekick中可用的變數圖示,然後點選 新增變數.
在新增變數對話方塊中,指定名稱,並選取變數的型別。
從中選擇資料型別 型別 下拉式清單,並指定下列值:
指定變數的說明(選用),然後點選 以儲存變更。 變數會顯示在左窗格中的可用清單中。
建立變數時,請考量下列作法:
您可以使用「設定變數」步驟來設定變數的值,並定義設定值的順序。 變數的設定順序,是將變數對應列在設定變數步驟中。
變數值的變更只會影響變更發生的程式例項。 例如,啟動工作流程並變更變數資料時,變更只會影響該工作流程例項。 變更不會影響先前已起始或稍後起始之工作流程的其他執行個體。
根據變數的資料型別,您可以使用下列選項來設定變數的值:
您也可以使用JSON點標籤法或XPATH標籤法來更新JSON或XML型別變數的特定元素。
若要新增變數之間的對應,請執行下列動作:
選取要儲存XML檔案的XML型別變數。 查詢XML變數,為XML檔案中可用的屬性設定字串變數的值。 使用 指定XML變數的XPATH 欄位,定義要儲存在字串變數中的屬性。
在此範例中,選取 formdata 要儲存的XML變數 cc-app.xml 檔案。 查詢 formdata 變數,以便您設定 電子郵件地址 字串變數來儲存的值 電子郵件地址 中可用的屬性 cc-app.xml 檔案。
使用運算式來計算變數的總和,並將結果儲存在變數中。
在此範例中,使用運算式編輯器來定義運算式,以計算 assetscost 和 balanceamount 變數並儲存結果 totalvalue 變數。
您也可以在執行階段使用運算式來計算變數的值。 變數提供運算式編輯器來定義運算式。
使用運算式編輯器可以:
它以適用性表單規則編輯器為基礎,有下列變更。 變數中的規則編輯器:
如需詳細資訊,請參閱 調適型表單規則編輯器.
您可以使用變數來擷取輸入和輸出,或儲存步驟的結果。 工作流程編輯器提供兩種型別的工作流程步驟:
「跳至」步驟、「OR分割」步驟以及所有AEM Forms工作流程步驟都支援變數。
「OR分割」會在工作流程中建立分割,之後只有一個分支處於作用中狀態。 此步驟可讓您在工作流程中匯入條件式處理路徑。 您可視需要將工作流程步驟新增至每個分支。
您可以使用規則定義、ECMA指令集或外部指令集來定義分支的路由表示式。
您可以使用變數來定義使用運算式編輯器的路由運算式。 如需在「OR分割」步驟中使用路由運算式的詳細資訊,請參閱 OR分割步驟.
在此範例中,在定義路由運算式之前,請使用 範例2 設定 totalvalue 變數。 如果下列專案的值,則分支1處於活動狀態: totalvalue 變數大於50000。 同樣地,您可以定義一個規則,使「分支2」成為活動狀態,如果 totalvalue 變數小於50000。
同樣地,選取外部指令碼路徑,或指定路由運算式的ECMA指令碼以評估作用中分支。 點選 重新命名分支 指定分支的替代名稱。
如需更多範例,請參閱 建立工作流程模型.
此 移至步驟 可讓您指定要在工作流程模型中執行的下一個步驟(視路由運算式的結果而定)。
與「OR分割」步驟類似,您可以使用規則定義、ECMA指令集或外部指令集來定義「轉至」步驟的路由表示式。
您可以使用變數來定義使用運算式編輯器的路由運算式。 如需在「跳至」步驟中使用路由運算式的詳細資訊,請參閱 移至步驟.
在此範例中,如果「 」的值為「 」,則「轉至」步驟會將「複查信用卡應用程式」指定為下一個步驟。 已執行動作 變數等於 需要更多資訊.
如需在「跳至」步驟中使用規則定義的更多範例,請參閱 模擬For循環.
所有AEM Forms工作流程步驟都支援變數。 如需詳細資訊,請參閱 OSGi上以Forms為中心的工作流程.
您可以使用 中繼資料對應 介面以存取工作流程步驟中不支援變數的變數。
若要根據資料型別擷取現有變數的值,請在ECMA指令碼中使用以下API。
變數資料型別 | API |
---|---|
基本(長、雙、布林、日期和字串) | 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擷取字串資料型別的值:
workItem.getWorkflowData().getMetaDataMap().get(accname, Packages.java.lang.String)
若要更新變數的值,請在ECMA指令碼中使用以下API。
workItem.getWorkflowData().getMetaDataMap().put(variableName, value)
範例
workItem.getWorkflowData().getMetaDataMap().put(salary, 50000)
更新 薪資 變數50000。
您可以使用API來設定變數,並傳遞它們以叫用工作流程例項。
workflowSession.startWorkflow 使用model、wfData和metaData作為引數。 使用MetaDataMap設定變數的值。
在此API中, variablename 變數設為 值 使用metaData.put(variableName, 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);
在刪除變數之前,請從工作流程中移除變數的所有參考。 確認工作流程中未使用變數。
若要刪除變數,