前回、プロセス機能を使ってみました。
【pleasanter】プロセスを使ってみたら簡単かつ強力だった!
今回は、「状況による制御」をやってみたいと思います。プロセス機能と合わせて使うことが多いようです。「プロセス」機能と「状況による制御」をうまく使うことで、スクリプトを書かずともワークフロー機能のあるサイトを作成できそうです。
※おことわり
2023年6月時点の情報です。プリザンターのバージョンは 1.3.20.0 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている場合、効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。
1.使用するサイト
前回のヘボヘボサイト「お仕事依頼サイト」を使用します。プロセス機能でワークフロー機能をつけているサイトです。
ワークフローの内容は以下の流れにしています。プロセスでのワークフローの作り方は前回の記事を参考にしてください。
①依頼者:新規作成。作業担当者を指定、作業内容を記載し「依頼申請」ボタンクリック
→作業者にメール通知。状況=起票中→申請中
②作業者:依頼メールを受領して該当文書を確認
②ー1作業者:受付する場合は「申請受付」ボタンクリック
→依頼者にメールで通知。状況=申請中→受付中
②ー2作業者:申請内容に不備があったり、やーだねと拒否したい場合は「申請返却」ボタンをクリック
→依頼者にメールで通知。状況=申請中→起票中。完了・返却日に当日日付を入力
③作業者(②ー1で受付した場合):「作業完了」ボタンクリック
→依頼者にメールで通知。状況=受付中→完了。完了・返却日に当日日付を入力
※①~②の間にキャンセルする場合は「取り下げ」ボタンクリック
→状況=申請中・受付中→取り下げ
2.状況による制御で実装したい内容
さて、状況による制御を以下の内容を実装してみたいと思います。
①項目「状況」「完了・返却日」を常に読み取り専用にする
②状況が「完了」または「取り下げ」の場合、レコードの内容を編集不可とする(読み取り専用にする)
③状況が「完了」の場合、項目「希望納期」を非表示にする
④項目「作業者からのコメント」欄を、状況が「申請中」「受付中」のみ編集可能とする(それ以外は読み取り専用にする)
⑤状況が「受付中」の場合、項目「進捗ステータス」を表示し、入力必須とする
前回のサイトになかった「進捗ステータス」はエディタで追加しておきます。(分類項目)
機能を試してみたいがための、むりやりの内容でありますが、そこはまあスルーしてください。。。
3.状況による制御をやってみる
(1)項目を読み取り専用にする
①項目「状況」「完了・返却日」を常に読み取り専用にする
エディタで「状況」と「完了・返却日」項目の読み取り専用にチェックを入れればよいのですが。あえて状況による制御でやってみました。
(1)管理→テーブルの管理→「状況による制御」タブで「新規作成」をクリックします。
(2)名称を入力します。
(3)状況を指定します
「状況」はどの状況の時に適用するか、という「状況」を指定します。今回は「常に」なのでどの状況でも適用される「*」を選択します。
(4)項目を指定して「読取専用」にします
読取専用にしたい項目「状況」を選択して「読取専用」ボタンをクリックします。
なお、あ!間違えた!取り消したい!というときは、取消したい項目を選択して「無し」ボタンをクリックすると、適用した「読取専用」や「入力必須」「非表示」等が解除されます。
(5)同様の手順で「完了・返却日」も読み取り専用にします。
(6)「追加」ボタンをクリックします。
設定した制御条件が状況による制御に追加されました。
「更新」ボタンクリックも忘れずに!
試しに「新規作成」をクリックして、「状況」と「完了・返却日」が編集できないことを確認してみます。
新規作成した編集画面で「状況」を開発ツールで見てみると、プロパティ「data-ead-only=”1″」となっています。これはエディタで読み取り専用をチェックしたときと同じ状態です。
(2)レコードを編集不可にする:レコードの制御
②状況が「完了」または「取り下げ」の場合、レコードを編集不可にする
(1)管理→テーブルの管理→「状況による制御」タブで「新規作成」をクリックします。
(2)名称:なにかしら入力します。
(3)状況:複数選択したいため、ここは「*」にします。
(4)全般タブ「レコードの制御」で「読取専用」にチェック
(5)条件タブ:フィルター条件に「状況」項目を追加。ここで「完了」と「取り下げ」を指定します。
さて、ためしに完了のレコードを開いてみました。
項目は変更できそうな様子ですが、更新ボタンがないので変更できません。コメントも入れられません。上部に「読取専用のため更新できません」と表示されています。
(3)レコードを編集不可にする:項目の制御
②の別解:状況が「完了」または「取り下げ」の場合、レコードを編集不可にする
完了になった後も、コメントだけは入れたかったりすることがあるため、レコード全体を読み取り専用にするのではなく、すべての項目を読み取り専用にする、という方向でやり直したいと思います。
(1)管理→テーブルの管理→状況による制御タブで、先ほど設定した「完了・取り下げ」を開きます。
(2)レコードの読み取り専用を解除、表示しているすべての項目を選択し、読み取り専用にする。
ctlfキーを押しながら項目を選択すると、複数の項目を選択できます。その状態で「読取専用」ボタンをクリックすると、選択した項目すべてに読取専用が適用されます。
もちろんひとつひとつ設定していくのでも大丈夫です。
さて、ためしに完了になっているレコードを開いてみます。項目は編集することができなくなっていますが、更新ボタンは表示されています。コメントを入れてみたところ、コメントを入れることができました。
レコード全体を読み取り専用にしてもよいのですが、すべてを確定した後もコメントだけは入力できる余地を残したいという場合は、この方法でできますね。
(4)項目の非表示
③状況が「完了」の場合、項目「希望納期」を非表示にする
今度は「非表示」をやってみたいと思います。
(1)管理→テーブルの管理→「状況による制御」タブで「新規作成」をクリックします。
(2)名称:なにかしら入力します。
(3)状況:「完了」を指定します
(4)項目の制御:非表示にしたい項目を選択して「非表示」ボタンをクリックします。
さて、完了のレコードを見てみましょう。希望納期は非表示になっているでしょうか?
。。。と。。。あれ?状況が完了なのに希望納期が非表示になってない?!
あれこれやってみたところ、先に指定した「完了・取り下げ」の制御で「希望納期」を読み取り専用にしているのがダメだったみたいです。同じ項目で同じ状況で複数の制御をかける場合、先に指定したほうが生きるみたいです。今回は状況が完了の時、「完了・取り下げ」の制御で先に「読取専用」を指定し、その次に「希望納期非表示」の制御で「非表示」を指定したため、「読取専用」の方が適用された、ということみたいです。
このような場合は「希望納期非表示」の制御を先に指定する、または「完了・取り下げ」の制御を「完了」と「取り下げ」の二つに分割し「完了」の制御で「希望納期」項目は「読取専用」にしない、ということで回避できそうです。
今回は前者の指定方法を採用しました。
(5)制御条件の順番の変更
「完了・取り下げ」の条件を削除して、「希望納期非表示」の後に再度追加設定したのですが、なんと!順番が変えられるということに後から気が付きました。
動かしたい条件にチェックを入れて、「上」「下」ボタンでひょいひょい順番が変えられます。
先に言ってよ~とむなしくパソコンに向かってぼやく。
よだんですが、開発者用ツールでhtmlを見てみると、非表示にした項目自体は消えてなくてdivタグのclassが変化することにより非表示になっているようです。
(6)状況による項目の読み取り専用
④項目「作業者からのコメント」欄を、状況が「申請中」「受付中」のみ編集可能とする(それ以外は読み取り専用にする)
「作業者からのコメント」欄を、状況が「申請中」「受付中」のみ編集可能とする。つまり、状況が「申請中」「受付中」以外の状況で「作業者からのコメント」欄を読み取り専用にする、という指定にすればよいですね。
(1)管理→テーブルの管理→「状況による制御」タブで「新規作成」をクリックします。
(2)名称:なにかしら入力します。
(3)状況:複数選択したいため、ここは「*」にします。
(4)全般タブ:「項目の制御」で「作業者からのコメント」を選択し、「読取専用」ボタンクリック
(5)条件タブ:フィルター条件に「状況」項目を追加。ここで「申請中」と「受付中」以外にチェックを入れて指定します。(完了と取り下げはチェックを入れなくてもOK)
(7)入力必須
⑤状況が「受付中」の場合、項目「進捗ステータス」を編集可とし、入力必須とする
ふたつ、状況による制御の条件を追加設定します。
(1)状況が「受付中」以外の場合、「進捗ステータス」を読み取り専用にする
(2)状況が「受付中」の場合、「進捗ステータス」を入力必須にする
(1)の制御
状況は「*」、条件タブで「受付中」遺体をフィルター条件に指定。
項目の制御で「進捗ステータス」を読み取り専用にする。
(2)の制御
状況は「受付中」を設定。項目を選択し「入力必須」ボタンをクリックします。
4.最後に
最終的に、状況による制御は以下の条件設定となりました。
「受付中」の時に「進捗ステータス」を入力必須にしましたが、状況「受付中」から「取り下げ」にしたいときも「進捗ステータス」に何かしら入力がないとエラーとなってしまうということに後から気が付きました。「受付中」から何もやっていない状態で「取り下げ」としたいときは「進捗ステータス」に入力しないといけないのは、ちょっとよろしくないような気がしまして。
プロセス、状況による制御は設定してみて、テストしてみて、あれ?と思ったらまたうんうん悩んで設定しなおす、という感じでやっています。
細かく状況による制御を行いたいときは、スクリプトによる制御の方に軍配が上がるのかなとも思いました。
順番にも気を使った方がよいようです。「完了・取り下げ」の制御はほかの制御条件とかぶることもあるため、一番最後の条件とした方がいいような気もしてきました。
中途半端ですが、状況による制御のお試しをやったよということで、今回はこの辺で。。。
プロセス、状況による制御は一度やってみると、すぐに理解できます。ぜひ、一度触ってみてください。
お読みいただきありがとうございました。
5.参考文献
プリザンター公式マニュアル:状況による制御
https://pleasanter.org/manual/status-control
プリザンター公式サイトFAQ:項目の非表示や読取専用などの状態変更を「状況による制御」機能で実現する
https://pleasanter.org/manual/faq-status-control-workflow
コメント