上級権限モード設定チュートリアル【2】ブログにワークフローを設定する
この記事が執筆されたのはバージョン5.7.5.9時点です。
このチュートリアルでは、下記の権限設定を行います。
「ブログ執筆者」グループに属するユーザーが書いた記事は、「ブログ承認者」グループがチェックし承認した記事のみ公開されるようにする。
よくある設定例としてのご紹介ですので、この通りにする必要はなく、組織形態に合わせて調整してください。また、チュートリアル【1】の設定を元に解説しますので、インストール直後との設定とは異なった状態から解説します。ブログ執筆者グループの設定については、前回のチュートリアルをご覧ください。
ワークフローの仕組み
ワークフローは、あるユーザー(申請者)が行った操作(例えば、ページの変更の承認)の実行を一時的に保留し、別のユーザー(査閲者)が許可したタイミングで実際に実行されるという手順を実現するための機能です。申請者が査閲者に許可を求めることを「ワークフローに送信する」と言います。また、ワークフローに送信された許可申請を「エントリー」と呼びます。エントリーが作成されたタイミングで、メール通知が届くグループを設定できます。また、エントリーが許可された時、却下された時のそれぞれにも、メール通知が届くグループを設定できます。
ワークフローの流れは、下図のようになります。
concrete5に標準搭載されている「基本ワークフロー」は、エントリーが承認されると、操作は即実行される1段階のワークフローになっています。別売の多段階ワークフローを使うと、エントリーの承認時に、次の査閲者のチェックに進むという複数段階のワークフローが実現できます。
グループとユーザーを作成
「ブログ承認者」グループと、そのグループに属するユーザーを作成しておきましょう。設定方法はチュートリアル【1】または当サイトのヘルプをご覧ください。
ワークフローを作成
管理画面の「ワークフロー一覧」ページにアクセスします。「ワークフローを追加」ボタンをクリックして、ワークフローを追加する画面を開きます。
ワークフローの名前をつけて「新規」ボタンで保存します。ここでは「ブログワークフロー」という名前にしました。
作成後の画面はこのようになります。
冒頭のワークフローの流れの図を思い出してください。この時点では、誰も承認できず、誰にも通知が送られません。「詳細を編集」ボタンをクリックして、それぞれに適切なアクセスエンティティを設定してください。
この設定はあくまで例ですので、あなたの運営するサイトに合わせて調整してください。設定できたら、「保存」ボタンで設定を反映させましょう。
ページ権限にワークフローを適用する
チュートリアル【1】で「ブログ執筆者」グループに編集権限を与えた「Blog」ページの権限設定画面を開きましょう。赤枠で囲った権限が、ワークフローを適用できる権限になります。
今回は、管理者にしか実行できない権限はワークフローを設定せず、ページ所有者が変更できる操作の「変更を承認」と「削除」にワークフローを設定してみます。「変更を承認」リンクをクリックして、設定画面を開いてください。
「ワークフロー」というタブが出現しています。作成した「ブログワークフロー」にチェックを入れて保存してください。このように、ページごとに異なるワークフローを適用することが可能です。同様に「削除」権限にも「ブログワークフロー」を適用してください。最後に「変更を保存」ボタンも忘れずに押してください。
承認者のためのアクセス権限の設定
以上の設定で、ブログ執筆者がブログ記事を公開する際、ワークフローが送信されるようになりました。次に、ブログ承認者が確認するための設定を行っていきます。
「フルサイトマップ」にアクセスし、チュートリアル【1】でブログ執筆者向けの設定をした「Blog」ページの権限設定画面を開き、「バージョンを表示」権限に「ブログ承認者」を追加してください。この権限がないと、ワークフローで申請された内容を確認できません。
さらに「サイトマップにシステムページを含める」にチェックを入れ、表示される「管理画面」をクリックして、「権限」を選択します。
「表示」権限が「管理者」のみに設定されていますので、「ブログ執筆者」を追加しましょう。
この設定を行うことで、ブログ承認者が管理画面の中にあるワークフローの「確認待ち」ページにアクセスできるようになります。ただし、「確認待ち」ページ以外の様々なページも同様に見えるようになってしまいますので、それを避けたい場合は、管理画面内の各ページに対して、「管理者」だけが見えるように権限設定を変更してください。
確認してみましょう
ブログ執筆者で記事を公開したところ
ブログ承認者でログインし、確認待ちページを開いたところ
一度公開した記事を変更する際も、ワークフローに送信されます。
削除リクエストの例