はじめに
kintone のプロセス管理の機能には「引き戻し」(申請した後、申請者が誤りに気づいたので申請を取り消し、自分自身を作業者にする)の機能がありません。しかし、gusuku Customine の Job Runner を活用することで「引き戻し」を実装することが可能ですのでご紹介いたします。
Administratorの設定について
gusuku Customine Job Runnerが利用するkintone REST APIは、Administratorによる操作として記録されます。 その中でも特に、今回ご紹介する「作業者を変更する」は、Administratorが「停止中」の場合、以下のようなエラーが出ますのでご注意ください。
kintone がエラーを返しました。
kintone からの応答:{'code': 'GAIA_IL26', 'id': 'fIsGKKG7ozSFmVPoWhAB', 'message': '指定したユーザー(code:Administrator)が見つかりません。'}
PUT https://**********.cybozu.com/k/v1/record/assignees.json
cybozu.com ヘルプのAdministratorとは をご確認の上、Administratorを「使用中」の状態にしてください。
前提と下準備
使用するアプリはアプリストアにある「旅費精算申請」です。このアプリはプロセス管理の設定が既にされているため、そのまま使用します。
プロセス管理の設定で、「申請中」の次のアクションとして「引き戻し」を追加します。(緑枠で囲った部分が追加箇所)
本来であれば「申請中」の作業者である「上長」しか「引き戻し」は行なえませんが、申請者自身で「引き戻し」を実行したいのが要件で、これを可能にするのが今回のカスタマイズです。
続いて、API トークンを取得しておきます。
アクセス権は「レコード閲覧」「レコード編集」「アプリ管理」を選択します。
アプリのフォームには「引き戻し」というチェックボックスフィールドを追加しておきます。
カスタマイズ全体像
以下の流れで動作するカスタマイズを作成します。
①ユーザーが申請内容の間違いに気づいたら、「引き戻し」ボタンをクリックします。ボタンが押されたことを契機に「引き戻し」フィールドにチェックを入れます。
②kintone の Webhook の設定により、レコードの編集があったことを Job Runner に通知します。
③Job Runner で Webhook を受け取ったら、プロセス管理の作業者をアプリ管理者に変更します。
④続いて、「引き戻し」を実行します。
※③で作業者をアプリ管理者に変更す ることで、自分が作業者に設定されていなくてもプロセスを進めることが可能です。
カスタマイズ(「kintone アプリのカスタマイズ」部分)
まず、①にあるようにボタンを押し「引き戻し」フィールドに値が入るようにするため、Customine の「kintone アプリのカスタマイズ」で以下のようなカスタマイズを作成します。
この設定によって、レコード詳細画面に「引き戻す」というボタンが作られ、このボタンを押すことで「引き戻し」チェックボックスに値が入ります。
続いて、一旦②は飛ばして③,④の Webhook 部分の設定に移ります。
カスタマイズ(Webhook 部分)
Webhook カスタマイズは原則、最初に kintone 接続設定を行います。ここで、事前に取得していた API トークンを設定します。
続いて、以下の設定を行います。「kintone アプリのカスタマイズ」の場合はユーザーが開いているレコードが処理対象となりますが、Webhook の場合は変更されたレコードの情報を明示的に取得するために「Webhook から渡されたレコードを取得する」を使用します。
続いて、以下のように「作業者を変更する」、「ステータスを変更する」の設定を行います。ポイントは、「3.作業者を変更する」の条件として「引き戻し」フィールドに「引き戻し」という値が入っているときを追加しておきます。これを入れないと、レコードの変更があったときに常にこのカスタマイズが動いてしまうためです。
ここまで設定ができましたらカスタマイズは完成です。画面上部の黄色い「ジョブ生成・設定」ボタンをクリックしてください。ジョブが生成され、ダイアログが開きます。詳しい使い方についてはこちらのページをご確認ください。
URL 文字列の右側にある「Copy」ボタンで URLをコピーした後、
「kintone の Webhook 設定画面へ」のリンクをクリックすると、kintone の画面が開きます。
kintone 側でのWebhook の設定
kintone の Webhook 設定画面にて、URL には上記でコピーした Job Runner のURL を設定し、通知を送信する条件は「レコードの編集」のみに設定します。設定をしたら忘れずに「アプリの更新」を行います。
以上で設定は完了です。
実際に申請中まで進んだプロセスを引き戻して動作を確認してみましょう。
補足・注意点
以上で問題なく動作するのですが、2つほど注意点を記載させていただきます。
1. Webhook によるカスタマイズは一瞬では終わりません(数秒程度はかかります)
そのため、申請者が「引き戻し」ボタンを押した後、数秒後に画面をリロードするとステータスの変更が反映されると思います。
ユーザーの使い勝手を向上するためには、例えば kintone アプリのカスタマイズの最後に「情報ダイアログを表示する」などを使って数秒後に画面をリロードすることを促す表示をすると便利になると思います。
2. プロセス管理の設定にない経路では動きません
カスタマイズを行う場合でも、必ず kintone のプロセス管理の設定で指定された経路に従った順番でしか動きません。
今回の例で言いますと、「申請中」のときには「引き戻し」が可能になるように経路設定を行っていますが、「承認」のときには「引き戻し」が設定されていません。そのため、カスタマイズを行っても「承認」のステータスから「引き戻し」を行うことはできないため、先にプロセス管理の設定で「承認」の時に実行できるアクションとして「引き戻し」を設定し、その後にカスタマイズを行う必要があります。