AEM提供數個可用來建立工作流程模型的流程步驟。 您也可以針對內建步驟未涵蓋的工作新增自訂流程步驟(請參閱建立工作流程模型)。
對於每個過程步驟,描述了以下特性。
流程步驟由Java類或ECMAScript定義。
裝載是工作流實例所依據的實體。 裝載由啟動工作流實例的上下文隱式選擇。
例如,如果工作流程套用至AEM頁面P,則當工作流程進行時,會逐步傳遞P,每個步驟都可選擇以某種方式對P採取行動。
在最常見的情況下,裝載是儲存庫中的JCR節點(例如AEM頁面或資產)。 JCR節點裝載作為字串傳遞,該字串是JCR路徑或JCR標識符(UUID)。 在某些情況下,裝載可能是JCR屬性(以JCR路徑傳遞)、URL、二進位物件或一般Java物件。 實際作用於裝載的個別處理步驟通常會預期某種類型的裝載,或根據裝載類型採取不同的作用。 對於下面描述的每個過程,將說明預期的裝載類型(如果有)。
某些工作流進程接受管理員在設定工作流步驟時指定的參數。
在工作流編輯器的屬性窗格中的處理參數屬性中,將參數作為單個字串輸入。 對於下面描述的每個過程,參數字串的格式以簡單的EBNF語法進行描述。 例如,以下指示引數字串由一個或多個逗號分隔的對組成,其中每對都由名稱(即字串)和值(以雙冒號分隔)組成:
args := name '::' value [',' name '::' value]*
name := /* A string */
value := /* A string */
在此逾時期間後,工作流程步驟便不再運作。 有些工作流程程式會遵守逾時,而有些則不適用,因此會被忽略。
傳遞給WorkflowProcess
的會話由工作流進程服務的服務用戶支援,該服務在儲存庫的根目錄中具有以下權限:
jcr:read
rep:write
jcr:versionManagement
jcr:lockManagement
crx:replicate
如果該權限集對於您的WorkflowProcess
實施不夠,則必須使用具有所需權限的會話。
建議的方法是使用使用使用所需權限子集(但最小)建立的服務用戶。
如果您是從AEM 6.2之前的版本升級,您可能需要更新實作。
在舊版中,管理會話會傳遞給WorkflowProcess
實施,然後可以完全訪問儲存庫,而無需定義特定ACL。
權限現在定義為上述(Permissions)。 建議的實作更新方法亦同。
當程式碼變更不可行時,短期解決方案也可用於回溯相容性的目的:
使用Web控制台(/system/console/configMgr
找到Adobe Granite Workflow Configuration Service
啟用工作流進程舊模式
這將恢復為向WorkflowProcess
實施提供管理會話的舊行為,並再次提供對整個儲存庫的無限制訪問。
下列程式不會對內容執行任何動作。 它們可用來控制工作流程本身的行為。
AbsoluteTimeAutoAdvancer
(絕對時間自動提前器)進程與AutoAdvancer的運行方式相同,只不過它在指定的時間和日期而不是在指定的時間長度後超時。
com.adobe.granite.workflow.console.timeout.autoadvance.AbsoluteTimeAutoAdvancer
AutoAdvancer
進程會自動將工作流推進到下一步。 如果有多個可能的下一步(例如,如果存在OR拆分),則此進程將沿預設路由推進工作流,如果已指定,則不進行工作流。
Java類: com.adobe.granite.workflow.console.timeout.autoadvance.AutoAdvancer
裝載:沒有。
引數:沒有。
逾時:在設定的時間長度後,處理逾時。
ProcessAssembler
進程在單個工作流步驟中按順序執行多個子進程。 要使用ProcessAssembler
,請在工作流中建立此類型的單個步驟,並設定其參數以指明要執行的子進程的名稱和參數。
Java類: com.day.cq.workflow.impl.process.ProcessAssembler
裝載:DAM資產、AEM頁面或無裝載(視子程式需求而定)。
引數:
args := arg [',' arg]
arg := processname ['::' processargs]
processname := /* A fully qualified Java Class or absolute
repository path to an ECMAScript */
processargs := processarg [';' processarg]*
processarg := '[' nobracketprocessarg ']' | nobracketprocessarg
nobracketprocessarg := listitem [':' listitem]*
listitem := /* A string */
例如:
com.day.cq.dam.core.process.ExtractMetadataProcess,
com.day.cq.dam.core.process.CreateThumbnailProcess::[140:100];[48:48];[319:319:false],
com.day.cq.dam.core.process.CreateWebEnabledImageProcess::dimension:1280:1280;mimetype:image/jpeg,
com.day.cq.dam.core.process.AssetSetLastModifiedProcess
下列程式會執行簡單工作或做為範例。
您必須不要變更/libs
路徑中的任何項目。
這是因為下次升級實例時會覆寫/libs
的內容(當您套用修補程式或功能套件時可能會覆寫)。
指定路徑上的項目即會刪除。
ECMAScript路徑: /libs/workflow/scripts/delete.ecma
裝載:JCR路徑
引數:無
逾時:已忽略
這是空進程。 它不執行任何操作,但會記錄調試消息。
ECMAScript路徑: /libs/workflow/scripts/noop.ecma
裝載:無
引數:無
逾時:已忽略
這是一個在check()
方法上返回false
的空進程。
ECMAScript路徑: /libs/workflow/scripts/rule-false.ecma
裝載:無
引數:無
逾時:已忽略
這是ECMAScript程式示例。
ECMAScript路徑: /libs/workflow/scripts/sample.ecma
裝載:無
引數:無
逾時:已忽略
這是呼叫指定URL的簡單工作流程程式。 通常,URL將是執行簡單任務的JSP(或其它等效servlet)的引用。 此程式僅應用於開發和展示,而不應用於生產環境。 引數指定URL、登入和密碼。
ECMAScript路徑: /libs/workflow/scripts/urlcaller.ecma
裝載:無
引數:
args := url [',' login ',' password]
url := /* The URL to be called */
login := /* The login to access the URL */
password := /* The password to access the URL */
例如:http://localhost:4502/my.jsp, mylogin, mypassword
鎖定工作流的裝載。
Java類: com.day.cq.workflow.impl.process.LockProcess
裝載: JCR_PATH和JCR_UUID
引數: 無
逾時:已忽 略
在下列情況下,該步驟不具效力:
解除鎖定工作流程的裝載。
Java類: com.day.cq.workflow.impl.process.UnlockProcess
裝載: JCR_PATH和JCR_UUID
引數: 無
逾時:已忽 略
在下列情況下,該步驟不具效力:
以下進程將執行與版本相關的任務。
建立工作流程裝載的新版本(AEM頁面或DAM資產)。
Java類: com.day.cq.wcm.workflow.process.CreateVersionProcess
裝載:參照頁面或DAM資產的JCR路徑或UUID
引數:無
逾時:受尊重