管理工作流实例 administering-workflow-instances
工作流控制台提供了几种工具来管理工作流实例以确保它们按预期执行。
提供了一系列控制台来管理您的工作流。使用全局导航以打开 工具 窗格,然后选择 工作流:
- 模型:管理工作流定义
- 实例:查看和管理正在运行的工作流实例
- 启动器:管理工作流的启动方式
- 存档:查看已成功完成的工作流的历史记录
- 故障:查看已完成但出现错误的工作流的历史记录
- 自动分配:根据模板配置自动分配工作流
监控工作流实例状态 monitoring-the-status-of-workflow-instances
-
使用“导航”,依次选择 工具 和 工作流。
-
选择 实例 以显示当前正在运行的工作流实例的列表。
-
在顶部边栏的右上角,工作流实例会显示 正在运行的工作流、状态 和 详细信息。
-
正在运行的工作流 显示正在运行的工作流的数量及其状态。 例如,在给定的图像中,显示的是 正在运行的工作流 的数量和 AEM 实例的 状态:
-
状态:健康
-
状态:不健康
-
-
对于工作流实例的 状态详细信息,单击 详细信息,显示 正在运行的工作流实例、已完成的工作流实例、已中止的工作流实例、失败的工作流实例 等的数量。例如,以下是显示 状态详细信息 的给定图像:
-
状态详细信息:健康
-
状态详细信息:不健康
note note NOTE 为了保持工作流实例的健康,请遵循定期清除工作流实例或工作流最佳实践中的最佳实践。 -
搜索工作流实例 search-workflow-instances
-
使用“导航”,依次选择 工具 和 工作流。
-
选择 实例 以显示当前正在进行的工作流实例的列表。在顶部边栏的左角,选择 过滤器。或者,您可以按 alt+1 键。这将显示以下对话框:
-
在“过滤器”对话框中,选择工作流搜索条件。您可以基于这些输入进行搜索:
- 有效负载路径:选择特定路径
- 工作流模型:选择工作流模型
- 被分派人:选择工作流被分派人
- 类型:任务、工作流项或工作流故障
- 任务状态:活动、完成或已终止
- 我的角色:所有者和被分派人、仅所有者、仅被分派人
- 开始日期:指定日期之前或之后的开始日期
- 结束日期:指定日期之前或之后的结束日期
- 截止日期:指定日期之前或之后的截止日期
- 已更新日期:指定日期之前或之后的已更新日期
暂停、恢复和终止工作流实例 suspending-resuming-and-terminating-a-workflow-instance
-
使用“导航”,依次选择 工具 和 工作流。
-
选择 实例 以显示当前正在进行的工作流实例的列表。
-
选择特定项目,然后相应地使用 终止、暂停 或 恢复;需要确认和/或进一步的详细信息:
note note NOTE 工作流必须处于一种等待用户干预的状态(例如,在参与者步骤中),才能终止或中止工作流。尝试中止当前正在执行作业(正在执行的活动线程)的工作流可能无法生成预期结果。
查看存档的工作流 viewing-archived-workflows
-
使用“导航”,依次选择 工具 和 工作流。
-
选择 存档 以显示已成功完成的工作流实例的列表。
note note NOTE 中止状态被视为成功终止,因为它是用户操作的结果;例如: - 使用 终止 操作
- 当受工作流约束的页面被(强制)删除时,工作流会被终止。
-
选择特定项目,然后 打开历史记录 以查看更多详细信息:
修复工作流实例故障 fixing-workflow-instance-failures
当工作流失败时,AEM 会提供 故障 控制台,使您能够进行调查,并在找到初始原因后执行适当的操作:
-
失败详细信息
打开一个窗口以显示 失败消息、步骤和 失败栈栈**。 -
打开历史记录
显示工作流历史记录的详细信息。 -
重试步骤 再次执行脚本步骤组件实例。修复导致原始错误的故障后,使用“重试步骤”命令。例如,在修复流程步骤执行的脚本中的错误后,重试该步骤。
-
终止 如果错误导致工作流出现不可调和的情况,则终止工作流。例如,工作流可以依赖于环境条件,例如存储库中对工作流实例不再有效的信息。
-
终止并重试 类似于 终止,只不过使用原始有效负载、标题和描述来启动新的工作流实例。
要调查故障,然后恢复或终止工作流,请执行以下步骤:
-
使用“导航”,依次选择 工具 和 工作流。
-
选择 故障 以显示未成功完成的工作流实例的列表。
-
选择特定项目,然后选择适当的操作:
定期清除工作流实例 regular-purging-of-workflow-instances
最大限度地减少工作流实例的数量可以提高工作流引擎的性能,因此,您可以定期从存储库中清除已完成或正在运行的工作流实例。
配置 Adobe Granite 工作流清除配置 以根据其时限和状态清除工作流实例。您还可以清除所有模型或特定模型的工作流实例。
您还可以创建多个服务配置以清除满足不同条件的工作流实例。例如,创建一个配置,以便在特定工作流模型的实例的运行时间显著超出预期时间时清除这些实例。创建另一个配置,以便在几天后清除所有已完成的工作流,从而最大限度地减小存储库。
要配置服务,您可以配置 OSGi 配置文件,请参阅 OSGi 配置文件。下表描述了任一方法所需的属性。
com.adobe.granite.workflow.purge.Scheduler
由于服务是工厂服务,因此,
sling:OsgiConfig
节点的名称需要标识符后缀,例如:com.adobe.granite.workflow.purge.Scheduler-myidentifier
设置收件箱的最大大小 setting-the-maximum-size-of-the-inbox
您可以配置 Adobe Granite 工作流服务 来设置收件箱的最大大小,请参阅将 OSGi 配置添加到存储库。下表描述了您配置的属性。
com.adobe.granite.workflow.core.WorkflowSessionFactory
。对客户拥有的数据存储使用工作流变体 using-workflow-variables-customer-datastore
工作流处理的数据存储在 Adobe 提供的存储 (JCR) 中。此类数据本质上可能是敏感的。您可能希望将所有用户定义的元数据/数据保存在您自己的托管存储中,而不是 Adobe 提供的存储中。这些部分描述了如何为外部存储设置这些变量。
设置模型以使用元数据的外部存储 set-model-for-external-storage
在工作流模型级别,提供了一个标志来指示模型(及其运行时实例)具有元数据的外部存储。对于为外部存储标记的模型的工作流实例,工作流变量将不会保留在 JCR 中。
属性 userMetadataPersistenceEnabled 会存储在工作流模型的 jcr:content 节点 上。此标志会作为 cq:userMetaDataCustomPersistenceEnabled 保留在工作流元数据中。
以下插图显示的是如何在工作流上设置标志。
外部存储中的元数据的 API apis-for-metadata-external-storage
若要在外部存储变量,您必须实施工作流公开的 API。
UserMetaDataPersistenceContext
以下示例说明如何使用 API。
@ProviderType
public interface UserMetaDataPersistenceContext {
/**
* Gets the workflow for persistence
* @return workflow
*/
Workflow getWorkflow();
/**
* Gets the workflow id for persistence
* @return workflowId
*/
String getWorkflowId();
/**
* Gets the user metadata persistence id
* @return userDataId
*/
String getUserDataId();
}
UserMetaDataPersistenceProvider
/**
* This provider can be implemented to store the user defined workflow-data metadata in a custom storage location
*/
@ConsumerType
public interface UserMetaDataPersistenceProvider {
/**
* Retrieves the metadata using a unique identifier
* @param userMetaDataPersistenceContext
* @param metaDataMap of user defined workflow data metaData
* @throws WorkflowException
*/
void get(UserMetaDataPersistenceContext userMetaDataPersistenceContext, MetaDataMap metaDataMap) throws WorkflowException;
/**
* Stores the given metadata to the custom storage location
* @param userMetaDataPersistenceContext
* @param metaDataMap metadata map
* @return the unique identifier that can be used to retrieve metadata. If null is returned, then workflowId is used.
* @throws WorkflowException
*/
String put(UserMetaDataPersistenceContext userMetaDataPersistenceContext, MetaDataMap metaDataMap) throws WorkflowException;
}