作業者全員の実行が必要なプロセス管理を設定している時に、最後の作業者が保存したらステータスを進めたい場合、カスタマインだと次の要領で実現する事ができます。
ここでは、例としてkintone のプロセス管理のアクションで、2名の承認者が2人とも承認しなければ完了できないように設定されている場合についてご説明します。
kintoneのプロセス管理の設定については、下記のページをご確認ください。
https://jp.cybozu.help/k/ja/user/app_settings/process/set_process.html
kintoneアプリの設定
フィールドの設定は次の通り。
※カスタマイズ中で使っているのはチェックボックスフィールドの「却下」のみです
kintoneアプリのプロセス管理は下記のように設定しています。
承認待ちのステータスから完了に進むためには、作業者2人ともが「承認する」アクションを実行しなければ、完了のステータスには進めないように設定します。
「却下する」を選んだ場合は、アクションを実行したのが作業者1名であってもステータスは却下に進みます。
カスタマイズ完成例
今回のサンプルのカスタマイズを反映したkintoneアプリの完成例は下記のようになります。
レコード追加画面で必要な情報を入力し、レコードを保存します。
レコードが保存されると、「承認申請する」ボタンを押さなくても自動的にステータスが「承認待ち」に進みます。
作業者として指定されている1名がレコード編集画面を開き、レコードを保存します。
レコードが保存されると、今レコードを編集・保存した作業者の分だけ作業状態が「承認する」になり、作業が完了します。
ステータスについては、まだ作業者が残っているため「完了」には進みません。
また、この時作業者ではないユーザがレコードを保存した場合はプロセス管理のステータスを進める処理は行いません。
残りの作業者がレコードを保存するとステータスが「完了」に進みます。
ステータスが「完了」になりました。
なお、承認待ちの状態で「却下」にチェックを入れて保存すると、ステータスは却下に進みます。
ステータスが「却下」になりました。
Customineの設定
Customineでステータスを変更するカスタマイズを作成する際は、レコード追加の場合とレコードの編集の場合でアクションを分ける必要があります。
レコードのステータスの状態を取得する「ステータスが特定の値ならば」は、一旦レコードが保存された後のレコード詳細画面や編集画面でしか利用できません。
そのため、レコード追加のアクションは分けて作成してください。
今回の例では、レコード追加画面でレコードが保存された時に、kintoneのプロセス管理の最初のステップである、ステータス変更アクション「承認申請する」を実行します。
やること
「ステータスを変更する(現在のレコード)」を選択します。
ステータス変更アクションは、「承認申請する」を選択しました。
条件
「レコードを保存した直後(削除後は除く)」と「現在の画面が追加画面ならば」を指定します。
次に、レコードを編集し、保存したタイミングでステータスを変更するアクションを作成していきます。
ここでポイントになってくるのが、「作業者」です。
もし作業者以外のユーザーがレコードを保存し、プロセス管理のアクションが実行されると、「作業者のみがステータスを変更できます。」のようなエラーとなってしまいます。
エラーメッセージからもわかるように、このプロセス管理のアクションで指定された作業者以外がステータスを変更しようとした場合に発生するエラーです。
このエラーを回避するために、プロセス管理のアクションで指定された作業者のみがステータスを変更できるようにカスタマイズに条件を設定します。
カスタマイズの流れとしては、下記です。
編集画面でレコードが保存された時に、その保存を行ったログインユーザーを取得する。
ログインユーザーが現在のレコードのプロセス管理のアクションの作業者に指定されているかをチェックし、指定されていたらステータスを進める。
その際に、「却下」フィールドがチェックされていればステータスを却下に、されていなければ完了に進める。
編集画面でレコードが保存された時に、その保存を行ったログインユーザーを取得する
やること
「ログインユーザーを取得する」でログインユーザーを取得します。
条件
「レコードを保存した直後(削除後は除く)」と「現在の画面が編集画面ならば」を指定します。
ここに指定する条件は、プロセス管理のアクションを実行したいときの条件です。
このように指定すると、編集画面でレコードを保存した時のユーザーが取得できます。
また、「ステータスが特定の値ならば」も指定しました。
ステータスが「承認待ち」の時のみアクションが実行されるように設定しています。
ログインユーザーが作業者であればステータスを進める(承認)
やること
「ステータスを変更する(現在のレコード)」でステータスを進めます。
ステータス変更アクションには「承認する」を選択しました。
このアクションを実行すると、2名の作業者の内まだ1人しか作業を完了していなければ「承認待ち」に留まり、2名とも承認が完了すればステータスが「完了」に進みます。
条件
ログインユーザーの取得が完了してからアクションを実行したいので「他のアクションの実行が完了した時」を指定します。
アクションは「4」を指定しました。
次に、「フィールド値が特定の値ならば」の条件を2つ指定しています。
一つ目は、アクション番号4で取得したログインユーザーが現在のレコードの作業者に含まれているかをチェックします。
二つ目は、チェックボックス「却下」フィールドの値をチェックしています。「却下」フィールドで何も選択されていなければ、「承認する」を実行します。
ステータスを「完了」にするアクションは以上で完了です。
次に、チェックボックス「却下」にチェックが入っていた時のアクションを作成します。
ほとんど「承認」の時と内容が同じですので、アクションの複製で作成し、必要な個所だけ変更します。
ログインユーザーが作業者であればステータスを進める(却下)
やること
「ステータスを変更する(現在のレコード)」でステータスを進めます。
ステータス変更アクションには「却下する」を選択しました。
条件
変更した箇所は、「フィールド値が特定の値ならば」の二つ目の比較値です。
「承認」のときは空白(未選択)にしていましたが、こちらでは「却下」と等しい場合、としています。
以上で、却下の場合のアクションの作成は完了です。
実際に作成してみられてご不明な点などございましたら、お気軽にチャットでご質問ください。