---
url: https://docs.ogmabox.com/ja/app/workflows.md
description: パッシブ処理、アクティブな操作、データ変換に使える、再利用可能な Ogma ワークフローを作成します。
---

# ワークフロー {#workflows}

ワークフローは、キャプチャーした通信の処理、アクティブなステップの実行、データ変換を行う、再利用可能な自動化パイプラインです。独立したスクリプトを書く必要はありません。

## ワークフローの種類 {#workflow-types}

| 種類 | 起動するきっかけ | 主な用途 |
|------|-------------|------------|
| パッシブ | 新しくキャプチャーされた通信 | 注目すべきパターンに印を付ける、リクエストにタグを付ける、指摘事項を自動作成する。 |
| アクティブ | 手動実行 | 追加のリクエストを送る、操作を連鎖させる、複数ステップのテストを実行する。 |
| 変換 | テスト入力、変換操作、または照合・置換 | JavaScript の整形や JSON の正規化など、テキストやバイト列を変換する。 |

パッシブワークフローはバックグラウンドで継続的に実行されます。アクティブワークフローは、選択したリクエストの集合に対して必要に応じて実行されます。

## ワークフローのキャンバス {#the-workflow-canvas}

**ワークフロー**を開き、ワークフローを選択してキャンバスを開きます。

* ノードは中央のパネルに表示されます。各ノードには型付きの入力ポートと出力ポートがあります。
* 出力ポートから入力ポートへクリックしてドラッグすると、接続できます。
* ノードをクリックすると、右側に設定パネルが開きます。
* 上部のツールバーには、実行、有効化/無効化、インポート/エクスポートのコントロールがあります。

## ノードの種類 {#node-types}

| ノード | 説明 |
|------|-------------|
| 開始 / 終了 | パッシブ、アクティブ、変換の種類に応じた入口と出口のノード。 |
| 条件 | 条件分岐、JS 条件分岐、HTTPQL 照合、診断対象範囲の照合、文字列の包含判定、正規表現による照合。 |
| エンコーディング | Base64、URL、16 進数、HTML のエンコード/デコード。 |
| 整形とハッシュ | JSON の圧縮/整形、MD5、SHA-1、SHA-256。 |
| テキスト操作 | 前後の文字を除去、結合、分割、照合・置換、JQ による変換、Grep による抽出。 |
| JavaScript | ワークフロー SDK を使用するカスタムロジック。通信の読み取り、ファイルの操作、指摘事項の作成が可能です。 |
| 連携 | ログ出力、Webhook、ワークフロー呼び出し、リクエスト送信、照合・置換ルール。 |

実際のポートと設定はノードパレットで確認してください。グラフをつなぎ直すためにノードを削除するのではなく、接続をクリックしてそのリンクを操作します。**保存**または **Ctrl+S**（macOS では Command+S）で保存します。

## 共有とスコープ {#sharing-and-scope}

ワークフローは、デフォルトで同じワークスペースのプロジェクト間で共有されます。定義をそのプロジェクト内に保持するには、**プロジェクト固有**を有効にします。定義を共有しても、各プロジェクトの通信、結果、メモが共有されるわけではありません。別のワークスペースやインストール環境へ移す場合は、ワークフローの JSON をエクスポート/インポートしてください。

## 実際の通信で使う前のテスト {#testing-before-live-use}

パッシブとアクティブのワークフローには、URL、未加工のリクエスト、未加工のレスポンスをテストデータとして指定する **HTTP テスト**セクションがあります。ワークフローを有効にし、各フィールドを入力して**ワークフローをテスト**をクリックします。テストは実行前に編集内容を保存します。別の画面に移動して戻っても、テストデータの値はワークフローごとに保持されます。

変換ワークフローには、代わりに**テスト入力**と出力があります。まず小さな代表的入力で試し、次に実際のサイズに近いリソースでテストしてください。テストデータを指定しても、任意の JavaScript やリクエスト送信ノードが無害になるわけではありません。ワークフローのコードは、設定された操作を実行できます。

### JavaScript とファイル {#javascript-and-files}

ワークフローの JavaScript は、Ogma SDK と互換性のある `fs`/`path` のインポートに対応しています。ファイル操作には `sdk.fs.readFile`、`writeFile`、`appendFile`、`exists`、`readDir`、`mkdir`、`unlink` を使用し、プラットフォームに応じたパスには `sdk.path` を使用します。これらは Ogma のヘルパーであり、Node.js の標準ライブラリー全体ではありません。

リソースのエクスポーターでは、`response.getBody().toText()` を読み取り、`sdk.path.join` で保存先を決め、その親ディレクトリを作成します。既存ファイルを上書きしたくない場合は `sdk.fs.exists` を確認してください。実行前にファイルシステムのパスを確認してください。ワークフローのファイルシステムヘルパーは Ogma のホスト上で動作し、プラグインのプライベートディレクトリを使う `sdk.fs` とは異なります。この別のランタイムについては、[プラグイン SDK](../plugins/README.md#sdk-fs)を参照してください。

## ワークフローのインポート {#importing-a-workflow}

1. ワークフローのツールバーで**インポート**をクリックします。
2. JSON ワークフローファイルを選択します。
3. ワークフローがキャンバスに開きます。有効にする前に、ノードの設定を確認してください。
4. ワークフローを保存します。

エクスポートしたワークフローの JSON ファイルは、Ogma のインストール環境間で共有したり、バージョン管理に保存したりできます。

## キャプチャー済み履歴へのワークフロー実行 {#running-a-workflow-on-captured-history}

アクティブワークフローは、以前キャプチャーしたリクエストに対して再実行できます。

1. ワークフローを開きます。
2. **履歴に対して実行**をクリックします。
3. 履歴スキャンのダイアログで、必要に応じて HTTPQL フィルターを入力し、ワークフローが処理するリクエストを限定します。
4. **実行**をクリックします。

一致する項目数を確認してジョブを開始します。進行状況とエラーはスキャンジョブに表示され、ログが有効な場合は実行履歴にも表示されます。パッシブワークフローには、過去の通信を処理する**履歴をスキャン**と**リクエストに対して再実行**があります。

少数の注目するリソースには、HTTP 履歴の行を一つ以上選択して右クリックし、**ワークフローに送る**から有効なアクティブワークフローを選択します。これにより、定義を変えたり履歴全体を処理したりせずに、選択した項目を渡せます。

履歴スキャンのフィルター入力欄の横にある **AI**ボタンは、自然言語の説明から HTTPQL 式を生成します。

## ワークフローの実行と結果 {#workflow-runs-and-results}

実行の詳細が必要な場合は、ワークフローの設定で**ログ記録を有効化**をオンにします。これはパッシブ、アクティブ、変換のワークフローに適用され、照合・置換による変換も含まれます。無効でも処理は実行されますが、実行/ステップのログは追加されません。問題を調べるには、再び有効にしてテストを繰り返してください。

* 実行をクリックすると、ノードごとのステップ出力を確認できます。
* エラーが発生したノードは強調表示されます。
* 実行中に作成された指摘事項は、[指摘事項](./findings.md)ビューに表示されます。
* 実行中に抽出された変数は、ステップの詳細パネルで確認できます。

**すべて消去**は、選択したワークフローの保存済み実行履歴を削除します。デバッグの証拠を残す必要がある場合は、消去前にログをダウンロードしてください。ログにはスクリプトのボディ全体など大きな出力が保存される場合があります。大量の変換では、必要なときを除いて無効にしておいてください。

## パッシブワークフローの有効化 {#enabling-a-passive-workflow}

1. ワークフローを開きます。
2. キャンバスの設定が完成していることを確認します（接続されていない必須ポートがないこと）。
3. ツールバーの**有効にする**を切り替えます。

有効なパッシブワークフローは、新しい通信を自動処理します。無効にすると、削除せずに一時停止できます。

## 関連ページ {#related-pages}

* [指摘事項](./findings.md)
* [環境](./environment.md)
* [HTTPQL と StreamQL](../reference/httpql.md)
