Show Menu
主题×

创建工作流模型

有关经典UI的使用,请参阅 AEM 6.3文档以供参考
您可以创建一 个工作流模型 ,以定义用户启动工作流时执行的一系列步骤。 您还可以定义模型属性,如工作流是临时的还是使用多个资源。
用户启动工作流时,会启动一个实例;这是相应的运行时模型,在您同步更 改时 创建。

创建新工作流

首次创建新的工作流模型时,它包含:
  • 步骤、流 动开始 和流结束
    这些组件表示工作流的开始和结束。 这些步骤是必需的,无法编辑或删除。
  • 名为“步 1”的参加 者步骤示例
    此步骤配置为将工作项分配给工作流启动器。 编辑或删除此步骤,并根据需要添加步骤。
要使用编辑器创建新工作流,请执行以下操作:
  1. 打开“工 作流模型 ”控制台;通过工 、工 作流 模型 ,或者,例如:
  2. Select Create , then Create Model .
  3. 将出 现“添加工作流模型 ”(Add Workflow Model)对话框。 在选择完 成之前 ,输入标题 和名称 (可选)
  4. 新模型将列在“工作流模 型”控制台中
  5. 选择新的工作流,然后使用 编辑​ :
如果以编程方式(使用crx包)创建模型,则还可以在以下位置创建子文件夹:
/var/workflow/models
例如, /var/workflow/models/prototypes
然后,该文件夹可用于管 理对该文件夹中模型的访问

编辑工作流

您可以编辑任何现有的工作流模型以:
对工作流的更新完成后,必须使用 Sync 生成运行时模型 。 有关详细 信息,请参阅同步您的工作流

同步工作流——生成运行时模型

Sync (在编辑器工具栏中)生成一个运 行时模型 。 运行时模型是用户启动工作流时实际使用的模型。 如果不同步 更改 ,则更改在运行时将不可用。
当您(或任何其他用户)对工作流进行任何更改时,您必须使用 Sync ,以生成运行时模型,即使单个对话框(例如,对于步骤)具有自己的保存选项时也是如此。
当更改与运行时(已保存)模型同步时, 将显示 “同步”。
某些步骤包含必填字段和/或内置验证。 当这些条件不满足时,当您尝试同步模型时,将显示 错误 。 例如,当尚未为“参加者”步骤定义任何参 加者 :

首次编辑默认或旧版工作流

  • 步骤 浏览器 (左侧)不可用。
  • 工具栏( 右侧 )中提供了“编辑”操作。
  • 最初,模型及其属性以只读模式显示为:
    • 默认工作流位于 /libs
    • 旧版工作流位于 /etc
选择 编辑 :
  • 将工作流的副本 /conf
  • 使步骤 浏览器 可用
  • 使您能够进行更改

向模型添加步骤

您需要向模型中添加步骤以表示要执行的活动——每个步骤都执行特定的活动。 标准AEM实例中提供了一系列步骤组件。
编辑模型时,可用步骤显示在“步骤”浏览器的各组 。 例如:
有关随AEM一起安装的主要步骤组件的信息,请参阅工作 流步骤参考
要向模型添加步骤,请执行以下操作 :
  1. 打开现有的工作流模型进行编辑。 从“工作 流模型 ”控制台中,选择所需的模型,然后选择“编 辑”
  2. 打开“步 ”浏览器;使用 “切换侧面板 ”(位于顶部工具栏的最左侧)。 在此对话框中,您可以:
    • 针对特定步骤进行筛选
    • 使用下拉选择器将选择限制为特定步骤组。
    • 选择“显示说明”图 ,以显示有关相应步骤的更多详细信息。
  3. 将相应的步骤拖动到模型中的所需位置。
    例如,参加 者步骤
    将其添加到流后,您可以配 置该步骤
  4. 根据需要添加任意多个步骤或其他更新。
    在运行时,按步骤在模型中的显示顺序执行步骤。 添加步骤组件后,可以将它们拖动到模型中的其他位置。
    您还可以复制、剪切、粘贴、分组或删除现有步骤;与页面编辑 器一样。
    还可以使用工具栏选项折叠/展开拆分步骤:
  5. 使用 Sync (编辑器工具栏)确认更改以生成运行时模型。

配置工作流步骤

您可以 使用 “步骤属性”对话框配置和自定义工作流 步骤的行为
  1. 要打开步骤 的“步骤属性 ”对话框,请执行以下任一操作:
    • 点按工作流模型中的步骤,然后从组件 工具栏中 选择配置。
    • 双击该步骤。
    有关随AEM一起安装的主要步骤组件的信息,请参阅工作 流步骤参考
  2. 根据需 要配置步骤 “属性”;可用的属性取决于步骤类型,也可能有多个可用的选项卡。 例如,新工作流中 的默认参加者步骤 ,显示为 Step 1 :
  3. 用勾号确认更新。
  4. 使用 Sync (编辑器工具栏)确认更改以生成运行时模型。

创建临时工作流

在创建新模型时, 或通过编辑现有模型 ,可以创建“临时”工作流模型:
  1. 打开工作流模型进行 编辑
  2. 从工 具栏中选择工作流模型 “属性”。
  3. 在对话框中,激活“临时工 作流 ”(或根据需要取消激活):
  4. 使用保存并关闭 确认更改 ;后跟 Sync (编辑器工具栏)以生成运行时模型。
在临时模式下运行工作 流时 ,AEM不会存储任何工作流历史记录。 因此, 时间轴 不显示与该工作流相关的任何信息。 时间轴

使工作流模型在触屏UI中可用

如果工作流模型在经典UI中存在,但在触屏UI的时间轴边栏的选择弹出菜单中缺失,则请按照配置进行操作,以使其可用。 ​以下步骤说明了如何使用称为“请求激活” 的工作流模型
  1. 确认该型号在触屏优化UI中不可用。 使用路径访问 /assets.html/content/dam 资产。 选择资产。 在左 边栏中 ,打开时间轴。 单击 启动工作流 ,并确认弹出 式列表中不存在Request for Activation model(激活请求模型)。
  2. 在工具> 常规>标记之间导航 。 选择 工作流
  3. 选择 创建>创建标记 。 将标 题设置 DAM 为,将名 称设置为 dam 。 选择​ 提交
  4. 导航到工 具>工作流>模型 。 选择 请求激活 ,然后选择 编辑
  5. 选择 编辑 ,然后打开工 作流模型属性 。 转到“基 ”选项卡。
  6. 添加 Workflow : DAM 到“ 标记 ”字段。 用勾号(勾号)确认选择。
  7. 确认添加了“保存并关 闭”标记
  8. 使用 Sync完成该过程 。 该工作流现在在触屏优化UI中可用。

为多资源支持配置工作流

在创建新模型或编辑现有模 型时 ,可以为“多资源支持”配置工作流模型:
  1. 打开工作流模型进行 编辑
  2. 从工 具栏中选择工作流模型 “属性”。
  3. 在对话框中,激活多资 源支持 (或根据需要取消激活):
  4. 使用保存并关闭 确认更改 ;后跟 Sync (编辑器工具栏)以生成运行时模型。

配置工作流阶段(显示工作流进度)

工作流阶段 ,有助于在处理任务时可视化工作流的进度。
如果在页面属性中定义了工作流阶段 ,但不用于任何工作流步骤,则进度栏将不显示任何进度(无论当前工作流步骤如何)。
可用阶段在工作流模型中定义;可更新现有工作流模型以包含舞台定义。 您可以为工作流模型定义任意数量的阶段。
要为工作流 定义阶段 ,请执行以下操作:
  1. 打开工作流模型进行编辑。
  2. 从工 具栏中选择工作流模型 “属性”。 然后打开“ 阶段 ”选项卡。
  3. 添加(并定位)您所需的 阶段 。 您可以为工作流模型定义任意数量的阶段。
    例如:
  4. 单击 保存并关闭 ,以保存属性。
  5. 为工作流模型中的每个步骤分配一个舞台。 例如:
    可以将舞台分配给多个步骤。 例如:
    步骤
    暂存
    步骤 1
    创建
    步骤 2
    创建
    步骤 3
    审核
    步骤 4
    批准
    步骤 5
    批准
    步骤 6
    完成
  6. 使用 Sync (编辑器工具栏)确认更改以生成运行时模型。

导出包中的工作流模型

  1. 使用包管理器创建新 :
    1. 通过工具、部署、包导航到包 管理器 ,
    2. 单击“ 创建包”
    3. 根据需 要指定包名称 ,以及任何其他详细信息。
    4. 单击​ 确定
  2. 单击 新包工具栏上的 “编辑”。
  3. Open the Filters tab.
  4. 选择 添加过滤器 ,并指定工作流模型设计的路 :
    /conf/global/settings/workflow/models/<*your-model-name*>
    单击​ 完成
  5. 选择 添加过滤器 ,并指定运行时工作流模 型的路径 :
    /var/workflow/models/<*your-model-name*>
    单击​ 完成
  6. 为模型使用的任何自定义脚本添加其他过滤器。
  7. 单击 保存 ,以确认您的过滤器定义。
  8. 从包定 义的工具栏中 ,选择“构建”。
  9. 从包工 具栏中 ,选择“下载”。

使用工作流处理表单提交

您可以配置一个表单,以便由选定的工作流进行处理。 当用户提交表单时,将创建一个新的工作流实例,其中表单提交的数据作为有效负荷。
要配置要与表单一起使用的工作流,请执行以下操作:
  1. 创建新页面并打开它进行编辑。
  2. Add a Form component to the page.
  3. 配置在 页面中显示的 “表单开始”组件。
  4. 使用 启动工作流 ,从以下可用工作流中选择所需的工作流:
  5. 使用勾号确认新表单配置。

测试工作流

在测试工作流以使用各种有效负荷类型时,这是一个好做法;包括不同于其开发的类型。 例如,如果您打算处理资产的工作流,请通过将页面设置为有效负荷来测试它,并确保它不会引发错误。
例如,按如下方式测试新工作流:
  1. 定义有 效负荷 ,并确认。
  2. 根据需要执行操作,以便继续工作流。
  3. 在工作流运行时监视日志文件。
您还可以将AEM配置为在日 志文件中显示 DEBUG消息。 请参 阅记录 ,了解详细信息,开发完成后,将“日志级别 ”设置回“信 息”

示例

示例:创建一个(简单)工作流以接受或拒绝发布请求

为了说明创建工作流的一些可能性,以下示例创建了工作流的变 Publish Example 体。
  1. 新工作流将包含:
    • 流程开始
    • Step 1
    • 流程结束
  2. Step 1 除(因为此示例的步骤类型错误):
    • 单击该步骤,然后从组件工 具栏中 ,选择删除。 确认该操作。
  3. 从步骤浏 览器的“工作流 ”选择中,将“参与者步骤 ”拖动到工作流上,并将其放置在“流开始”和 Flow结束 ​之间。
  4. 要打开属性对话框,请执行以下操作之一:
    • 单击参加者步骤,然后从组件工 具栏中 选择配置。
    • 双击参加者步骤。
  5. 在“公 ”选项卡 Validate Content 中,输入“标 ”和“说 明”
  6. 打开“用 户/组”选项卡 :
    • Activate Notify user via email .
    • 为“ Administrator admin 户/组”字 段选择( )。
    对于要发送的电子邮件, 需要配置邮件服务和用户帐户详细信息
  7. 用勾号确认更新。
    您将返回到工作流模型的概述,在此参加者步骤将重命名为 Validate Content
  8. 将“或 拆分 ”拖到工作流上,并将其放在“流结束” Validate Content 和“ 流结束”之间
  9. 打开或 拆分 ,进行配置。
  10. 配置:
    • 常见 :选择 2个分支
    • 分支1 :选择 默认路由
    • 分支2 :确保 未选择默认路由
  11. 确认对 OR拆分的更新
  12. 将“参 加者步骤 ”拖到左侧分支,打开属性,指定以下值,然后确认更改:
    • 标题 : Reject Publish Request
    • 用户/用户组 :例如, projects-administrators
    • 通过电子邮件通知用户 :激活后,通过电子邮件通知用户。
  13. 将处理 步骤拖到右侧分支 ,打开属性,指定以下值,然后确认更改:
    • 标题 : Publish Page as Requested
    • 流程 :选择 Activate Page 。 此过程将选定页面发布到发布者实例。
  14. 单击 同步 (编辑器工具栏)以生成运行时模型。
    您的新工作流模型将如下:
  15. 将此工作流应用于您的页面,以便当用户移动到“完成 ​验证内容 ”步骤时,他们可以选择要按请求发布页面 ,还是 “发布请求拒绝”。

示例:为OR拆分定义规则

“或者拆分 ”步骤允许您将条件处理路径引入工作流。
要定义OR规则,请执行以下操作:
  1. 创建两个脚本并将它们保存到存储库中,例如:
    /apps/myapp/workflow/scripts
    脚本必须有一个返 布尔值的函数。
  2. 编辑工作流,并将“ OR拆分 ”(OR Split)添加到模型。
  3. 编辑OR拆分 的分支 1的 属性 :
    • 将“值”(Value)设 置为 ,将其定义为“默 认路由 ”(Default Route) true
    • 为规则 ,设置脚本的路径。 例如:
      /apps/myapp/workflow/scripts/myscript1.ecma
    您可以根据需要切换分支顺序。
  4. 编辑OR拆分的 Branch 2 属性
    • 作为 规则 ,将路径设置为其他脚本。 例如:
      /apps/myapp/workflow/scripts/myscript2.ecma
  5. 在每个分支中设置各个步骤的属性。 确保已 设置用户/组
  6. 单击 同步 (编辑器工具栏),将更改保留到运行时模型。

Function Check()

如果节点位于 true 以下位置,则以下示例脚 JCR_PATH 本将返回 /content/we-retail/us/en :
function check() {
    if (workflowData.getPayloadType() == "JCR_PATH") {
      var path = workflowData.getPayload().toString();
      var node = jcrSession.getItem(path);

      if (node.getPath().indexOf("/content/we-retail/us/en") >= 0) {
       return true;
      } else {
       return false;
      } 
     } else {
      return false;
     }
}

示例:自定义的激活请求

您可以自定义任何现成的工作流。 要进行自定义行为,请叠加相应工作流的详细信息。
例如, 请求激活 。 此工作流用于在 Sites 中发布页面,并在内容作者没有相应的复制权限时自动触发。 有关更 多详细信息,请参阅自定义页面创作——自定义激活请求工作流