logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo
ワークフロー
概要
クイックスタート

トリガー

概要
データテーブルイベント
定期タスク
操作前イベント
操作後イベント
カスタムアクションイベント
承認
Webhook

ノード

概要

AI

LLM

フロー制御

条件
複数条件分岐
ループ
変数
並列分岐
ワークフロー呼び出し
フロー出力
JSON変数マッピング
遅延
終了

計算

計算
日付計算
JSON計算

データ操作

データ追加
データ更新
データ検索
データ削除
SQL操作

手動処理

手動処理
承認
CC

拡張タイプ

HTTPリクエスト
JavaScriptスクリプト
通知
メール送信
レスポンス
レスポンスメッセージ
変数
実行履歴
バージョン管理
詳細設定

拡張機能開発

概要
拡張トリガータイプ
拡張ノードタイプ
APIリファレンス
Previous Page概要
Next Page拡張ノードタイプ
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#トリガータイプを拡張する

すべてのワークフローには、プロセスの実行を開始するためのエントリーポイントとして、特定のトリガーを設定する必要があります。

トリガータイプは通常、特定のシステム環境イベントを表します。アプリケーションの実行ライフサイクルにおいて、購読可能なイベントを提供するあらゆる部分をトリガータイプの定義に利用できます。例えば、リクエストの受信、コレクション操作、定期的なタスクなどが挙げられます。

トリガータイプは、文字列の識別子に基づいてプラグインのトリガーテーブルに登録されます。ワークフロー****プラグインには、いくつかの組み込みトリガーがあります。

  • 'collection':コレクション操作によってトリガーされます。
  • 'schedule':定期的なタスクによってトリガーされます。
  • 'action':アクション後のイベントによってトリガーされます。

拡張するトリガータイプは、識別子が一意であることを保証する必要があります。トリガーの購読/購読解除の実装はサーバーサイドで登録し、設定インターフェースの実装はクライアントサイドで登録します。

#サーバーサイド

任意のトリガーは Trigger 基底クラスを継承し、on メソッドと off メソッドを実装する必要があります。これらはそれぞれ、特定の環境イベントを購読するためと、購読を解除するために使用されます。on メソッドでは、最終的にイベントをトリガーするために、特定のイベントコールバック関数内で this.workflow.trigger() を呼び出す必要があります。また、off メソッドでは、購読解除に関連するクリーンアップ作業を行う必要があります。

this.workflow は、Trigger 基底クラスのコンストラクターに渡されるワークフロー****プラグインのインスタンスです。

import { Trigger } from '@nocobase/plugin-workflow';

class MyTrigger extends Trigger {
  timer: NodeJS.Timeout;

  on(workflow) {
    // register event
    this.timer = setInterval(() => {
      // trigger workflow
      this.workflow.trigger(workflow, { date: new Date() });
    }, workflow.config.interval ?? 60000);
  }

  off(workflow) {
    // unregister event
    clearInterval(this.timer);
  }
}

次に、ワークフローを拡張するプラグイン内で、トリガーインスタンスをワークフローエンジンに登録します。

import WorkflowPlugin from '@nocobase/plugin-workflow';

export default class MyPlugin extends Plugin {
  load() {
    // get workflow plugin instance
    const workflowPlugin = this.app.pm.get(WorkflowPlugin) as WorkflowPlugin;

    // register trigger
    workflowPlugin.registerTrigger('interval', MyTrigger);
  }
}

サーバーが起動してロードされた後、'interval' タイプのトリガーを追加して実行できるようになります。

#クライアントサイド

クライアントサイドでは、主にトリガータイプに必要な設定項目に基づいて設定インターフェースを提供します。各トリガータイプは、対応するタイプ設定をワークフロー****プラグインに登録する必要があります。

例えば、上記の定期実行トリガーの場合、設定インターフェースのフォームで必要な間隔時間の設定項目(interval)を定義します。

import { Trigger } from '@nocobase/workflow/client';

class MyTrigger extends Trigger {
  title = 'Interval timer trigger';
  // fields of trigger config
  fieldset = {
    interval: {
      type: 'number',
      title: 'Interval',
      name: 'config.interval',
      'x-decorator': 'FormItem',
      'x-component': 'InputNumber',
      default: 60000,
    },
  };
}

その後、拡張するプラグイン内で、このトリガータイプをワークフロー****プラグインインスタンスに登録します。

import { Plugin } from '@nocobase/client';
import WorkflowPlugin from '@nocobase/plugin-workflow/client';

import MyTrigger from './MyTrigger';

export default class extends Plugin {
  // You can get and modify the app instance here
  async load() {
    const workflow = this.app.pm.get(WorkflowPlugin) as WorkflowPlugin;
    workflow.registerTrigger('interval', MyTrigger);
  }
}

これにより、ワークフローの設定インターフェースで新しいトリガータイプが表示されるようになります。

ヒント

クライアントサイドで登録するトリガータイプの識別子は、サーバーサイドのものと一致している必要があります。一致しない場合、エラーが発生します。

トリガータイプの定義に関するその他の詳細については、ワークフロー API リファレンスセクションを参照してください。