どうも。BBです。
ジョイゾーではSIチームとプラグインチームの統括マネージャーをしています。
なんか「禁断の〜」とか物騒なタイトルをつけてしまったのですが、今回の内容は少しグレーなところに足を突っ込んでみました。
結論から言うと、「Administratorアカウント」×「代理承認」を組み合わせることで、kintoneのプロセス管理にありがちな「完了ステータス後も特定の人だけ差し戻したいけど、通知は汚したくない」という悩みが解決できます。
ただし、先に言っておくと、これは公式にサポートされた使い方ではなく、後から設定を変えたくなったときのコストがそこそこ高いやり方です。この記事の目的は「確かにこういう課題あるよね〜」という課題感の共有と、あとサイボウズ社への要望アピールです。ニーズはそこそこあるから公式でできるようにしてほしい!ってな感じ。
「へぇ。確かにこれならできるかもね。でもやっぱりそう簡単ではないね。」くらいのノリで読んでもらえると嬉しいです。
弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。
今回の課題:完了ステータスまわりの「あるある」
kintoneのプロセス管理でこんなこと思ったことないですか?
- 完了ステータス後にも差し戻しアクションができるようにしたい
- 差し戻しアクションは特定ユーザーだけできるようにしたい
- 完了ステータスで作業者を割り当てると「未処理」が溜まって嫌
完了ステータスの作業者に、とあるユーザーを指定してしまうと、ポータルの「未処理一覧」に完了したレコードが溜まり続け、なんかすっきりしないですよね。未処理一覧に件数あることが当たり前になってしまうと、他の承認しないといけないやつを見逃すリスクもありますし・・・。
けど、作業者を割り当てないと、レコードの閲覧権限があれば完了ステータスから誰でも差し戻しアクションができてしまうので、それも避けたい・・・。(理想は承認者だけが後から差し戻しができる)
この「通知汚染」と「特定ユーザーのみ差し戻し可能」を両立させる方法はないのか?ってところで目をつけたのが「Administratorアカウント」でした。
Administratorアカウントって何?
サイボウズ製品を契約すると「cybozu.com共通管理」が使えるようになります。ここでは、契約情報やユーザー、組織の管理ができるのですが、ここのユーザー管理に初期で「Administrator」という特別なユーザーアカウントが存在します。
このアカウントはログインユーザー用ではなく、APIトークンの操作などシステム側のユーザーで、初期状態はOFF(ユーザーとして利用不可)なのですが、ONにすれば他のユーザーと同様に扱うことができます。(ログイン/パスワードでブラウザからログインすることもできます。)
▼ Administratorとは – cybozu.comヘルプ
https://jp.kintone.help/general/ja/id/0209
でもまだ甘い
Administratorアカウントであれば、一般ユーザーとして使わなければ通知汚染は確かに気にしなくて良い!
けど、作業者がAdministratorでは結局誰も差し戻しできないじゃん・・・
となったところで今回、輝く機能が割と最近のアップデートで搭載された「代理承認」です。
プロセス管理の代理承認機能を使うことで、ボールは持たなくてもアクションが実行できるようになり、アクションを実行できる人は設定画面上であらかじめ選んでおくことができます。
つまり「Administrator × 代理承認」であれば、今回やりたいことが実現できる!!
ヘルプには「ユーザー情報の変更や利用ユーザーとしての使用は控えてください。」とあるってことは、逆に利用ユーザーとしてでなければいいのか?じゃなきゃわざわざONにするヘルプがあるのもおかしいよな・・
と若干自分本位な解釈をして作業を進めます。
設定方法(あくまで自己責任だよ)
まずAdministratorのアカウントの使用状態を「使用中」にします。ここはこれだけでOKです。

続いて、プロセス管理にて終了ステータスに対して「差し戻しアクション」を設定します。(今回は便宜上、処理中に戻してます)

そしたら完了の作業者に禁断のAdministratorを設定します。
画面に「作業者以外でも実行できる〜」というボタンが出てきます。これは平たく言うと「本来の作業者(この場合Administrator)以外の人でも、このアクションを実行できるようにする」設定です。ここで、実際に差し戻しをしてほしいユーザーを指定します。

任意のユーザーを代理承認者として設定することで、

誰の未処理一覧も汚すことなく、任意のユーザーによる差し戻しが可能になります。

やったね!
注意:後戻りのコストが高いので、運用前に必ず確認してほしいこと
ここまで読むと「グレーだけどイケるじゃん」で終わりたくなるのですが、実はこの設定、後から変更したくなったときのコストがそこそこ高いこともわかりました。もし使ってみたいなと思われている場合、以下の3点は必ず確認してください。
1. 完了レコードが溜まると、アクションの削除も作業者の変更もできなくなる
Administratorが作業者として残っているプロセスが動いている状態で、この「差し戻し」アクション自体を削除しようとすると「プロセス管理のアクションを削除できません。アクションを削除すると「実行できるアクションがなくなる作業者が運用中のアプリにいます。」というエラーになります。
つまり、一度この構成で運用を始めてレコードが完了ステータスに溜まった後だと、設定を戻したくなっても簡単には戻せません。変更したくなったら、先に該当レコードの作業者からAdministratorを外す作業が必要になります。
2. Administratorを「使用停止」に戻すと、完了レコードのステータスが変更できなくなる
個人的にはこちらの方が怖いと思っています。kintoneのヘルプには、作業者に指定されているユーザーの利用を停止すると、レコードのステータスを変更できなくなる(アプリ管理者が現在使用中のユーザーに作業者を変更すれば戻せる)とあります。
この記事の前提は「初期状態OFFのAdministratorをONにする」です。ということは、将来誰かが利用ユーザーの棚卸しをしていて「これ何でONになってるんだっけ?」と使用停止に戻した瞬間、対象アプリの完了レコードが軒並みロックされる構図になります。しかも設定した本人が異動・退職した後だと、原因究明がかなり大変になります。アカウント側の設定とアプリ側の設計が、離れた場所で静かに結びついているのが、この方法の一番のリスクだと思っています。cybozu.com共通管理側に「このAdministratorは特定アプリのプロセス管理で使っているので停止しないこと」という運用メモを必ず残してください。
3. 本番導入前に、検証環境で「後から変えたくなったとき」を一度試しておく
上記2つはどちらも「動かしてみて初めて気づく」タイプの制約です。本番アプリでいきなり試すのではなく、検証環境で実際に完了レコードを溜めた状態から「アクションを削除する」「Administratorを使用停止にする」を一度試して、挙動と復旧手順を確認してから導入することをおすすめします。
おわり:だからこそ、公式対応してほしい
このネタが思いついたときは「グレーだよなぁ。怒られるかなぁ。」とか思ったりしましたが、記事を書きながら「むしろAdministratorアカウントの正しい使い方では!?」なんて前向きになったり・・・。ただ、上で書いた通り後戻りのコストは決して低くないので、正直「ここまで気にしないと使えない状態」自体が、公式に「完了ステータス後の限定差し戻し」機能がないことの裏返しだとも思っています。ニーズはあるはずなので、ぜひ公式機能として検討してもらえると嬉しいですね。
でも何があるかわからないので、ご利用は上記の注意点を踏まえた上で計画的に。
こんな感じで「これならいけるのでは!?」って考えるのもエンジニアの醍醐味で、それを目の前で実践して体験できるのが「システム39」です!今回のような「公式にはない組み合わせを試してみる」動き方自体、対面で一緒に手を動かしながら検証していくシステム39のスタイルとかなり近いものがあります。
気になる方はぜひシステム39のサービスページも覗いてみてください。
弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。