工作流程模型中的變數是根據其資料類型儲存值的方式。 然後,您可以在任何工作流程步驟中使用變數的名稱,以擷取儲存在變數中的值。 您也可以使用變數名稱來定義用於進行路由決策的表達式。
在AEM工作流程模型中,您可以:
下列影片示範如何在AEM工作流程模型中建立、設定和使用變數:
變數是現有 MetaDataMap 介面。 您可以使用 MetaDataMap ECMAScript中存取使用變數儲存的中繼資料。
您可以使用工作流程模型sidekick中可用的「變數」區段來建立變數。 AEM工作流程變數支援下列資料類型:
工作流程僅支援日期類型變數的ISO8601格式。
您需要 AEM Forms附加元件套件 (適用於文檔和表單資料模型資料類型)。 使用ArrayList資料類型建立變數集合。 您可以為所有基元和複雜資料類型建立ArrayList變數。 例如,建立ArrayList變數,並選取String作為子類型,以使用變數儲存多個字串值。
執行下列步驟以建立變數:
在AEM例項上,導覽至「工具」 >工作流>模型。
點選 建立 並指定工作流模型的標題和可選名稱。 選取模型並點選 編輯.
點選工作流程模型sidekick中可用的變數圖示,然後點選 新增變數.
在「新增變數」對話方塊中,指定名稱並選取變數的類型。
從 類型 下拉式清單中,並指定下列值:
指定變數的可選說明,然後點選 以儲存變更。 變數會顯示在左窗格的可用清單中。
建立變數時,請考量下列實務:
您可以使用「設定變數」步驟來設定變數的值,並定義值的設定順序。 變數的設定順序為變數對應在設定變數步驟中列出的順序。
變數值的變更只會影響發生變更的程式例項。 例如,當工作流程起始且變數資料變更時,變更只會影響工作流程的該例項。 這些更改不會影響先前啟動或隨後啟動的工作流的其他實例。
根據變數的資料類型,您可以使用下列選項來設定變數的值:
常值: 當您知道要指定的確切值時,請使用選項。
運算式: 根據運算式計算要使用的值時,請使用選項。 運算式是在提供的運算式編輯器中建立。
JSON點記號: 使用選項可從JSON或FDM類型變數擷取值。
XPATH: 使用選項可從XML類型變數中檢索值。
相對於裝載: 當要儲存至變數的值在與裝載相關的路徑上可用時,請使用選項。
絕對路徑: 當要儲存至變數的值在絕對路徑上可用時,請使用選項。
您也可以使用JSON DOT標籤法或XPATH標籤法來更新JSON或XML類型變數的特定元素。
執行下列步驟以新增變數之間的對應:
選擇XML類型的變數以儲存XML檔案。 查詢XML變數,為XML檔案中可用的屬性設定字串變數的值。 使用 為XML變數指定XPATH 欄位來定義要儲存在字串變數中的屬性。
在此範例中,選取 表單資料 要儲存的XML變數 cc-app.xml 檔案。 查詢 表單資料 變數來設定 電子郵件地址 字串變數來儲存 emailAddress 屬性 cc-app.xml 檔案。
使用運算式來計算變數的總和,並將結果儲存在變數中。
在此範例中,使用運算式編輯器來定義運算式,以計算 資產成本 和 餘額 變數並將結果儲存在 totalvalue 變數。
您也可以使用運算式來計算執行階段上變數的值。 變數提供運算式編輯器來定義運算式。
使用運算式編輯器可:
此工具以適用性表單規則編輯器為基礎,並有下列變更。 變數中的規則編輯器:
如需詳細資訊,請參閱 適用性表單規則編輯器.
您可以使用變數來擷取輸入和輸出,或儲存步驟的結果。 工作流程編輯器提供兩種工作流步驟:
「移至」步驟、「或」分割步驟,以及所有AEM Forms工作流程步驟都支援變數。
「或分割」在工作流中建立分割,之後只有一個分支處於作用中狀態。 此步驟可讓您將條件式處理路徑引入工作流程中。 您可以視需要將工作流程步驟新增至每個分支。
您可以使用規則定義、ECMA指令碼或外部指令碼來定義分支的路由表達式。
您可以使用變數來使用運算式編輯器定義路由運算式。 有關在「或分割」步驟中使用路由表達式的詳細資訊,請參閱 或分割步驟.
在此示例中,在定義路由表達式之前,請使用 範例2 若要設定 totalvalue 變數。 如果 totalvalue 變數大於50000。 同樣地,您可以定義規則,讓Branch 2在 totalvalue 變數小於50000。
同樣,選擇外部指令碼路徑或指定ECMA指令碼,以便路由表達式來評估活動分支。 點選 更名分支 指定分支的替代名稱。
如需更多範例,請參閱 建立工作流模型.
此 轉至步驟 允許您根據路由表達式的結果指定要執行的工作流模型中的下一步。
與「或分割」步驟類似,您可以使用規則定義、ECMA指令碼或外部指令碼來定義「轉到」步驟的路由表達式。
您可以使用變數來使用運算式編輯器定義路由運算式。 有關在「轉至」步驟中使用路由表達式的詳細資訊,請參見 轉至步驟.
在此示例中,「轉到」步驟指定「複查信用卡應用程式」,如果 actioned 變數等於 需要更多資訊.
如需在前往步驟中使用規則定義的更多範例,請參閱 模擬For循環.
所有AEM Forms工作流程步驟都支援變數。 如需詳細資訊,請參閱 Forms以OSGi為中心的工作流程.
您可以使用 MetaDataMap 介面來存取不支援變數的工作流程步驟中的變數。
在ECMA指令碼中使用下列API,根據資料類型擷取現有變數的值:
變數資料類型 | API |
---|---|
基元(長、雙、布林、日期和字串) | 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.FormDataModelInstanceObject = 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擷取字串資料類型的值:
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 變數設為 value 使用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);
範例
初始化 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);
使用表單工作流程處理的資料可包含敏感使用者資料,例如個人識別資訊和敏感個人資訊。 企業可以選擇將經過各種工作流程步驟(並使用工作流程變數傳遞)處理的資料,從JCR儲儲存儲存存到由他們擁有和管理的外部資料儲存中。 若要進一步了解在外部儲存中持續保存的工作流程資料,請參閱 為客戶擁有的資料存放區使用工作流程變數.
Adobe Experience Manager 提供工作流程API UserMetaDataPersistenceProvider 將工作流程變數儲存在外部Azure blob儲存區中。 如需使用API的詳細資訊,請參閱 使用工作流程變數來參數化敏感資料並儲存在外部資料存放區.
刪除變數之前,請先從工作流程中移除變數的所有參考。 確定變數未用於工作流程中。
執行下列步驟以刪除變數:
如需在AEM Forms工作流程步驟中使用變數的詳細範例,請參閱 AEM工作流程中的變數.