ワークフローとは?
一言でいうと「業務についての一連の流れを効率化すること」です。
作業のプロセスを一部自動化することで、文書やメッセージなどの手続きを効率よく次の担当者に引き継ぐことができます。
いままで手作業や口頭で行っていた引き継ぎを自動化することで、効率化しましょう!という考え方です。
例えばこのサイトはブログサイトなので、「記事の作成→記事内容のチェック→問題なければ記事が公開される」という流れで運用しています。
元々このサイトは最小構成で制作したこともあり、ワークフローを導入していませんでした。
そのため、記事作成後に口頭・メッセージでチェックをお願いしたり、指定日になったら手作業で記事の公開作業を行っていました。
また、サイトの作成時に今後スケジューラー機能を付け加えたいと思っていたので、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に設定します。
状態の設定
デフォルトでは、Draft / Published の2つの状態が設定されています。このままでも使うことはできますが、今回は記事のステータスがよりわかりやすいように、Draft / Waiting for check / Checked / Published / Archiveの5つの状態にしました。
作成時には、その状態のコンテンツが公開されるかどうか、デフォルトのリビジョンになるかどうかを選択できます。
どちらも設定を間違えると公開されてしまうので気をつけてください。
推移の設定
この部分では「現在の状態からどの状態に変更することができるのか」と「その推移の名前」が設定できます。後述するユーザー権限の設定や、状態が変わった際にメール通知を行いたい場合はこの推移ごとにトリガーが設定することになります。
送信元には、今から設定する推移のスタート地点、つまり現在のコンテンツの状態を設定します。(複数設定可能)
宛先には、現在のコンテンツの状態からどの状態に変わるのかを設定します。(複数選択不可)
状態や推移は細かく分けることでそのコンテンツの状態がわかりやすくなりますが、その一方でユーザーの権限設定が複雑になってしまいます。
権限の設定漏れや想定しないバグに繋がりやすくなるため、運用に関わる人数や業務フローによって必要な状態や推移をしっかり検討し、実際の運用を考えて適宜設定してください。
その他の設定
・ワークフローの適用先
コンテンツタイプやブロックタイプごとなどで設定することもできますが、今回は記事コンテンツタイプにチェックを入れます。
・デフォルトのモデレーションの状態
どの状態からスタートするか選択できます。今回はDraftにしておきます。
これでワークフローの基本設定ができましたので一旦今回はここまで!
後編では、スケジュール設定やユーザー権限について詳しく書いていこうと思います。