承認 - グループワークフローアクティビティ

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:11分
  • [承認 - グループ] アクティビティは、指定されたグループの各メンバーの承認レコードを作成します。

    注:
    このアクティビティは、ワークフローがタスクを拡張するテーブルで実行されている場合にのみ使用できます。

    グループの承認は、[待機] フィールドで指定されたロジックに従い、ユーザー承認に基づいて承認または却下されます。

    結果

    ワークフローデザイナーは、アクティビティのスクリプトフィールド内から activity.result を使用して、結果値を割り当てることができます。デフォルトでは、結果値は最終承認処理です。この処理は、承認者による承認アクションおよび [待機] または [誰かが却下時] フィールドで指定された承認条件に依存します。可能な結果値:
    • 承認済み
    • 却下
    • 削除済み
    • キャンセル

    入力変数

    アクティビティの初期動作が、入力変数によって決まります。

    表 : 1. 承認 - グループ アクティビティの入力変数
    フィールド 説明
    承認 - グループ時期

    このアクティビティがグループ承認レコードを生成する時期を指定します。

    条件 適合した場合はグループ承認が生成される条件。条件に適合しない場合、承認はスキップされます。
    承認 - グループ承認者

    承認が要求されるグループを指定します。

    グループ 承認が要求されるグループ。

    このフィールドを編集するには、ロック アイコンをクリックします。特定のグループを名前で選択するには、ルックアップ リストを使用します。実行時に現在のレコードのフィールド値からグループを選択するには、ツリー アイコンをクリックします。

    グループの各メンバーには個別の承認レコードが割り当てられます。

    グループが選択されていない場合、アクティビティは承認を自動的に [承認済み] に設定します。

    承認 - グループ条件

    グループの個々のメンバーからの応答に基づいてグループ承認を承認するか却下するかをアクティビティが判断する方法を指定します。

    待機
    個々の承認または却下のうちのどれがアクティビティの承認または却下という結果になるかを判断するための、さまざまな承認ロジック間の選択。オプションは次のとおりです。
    • [各グループからの承認]:各グループの任意のユーザーが承認することができ、各グループの最初の承認により、アクティビティは [承認済み] の結果で完了します (却下の処理方法については以下を参照)。
    • [任意のグループからの承認]:任意のグループの任意のユーザーが承認でき、任意のグループの最初の承認により、アクティビティは [承認済み] の結果で完了します。
    • [すべてのグループの全員からの承認]:すべてのグループのすべてのユーザーが承認して、アクティビティを [承認済み] の結果で完了させる必要があります (却下の処理方法については以下を参照)。
    • [各グループからの最初の回答]:各グループの任意のユーザーからの最初の承認または却下は、グループ承認の状態を示すために使用されます (却下の処理方法については以下を参照)。

      ユーザーが承認要求を却下した場合にどうなるかを示します。オプションは次のとおりです。

    • [承認を却下]:[却下] の結果となったアクティビティをすぐに完了します。
    • [任意のグループからの最初の回答]:任意のグループの任意のユーザーからの最初の承認または却下により、アクティビティは [承認済み] または [却下] の結果で完了します。
    • [スクリプトに基づく条件]:ユーザーが承認または却下するたびに、[承認スクリプト] が呼び出されて、アクティビティを完了すべきかどうかを判断します。
    承認スクリプト

    [待機][スクリプトに基づく条件] に設定されている場合にのみ表示されます。

    [待機] 変数が [スクリプトに基づく条件] に設定されると、このスクリプトが呼び出されて、承認または却下をどのように処理するかを決定します。スクリプトは変数 [回答] を [承認済み] または [却下] に設定して、この承認の全体的なステータスを示す必要があります。

    このスクリプトは、すべてのグループに関して全体的な承認状態を返す前に、この承認アクティビティの一部である各グループに対して承認状態を設定します。

    呼び出されると、この承認アクティビティの一部であるすべてのグループのスクリプトで、次の変数を使用できます。

    counts.total = total number of groups that are part of this approval
                      counts.approved = # of groups that approved so far
                      counts.rejected = # of groups that rejected so far
                      counts.requested = # of groups that are pending approval
                      counts.not_requested = # of groups that are not pending approval
                      counts.not_required = # of groups that approval is not required
    各グループについて:
    groups[group_id].total = total number of users that are part of this group's approval
                        groups[group_id].approved = # of users that approved so far
                        groups[group_id].rejected = # of users that rejected so far
                        groups[group_id].requested = # of users that are pending approval
                        groups[group_id].not_requested = # of users that are not pending approval
                        groups[group_id].not_required = # of users that approval is not required
                        groups[group_id].approvalIDs[state] = array of user ids that are at the specified approval state
    注意:使用するグループを反復する:
    for (var id in groups) {
                        var group = groups[id];
                        ... group.total ...
                        }
    注意:次のコードを使用してグループ オブジェクトを取得します (反復されるグループ名のようなものを取得する)。
    var objGroup = fncGetGroupObj(id);
                        var strGroupName = objGroup.name;
                        
                        function fncGetGroupObj(sidGroupApproval)
                        {
                        var objGroupApproval = new GlideRecord('sysapproval_group');
                        objGroupApproval.get(sidGroupApproval);
                        
                        var objGroup = new GlideRecord('sys_user_group');
                        objGroup.get(objGroupApproval.assignment_group.sys_id);
                        
                        return objGroup;
                        }
    承認スクリプトでも計算が可能です。たとえば、承認の半分のみが必要な場合:
    if (counts.approved/counts.total > .49) {
                        answer = 'approved';
                        }
                        else if (counts.rejected/counts.total > .50) {
                        answer = 'rejected';
                        }
    誰かが却下時
    個々の却下のうちのどれがアクティビティの承認却下という結果になるかを判断するための、さまざまな承認ロジック間の選択。オプションは次のとおりです。
    • [承認を却下]:[却下] の結果となったアクティビティをすぐに完了します。
    • [決定前に他の回答を待つ]:承認または却下の決定を下す前に、他の回答が得られるまで待ちます。これにより、ユーザーは決定が下されるまで考えを変えることができます。
    注:
    [待機][任意の人が承認] に設定されている場合 、たとえ 1 人以上のユーザーが却下したとしても、1 回の承認によりアクティビティは [承認済み] の結果で完了します。
    承認 - グループ スケジュール

    ワークフローで承認レコードの予定開始日と期日を計算する方法を指定します。[期限日基準:] や [スケジュール基準] を選択すると該当するフィールドが表示されます。

    期限日基準: ワークフローがタスクの期間、期日、およびスケジュールを決定する方法を選択します。
    • [ユーザー指定の期間]:期間は、ユーザー指定の値に基づいています。
    • [相対期間]:期間は、相対的な期間 (翌営業日の終了など) から計算されます。
    • [日付/時刻または期間フィールド]:期間は、現在のレコードのフィールド値に基づいています。
    • [スクリプト]:期間は、スクリプトによって返されます。
    期間

    [期限日基準:][ユーザー指定の期間] に設定された場合にのみ表示されます。

    特定の日数と時間。
    相対期間

    [期限日基準:][相対期間] に設定された場合にのみ表示されます。

    営業日の一般的な数と長さ。
    期日フィールド

    [期限日基準:][日付/時刻または期間フィールド] に設定された場合にのみ表示されます。

    日付/時間または期間フィールド。
    期日スクリプト

    [期限日基準:][スクリプト] に設定された場合にのみ表示されます。

    「回答」を継続時間用の秒数に設定するスクリプト。
    スケジュール基準: タイマーが勤務時間をカウントするために使用する基本スケジュール。スケジュールが指定されると、スケジュールで指定された回数のみ期間が考慮されます。たとえば、期間が 2 時間の場合、午前 8 時から午後 5 時のスケジュールでワークフローが午後 4 時に開始されると、翌日の午前 9 時に終了します。オプションは次のとおりです。
    • [このワークフローのスケジュール]:スケジュールは、ワークフローのコンテキストの日付、時刻、およびオプションの [タイムゾーン基準:] 値を使用します。
    • [特定のスケジュール]:スケジュールは、事前定義された [スケジュール] およびオプションの [タイムゾーン基準:] 値を使用します。
    • [スケジュール フィールド]:スケジュールは、テーブルの値およびオプションの [タイムゾーン基準:] 値を使用します。
    スケジュール

    [スケジュール基準:][特定のスケジュール] に設定された場合にのみ表示されます。

    リストから事前定義された [スケジュール]
    スケジュール フィールド

    [スケジュール基準:][スケジュール フィールド] に設定された場合にのみ表示されます。

    テーブルに関連付けられているスケジュールの日付/時刻または期間フィールド。有効なフィールドは、ツリー ダイアログの [要素を選択] に青色で表示されます。
    タイムゾーン基準: 期間を計算するためのタイムゾーン。以下のタイムゾーン基準があります。
    • [タイムゾーンなし]:デフォルト。ワークフローは GMT タイムゾーンを使用します。
    • [特定のタイムゾーン]:選択リストから選択した特定の [タイムゾーン]
    • [タイムゾーン フィールド]:フォーム上のフィールドから継続時間を追跡する [タイムゾーン フィールド]
    タイムゾーン

    [スケジュール基準:][特定のスケジュール] に設定された場合にのみ表示されます

    選択リストから希望するタイムゾーンを選択します。
    タイムゾーン フィールド

    [タイムゾーン基準:][タイムゾーン フィールド] に設定された場合にのみ表示されます。

    テーブルに関連付けられているスケジュールの日付/時刻または期間フィールド。有効なフィールドは、ツリー ダイアログの [要素を選択] に青色で表示されます。
    承認 - 詳細

    必要な場合、承認を要求する追加ユーザーを決定するスクリプトを書き込むことができます。

    詳細 このチェック ボックスをオンにすると、承認を要求する追加ユーザーを決定するスクリプトを書き込むことができます。[他のグループ スクリプト] を使用して、グループ承認をカスタマイズします。
    他のグループ スクリプト
    [詳細] チェック ボックスをオンにすると、追加のグループ承認を作成するかどうかを決定するため、このスクリプトが呼び出されます。スクリプトは変数 [回答] をグループ ID のカンマ区切りリストまたはグループ ID の配列に設定して、承認グループとして追加する必要があります。例:
    answer = [];
           answer.push('id1');
           answer.push('id2');

    条件

    以下の条件によって、アクティビティの後にどの移行が実行されるかが決まります。
    注:
    承認アクティビティは、ワークフローが待機していた承認条件または却下条件に一致するアクションの、またワークフローを進行するユーザーとして実行されます。
    表 : 2. 承認 - グループ アクティビティ条件
    条件 説明
    承認済み グループのユーザーは、[待機] ルールに基づいて要求を承認しました。
    却下 グループのユーザーは、[待機] ルールに基づいて要求を却下しました。
    エラー エラーを生成するイベントまたは条件。
    スキップ 承認をスキップできるイベントまたは条件。

    状況

    アクティビティ状況は、ワークフロー エンジンがアクティビティを処理する方法を指示します。
    表 : 3. 承認 - グループアクティビティ状況
    状況 説明
    実行中 ワークフロー エンジンは、アクティビティの [実行] 機能を起動させます。
    待機中 アクティビティを再開する特定のイベントが発生するまで、ワークフロー エンジンはアクティビティを無視します。
    完了 アクティビティの実行が終了しました。アクティビティの結果については結果値を確認してください。
    キャンセル このアクティビティ、またはこのアクティビティを含むワークフローはキャンセルされました。
    エラー JavaScript エラーが発生しました。エラーの詳細についてログを確認してください。