サブフローのビルド
ワークフロースタジオ は、サブフローの作成に使用されるデフォルトの Now Platform プロセス自動化ビルダーです。ワークフロースタジオ は、ワークフロー エディターに代わるものです。
フローとは異なり、サブフローにはトリガーがありません。次の場合にサブフローを使用します。
- 別のフローまたはスクリプトから呼び出してフローのみを開始する場合。
- 複数のフローで使用する一連の再利用可能な操作を作成する場合。
- サブフローが開始されたときにサブフローで使用できる入力を指定する場合。
- サブフローが終了した後に親フローで使用できる出力を指定する場合。
すべてのサブフローは、「プロパティ」、1 つ以上の「入力」、1 つ以上の「出力」、一連のアクションとフローロジック、および、収集または作成されたデータで構成されています。
サブフローのプロパティ
サブフローのプロパティでは、サブフロー名、アプリケーション、カテゴリ、説明、インフロー注釈、ロール、およびステータスを指定します。フロー設計者はいつでも、サブフロー名、カテゴリ、説明、インフロー注釈、およびロールを更新できますが、アプリケーションの設定はサブフローの作成中にのみ行えます。サブフローのステータスは、サブフローを保存または公開するときに設定されます。
サブフローの入力
サブフローの入力では、開始時にサブフローで使用できるデータを指定します。 サブフローのために定義した各入力は、ワークフロースタジオ インターフェイスの構成オプションになります。フローでサブフローを使用するには、各必須入力の値を定義する必要があります。サブフローの入力が多いほど、定義する必要があるデータが多くなり、サブフローを効果的に使用するために基礎となるデータモデルに精通する必要があります。
入力は、データ型に基づいて詳細なオプションを提供します。すべての入力には、ヒントを追加する、またはデフォルト値を指定するための詳細なオプションがあります。詳細なオプションを使用すると、フローにサブフローを追加して設定することで、フローデザイナーを誘導できます。たとえば、選択肢の入力を作成して、フローデザイナーに事前に定義された構成オプションのリストから選択させることができます。特定のデータ型で利用可能な構成オプションの詳細については、「フィールドタイプ」を参照してください。
サブフローの出力
サブフローの出力では、サブフローが完了した後に親フローで使用できるデータを指定します。サブフロー出力は、名前とデータ型を持つ変数として定義されます。サブフローデザイナーは、[サブフロー出力の割り当て] フローロジックを使用して出力に値を割り当てます。出力値は、サブフローのロジック条件、アクション結果、または手動で設定された値に基づくことができます。たとえば、ある条件が満たされたときに出力に 1 つの値が含まれ、条件が満たされないときには出力に別の値が含まれることがあります。実行時に満たされた条件によって出力の値が決まります。
次の 2 つの条件を持つサブフローの例を考えてみましょう。どちらの結果も単一の出力変数の値になります。変数の値は、実行時に満たされる条件に依存します。
- 出力
- [マネージャー ID] [文字列]
- アクション
- 1 ルックアップ [ユーザー] レコード 場所 (作成日が本日)
- 2 ([1->ユーザーレコード->タイトル] にマネージャーが含まれている) 場合は、サブフロー出力 [マネージャー ID] を [1->ユーザーレコード->ユーザー ID] に割り当て
- 3 それ以外の場合は、サブフロー出力 [マネージャー ID] を [1->ユーザー レコード->マネージャー->ユーザー ID] に割り当て
この場合、ユーザーのタイトルに「マネージャー」が含まれていれば、ユーザー ID が出力として割り当てられます。それ以外の場合は、サブフローによってユーザーのマネージャーが検索され、マネージャーのユーザー ID が出力として割り当てられます。
ワークフロースタジオ では、同じ変数の値を複数回定義することができます。ただし、条件付きロジックがない状態で変数に 2 つ以上の値が与えられた場合は、サブフローで定義された最後の値のみが実行時に出力に適用されます。
- 出力
[マネージャー ID] [文字列]。
- アクション
- 1 ルックアップ [ユーザー] レコード 場所 (作成日が本日)
- 2 サブフロー出力を割り当て [マネージャー ID] 宛先 [1->ユーザーレコード->ユーザー ID]
- 3 サブフロー出力を割り当て [マネージャー ID] 宛先 [1->ユーザーレコード>マネージャー->ユーザー ID]
この例では、アクション 3 によってアクション 2 の値が上書きされ、実行時に [1->ユーザーレコード>マネージャー->ユーザー ID] が最後に定義された値であるため、この値が [マネージャー ID] 出力に適用されます。通常、条件付きフロー ロジックを使用する場合、サブフローでは 1 つの変数に複数の値のみ含める必要があります。
サブフロー実行の詳細
プロセスアナリストは、複数の場所からサブフロー実行の詳細を表示できます。
- 親フロー実行の詳細
- ワークフロースタジオ により、親フロー実行の詳細にサブフロー実行の詳細が表示されます。親フロー実行の詳細には、各サブフローがインライン要素としてリストされます。サブフローのステップを展開すると、その実行の詳細を表示できます。
- サブフロー実行の詳細
- サブフローが実行されるたびにフロー実行の詳細が生成されます。フロー実行のリストからサブフロー実行の詳細を直接表示します。
アクション
フロー設計者は、[アクション] の中にアクション、フローロジック、フロー、または他のサブフローを追加できます。
「アクション」は、コードを書かなくてもプロセスアナリストが Now Platform 機能を自動化できるようにする再利用可能な操作です。たとえば、[レコードを作成] アクションによって、プロセスアナリストは、特定の条件が発生したときに特定の値を持つ特定のテーブルにレコードを生成することができます。[レコードを作成] のような ServiceNow コアアクションでは、Now Platform テーブルとフィールドに精通している必要があります。アクションデザイナーは、アプリケーション固有のアクションを作成して、構成の詳細をあらかじめ設定することができます。たとえば、[インシデントタスクを作成] アクションを作成すると、アクションが使用されるたびにプロセスアナリストが正しいテーブルとフィールドの構成を使用するようになります。関連するスポークを有効化することによって、アプリケーション固有のアクションを追加できます。
フローロジック
サブフローに「フローロジック」を含めて、条件付きアクションまたは反復アクションを指定したり、出力変数をサブフローデータに割り当てたりすることができます。フローロジックでは次のオプションが提供されています。
| フローロジック | 説明 |
|---|---|
| For Each | レコードリスト内の各レコードにアクションを適用します。フロー設計者は、サブフローデータからレコードリストを指定する必要があります。 注: 一連のレコードに対してアクションを繰り返すために、For Each フローロジックブロックを別のフローブロックの中にネストできます。ただし、多数のレコードを処理する For Each ループがネストされないようにしてください。ループがネストされた場合は、フローが 1 時間より長く実行されないようにするフロートランザクションクォータのルールによって停止するまでフローが実行されることがあります。トランザクション割り当ての詳細については、「トランザクション割り当て」を参照してください。 |
| 条件 | 条件のリストが満たされたときにアクションを適用します。フロー設計者は、サブフローデータを使用して条件を指定できます。If 条件を追加したら、Else または Else If のフローロジックオプションを追加して、条件が満たされない場合の動作を定義できます。 |
| サブフロー出力のアサイン | サブフローデータに出力変数を割り当てます。[入力および出力] で定義された出力のみに値を割り当てることができます。出力を割り当てると、サブフロー内の各論理パスに異なる出力変数を割り当てることができます。 |
その他のアクション
[その他のアクション] () ボタンをクリックし、サブフローのその他のオプションにアクセスします。
- コピーアクション
- 指定アプリケーションでオープンサブフローのコピーを作成します。
- 構成管理
- [ドラフトアクションを表示]、[トリガーフローを表示]、[ストアスポークを表示]、および [インラインスクリプトの切り替えを表示] オプションを有効または無効にします。
- コードスニペット
- アクションのコードスニペットを生成します。
- セキュリティを管理します。
- [クライアント API によるコール可能 (Callable by Client API)] オプションを有効または無効にします。
- 自然言語タイトルの管理
- スタイル付きまたは動的なテキストを使用してサブフローのタイトルを作成または編集します。詳細については、「自然言語タイトルの管理 (Manage natural language titles)」を参照してください。
サブフローのテスト
サブフロー単独の場合、またはフローに追加した場合にテストできます。サブフローのみをテストする場合は、サブフローがそのアクションで使用する入力を定義する必要があります。サブフローにはトリガーがないため、サブフローをテストすると、定義された入力値を使用してアクションが実行されます。
ロール
サブフローにアクセスするユーザーには、flow_designer ロールまたは admin ロールが必要です。
一般的なガイドライン
フローに適用される一般的なガイドラインはサブフローにも適用されます。
フローの代わりにサブフローを使用する理由は次のとおりです。
- フローにトリガーまたは変数の入力が必要かどうかを判断する
- フローは、トリガー条件が満たされたときに常に実行されます。トリガーは常にフローの入力として同じデータを提供します。フローを開始するために代わりに変数の入力が必要な場合は、サブフローを作成します。
- ビジネスロジックを再利用する
- 一連の再利用可能な操作をサブフローとして作成し、それを複数のフローで使用できます。
- 呼び出しごとに異なる入力値を設定する
- サブフローを呼び出すたびにサブフローの入力値の設定を変えます。たとえば、さまざまなレコードタイプを実行の入力として受け入れるようにサブフローを設計します。レコードタイプごとに特定のフローを書き込む代わりに、この汎用レコードサブフローを再利用します。
- 大規模なフローのパフォーマンスと読みやすさを向上させる
-
フローが 25 アクションを超える場合は、サブフローを使用します。sn_flow_designer.max_actions システムのプロパティで指定されているアクションの最大数は 50 ですが、最高のパフォーマンスを得るにはフローを 25 アクションに制限します。
- サブフローの入力を 20 件に制限する
- サブフローの入力数が多いほど、サブフローを開いて実行するためのリソースが多く必要になります。20 件を超える入力を処理すると、サブフローのオープンと実行が遅くなる可能性があります。
- 入力と出力をサブフローで渡す
- 入力と出力を渡す場合は、サブフローを呼び出します。開始時にサブフローで使用できる入力を指定する場合、またはサブフローの終了後に親フローで使用できる出力を指定する場合は、サブフローを使用します。
- 単一のイベントで複数のフローをトリガーする場合と並列サブフローを使用する場合の比較
-
- 相互に関連する出力があるか、すべてが利用可能な場合に何らかのアクションを実行する必要がある場合は並列サブフローを使用します。そうでない場合は、複数のフローをトリガーする方が簡単です。
- 並列サブフローを設定するには、待機なしで各サブフローを起動し、[ 条件待ち] を使用して各サブフローが終了する (完了、エラー、キャンセル) まで待機します。
- 類似の機能を持つサブフローが複数ある場合は動的フローを使用する
- 動的フローでは、テンプレートを適用して複数の類似したサブフローの入力を処理することで、プロセスを区分化できます。区分化により、統合ハブ スポークのサブフローなど、類似の機能を実行するサブフローを区別できます。
- エラー処理プロセスで 10 個のアイテムの制限を回避する
- エラー処理プロセスを強制的に 10 個のアイテム制限内に収まるようにするのではなく、さらに多くのアイテムを含めることができるサブフローを呼び出します。サブフロー出力を使用して、他のフローの自動化をトリガーすることもできます。
- 是正処置を実行する
- 複数のフローで同じ一連のアクションを再作成するのではなく、再利用可能なサブフローを作成して、レコードデータのエラーを修正します。フローエラーによってレコードデータが望ましくない状態になった場合は、サブフローを使用してこれらのレコードを修正します。エラーハンドラーを使用して、そのようなレコードデータをサブフロー出力として特定することができます。