このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
JavaScript スクリプトノードは、ユーザーがワークフロー内でカスタムのサーバーサイドJavaScriptスクリプトを実行できるようにします。スクリプトでは、ワークフローの上流にある変数をパラメーターとして使用でき、その戻り値は下流のノードで利用できます。
スクリプトはNocoBaseアプリケーションのサーバーサイドでワーカースレッドとして実行され、Node.jsのほとんどの機能をサポートしていますが、ネイティブな実行環境とはいくつかの違いがあります。詳細は機能リストをご覧ください。
ワークフロー設定画面で、フロー内のプラス(「+」)ボタンをクリックし、「JavaScript」ノードを追加します。


スクリプト内のコードロジックで使用するため、ワークフローのコンテキスト変数や静的な値をスクリプトに渡す際に使用します。name はパラメーター名で、スクリプトに渡されると変数名として扱われます。value はパラメーター値で、変数を選択するか定数を入力できます。
スクリプトの内容は関数と見なすことができ、Node.js環境でサポートされている任意のJavaScriptコードを記述できます。return文を使用して、ノードの実行結果として値を返し、後続のノードで変数として使用することも可能です。
コードを記述した後、エディターの下にあるテストボタンをクリックすると、テスト実行ダイアログが開きます。ここで静的な値をパラメーターとして入力し、シミュレーション実行を行えます。実行後、ダイアログで戻り値と出力(ログ)の内容を確認できます。

単位はミリ秒です。0 に設定すると、タイムアウトは設定されません。
チェックを入れると、スクリプトがエラーになったり、タイムアウトエラーが発生したりした場合でも、後続のノードが実行されます。
スクリプトでエラーが発生した場合、戻り値はありません。ノードの結果にはエラーメッセージが格納されます。後続のノードでスクリプトノードの結果変数が使用される場合は、慎重に処理する必要があります。
メインアプリケーションが実行しているNode.jsのバージョンと同じです。
スクリプトでは、CommonJSと同様に、require()ディレクティブを使用してモジュールをインポートし、制限付きでモジュールを使用できます。
Node.jsのネイティブモジュール、およびnode_modulesにインストールされているモジュール(NocoBaseがすでに使用している依存パッケージを含む)をサポートしています。コードで使用可能にするモジュールは、アプリケーションの環境変数WORKFLOW_SCRIPT_MODULESで宣言する必要があります。複数のパッケージ名は半角カンマで区切ります。例:
環境変数WORKFLOW_SCRIPT_MODULESで宣言されていないモジュールは、Node.jsネイティブのものであっても、node_modulesにインストール済みであっても、スクリプト内で使用できません。このポリシーは、運用レベルでユーザーが使用できるモジュールリストを管理するために利用でき、特定のシナリオでスクリプトの権限が過剰になるのを防ぎます。
ソースコード以外の環境でデプロイされている場合、node_modulesに特定のモジュールがインストールされていないときは、必要なパッケージをstorageディレクトリに手動でインストールできます。例えば、exceljsパッケージを使用する必要がある場合は、以下の操作を実行します。
その後、アプリケーションのCWD(現在の作業ディレクトリ)を基準とした相対パス(または絶対パス)で、そのパッケージを環境変数WORKFLOW_SCRIPT_MODULESに追加します。
これで、スクリプト内でexceljsパッケージを使用できます。
global、process、__dirname、__filenameなどのグローバル変数はサポートしていません。
ノードで設定されたパラメーターは、スクリプト内でグローバル変数として直接使用できます。スクリプトに渡されるパラメーターは、boolean、number、string、object、配列などの基本型のみをサポートしています。Dateオブジェクトが渡されると、ISO形式の文字列に変換されます。カスタムクラスのインスタンスなど、その他の複雑な型は直接渡すことはできません。
return文を使用すると、基本型のデータ(パラメーターと同じルール)をノードの結果として返すことができます。コード内でreturn文が呼び出されない場合、ノードの実行は戻り値を持ちません。
consoleを使用したログ出力をサポートしています。
ワークフローの実行時、スクリプトノードの出力も対応するワークフローのログファイルに記録されます。
asyncを使用した非同期関数の定義、およびawaitを使用した非同期関数の呼び出しをサポートしています。Promiseグローバルオブジェクトの使用をサポートしています。
setTimeout、setInterval、setImmediateなどのメソッドを使用する場合は、Node.jsのtimersパッケージを介してインポートする必要があります。