こんにちは。最近じゃ Drupal 8 の開発の方が楽しくなってきた大野です。最近では Drupal のお問い合わせを以前よりも多くいただくようになってきて、Drupal の認知度がますます増えて来た感じがします。

Drupal を使う上で承認ワークフローを実装する際、これまでは Workflow モジュールもしくは、Workbench Moderation モジュールを利用するのが一般的でしたが、Druapl 8.2 からは Drupal 本体でワークフロー機能を提供することが決まりました。

Drupal の創始者である Dries さんの話によるとコンテンツの承認ワークフローの機能は、コンテンツ作成者から要求される機能のトップ10の内、3番目にニーズがあるそうです。

今回は Drupal 8 用で利用できる、3つの承認ワークフロー系モジュールの違いについてまとめてみました。

そもそも承認ワークフローってなんだ

一般的な承認ワークフローのイメージ

記事の編集者が記事を作成し、承認者が記事の内容を確認し、公開または否認する一連の流れのことを言います。

一般的な承認ワークフローは、上記の図のように 下書き → 承認依頼 → 公開 の流れになりますが、コレに加えて二次承認者が居たり、部門別に承認者が異なるなどのケースがあります。

承認ワークフローは承認者(大抵の場合は上長)による確認が取れていることが肝ですので、Drupal を使わずに運用でカバーすることも可能です。しかし、ウェブサイトの記事を公開するために、メールや他のドキュメントは使いたくないと言うのは当然で、ウェブサイト上のシステム(Drupal)で完結することが望まれます。

Drupal 8 には3つのワークフローを行うためのモジュールが存在する

冒頭でも述べた通り、Drupal 8 には承認ワークフローを行うことができるモジュールが3つ存在します。それぞれ機能やコンセプト、設定の難易度が異なるため、以下に章を分けて概要を解説します。

Workflow

2005年から開発されている歴史の長いモジュールで、「承認」のワークフローだけには特化せず、コンテンツの状態を推移できることに重点を置いています。例えばサイトに「お問い合わせ」と言うコンテンツタイプがあり、そのお問い合わせの状態を 未対応 → 対応中 → 対応済 のように一連の流れをワークフローとして管理したい時にも利用できます。

このモジュールの最大の特徴はワークフローがエンティティ化されていることです。ワークフローにフィールドを追加したり、Views で一覧を作ったりすることが可能で、例えば、承認ワークフローの情報として指摘事項を記載した画像ファイルを添付したりする様なことも、管理画面から設定するだけで実装することができます。しかし、設定が煩雑であるため Drupal のエンティティの概念やフィールド機能についても知っておく必要があり、学習コストが多く掛かってしまいます。

2017年8月現在、最新のバージョンは 8.x-1.0-beta6 とベータ版です。バグはまだあるかもしれないけど本番サイトでも利用は可能、と言ったところでしょうか。

Workflow モジュールのサブモジュール一覧

Workflow モジュールには、機能毎に分けられた複数のサブモジュールが内包されており、機能の要件に応じてそれらを有効化する必要があります。

このモジュールは「承認」のワークフローに特化したものではないため、状態に応じたアクセス制御をしたい場合も設定が必要です。例えばコンテンツが下書き状態の時はアクセスさせたくない、と言うのは当たり前の要件ですが、Workflow モジュールで実装する場合はサブモジュールである Workflow access を有効にし、ワークフローの状態それぞれにアクセス制御の設定をしなければなりません。一方で、細かいアクセス制御ができるので複雑なワークフローにも対応することができると言う意味にもなります。

Workflow モジュール アクセス権限の設定画面

また、この Workflow モジュールは、既存の記事を更新した際に、更新した改訂版のコンテンツをワークフローに掛けるリビジョニング機能がありません。一度公開した記事は、公開したままの状態で、改訂版に対してワークフローを掛けることができないのです。承認ワークフロー系のではよくある要件なので、モジュールを選定する際には注意しましょう。

余談ですが Drupal 7 版の Workflow モジュールは Revisioning モジュールと掛け合わせることで、リビジョニング機能を実現することはできましたが、この記事を書いている時点では残念ながら Drupal 8 版のリリースはありませんでした。

Workflow モジュールの管理画面

上記の画像は Workflow モジュールの管理画面となります。設定項目が多くて、一筋縄じゃいかなそうな感じがしますね。

Workflow モジュール 状態管理画面

管理者がワークフローを管理する時の一例です。ワークフローのタブから管理することもできますし、右側にあるブロックでも管理することができます。

Workbench Moderation

2011年から開発が始まった、わりと新しめの承認ワークフローに特化したモジュールです。シンプルに利用できることを念頭に作らているため、Workflow モジュールより簡単に設定して実装することができます。また、既に安定版がリリースされているのでプロダクションサイトでも安心して使うことができそうです。

標準でリビジョニング機能もサポートしているため、公開した記事を公開したまま、コンテンツの改訂版を承認ワークフローに掛けることが可能です。

Workbench のコンテンツ管理画面

Workbench Moderation モジュールには Workbench suite と呼ばれる、Drupal のコンテンツ管理をより強化する兄弟モジュール群があります。その中の Workbench モジュールは、インストールすることで、管理者が運用しやすくするための記事の一覧画面やメニューツールバーのリンクが利用可能となります。(上記の画像は Workbench モジュールが提供する管理画面の一つです) Workbench Moderation モジュールだけでは専用の管理画面が用意されていないので、基本的にはこのモジュールと組み合わせて使うものと思っていいでしょう。

Workbench moderation の状態管理画面

モデレーションの状態管理画面です。ここでサイト全体のモデレーションを定義します。

Workflows + Content Moderation

Drupal 8.2.0 で試験的(Experimental)モジュールと言う位置づけで Drupal 本体に同梱され、2017年10月にリリース予定の Drupal 8.4.0 でベータ版もしくは安定版となる予定のモジュールです。

参考: Experimental Modules' status towards Drupal 8.4.0 release

前述の Workbench suite を元に開発されていますが、管理画面やモジュールの構成は大幅に刷新され、設定方法なども異なります。ワークフローのAPI部分とコンテンツの承認機能が分離されて API 部分は Workflows モジュールに、Content Moderation がコンテンツの承認ワークフローを担うようになりました。承認ワークフローを実現するには2つのモジュールを有効にする必要があり、Workflows モジュールだけでは何もできないことに注意しましょう。

とってもややこしいのですが、最初に紹介した単数形の Workflow モジュールと、この複数形の Workflows モジュールは完全に別物なので注意してください。

Content Moderation モジュールのモデレーション画面

コンテンツの状態変更の画面です。

Conetnt Moderation モジュールの管理画面

状態や推移の管理が一つのページでで行われるようになっていますね。

このモジュールも Workbench Moderation と同様にリビジョニングには対応していますが、メール通知をするためのモジュールは現在正式にリリースされていません。Content Moderation Notificationsと言うモジュールが現在開発中のようですが、おそらくリリースはまだまだ先になる気がします。

機能の比較

それぞれのモジュールが持つ機能をざっとまとめると以下の様になります。

フィールドの追加 設定難度 リビジョニング メール通知
Workflow × ×
Workbench Moderation × Workbench Emailにて対応可
Workflows + Content Moderation × ×

まとめ

いかがでしたでしょうか。Workflows と Content Moderation モジュールの組み合わせは、今後はほぼ間違いなく Drupal で承認ワークフローを実装する上で主流になっていき、関連モジュールも充実してくるのではないでしょうか。


共に働く新しい仲間を
募集しています

スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。