kintoneにはプロセス管理という機能が実装されており、これを使うことでタスクの進捗管理やワークフロー的な使い方ができるようになります。
ワークフローといえばガルーンやOfficeに機能として実装されていますが、kintoneを使うことで別アプリをマスタとしてルックアップや承認済みデータを後から検索したり一括でダウンロードするなどの事後処理で便利な点があります。
ただ、kintoneに実装されているのはあくまでもプロセスなので最終承認をうけたデータは承認後でも編集できてしまうため、厳密なワークフローを実現することが難しいというデメリットもあります。
そこで今回はよりワークフローに近づけるべく最終承認をうけたデータは編集不可にしてしまうカスタマイズをJavascriptを使って実装してみます。
今回の要件はただひとつ
ステータスが最終承認のデータを保存させない
です。
承認フローを作る
まずはプロセス管理を使って承認フローを設定します。
サンプルなのでシンプルに
承認済データの保存をさせないカスタマイズ
次にJavascriptの実装です。
今回やりたいことはステータスが「承認」となっているデータを保存させないですので、以下の様な要件にします。
- Javascriptをレコード保存時に実行する
- 保存時にレコードのステータスを確認し、ステータスが「承認」の場合は、エラーメッセージを設定する
コードで書くとこんな感じです
(function () { "use strict"; //ステータスが「承認済み」の場合は保存をさせない function cancelSave(event) { // レコード情報を取得 var record = event['record']; if (record['ステータス']['value'] === "承認"){ event.error = "承認済みのデータは編集できません。"; return event; } } // 編集画面から保存時のイベント kintone.events.on('app.record.edit.submit', cancelSave); })();
めちゃくちゃ簡単です(笑)
まず、いつものごとく
kintone.events.on('app.record.edit.submit', cancelSave);
と、レコード編集画面の保存実行前イベントで cancelSave という関数を実行させます。
cancelSave 内では
var record = event['record'];
でレコード情報を取得し、
if (record['ステータス']['value'] === "承認"){ event.error = "承認済みのデータは編集できません。"; return event; }
record[‘ステータス’][‘value’]が「承認」となっているかをチェックします。
もしステータスが「承認」となっていたらevent.errorにエラーメッセージをセットします。
このevent.errorに文字をセットするとkintone側でエラーと判断してくれ、以下のような感じでエラーメッセージを表示し、保存をキャンセルしてくれます。
実運用では承認ステップ毎で承認者に一部のフィールドを編集許可にするなどの要件も必須にはなってくるかと思いますが、簡単なワークフローであれば、これくらいのカスタマイズでも十分運用にのると思います。
こんな感じで実際にkintoneでワークフローを実現させたい!というご相談がありましたら、弊社までご相談ください。