WELクイックスタート
WEL(Workato Expression Language)はWorkatoの変換言語です。これは、インストールも接続も不要で、レシピの他の部分と並行してWorkatoのデータプレーンで実行されます。
このページでは、1つの例を使用して、WELを扱う3つの方法を紹介します。
- レシピ内: Workato Expression Languageコネクターでレシピデータピルを作成して、すばやく開始します。
- AIクライアントを使用: 外部AIクライアントでWELを作成します。
- バイナリを使用: レシピを実行せずに、式への変更をすばやくテストします。
機能の提供状況
WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。
例
webhookが注文を配信します。宛先システムでは、正規化された名前とメール、カレンダー日付、正確な合計を含むフラットなレコードが必要です。
入力
{
"order_id": "so-1001",
"placed_at": "2026-03-15T09:30:00Z",
"customer": {
"first_name": "kalani",
"last_name": "park",
"email": " KALANI@Example.COM "
},
"line_items": [
{"sku": "WID-1", "qty": 3, "unit_price": "12.50"},
{"sku": "GAD-7", "qty": 1, "unit_price": "99.00"}
]
}Formula
{
order_id: upper(_.order_id),
customer_name: f"{capitalize(_.customer.first_name)} {capitalize(_.customer.last_name)}",
email: lower(trim(_.customer.email)),
order_date: PlainDate(DateTime(_.placed_at)),
item_count: count(_.line_items),
total: _.line_items >> map_by(li ~> Decimal(li.unit_price) * li.qty) >> sum
}この例では、次のコンポーネントを使用します。
_は入力変数で、前のペイロードを含みます。_.order_idは、そこからorder_idフィールドを読み取ります。詳細については、入力変数を参照してください。>>は値を関数にパイプするため、合計は左から右へ読み取られます。このパイプラインはラインアイテムを取得し、それぞれを価格に変換して合計します。Decimal(li.unit_price)は金額を正確に保持します。合計は136.5ではなく、136.50です。Decimalは表示形式ではなく正確な型であるため、スケールが保持されます。PlainDate(...)はタイムゾーンのないカレンダー日付を生成するため、宛先に到達する途中で日付が1日ずれることはありません。
出力
{
"order_id": "SO-1001",
"customer_name": "Kalani Park",
"email": "kalani@example.com",
"order_date": "2026-03-15",
"item_count": 2,
"total": 136.50
}レシピで開始
レシピは、WELを扱う最も一般的な方法です。このコネクターにはコネクションの設定は必要ありません。レシピを作成するか既存のレシピを開き、次の手順を完了して前述の例を実行します。
WELを扱う予定のレシピを開きます。
+ Add stepをクリックし、Action in appを選択します。
Add step > Add action in appをクリック
Workato Expression Languageコネクターを検索して選択します。 Transform data (code)アクションが自動的に読み込まれます。
NameフィールドにWEL式の名前を入力します。このラベルはレシピエディターにのみ表示されます。
Input fieldsセクションに移動し、generate from JSON sampleをクリックします。
次のサンプルJSONを貼り付けます。
{
"order_id": "so-1001",
"placed_at": "2026-03-15T09:30:00Z",
"customer": {
"first_name": "kalani",
"last_name": "park",
"email": " KALANI@Example.COM "
},
"line_items": [
{"sku": "WID-1", "qty": 3, "unit_price": "12.50"},
{"sku": "GAD-7", "qty": 1, "unit_price": "99.00"}
]
}必要に応じてSet all fields as requiredを選択し、検出されたすべてのフィールドを必須としてマークします。その後、個別のフィールド要件を調整できます。
Nextをクリックして、フィールドリストを自動的に生成します。
推論されたフィールド型を確認し、デザイナーが誤って判断したものを修正します。
スキーマ推論を確認
スキーマ推論はサンプルを読み取るため、サンプルに示されている内容のみを確認できます。次のケースを必ず確認してください。
- 数値精度: サンプルの
12.50は、Decimalではなく浮動小数点数として推論されます。フィールドが通貨金額の場合は、自分で型を設定します。 - 日付と日時: サンプルの
2026-03-15T09:30:00Zは、時間型ではなくプレーン文字列として推論されます。
完全なフィールドリストと推論の詳細については、Transform dataアクションを参照してください。
スキーマを生成をクリックします。スキーマに基づいて新しい入力フィールドが使用可能になります。
以前のステップからのデータピルや静的値などのデータを、新しいフィールドにマッピングします。
Output schemaセクションに移動し、Use JSONをクリックします。このセクションでは、式が生成するデータピルを設定します。出力スキーマに含まれていないフィールドは、式の最終値に関係なく、下流には表示されません。
次のサンプル出力JSONを貼り付けます。
{
"order_id": "SO-1001",
"customer_name": "Kalani Park",
"email": "kalani@example.com",
"order_date": "2026-03-15",
"item_count": 2,
"total": 136.50
}必要に応じてSet all fields as requiredを選択し、検出されたすべてのフィールドを必須としてマークします。その後、個別のフィールド要件を調整できます。
Nextをクリックして、フィールドリストを自動的に生成します。
入力フィールドのステップと同じチェックを使用して、推論されたフィールド型を確認し、デザイナーが誤って判断したものを修正します。
スキーマを生成をクリックします。出力スキーマで定義されたorder_id、customer_name、email、order_date、item_count、およびtotalデータピルは、下流のレシピステップで使用可能になりますが、WELのCodeを定義するまでは値が割り当てられません。
入力値に対して実行する変換を定義して出力データピルを作成するには、次の式をCodeフィールドに貼り付けます。
{
order_id: upper(_.order_id),
customer_name: f"{capitalize(_.customer.first_name)} {capitalize(_.customer.last_name)}",
email: lower(trim(_.customer.email)),
order_date: PlainDate(DateTime(_.placed_at)),
item_count: count(_.line_items),
total: _.line_items >> map_by(li ~> Decimal(li.unit_price) * li.qty) >> sum
}外部AIクライアントで開始
WELを知らない外部AIクライアントは、通常、別の言語のラムダ構文を流用して、もっともらしく見えるが実行できないものを作成します。 WELではラムダに~>を使用し、->または=>は解析エラーになります。
WELキットは、AIクライアントに言語リファレンスとプラットフォームバイナリを提供することで、この問題を解決します。これにより、AIは生成されたコードを実際のエンジンに対して確認し、確実に機能する式を作成できます。
配布物についてのお知らせ
WELキットおよびwelバイナリの配布物は、ここでは公開されていません。現在のビルドまたはお使いのプラットフォーム向けの場所については、カスタマーサクセス担当者にお問い合わせください。
WELキットを備えたAIクライアントは、自然言語の説明から変換を作成できます。サンプルペイロードと宛先で必要な内容を含めます。エンジンに対して式を検証し、アクションに直接貼り付けられるサンプル出力とFormulaを返すよう依頼します。
AIコードを検証
AIが生成したコードは、必ず自分で読んでください。出力が宛先で期待される内容と一致することを確認することで、生成されたコードをすばやくチェックできます。
バイナリで開始
レシピの実行で式をテストするには数分かかります。代わりにwelバイナリはエンジンをローカルで実行し、1秒未満で結果を返します。これは、式をまだ作成している段階で迅速に反復するための、より優れたワークフローです。
配布物についてのお知らせ
WELキットおよびwelバイナリの配布物は、ここでは公開されていません。現在のビルドまたはお使いのプラットフォーム向けの場所については、カスタマーサクセス担当者にお問い合わせください。
提供された例でwelバイナリを操作するには、次の手順を完了します。
次のファイルをローカルに保存します。
式
次の式をorder.welとして保存します。
{
order_id: upper(_.order_id),
customer_name: f"{capitalize(_.customer.first_name)} {capitalize(_.customer.last_name)}",
email: lower(trim(_.customer.email)),
order_date: PlainDate(DateTime(_.placed_at)),
item_count: count(_.line_items),
total: _.line_items >> map_by(li ~> Decimal(li.unit_price) * li.qty) >> sum
}サンプル入力
次のサンプル入力をorder.jsonとして保存します。
{
"order_id": "so-1001",
"placed_at": "2026-03-15T09:30:00Z",
"customer": {
"first_name": "kalani",
"last_name": "park",
"email": " KALANI@Example.COM "
},
"line_items": [
{"sku": "WID-1", "qty": 3, "unit_price": "12.50"},
{"sku": "GAD-7", "qty": 1, "unit_price": "99.00"}
]
}次のコマンドを実行します。
wel eval -f order.wel -I order.json式は次を出力します。
{order_id: "SO-1001", customer_name: "Kalani Park", email: "kalani@example.com", order_date: 2026-03-15, item_count: 2, total: 136.50}式が宛先で期待される出力を生成するまで、order.json入力ファイルまたはorder.wel式ファイルを編集してコマンドを再実行し、反復します。 WELエンジンはバイナリ内でもレシピ内でも同じように動作するため、ここで機能する式はそちらでも機能します。
便利なフラグ
welバイナリは、テストと検証用の追加フラグを受け入れます。
| フラグ | 目的 | 例 |
|---|---|---|
--now | now()を特定の瞬間に固定するため、結果を再現できます。 | wel eval 'now()' --now '2026-03-15T09:30:00Z' |
validate | 式を実行せずに、解析できることを確認します。 | wel validate -f order.wel |
welバイナリには、この2つ以外にもフラグとサブコマンドがありますが、これらは式をテストするレシピビルダーではなく、WELエンジンを埋め込むホストアプリケーションを構築する開発者を対象としています。
次のステップ
- Transform data: WELコネクターインテグレーションと、スキーマ推論では検出されない内容。
- 標準ライブラリ: すべてのWEL関数に関する情報。
- データ型: 前述の例で
DecimalとPlainDateが適切な選択だった理由。 - Cookbook: 一般的な連携の問題の例。
- エラーコード: ジョブ失敗のトラブルシューティング。
最終更新日: