はじめに
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 を受け取ったら、プロセス管理の作業者をアプリ管理者に変更します。
④続いて、「引き戻し」を実行します。
※③で作業者をアプリ管理者に変更することで、自分が作業者に設定されていなくてもプロセスを進めることが可能です。
続いて、③,④の Webhook 部分の設定に移ります。
カスタマイズ(Webhook 部分)
「kintoneアプリのWebhook」は、以下のようなカスタマイズになります。
Webhook カスタマイズは原則、最初に kintone 接続設定を行います。ここで、事前に取得していた kintoneアプリのAPI トークンを設定します(gusukuのAPIキーとは別物ですのでご注意ください)。
「kintone アプリのカスタマイズ」の場合はユーザーが開いているレコードが処理対象となりますが、Webhook の場合は変更されたレコードの情報を明示的に取得するために「Webhook から渡されたレコードを取得する」を使用します。
ここまでは、どのWebhookを作成する場合でもほぼ同じ流れになります。
次に、「作業者を変更する」、「ステータスを変更する」の設定を行います。ポイントは、「3.作業者を変更する」の条件としてステータスが「申請中」かどうかをチェックするために、「ステータスが特定の値ならば」を追加しておきます。これを入れないと、どのステータスでも常にこのカスタマイズが動いてしまうためです。
ここまで設定ができましたらカスタマイズは完成です。画面上部の黄色い「ジョブ生成・設定」ボタンをクリックしてください。ジョブが生成され、ダイアログが開きます。詳しい使い方についてはこちらのページをご確認ください。
問題なくジョブが生成されたら、ここでは一旦「キャンセル」をクリックしてダイアログを閉じておいてください。
画面のカスタマイズ(「kintone アプリのカスタマイズ」部分)
事前の準備として、gusuku APIキーを作成します。
こちらの案内にしたがって、gusuku共通管理画面のAPIキーのタブから発行してください。作成後「APIキーを表示」をクリックして、APIキーを確認してください(以下でこれから利用します)。
gusuku APIキーが用意できましたら、kintoneアプリのカスタマイズを開始します。
まず、①にあるようにボタンを押し、作成したWebhookを呼び出します。以下のようなカスタマイズになります。
パラメータの「kintone Webhook のカスタマイズ」では先ほど作成したWebhookを選択します。「gusuku APIキー」には、共通管理画面からAPIキーをコピーして設定してください。
この設定によって、レコード詳細画面に「引き戻す」というボタンが作られ、このボタンを押すことで「kintone Webhook を起動する」を実行します。
適用したkintoneアプリの画面は、このようになります。
実際に申請中まで進んだプロセスを引き戻して動作を確認してみましょう。
補足・注意点
以上で問題なく動作するのですが、2つほど注意点を記載させていただきます。
1. Webhook によるカスタマイズは一瞬では終わりません(数秒程度はかかります)
そのため、申請者が「引き戻し」ボタンを押した後、数秒後に画面をリロードするとステータスの変更が反映されると思います。
ユーザーの使い勝手を向上するためには、例えば kintone アプリのカスタマイズの最後に「情報ダイアログを表示する」などを使って数秒後に画面をリロードすることを促す表示をすると便利になると思います。
2. プロセス管理の設定にない経路では動きません
カスタマイズを行う場合でも、必ず kintone のプロセス管理の設定で指定された経路に従った順番でしか動きません。
今回の例で言いますと、「申請中」のときには「引き戻し」が可能になるように経路設定を行っていますが、「承認」のときには「引き戻し」が設定されていません。そのため、カスタマイズを行っても「承認」のステータスから「引き戻し」を行うことはできないため、先にプロセス管理の設定で「承認」の時に実行できるアクションとして「引き戻し」を設定し、その後にカスタマイズを行う必要があります。