JavaScript
JavaScriptはWeb Developmentでよく使用される言語です。 Workato JavaScriptコネクターを使用すると、レシピの一部としてカスタムJavaScriptコードを記述できます。 JavaScript言語の機能を活用して、データ変換や外部サービスの呼び出しなどを実行できます。
JavaScriptランタイム
Workato JavaScriptコネクターはNode.jsバージョン20.11.0で実行されます。 Node.jsバージョン20.11.0に含まれるすべてのJavaScriptライブラリは、JavaScriptアクションで使用できます。 さらに、次のライブラリが含まれています。
制限
JavaScriptコネクターには次の制限があります。
| 説明 | 制限 | メモ |
|---|---|---|
| ライブラリ、一時メモリ、入力を含むJavaScriptコネクタアクションのメモリ制限 | 256 MB | NA |
| JavaScriptコネクタアクションの最大コードフィールドサイズ | 1 MB | NA |
| JavaScriptコネクターアクションのタイムアウト | 30秒 | NA |
| アクション内のJavaScript評価の読み取りリクエストタイムアウト | 30秒 | この制限は、次のアクションに適用されます:
|
また、ユーザー提供のライブラリはサポートされていません。
JavaScriptコネクターの使用
入力
アクションを設定する最初の手順は、アクションの入力フィールドを定義することです。 Input fieldsセクションでAdd fieldを選択し、新しいフィールドを追加します。 JavaScriptコードに渡す入力フィールドすべてについて、この手順を繰り返します。 レシピの以前のステップから、これらの入力フィールドに値をマッピングします。
入力フィールドの追加
日付入力フィールド
Date型の入力フィールドは、StringとしてJavaScriptコードに渡されます。 このような日付入力は、次のように使用することをお勧めします。
exports.main = ({when}) => {
const whenDate = new Date(when);
// use whenDate
};出力
JavaScript実行アクションを使用する場合は、呼び出されるJavaScriptの出力スキーマを定義する必要があります。 この出力スキーマは、出力データツリーの構築に使用されます。 このデータツリーを使用すると、JavaScript関数から返されたデータを後続のレシピアクションで使用できます。
出力スキーマを定義するには、サンプル応答を指定してスキーマを生成します。 スキーマは、出力のデータ型と構造を定義します。 出力スキーマを設定する方法は2つあります。
- サンプルJSONの使用
- フィールドを追加してスキーマを手動で定義
JSONの使用
スキーマ生成用のサンプルJSON
サンプルJSONを使用して出力スキーマを定義しましょう。 Use JSONボタンをクリックして、スキーマ生成ウィザードを開きます。
スキーマ生成用のサンプルJSON
JSONサンプルをウィンドウに貼り付けて、Nextをクリックします。 JSONサンプルを確認し、Generate Schemaを選択します。 これで、Output fieldsに出力データツリーが表示されます。
サンプルJSONから生成された出力データツリー
このデータツリーは、後続のアクションでJavaScriptコードからの出力を使用するために利用できます。
スキーマの手動定義
または、フィールドを手動で追加してスキーマを定義できます。 フィールドでは次のデータ型がサポートされています。
- 文字列
- 番号
- 整数
- 日付
- 時刻
- ブール値
add fields manuallyを選択してフィールドを追加します。 フィールド名を入力し、データ型と任意項目かどうかを選択してから、Add fieldをクリックします。
出力フィールドを手動で追加
JavaScriptコードから返されるフィールドの数だけ、この手順を繰り返します。
main関数
JavaScriptコネクターでは、コードをexports.main関数内に記述する必要があります。 デフォルトでは、サンプルコードスニペットがコードエディターに表示されます。
exports.main関数を含むテンプレートコード
コードはCommonJS形式に従い、main関数をエクスポートする必要があります。
次のサンプルコードは、dataを入力として受け取り、データを変換して出力を返します。
const fetch = require('node-fetch');
exports.main = ({data}) => {
const converter = new DataConverter();
return converter.convert(data);
};エラースタックトレース
"Execute JavaScript code"アクションがexports.main関数内のエラーによって失敗した場合、Workatoは関連するエラースタックトレースを表示し、コードのデバッグを支援します。
サンプルエラースタックトレース
ログ記録
Developmentとデバッグを支援するため、Workatoはconsole.logステートメントを使用した中間値のログ記録をサポートしています。 Workatoはexports.main関数内のconsole.logステートメントのみを表示することに注意してください。 各console.logステートメントは新しい行として表示されます。
exports.main関数内のconsole.logステートメントの出力
gRPCサービスの使用
gRPCはオープンソースのRPCフレームワークです。 gRPCは、クライアントおよびサーバーアプリケーションを実装するための高性能フレームワークとして使用されます。 Workato JavaScriptコネクターは、gRPCベースのサービスを使用するために利用できます。 このセクションでは、gRPCサービスを呼び出すためにJavaScriptでクライアントコードを実装する手順について説明します。 デフォルトでは、gRPCは構造化データをシリアル化するためのGoogleの成熟したオープンソースメカニズムであるProtocol Buffersを使用します。
Workatoレシピ内の一般的なgRPCサービスとJavaScriptクライアントのアーキテクチャは次のようになります。
WorkatoレシピとgRPCサービスのアーキテクチャ
gRPCサービスを呼び出す手順を説明する前に、protoファイルについて説明します。
PROTOCOL BUFFERS
Protocol Buffersを使用する最初の手順は、.protoファイルでデータ構造を定義することです。 プレーンテキストファイルに.proto拡張子を追加することで、.protoファイルを作成できます。 Protocol Buffersでは、データはメッセージに整理されます。メッセージは、フィールドと呼ばれる一連の名前と値のペアを含む論理レコードです。
使用するツール
grpc-tools、@grpc/grpc-js、google-protobuf、browserifyパッケージをインストールします。
npm i -g grpc-toolsnpm i @grpc/grpc-jsnpm i -g google-protobufnpm i -g browserifyJavaScriptコネクターのコードエディターにコピーして貼り付ける必要がある関連スタブコードを生成するには、次の手順に従います。
- 呼び出すサービスのgRPCインターフェイス定義ファイル(protoファイル)を取得します
grpc-toolsを使用して、protoファイルをJavaScriptスタブに変換します。 次の例では、contacts.protoサービス定義のgRPCスタブを生成します。
grpc_tools_node_protoc --js_out=import_style=commonjs,binary:. --grpc_out=generate_package_definition:. <your proto file.proto>browserifyを使用して、生成されたコードをパッケージ化し、最小化します
browserify . --external @grpc/grpc-js --external google-protobuf -o <your bundle name.js> --node --im -s <your client code.js>browserifyコマンド内のコマンドを、バンドル名とクライアントコードのJavaScriptファイル名に置き換えます。
- 最小化されたgRPCスタブをJavaScriptアクションコードエディターにコピーして貼り付けます
- JavaScriptコネクターでは、コードを
exports.main関数内に記述する必要があります。 デフォルトでは、サンプルコードスニペットがコードエディターに表示されます。 main関数内のJavaScriptコードで、生成されたクライアントスタブを使用します。
WORKAROUND COMPATIBILITY
この回避策は、gRPCサービスを使用するという特定のユースケースでのみ機能することが保証されています。 Browserifyと互換性のある他のライブラリでも機能するように見える場合がありますが、Workatoは文書化されたシナリオ以外での有効性を保証しません。
Last updated: