利用 Drupal Workflow 模块实现审批发表流程
工作流,在大多数出版和办公情景下都属于一个必选组件。在之前的译文中我也介绍了一些相关的 Drupal Module,不过之前的介绍都流于表面,并没有很完整的解决问题,因此这里以一个典型的编辑审批流程为样本,详细介绍 Workflow 模块的工作流设置方法。
目标需求
- 编辑人员在未完成编辑时,可以暂存草稿。
- 编辑完成之后,提交给上级进行审核。
- 审核人员可以选择批准或者驳回,审核通过的稿件即可发布,未能通过的则退回到草稿箱。
- 只有审核通过的内容才能被浏览
这里假设读者熟悉一般的 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
其次,我们建立两个角色:
- 编辑:editor
- 审核:auditor
设置工作流
根据上面的需求,我们可以确定,一篇文章有以下几个状态
- 创建
- 草稿
- 审核
- 通过
以此为依据,我们开始建立工作流:
访问 admin/config/workflow/workflow/add
(配置-> Workflow)开始
命名,这里我们起名为“发布流程”,机读名称为 “workflow_publishment”。
保存后,开始编辑工作流的其他内容:
切换到states
标签页,按照前面的结果输入状态,其中缺省的creation
状态代表了我们的“创建”状态。录入结果如图所示
这里我们给发布内容确定了四个状态,而工作流所做的工作的中心,就是状态的切换,定义了状态之后,我们打开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 来完成一些自动操作。