スケジューラー機能付きのワークフローを導入してみた(Drupal8) 〜前編〜


Post:2021/01/15

Update:2021/01/26

モジュール その他
bg-image
スケジューラー機能付きのワークフローを導入してみた(Drupal8) 〜前編〜

Yohei Higashi

この「俺のDrupal」のサイトが公開されてから数ヶ月経ちました!
ブログサイトの運用に関わるのは初めてでしたが、実際にやってみて運用面でルーティーンとなる作業をできる限り効率化することが大切だと感じました。
例えば、記事のチェックや公開作業など、毎回発生する業務で複数人が関わる部分を効率化したいと考えていました。
特に、記事の状態が執筆中なのか、チェック済みなのか、いつ公開される予定なのか、という部分をもっとわかりやすくしたいと思っていました。
そこで、ワークフローに加えてスケジューラー機能を導入することによって作業の効率化をしてみたのでその手順を書いていきたいと思います。

ワークフローとは?

一言でいうと「業務についての一連の流れを効率化すること」です。
作業のプロセスを一部自動化することで、文書やメッセージなどの手続きを効率よく次の担当者に引き継ぐことができます。
いままで手作業や口頭で行っていた引き継ぎを自動化することで、効率化しましょう!という考え方です。

例えばこのサイトはブログサイトなので、「記事の作成→記事内容のチェック→問題なければ記事が公開される」という流れで運用しています。
元々このサイトは最小構成で制作したこともあり、ワークフローを導入していませんでした。
そのため、記事作成後に口頭・メッセージでチェックをお願いしたり、指定日になったら手作業で記事の公開作業を行っていました。

また、サイトの作成時に今後スケジューラー機能を付け加えたいと思っていたので、Schedulerというモジュールをインストールしていました。
しかし、SchedulerモジュールとCoreのWorkflowsモジュールの組み合わせでは記事の掲載ステータスを変更することができず、ワークフローとスケジューラー機能の両立ができませんでした。

そこで今回はDrupalのCoreのモジュールであるWorkflows、Content Moderationの2つにScheduled Transitionsというモジュールを加えることで、スケジュール機能付きのWorkflow機能を実装してみましたのでご紹介します。

モジュールのインストール

今回使用するモジュールは下記4つです。

  • Workflows (Coreモジュール)
  • Content Moderation (Coreモジュール)
  • Scheduled Transitions
  • Dynamic Entity Reference (Scheduled Transitionsの為に必要)

 

まずは、Coreモジュールの2つを有効にしてください。
次に、Scheduled Transitions、Dynamic Entity Referenceのモジュールをインストールして、有効にしてください。

ワークフローの追加と設定

まずは、ワークフローの設定から行います。
状態(STATES)、推移(TRANSITIONS)の設定が必要です。
記事の状態と、状態がどのように移り変わるのかを設定します。

 

ワークフローの追加

/admin/config/workflow/workflows のページに移動し、Add Workflowのボタンをクリックします。
Labelにワークフロー名を入力し、Workflow type:Content moderationに設定します。

workflow_1

状態の設定

デフォルトでは、Draft / Published の2つの状態が設定されています。このままでも使うことはできますが、今回は記事のステータスがよりわかりやすいように、Draft / Waiting for check / Checked / Published / Archiveの5つの状態にしました。
作成時には、その状態のコンテンツが公開されるかどうか、デフォルトのリビジョンになるかどうかを選択できます。
どちらも設定を間違えると公開されてしまうので気をつけてください。

workflow_2

推移の設定

この部分では「現在の状態からどの状態に変更することができるのか」と「その推移の名前」が設定できます。後述するユーザー権限の設定や、状態が変わった際にメール通知を行いたい場合はこの推移ごとにトリガーが設定することになります。

workflow_3

送信元には、今から設定する推移のスタート地点、つまり現在のコンテンツの状態を設定します。(複数設定可能)
宛先には、現在のコンテンツの状態からどの状態に変わるのかを設定します。(複数選択不可)

状態や推移は細かく分けることでそのコンテンツの状態がわかりやすくなりますが、その一方でユーザーの権限設定が複雑になってしまいます。
権限の設定漏れや想定しないバグに繋がりやすくなるため、運用に関わる人数や業務フローによって必要な状態や推移をしっかり検討し、実際の運用を考えて適宜設定してください。

その他の設定

・ワークフローの適用先
コンテンツタイプやブロックタイプごとなどで設定することもできますが、今回は記事コンテンツタイプにチェックを入れます。

・デフォルトのモデレーションの状態
どの状態からスタートするか選択できます。今回はDraftにしておきます。

workflow_4

 

これでワークフローの基本設定ができましたので一旦今回はここまで!
後編では、スケジュール設定やユーザー権限について詳しく書いていこうと思います。
 

 

 

Profile picture for user Yohei Higashi
Yohei Higashi
フルスタックエンジニア
石川県金沢市出身。2020年8月〜web業界未経験からアクレットに入社した駆け出しエンジニアです。 未経験者ならではの視点で、わかりやすい記事を心がけて情報発信していきます!