工作流程可讓您將Adobe Experience Manager(AEM)活動自動化。
它們通常代表環境中發生的大量處理AEM,因此,當自訂工作流程步驟未根據最佳實務撰寫,或現成可用的工作流程未設定為盡可能有效地執行時,系統會因此受到影響。
因此,強烈建議您謹慎規劃您的工作流程實作。
在設定工作流程程式(自訂和/或現成可用)時,有些事情需要留意。
若要最佳化高擷取負載,您可將工作流程定義為transient。
當工作流程為暫時性時,與中間工作步驟相關的執行階段資料在執行時不會保存在JCR中(當然會保留輸出轉譯)。
其優點包括:
如果您的企業規定您為了審核目的而保留/封存工作流程執行階段資料,請勿啟用此功能。
有關DAM工作流的效能調整指導,請參閱AEM Assets效能調整指南。
可允AEM許同時運行多個工作流線程。 預設情況下,線程數配置為系統上處理器內核數的一半。
當執行的工作流程需要系統資源時,這可能表示其他工作(AEM例如轉譯編寫UI)幾乎不需要使用。 因此,在大量影像上傳等活動期間,系統可能會變慢。
要解決此問題,Adobe建議將最大並行作業數配置為系統上處理器內核數的一半到四分之三之間。 這應允許系統有足夠的容量在處理這些工作流程時保持回應速度。
要配置最大並行作業數,您可以執行以下任一操作:
從Web主控台的Sling Jobs選項設定佇列AEM;對於作業隊列配置:Granite Workflow Queue, at http://localhost:4502/system/console/slingevent
。
此外,Granite工作流外部進程作業隊列還有單獨的配置。 這適用於啟動外部二進位檔案的工作流程程式,例如InDesign Server或影像快訊。
在某些情況下,配置單個作業隊列以控制單個作業的併發線程或其他隊列選項非常有用。 您可以透過Apache Sling Job Queue Configuration工廠,從Web主控台新增及設定個別佇列。 若要尋找要列出的適當主題,請執行您工作流程的模型,然後在Sling Jobs主控台中尋找它;例如,在http://localhost:4502/system/console/slingevent
。
您也可以新增個別工作佇列,以進行暫時性工作流程。
在標準安裝中,AEM提供維護主控台,可安排和設定每日和每週的維護活動;例如,at:
http://localhost:4502/libs/granite/operations/content/maintenance.html
預設情況下,每週維護窗口具有工作流清除任務,但必須在運行前配置此任務。 要配置工作流清除,必須在Web控制台中添加新的Adobe花崗岩工作流清除配置。
有關中維護任務的詳細信AEM息,請參見操作儀表板。
在編寫自訂工作流程程式時,應牢記一些事項。
工作流模型、啟動器、指令碼和通知的定義根據類型保存在儲存庫中;例如現成可用、自訂等。
另請參見6.4中的AEM儲存庫重組。
工作流模型根據類型儲存在儲存庫中:
現成可用的工作流程設計會保留在下列路徑下:
/libs/settings/workflow/models/
不要:
/libs
中的任何內容因為升級時或安裝修補程式、累積修補程式套件或服務套件時,可能會覆寫任何變更。
自訂工作流程設計保留於:
/conf/global/settings/workflow/models/...
執行時期工作流程設計(現成可用和自訂)會保存在下列路徑下:
/var/workflow/models/
舊式工作流程設計(包括設計時和執行時期)會保留在下列路徑下:
/etc/workflow/models/
如果這些設計是使用UI 編AEM輯的,則詳細資料會複製到新位置。
工作流啟動程式定義也根據類型儲存在儲存庫中:
現成可用的工作流程啟動器依下列路徑持有:
/libs/settings/workflow/launcher/
不要:
/libs
中的任何內容因為升級時或安裝修補程式、累積修補程式套件或服務套件時,可能會覆寫任何變更。
自訂工作流程啟動程式存放於:
/conf/global/settings/workflow/launcher/...
舊式工作流程啟動器依下列路徑持有:
/etc/workflow/launcher/
如果使用UI 編輯了這些定義AEM,則詳細資訊將複製到新位置。
工作流指令碼也根據類型儲存在儲存庫中:
現成可用的工作流程指令碼位於下列路徑下:
/libs/workflow/scripts/
不要:
/libs
中的任何內容因為升級時或安裝修補程式、累積修補程式套件或服務套件時,可能會覆寫任何變更。
自訂工作流程指令碼保留於:
/apps/workflow/scripts/...
舊式工作流程指令碼會保留在下列路徑下:
/etc/workflow/scripts/
工作流通知也根據類型儲存在儲存庫中:
現成可用的工作流程通知定義位於下列路徑下:
/libs/settings/workflow/notification/
不要:
/libs
中的任何內容因為升級時或安裝修補程式、累積修補程式套件或服務套件時,可能會覆寫任何變更。
自訂工作流程通知定義位於:
/conf/global/settings/workflow/notification/...
如果要覆蓋工作流通知文本,請在以下位置建立一個覆蓋路徑:
/conf/global/settings/workflow/notification/<path-under-libs>
舊式工作流程通知定義位於下列路徑下:
/etc/workflow/notification/
和任何自訂開發一樣,建議您盡可能使用使用者的工作階段:
實作工作流程程式時:
public void execute(WorkItem item, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
// to obtain a jcr session:
javax.jcr.Session jcrSession = workflowSession.adaptTo(javax.jcr.Session.class);
// to obtain a sling resource resolver:
org.apache.sling.api.resource.ResourceResolver slingResourceResolver = workflowSession.adaptTo(org.apache.sling.api.resource.ResourceResolver.class);
保存會話:
在工作流進程內,如果WorkflowSession
用於修改儲存庫,則不顯式保存會話——工作流將在會話完成時保存會話。
Session.Save
不應從工作流程步驟中呼叫:
save
。借由消除不必要的省錢,您可以降低開銷,進而提高工作流程的效率。
如果您確實建立自己的jcr作業,儘管此處有建議,但需要儲存它。
有一個監聽器負責所有已註冊的工作流啟動器:
建立過多的啟動器將導致評估程式運行更慢。
在單個啟動器上在儲存庫的根位置建立全域路徑將導致工作流引擎偵聽並評估建立/修改事件到儲存庫中的每個節點。 因此,建議僅建立所需的發射器,並盡可能使全域路徑具體。
由於這些啟動器對工作流行為的影響,禁用任何未使用的現成可用啟動器也很有幫助。
自訂啟動器組態已增強,可支援下列功能:
工作流在記憶體中建立的對象和儲存庫中跟蹤的節點方面,都會產生大量開銷。 因此,最好讓工作流程自行處理,而不是啟動其他工作流程。
例如,在一組內容上實作商業程式,然後啟動該內容的工作流程。 最好為每個需要發佈的內容節點建立可啟動這些節點的自訂工作流程程式,而不是啟動啟動內容模型。 此方法需要額外的開發工作,但執行時會比針對每次啟動啟動啟動個別工作流程執行個體更有效率。
另一個例子是處理多個節點的工作流,建立工作流包,然後激活所述包。 您可以在建立封裝的步驟中變更工作流程的裝載,然後呼叫步驟,以在相同的工作流程模型中啟動封裝,而不是先建立封裝,然後再以封裝為裝載來啟動個別的工作流程。
在設計工作流模型時,您可以選擇在工作流步驟上啟用處理程式。 或者,您也可以將程式碼新增至工作流程步驟,以決定下一步應執行哪個步驟,然後加以執行。
建議使用處理常式進階,以提供更佳的效能。
您可以定義工作流階段,然後將任務/步驟指派給特定的工作流階段。
當您從收件箱](/docs/experience-manager-64/sites-authoring/workflows-participating.html?lang=zh-Hant#opening-a-workflow-item-to-view-details-and-take-actions)中按一下工作項目的[工作流資訊頁籤時,此資訊用於顯示工作流的進度。 可編輯現有的工作流程模型以新增階段。
啟動頁面程式步驟會為您啟用頁面,但不會自動尋找任何參照的DAM資產並啟動這些資產。
如果您打算將此步驟用作工作流程模型的一部分,請務必留意。
升級實例時:
確保在升級實例之前備份任何自定義工作流模型。
確認您的自訂工作流程未儲存在location下方:
/libs/settings/workflow/models/projects
另請參見6.4中的AEM儲存庫重組。
有許多系統工具可協助您監控、維護和疑難排解工作流程。 以下所有範例URL都使用localhost:4502
,但應適用於任何作者例項(<hostname>:<port>
)。
http://localhost:4502/system/console/slingevent
Sling Job Handling主控台將會顯示:
6.3版中已移除工作流程報告工具,以防止效能降低。
http://localhost:4502/system/console/jmx/com.adobe.granite.workflow:type=Maintenance
工作流維護MBean提供了一些有用的維護常式,如清除已完成的工作流和檢索工作流統計資訊。
如需詳細資訊,請參閱: