フローの構築

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:11分
  • ワークフロースタジオ は、フローの作成に使用されるデフォルトの ServiceNow AI Platform プロセス自動化ビルダーです。ワークフロースタジオ は、ワークフロー エディターに代わるものです。

    フローは、トリガーと一連のアクションとフローロジックで構成されます。フローにアクションとフローロジックを追加すると、収集または作成されたデータがデータパネルに表示され、他のアクションやフローロジックで使用できます。

    フローのビルドおよび管理にあたっては、アプリケーションやプロセスが使用する ServiceNow AI Platform のテーブルおよびフィールドについて、ある程度の知識が必要になります。プロセスアナリストは、利用可能なアクションとフローロジックを使用してフローを作成したり、既存のフローをコピーしてテンプレートとして使用したりすることができます。

    アクションに関する制限

    デフォルトでは、フローのアクションは 50 を超えることはできません。デフォルトの動作を変更するには、sn_flow_designer.max_actions システムのプロパティの値を増やします。ただし、大きなフローがインスタンスに与える可能性があるパフォーマンスの影響を考慮してください。

    不足しているアクション

    アドミニストレーターが更新セットからフローを追加した場合、フローにいくつかのアクションが不足している可能性があります。これは通常、インスタンスに適切な 統合ハブ スポークがインストールされていない場合に発生します。これらのアクションを表示するために必要なスポークのインストール方法については、「スポーク」を参照してください。

    その他のアクションメニュー

    [その他のアクション] アイコン ([その他のアクション] アイコン) を選択し、フローのその他のオプションにアクセスします。

    ステージ
    フローのステージにアクセスします。
    フローカタログ変数を管理
    サービスカタログによってトリガーされるフローに使用可能なカタログ変数を管理します。
    フロー変数
    フロー変数を作成して、フロー全体でデータを設定および取得します。
    コピーフロー
    指定アプリケーションでオープンフローのコピーを作成します。
    フローの初期設定
    [ドラフトアクションを表示][トリガーフローを表示][ストアスポークを表示]、および [インラインスクリプトの切り替えを表示] オプションを有効または無効にします。
    コードスニペットの作成
    特定のフロー、サブフロー、またはアクションを呼び出すためのコードスニペットを生成します。
    セキュリティを管理します。
    [クライアント API によるコール可能 (Callable by Client API)] オプションを有効または無効にします。
    デフォルトのフロータイトルの変更
    スタイル付きまたは動的テキストを追加することで、フローのデフォルトタイトルを変更します。詳細については、「自然言語タイトルの作成 (Create a natural language title)」を参照してください。

    フローのテスト

    ワークフロースタジオ インターフェイスから直接フローをテストできます。各テストは、トリガー条件が満たされた場合と同様にフローを実行します。フローにレコードトリガーがある場合は、テストに使用するレコードを指定できます。フローが実行されたら、フロー実行の詳細を使用してフローが正しく実行されていることを確認します。

    重要:
    テストを実行する際は、必ずフローレコードの変更が本番データに影響を及ぼさない非本番インスタンスで行ってください。

    フロー実行の詳細

    フローをテストするたびに、フロー実行のレコード、ログメッセージ、およびレポートが生成されます。フロー コンテキストは、フローの現在のステータスとランタイム値が含まれている関連レコードです。フローが実行されるとそのたびにコンテキスト レコードが生成されます。

    オプションで、テスト中だけでなく、フローが実行されるたびに実行の詳細を生成するようにシステムを設定できます。詳細については、「フローのレポートの有効化」を参照してください。

    フロー プロパティ

    フロープロパティにはフローに関する情報が含まれています。メインヘッダーで [プロパティ] を選択し、フローのプロパティを表示または編集します。

    プロパティ 説明
    名前 フローの一意の名前を入力します。
    保護 [なし] または [読み取り専用 ] を選択し、フローを読み取り専用にするかどうかを選択します。
    アプリケーション フローのアプリケーションを選択します。フローの作成時にこのプロパティを設定します。その後は変更できません。
    説明 フローの説明を入力します。
    実行方法

    フローを実行するユーザーを指定するオプション。システムユーザーまたはセッションを開始したユーザーを選択できます。フローをトリガーしたユーザーから更新を実行する必要がある場合は、セッションオプションを開始したユーザーを選択します。たとえば、フローを開始したユーザーからのインシデントレコードコメントが必要な場合に、このオプションを使用します。フローのオプションとして実行を設定しても、子サブフローには適用されません。

    個人用の OAuth トークンを使用して実行できるフローを作成するには、セッションを開始するユーザーのオプションを選択します。フローを実行しているユーザーが個人用の OAuth トークンを持っていれば、そのトークンでフローが実行されます。個人用の OAuth トークンの作成の詳細については、「OAuth 2.0 認証情報」を参照してください。

    ロールを使用して実行 フローを実行するロールです。[実行方法][セッションを開始するユーザー] に設定されている際にのみ、このオプションを利用できます。

    フローの印刷

    ワークフロースタジオ は、フロー、サブフロー、アクション、およびフロー実行の詳細の複数ページの印刷をサポートしています。その他のサポートされているブラウザーのリストについては、「ブラウザーサポート」を参照してください。

    ロール

    フローにアクセスするユーザーには、flow_designer ロールまたは admin ロールが必要です。

    一般的なガイドライン

    フローは、短いモジュール型の再利用可能な作業の集合にする必要があります。実行に 1 時間以上かかる場合は、長すぎる可能性があり、より効率的にすることができます。

    フローに適用される一般的なガイドラインはすべてサブフローにも適用されます。

    競合するビジネスロジックや重複するビジネスロジックを回避する

    自動化は、フローデザイナー、ビジネスルール、ワークフロー、および統合ハブを使用して作成できます。ワークフロースタジオ の使用を開始する前に、既存の ServiceNow AI Platform の自動化がどのように機能するかを理解してください。ワークフロースタジオ フローおよびアクションに置き換える前に、自動化を無効にします。「アーキテクチャの概要」を参照して、ワークフロースタジオServiceNow AI Platform 内でどのように機能するかを確認してください。

    必要に応じて、フローサブフロー、およびアクションのドキュメントを確認してください。

    フローにトリガーまたは変数の入力が必要かどうかを判断する
    フローは、トリガー条件が満たされたときに常に実行されます。トリガーは常にフローの入力として同じデータを提供します。フローを開始するために代わりに変数の入力が必要な場合は、サブフローを作成します。
    ビジネスロジックを再利用する
    一連の再利用可能な操作をサブフローとして作成し、それを複数のフローで使用できます。
    ロールで保護されたデータにアクセスしてユーザー情報を保持するにはフローロールを付与
    フローロールは、フローの権限をシンプルに保つのに役立ちます。システムユーザーとしてフローを実行する代わりに、フローロールを使用してユーザー情報を保持し、データへのアクセスを許可します。フローロールを追加すると、ユーザーが開始したフローに通常含まれない追加のデータにアクセスすることもできます。付与されたロールはフローにのみ適用されます。フローを開始したユーザーには適用されません。
    フローのタイミングを制御するにはフローロジックまたはスケジュールベースのトリガーを使用
    フローロジックまたはスケジュールベースのトリガーは、フローのパフォーマンスを最適化するのに役立ちます。フロー内で待機するために、gs.sleep() メソッドを使用しないでください。gs.sleep() メソッドを使用すると、スレッドで他の作業を実行できなくなります。特定の時間にフローを実行するには、スケジュールベースのトリガーを使用します。特定の期間フローを一時停止するには、[期間が終わるまで待機] または [条件待ち] フローロジックを使用します。
    依存関係を回避する
    ブランチが別のブランチからの出力を待機する必要がある場合、互いに依存する並列ブランチはフローを停止します。
    スコープループカウンター

    スクリプトループには最大反復数がないため、有効な終了条件がない場合はループが無限に実行されます。

    有効な終了条件があることを確認するには、インラインスクリプトまたはアクション内のスクリプトステップでスコープループカウンターを使用します。 for (i=0; i< length; i++)var を追加し、for (var i=0; i< length; i++) を取得します。

    For Each および Do Until ループの反復回数を 1000 に制限
    1000 以上のループを含む反復では、メモリの問題が発生する可能性があります。
    • [レコードを検索] の最大レコード数を 1000 に設定します。
    • プロパティ sn_flow_designer.max_iterations は変更しないでください。デフォルトは 1000 です。
    • 大量のデータ処理の場合は、小さなバッチに分割することを検討してください。
    • 一括インポートの場合は、同時インポートを検討してください。
    実行を高速化するための QuickAPI の使用 (ビジネスルールの代替)
    • QuickAPI は非常に高速に実行されますが、デバッグ機能は少なくなります。
    • フォアグラウンドの QuickAPI 実行は、フローを呼び出したユーザーとしてユーザーセッションで実行されます。
    • バックグラウンドの QuickAPI 実行は、バックグラウンドスレッドで実行され、「システム」ユーザーセッションで実行されます。
    フロー自体からフローを呼び出す代わりに Do Until ループを使用する
    フロー自体を呼び出すフローは許可されず、エラーが発生します。ただし、フロー A がフロー B を呼び出している場合、フロー B はフロー A を最大 3 回呼び出すことができます。
    バックグラウンドでフローを実行する
    バックグラウンドでフローを実行すると、ユーザーにフローの実行を待機させることなく、UI スレッドが解放されます。
    大きな出力を収集した後に待機するフローロジックを回避する
    大きなペイロードを取得した直後に使用すると、メモリの問題を防ぐことができます。
    環境間の切り替えを最小限に抑える
    フロー内のインスタンスと MID サーバーのステップ間で切り替えを頻繁に行うと、処理が遅れる可能性があります。遅延のリスクを最小限に抑えるには、インスタンスと MID の切り替えを 1 回のみに制限します。
    フローによって生成された sys_complex_object レコードを更新セットに含める
    複雑なデータスキーマが見つからないと、実行の問題が発生する可能性があります。フローによって生成された sys_complex_object レコードを更新セットに含めたことを確認してください。
    スクリプトからフローを呼び出す
    スクリプトから呼び出してカスタムトリガーでフローを開始します。
    古いリリースのインスタンスに新しいリリースのフローを展開することは避けてください
    ワークフロースタジオ では、以前のリリースで実行されているインスタンスへの新しいリリースフローの展開はサポートされていません。
    危険:
    フローデータモデルはリリース間で変更される可能性があるため、新しいフローが実行されなかったり、以前のリリースのインスタンスで実行したときに予期しない結果が生じたりする可能性があります。展開する前に、同じリリースバージョンになるようにインスタンスをアップグレードしてください。
    本番環境でフローレポートをオフにする
    フローレポートを無効にして、フローの実行に必要なメモリ量を最小限に抑えます。フローレポートには、[実行の詳細] ページの構成とランタイム情報が保存されます。これらのレポートはトラブルシューティングに役立ちますが、メモリとデータベースの両方に大量のデータを保持する必要があります。デフォルトでは、フローレポートは無効になっており、フローまたはアクションを手動でテストする場合にのみ実行の詳細が生成されます。代わりに、レポートをオフにしているときも使用できるログファイルを使用できます。
    ネストされたループを使用してフローで消費するメモリ量を削減する
    レポートが有効になっている場合は、com.snc.process_flow.reporting.iteration.lastn を値「1」に設定して、前のループ反復で消費されるメモリ量を減らします。レポートする反復が多いほど、より多くのメモリが必要になります。