ワークフローのキャンセル

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む4読むのに数分
  • ワークフローをキャンセルすると、ワークフローの実行が停止され、ワークフローコンテキストの状態キャンセルに設定されます。実行中のワークフローをキャンセルするには、cancelContext(context) スクリプトを使用します。onCancelスクリプトを定義して、未解決のワークフロー アクティビティをクリーンアップすることができます。

    始める前に

    必要なロール: admin または workflow_admin

    このタスクについて

    ワークフローをキャンセルすると、ワークフローエンジンにキャンセルコマンドを挿入することによって、ワークフローの正常な停止が試みられます。

    手順

    1. 移動先 すべて > Workflow > アクティブなコンテキスト.
    2. ワークフローコンテキストレコードを選択します。
    3. フォームレイアウトを設定して、 [キャンセル時のスクリプト] フィールドをフォームに追加します。
      フォームレイアウトの構成の詳細については、「Configuring the form layout」を参照してください。
    4. [キャンセル] 関連リンクを選択します。
      確認メッセージが表示されます。
      キャンセルの確認
    5. [OK] をクリックします。
      ワークフローエンジンは、ワークフローを正常にキャンセルしようとします。
      キャンセル待ち

      ワークフローがキャンセルコマンドに応答しない場合、 [キャンセルの強制 (Force Cancel)] オプションが表示されます。

      キャンセルの強制
    6. [キャンセルの強制] をクリックしてワークフローがアクティブに実行しているスレッドを中断するか、 [待機を続ける] をクリックしてワークフローが正常にキャンセルされるの待ちます。
      警告:
      可能な限り、ワークフローが正常にキャンセルされるようにします。ワークフローを強制的にキャンセルすると、関連するワークフローやスクリプトが未解決の状態のままになる可能性があります。キャンセル時のスクリプトを使用して、キャンセルされたワークフローから未解決のアーティファクトをクリーンアップすることができます。

    cancelContext(context) スクリプトによるワークフローのキャンセル

    実行中のワークフローをキャンセルするには、cancelContext(context) スクリプトを使用します。このスクリプトは、イベントに応答してワークフローをキャンセルする必要がある場合や、ユーザーが手動でワークフローをキャンセルする必要がある場合に役立ちます。

    始める前に

    必要なロール:管理者

    このタスクについて

    詳細については、「Workflow - cancelContext(GlideRecord context)」を参照してください。

    キャンセル時のスクリプトの定義

    ワークフローをキャンセルすると、レコードやスクリプトが未解決の状態のままになる可能性があります。たとえば、サービス カタログ ワークフローをキャンセルすると、カタログ アイテムが要求しているユーザーのカートに残ることがあります。管理者は、ワークフローがキャンセル状態に移行するときに実行されるキャンセル時のスクリプトを指定できます。このスクリプトは、ユーザーに Notify したり、情報を記録したり、ワークフロー アクティビティ内で実行されるスクリプトの状態を解決したりすることができます。ワークフローコンテキストの sys_id は、このスクリプトで context_sys_id 変数を使用して使用できます。

    このタスクについて

    キャンセル時のスクリプトは、グローバルスコープから非同期で実行されます。インスタンスの作業負荷によって、キャンセル時のスクリプトがスケジュールされて実行されるタイミングが決まります。
    重要:
    グローバルスコープからキャンセル時のスクリプトは実行されるため、このスクリプトがスコープ付きスクリプトインクルードを呼び出したり、実行することはできません。

    手順

    1. 移動先 すべて > Workflow > ワークフローバージョン.
    2. チェックアウトしたワークフロー バージョンを選択します。
      チェックアウトされていないワークフロー バージョンは編集できません。
    3. [キャンセル時のスクリプト] フィールドを編集します。
      このフィールドを追加するためにフォームを構成しなければならない場合があります。
    4. [更新] をクリックします。

    このサンプル スクリプトは、要求アイテムの [sc_req_item] レコードに、その要求のワークフローがキャンセルされたことを示すコメントを追加します。
    var grContext = new GlideRecord("wf_context"); 
    grContext.get(context_sys_id); 
    var grReq = new GlideRecord("sc_req_item");
     
    // The current record may not exist, make sure it exists before modifying it.
    if (grReq.get(grContext.id)) {
        grReq.comments = "The workflow processing this item was Canceled. Contact your system administrator for further information.";
        grReq.update();
    }