利用 Drupal Workflow 模块实现审批发表流程

工作流,在大多数出版和办公情景下都属于一个必选组件。在之前的译文中我也介绍了一些相关的 Drupal Module,不过之前的介绍都流于表面,并没有很完整的解决问题,因此这里以一个典型的编辑审批流程为样本,详细介绍 Workflow 模块的工作流设置方法。

目标需求

  1. 编辑人员在未完成编辑时,可以暂存草稿。
  2. 编辑完成之后,提交给上级进行审核。
  3. 审核人员可以选择批准或者驳回,审核通过的稿件即可发布,未能通过的则退回到草稿箱。
  4. 只有审核通过的内容才能被浏览

这里假设读者熟悉一般的 Drupal/Drush 操作,能够自行解决模块依赖等常见问题。

准备工作

首先是安装,这里我们用 Drush 来解决:

drush en -y workflow
#访问控制
drush en -y workflow_access
#Workflow和内容的关联
drush en -y workflowfield
#rules 集成
drush en -y workflow_rules
#views集成
drush en -y workflow_views
#管理界面
drush en -y workflow_admin_ui  

其次,我们建立两个角色:

  1. 编辑:editor
  2. 审核:auditor

设置工作流

根据上面的需求,我们可以确定,一篇文章有以下几个状态

  • 创建
  • 草稿
  • 审核
  • 通过

以此为依据,我们开始建立工作流:

访问 admin/config/workflow/workflow/add (配置-> Workflow)开始

命名,这里我们起名为“发布流程”,机读名称为 “workflow_publishment”。 保存后,开始编辑工作流的其他内容: 切换到states标签页,按照前面的结果输入状态,其中缺省的creation状态代表了我们的“创建”状态。录入结果如图所示

workflow states

这里我们给发布内容确定了四个状态,而工作流所做的工作的中心,就是状态的切换,定义了状态之后,我们打开Transitions标签页面开始定义他的切换,界面如图所示:

状态迁移

这个表格初看上去比较费解,这里做个简单的解释 这个表格的意思是,每个单元格,所在行(最左侧,行首)的状态,到所在列(最上排,列头)的状态之间的切换,可以由什么角色来完成。

因此图上的箭头 1,代表从创建到草稿的状态切换,可以由作者或者一个editor角色的人来完成;而箭头2,代表从创建到审核过程是没有人可以做的,换个说法就是不存在这种切换。按照这个概念,我们最终完成切换设置如下:

状态迁移设置结果

在设置完成各个状态之间的切换后,还有一个可选配置,就是给每个状态的切换动作进行命名,这些命名会显示在工作流按钮之上,给最终用户以更加清晰的指引。这一步骤位于“Labels”这一标签页上。

这里我们做出如下命名:

名称
草稿 审核 送审
审核 通过 发表
审核 草稿 驳回
发表 草稿 撤回

权限设置

最后我们可以在 Permission Summary 这一标签页来查看我们的设置,其中显示了各个角色能够完成的状态迁移。

设置访问权限

在实际工作中,一般来说,提交到下一环节的内容,原作者就不应该尝试变更了。而审核人员也不应该尝试修改编辑人员的草稿,为了流程的严谨性,我们还需要对访问权限进行设置。

之前我们启用的workflow_access模块就是用于这个目的。

这里我们设置所有人可以看所有流程的文档。

但是只有作者可以修改草稿状态的文档,只有审核人员可以修改审核过程中的文档。

验证设置结果

设置文档类型

这里我们新建一个简单的内容类型,命名为“需审核文档”,机读名称为“workflow_document”。保存后,为其添加字段field_workflow,字段类型为workflow,这一字段类型是由workflow_field模块声明的。这一类型的字段也是让文档流程化的关键点。

字段设置中,我们选择workflow type为我们之前设置完成的工作流名称,也就是“发布流程”,下面的微件类型,依照个人喜好,我比较习惯用按钮方式来呈现。

下面的两个记录选项,打开即可。

新建文档类型之后,需要为之前新建的角色分配权限。值得注意的是,Workflow Access 模块改写了核心的权限,因此,这里只需要给编辑人员新建这一类型文档的权限即可,其他权限由工作流进行控制。

新建文档

首先我们切换到editor角色的用户,新建一篇文档,保存后,我们会发现,多出一个工作流的标签页,其中按照我们之前对动作的命名,有草稿和送审两个状态。

这里我们可以分别切换成审核人员、管理员、匿名用户来分别查看这一 Node 对不同用户的权限区别以此验证我们之前对 Access 的设置是否正确。

新建结束之后,点击“送审”按钮,完成提交。

审核发布

接下来切换到审核账号,打开这篇新文章之后,我们可以点击“发表”按钮,完成发表动作;也可以选择“驳回”,让编辑人员重新编辑。

注意:这里按照我们之前的访问控制设计,审核人员是可以进行修改的

发布后

按照之前的设置,所有符合要求的角色都可以查看发布完成的结果了。

注意:如果想让匿名用户可以查看这一文档,则需要在权限中为匿名用户打开参与工作流的权限,并在上面的流程中,为匿名用户指定可以查看的状态。

Views

workflow_views 启用之后,会自动新建一个视图,称为workflow dashboard,其中包含了各种 Views 所需的字段过滤条件等,可以拿来参考。

Rules & Actions

Wrokflow 同样对这两部分进行了集成,可以根据不同流程的状态切换,结合 Actions 来完成一些自动操作。

Avatar
崔秀龙

简单,是大师的责任;我们凡夫俗子,能做到清楚就很不容易了。

comments powered by Disqus
下一页
上一页

相关