ワークフロー管理

前提条件

このページを読む前に、AI ビルダー クイックスタートに従って NocoBase CLI のインストールと初期化が完了していることを確認してください。

概要

ワークフロー管理 Skill は、NocoBase のワークフローの作成、編集、有効化、診断を行うためのツールです。トリガーの選択からノードチェーンの構築、実行結果のトラブルシューティングまで、ワークフローのライフサイクル全体をカバーします。

対応機能

できること:

  • ワークフローの作成:トリガータイプの選択、処理ノードの逐次追加
  • ワークフローの編集:トリガー設定の変更、ノードの追加・削除・変更、ノードの移動とコピー
  • バージョン管理:実行済みのバージョンでは自動的に新しいリビジョンが作成され、履歴に影響しません
  • ワークフローの有効化と手動実行
  • 失敗した実行の診断:失敗ノードとエラー情報の特定

できないこと:

  • データモデルの設計はできません(データモデリング Skill を使用してください)
  • MCP のインストールや環境問題の処理はできません(環境管理 Skill を使用してください)
  • ワークフロー全体の削除はできません(個別確認が必要な高リスク操作です)
  • ノードタイプやトリガータイプの捏造はできません

プロンプト例

シナリオ A:新しいワークフローの作成

注文作成後に商品在庫を自動的に減らすワークフローを構築してください

Skill がまずトリガータイプとノードチェーンの設計を確認し、確認後に段階的に作成します。

20260419234303

シナリオ B:既存ワークフローの編集

注文作成のワークフローに、在庫不足時の通知ノードを追加してください。管理者にアプリ内メッセージを送信します

現在のバージョンが実行済みの場合、まず新しいリビジョンが作成されてから編集されるため、過去の実行記録には影響しません。

20260419234419

シナリオ C:実行失敗の診断

注文作成後に在庫を減らすワークフローの直近の実行が失敗しました。どこに問題があるか確認してください

直近の失敗した実行を特定し、失敗ノードとエラー情報を見つけて、修正の提案を行います。

20260419234532

シナリオ D:ワークフローロジックの分析・要約

「注文作成で商品在庫を減らす」ワークフローの処理ロジックを分析してください

出力:

# ワークフロー分析:注文作成で商品在庫を減らす

## ワークフロー概要
**ワークフロー名:** 注文作成で商品在庫を減らす

### トリガー
- **タイプ:** アクション後イベント (Action)
- **トリガー条件:** `orders`(注文)コレクションで「作成」操作が実行された時にトリガー(グローバルトリガー)。
- **関連データ:** トリガー時に `details`(注文明細)の関連データを取得。
- **実行モード:** 非同期

---

### ノード実行チェーン

**[トリガー] 注文作成**


**[1] 注文明細をループ (Loop)**
    * **対象:** `{{$context.data.details}}`
    * *操作:各明細項目に対して以下のステップを実行:*


    **branchIndex=0 (ループ本体)**


    **[2] 商品在庫を照会 (Query)**
    * **コレクション:** `products`
    * **フィルター条件:** `id = {{$scopes.5u6lsjzf8vh.item.productId}}`


    **[3] 在庫が十分か確認 (Condition)**
    * **エンジン:** `formula.js`
    * **式:** `{{$jobsMapByNodeKey.n6rf8lf2lum.inventory}} < {{$scopes.5u6lsjzf8vh.item.quantity}}`

        ├── **YES (branchIndex=1, 在庫不足, 条件が TRUE):**
        │   ▼
**[4] スーパー管理者に通知 (Notification)**
*root ロールのユーザーに通知を送信、内容:*
*商品名、商品 ID、現在の在庫数、注文の必要数量。*

        └── **NO (branchIndex=0, 在庫十分, 空ブランチ)**


    **[5] 在庫を減らす (SQL)**
    * **SQL 文:** `UPDATE products SET inventory = inventory - :quantity`

---

### 重要なロジックの説明

| ステージ | 説明 |
| :--- | :--- |
| **トリガー** | 注文作成時に、完全な注文明細リストを持ってワークフローに入ります。 |
| **ループ** | 明細行ごとに処理し、各行は 1 つの商品とその購入数量に対応します。 |
| **照会** | `productId` でその商品の現在の在庫を取得します。 |
| **判定** | `inventory < quantity` が真か(つまり在庫不足か)を判定します。 |
| **通知** | 在庫不足の場合、`root` ロールを持つユーザーにアプリ内メッセージを送信します。 |
| **在庫減少** | SQL で直接在庫を更新します。ブランチが合流するため、在庫の十分/不足に関わらず在庫減少が実行されます。 |

---

### ⚠️ 潜在的な設計上の問題

条件ノードの `downstreamId` が「在庫を減らす」ノードを指しています。これは、どちらのブランチ(在庫十分または在庫不足)を通っても、最終的に在庫減少操作が合流して実行されることを意味します。実際の動作は以下の通りです:

- **在庫十分** $\rightarrow$ 在庫を直接減らす(正常フロー)。 ✓
- **在庫不足** $\rightarrow$ まず管理者に通知し、**その後も在庫減少を実行**(在庫がマイナスになる可能性があります)。

**分析:** この設計は「超過販売を許可して警告を発する」パターンに該当しますが、ロジック上の見落とし(本来は在庫不足時に在庫減少を阻止すべき)の可能性もあります。ビジネス担当者との設計意図の確認が必要です。

---

### 現在のステータス

- **有効化状態:** `false`(無効)
- **実行記録:** 1 回実行済み。
- **バージョン管理:** 現在のバージョンは凍結状態であり、変更するには新しいバージョンを作成する必要があります。

よくある質問

ワークフローを作成したのにトリガーされないのはなぜですか?

新しく作成されたワークフローはデフォルトで無効状態(enabled: false)です。トリガー設定が正しいことを確認してから、手動で有効化する必要があります。

ワークフローを変更した後、過去の実行記録に影響はありますか?

ありません。現在のバージョンに実行記録がある場合、Skill は自動的に新しいリビジョン(revision)を作成します。過去の実行記録は旧バージョンに紐付けられているため、影響を受けません。

関連リンク