ワークフローの開始、一時停止、停止 starting-a-workflow
ワークフローは、必ず手動で開始します。開始しても、スケジューラー(スケジューラーを参照)経由で指定された情報またはアクティビティのスケジュール設定に基づいて、ワークフローが非アクティブのままになることもあります。
ターゲティングワークフロー実行に関連するアクション(起動、停止、一時停止など)は、非同期 プロセスです。注文は記録され、サーバーが適用できる状態になるとただちに有効になります。
ツールバーを使用して、ワークフローの実行を開始およびトラッキングできます。
アクション メニューおよび右クリックメニューから選択できる各オプションについては、次項で詳しく説明します。
アクションツールバー actions-toolbar
ツールバーの「アクション」ボタンを使用すると、選択したワークフローの追加の実行オプションにアクセスできます。または、ファイル/アクション メニューを選択するか、ワークフローを右クリックして「アクション」を選択することもできます。
-
開始
このアクションは、ワークフローの実行を開始します。「終了」、「編集中」、「一時停止」のワークフローのステータスが、「開始済み」に変わります。続いて、ワークフローエンジンが、ワークフローの実行を処理します。ワークフローが一時停止していた場合は再開します。それ以外の場合は、ワークフローが最初から開始し、初期のアクティビティが有効化されます。
開始は非同期プロセスです。リクエストは保存され、ワークフローサーバーでただちに処理されます。
-
一時停止
このアクションは、ワークフローのステータスを「一時停止」に設定します。ワークフローが再開するまでは、一切のアクティビティは有効化されません。ただし、進行中の操作は一時停止されません。
-
停止
このアクションは、現在実行中のワークフローを停止します。インスタンスのステータスは「終了」に設定されます。可能な場合、進行中の操作を中止します。インポートおよび SQL クエリはただちにキャンセルされます。
note important IMPORTANT ワークフローの停止は、非同期プロセスです。リクエストが登録されると、ワークフローサーバーは進行中の操作をキャンセルします。このため、ワークフローインスタンスの停止には時間がかかります。特に、ワークフローが複数のサーバーで実行されている場合は、各サーバーがそれぞれ進行中のタスクのキャンセルを処理する必要があるので、時間がかかります。問題を回避するには、停止操作が完了するのを待ち、同じワークフローで複数の停止リクエストを実行しないでください。 -
条件なしの停止
このオプションは、ワークフローのステータスを「終了」に変更します。通常の停止プロセスが実施数分後に失敗する場合にのみ、最終手段として使用します。条件なしの停止を使用できるのは、進行中の実際のワークフロージョブが何もないことを確認できている場合だけです。
note caution CAUTION このオプションはエキスパートユーザー向け機能として予約されています。 -
再起動
ワークフローを停止したあとに、再起動します。多くの場合、この操作をおこなうことでワークフローの再起動が高速化されます。また、停止にある程度の時間がかかるときに、再起動を自動化するのに便利です。再起動を自動化する理由は、ワークフローの停止中は「停止」コマンドを利用できないからです。
実行、停止、開始 アクション(インスタンス変数のクリアは開始アクション時に実行されます)と比較して、再起動 アクションではワークフローインスタンス変数がクリアされません。ワークフローを再起動する際、インスタンス変数は保持された値で引き続き使用できます。クリアするには、次のいずれかの操作を実行します。
-
停止 および 開始 アクションを実行。
-
ワークフロー実行の最後に以下の JavaScript コードを追加。
code language-none var wkf = xtk.workflow.load(instance.id) wkf.variables='<variables/>' wkf.save()
-
-
履歴をパージ
このアクションでは、ワークフローの履歴をパージできます。詳しくは、ログのパージを参照してください。
-
シミュレーションモードで開始
ワークフローを、リアルモードとは対照的なシミュレーションモードで開始できます。つまり、このモードを有効にした場合、データベースおよびファイルシステムに影響のないアクティビティ(クエリ、和集合、インタラクション など)だけが実行されます。影響のあるアクティビティ(「エクスポート」、「インポート」など)とそれらのアクティビティと同じ分岐にある後続のアクティビティは、実行されません。
-
保留中のタスクを今すぐ実行
このアクションでは、保留中のタスクをただちに開始できます。特定のタスクを開始するには、そのタスクのアクティビティを右クリックして、「保留中のタスクを今すぐ実行」を選択します。
-
テンプレートとして保存
このアクションは、選択したワークフローに基づいて、新しいワークフローテンプレートを作成します。作成したテンプレートを保存するフォルダーを、指定する必要があります(「フォルダー」フィールドで指定)。
ワークフロー実行のベストプラクティス workflow-execution-best-practices
以下のベストプラクティスを実装することで、インスタンスの安定性を向上させます。
-
システム全体のパフォーマンスが落ちたり、データベースにブロックが作成されたりする可能性があるので、ワークフローの実行スケジュールは 15 分以上の間隔を空けてください。
-
ワークフローが一時停止の状態のままにならないようにします 一時ワークフローを作成する際には、一時停止 の状態に留まることなく、正常に終了できるかを確認します。一時停止となった場合、一時テーブルを保持する必要があることを意味し、データベースのサイズが増大します。ワークフローが失敗した場合やシステムによって一時停止された場合にアラートを送信するには、ワークフローのプロパティで「ワークフロースーパーバイザー」を割り当てます。
ワークフローが一時停止の状態にならないようにするには:
- ワークフローを定期的に調べ、予期しないエラーが発生していないことを確認します。
- 可能な限りワークフローをシンプルにします。例えば、大きなワークフローは複数のワークフローに分割します。外部シグナル アクティビティを使用すれば、これらのワークフローの実行を他のワークフローの実行に基づいてトリガーできます。
- ワークフローでは、フローがある無効化されたアクティビティを回避します。スレッドが開いたままとなり、多数の一時テーブルが作成されて大量の領域を消費する可能性があるためです。ワークフロー内のアクティビティを「有効にしない」または「有効にするが実行しない」のステータスのままにしないでください。
-
未使用のワークフローを停止します。実行中のワークフローは、データベースへの接続を維持します。
-
無条件停止は、非常に例外的な場合にのみ利用してください。通常は、このアクションを使用しないでください。ワークフローが生成したデータベースへの接続を切断しない場合、パフォーマンスに影響が出ます。
-
同じワークフローで複数の停止リクエストを実行しません。ワークフローの停止は、非同期プロセスです。リクエストが登録されると、ワークフローサーバーは進行中の操作をキャンセルします。このため、ワークフローインスタンスの停止には時間がかかります。特に、ワークフローが複数のサーバーで実行されている場合は、各サーバーがそれぞれ進行中のタスクのキャンセルを処理する必要があるので、時間がかかります。問題を回避するには、停止操作が完了するのを待ち、ワークフローを複数回停止しないようにします。
右クリックメニュー right-click-menu
1 つまたは複数のワークフローアクティビティが選択されている場合、右クリックすることで選択したものを操作できます。
右クリックメニューでは、次のオプションを使用できます。
開く:アクティビティのプロパティを開きます。
ログを表示:選択したアクティビティのタスク実行ログを表示します。ログの表示を参照してください。
保留中のタスクを今すぐ実行:保留中のタスクをただちに開始します。
タスクからワークフローを再起動:このアクティビティ用に以前に保存しておいた結果を使用して、ワークフローを再起動します。
切り取り / コピー / 貼り付け / 削除:アクティビティを切り取り、コピー、貼り付け、削除します。
ビットマップとしてコピー:すべてのアクティビティのスクリーンショットを撮ることができます。
通常の実行 / 有効にするが実行しない / 有効にしない:これらのオプションは、「詳細設定」タブからも選択できます。詳しくは、実行を参照してください。
保存 / キャンセル:ワークフローに加えた変更を保存またはキャンセルします。