概要
担当者が複数指定されている経路では、そのうちの 1 人が処理すればいい場合と全員が処理すればいい場合があります。前者はボタンの種類を「次に進む」、後者は「次に進む(全)」を指定します。
しかし現実には複数人指定しているうち 2 名、3 名が処理すれば次に進むというケースもあるでしょう。
ここではそういったケースを実現する方法をご紹介します。
JavaScript については、サポート対象外です。入門書やサイト等をご覧いただき解決していただけますようお願いいたします。
設定の手順
モデルの作成
モデルの編集画面を開いて、入力フォームにて以下の 4 つの入力フォームを作成します。
名前:最大承認者数
タイプ:数値
初期値設定:2 以上の任意の数値を入力
経路ごとの表示・編集設定:最大承認者数をユーザーが入力できるようにする場合は申請経路を「編集可能」を、そうない場合は「表示」を選択する
タイプ:カスタムラベル
名前:承認者数
スクリプト
if (${承認者} == "") { return 0; } var auth = ${承認者}.split(","); return auth.length; |
経路ごとの表示・編集設定:全経路で「表示」を選択
タイプ:単行テキスト
名前:承認者
経路ごとの表示・編集設定:全経路で「表示」を選択
タイプ:単行テキスト
名前:差し戻し用テキスト
経路ごとの表示・編集設定:全経路で「表示」を選択
※承認経路で「差し戻し」を使わない場合はこの項目は不要です。
経路にて以下の設定を追加します。
「承認待ち」の経路の「承認」の処理の種類を「終了(全)」に変更します。
「承認2」の処理を追加します。ボタンの種類は「次に進む」を選択します。
ボタン表示切替で「承認」には以下のスクリプトを追加します。
if(${最大承認者数} != ${承認者数} + 1) { return true; } reutrn false; |
また、「承認2」には以下のスクリプトを追加します。
if(${最大承認者数} == ${承認者数} + 1) { return true; } reutrn false; |
「承認」に以下の 4 つの自動処理を追加します。
自動処理の種類:次を飛ばす
自動処理の名前:初回承認者の場合はスキップ
スキップする条件:いずれかを満たす
${承認者数} が次と同じ 0
スキップ数:1
自動処理の種類:入力フォームアップデート
自動処理の名前:承認者に承認者を追加
更新対象項目名:承認者
更新内容:${承認者},${承認待ち.処理者}
自動処理の種類:次を飛ばす
自動処理の名前:初回承認者でない場合はスキップ
スキップする条件:いずれかを満たす
${承認者数} が次と異なる 0
スキップ数:1
自動処理の種類:入力フォームアップデート
自動処理の名前:承認者を直接追加
更新対象項目名:承認者
更新内容:${承認待ち.処理者}
「差し戻し」に以下の自動処理を追加します。
自動処理の種類:入力フォームアップデート
自動処理の名前:承認者をクリア
更新対象項目名:承認者
更新内容:${差し戻し用テキスト}
※差し戻しを使わない場合は不要です。
担当者設定にて担当者に2人以上の担当者を指定します。
申請から承認の流れ
モデルを保存したら、テストのため作成を行って確認します。確認目的なので、決裁待ちの担当者には作成者を設定します。
承認の経路で 1 人目(管理さん)の承認を実行します。
承認の経路で 2 人目(神谷町さん)の承認を実行します。
承認の経路で 3 人目(広尾さん)の承認を実行します。
これまでと違い、「承認2」が表示されます。
恵比寿さんの承認なしで決裁待ちの経路に進みます。
仕組みについて
前項でご確認いただいたように、入力フォーム「最大承認者数」「承認者数」「承認者」が次に進める上で必要になります。
「最大承認者数」は、承認者が複数人設定されているうち、何人が承認すれば次の経路に進めるかを表しています。今回の例では担当者を4人設定し、3人が承認すれば次に進めるので「3」が初期値に設定されています。この数を変更すると承認者を増減できます。
「承認者」は承認した人のメールアドレスが表示されます。これは「入力フォームアップデート」自動処理で承認者のメールアドレスを追加する仕組みで実現しています。
「承認者数」は承認した人数を表します。申請した時点では「0」が表示されています。1人目の承認者が承認すると「1」に変わります。「承認者」に追加されたメールアドレスの値をスクリプトで計算して取得しています。
また、「承認」の処理についてはタスクを進めずに留めるため、「次に進む(全)」を設定したいのですが、1つの経路で「次に進む」「次に進む(全)」の両方を作成することができないので「終了(全)」を用いています。