データアクション用の速度マクロ
データアクションの統合により、カスタムアクションを作成できます。これらのカスタムアクションには、Velocity テンプレート言語を使用するテンプレートによるリクエストの設定とレスポンスの設定が含まれます。これらのテンプレートは、Velocity マクロの範囲をサポートします。
- 使用する esc.jsonString JSON本体内の文字列をエスケープします。見る esc.jsonString.
- 使用する esc.url() または urlTool.optionalQueryParam() のパスまたはクエリパラメータを適切にエスケープするには requestUrlTemplate または requestTemplate 使用している場合 x-www.form-urlencoded 値。見る 文字列エスケープライブラリ.
Velocityテンプレートは、次のフィールドで有効です。
- requestUrlTemplate
- ヘッダー
- requestTemplate
- successTemplate
詳細については、 カスタムアクションを作成する, 要求の構成そして 応答構成.
注意:フォーマルとサイレント形式表記の比較
- 正式表記 : ${変数}
変数が null の場合、正式表記は変数名を出力します。
- サイレント形式表記 : $!{変数}
変数が null の場合、サイレント表記は空の文字列を出力します。
- 数学ライブラリ
- 文字列エスケープライブラリ
- エンコード。 base64
- esc jsonString
- successTemplateUtils.firstFromArray
- urlTool.optionalQueryParam
- Java 文字列メソッドマクロ
- Microsoft Dynamics マクロ
- Salesforce マクロ
数学ライブラリ
接頭辞: 数学
これらの算術マクロを使用して、基本的な算術演算を実行します。詳細については、 クラス MathTool Velocity のドキュメントで説明します。
文字列エスケープライブラリ
接頭辞: Esc キー
Velocity テンプレートで文字列をエスケープするには、EscapeTool を使用します。EscapeTool は、Java、JavaScript、HTML、XML、および SQL の出力をエスケープするメソッドを提供します。EscapeTool は、Velocity テンプレート言語の文字をエスケープするメソッドも提供します。詳細については、 クラス EscapeTool Velocity のドキュメントで説明します。
特に2つの方法が役に立ちます。
- ます。 url (): UrlTemplate の引数の値をエスケープするには、このメソッドを使用します。それ以外の場合は、スペースまたはその他の非 URL 文字を含む Url は無効です。
- . d (): URL にドル記号 ($) を含めるには、このメソッドを使用します。
次の表は、さまざまなマクロの入力と出力の例を示しています。
マクロ | 入力 | 出力 |
---|---|---|
。 java () | 彼はしませんでした’言う、 」停止!」 | 彼はしませんでした’tと言う、 \ \」やめる! \ \」 |
. html () | 」パン」 & 」バター」 | & ; quot ; パン & ; quot ;& ; アンプ ;& ; quot ; バター & ; quot ; |
. xml () | 」パン」 & 」バター」 | & ; quot ; パン & ; quot ;& ; アンプ ;& ; quot ; バター & ; quot ; |
. sql () | マクヘイル’s ネイビー | マクヘイル’’s ネイビー |
ます。 url () | こんにちはここ & ; | こんにちは + ここで + % 26 + |
・ドル | — | $ |
. ハッシュ | # | |
. バックスラッシュ | \ | |
。引用 | 」 | |
.singleQuote | ’ | |
. 感嘆符 | ! |
エンコード。 base64
Base64 は指定した文字列をエンコードします。
テンプレートの例
Encoded field is $encoding.base64(\"${first} and ${second}\")
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
最初の = = 猫 第二 = = 犬 |
エンコードされたフィールドは Y2F0IGFuZCBkb2c = |
esc jsonString
POST、PUT、および PATH 要求のための JSON ボディを作成するときは、任意の文字列をエスケープする必要があります。このマクロは、JSON エンコード規則に基づいて引用符やその他の文字をエスケープします。
テンプレートの例
$esc.jsonString(${input.json})
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
これは {埋め込みタブ} を含む文字列です。 」、{埋め込みの新しい行} とキリル文字のԂ | 」これは文字列です。 \\t, \\\」そして \\n、キリル文字のԂ」 |
successTemplateUtils.firstFromArray
このマクロは、提供された JSON 配列文字列から最初の要素を抽出し、2つのパラメータを持ちます。抽出された値の入力配列である最初のパラメーターが必要です。配列が空のときに返される応答を指定する2番目のパラメーターはオプションであり、デフォルトでは何も返しません。配列が空でない場合、2番目のパラメーターは無視されます。
の入力が firstFromArray translationMap JSONPath を通じて抽出されたデータであり、文字列のエスケープは必要ありません。以下のテンプレート例では、 Id などの translationMap エントリから来ることができます。 」Id」: 」$ idArray」に送信します。
テンプレートの例と結果
テンプレートの例 | 入力 | 解決済みテンプレート |
---|---|---|
$をクリックします。(」${ids}」)} | id = = 」[1、2、3]」 | 1 |
id = = 」[{\」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」4]」 | {\」id \ \」1 | |
id = = 」[]」 | ||
id = = 」」 | この入力はエラーになります。 | |
$をクリックします。(\」{"error" :{"code" :400000,"message" :"One of the request inputs is not valid."}}」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」{}\」)} | id = = 」[1、2、3]」 | 1 |
id = = 」[{\」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」4]」 | {\」id \ \」1 | |
id = = 」[]」 | {} | |
id = = 」」 | この入力はエラーになります。 | |
$をクリックします。(\」{"error" :{"code" :400000,"message" :"One of the request inputs is not valid."}}」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」{"error" :{"code" :400000,"message" :"One of the request inputs is not valid."}}」)}* | id = = 」[1、2、3]」 | 1 |
id = = 」[{\」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」{"ERROR" :{"CODE" :400000,"MESSAGE" :"ONE OF THE REQUEST INPUTS IS NOT VALID."}}」id \ \」4]」 | {\」id \ \」1 | |
id = = 」[]」 | 」」 | |
id = = 」」 | この入力はエラーになります。 |
* このテンプレート例では、EscapeTool を使用して文字をエスケープします。詳細については、 文字列エスケープライブラリ.
urlTool.optionalQueryParam
このマクロは、値が空でない限り、キーと値のペアをクエリパラメータとしてフォーマットします。それ以外の場合、マクロは空の文字列を返します。テンプレートにアンパサンド (& ;) を含めないでください。マクロは自動的にアンパサンドを追加します。テンプレートの結果の例を参照してください。 少なくとも1つの必須クエリパラメータの後にのみマクロを使用してください。次のテンプレートの例では、必要なクエリパラメーターは .
テンプレートの例
amount=${input.AMOUNT}$urlTool.optionalQueryParam(\"description\", $!{input.DESCRIPTION})
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
input.AMOUNT == 30 入力。説明 = = ジャガイモ |
金額 = 30 & ; 説明 = ジャガイモ |
input.AMOUNT == 30 入力。説明 = = 」」 |
金額 = 30 |
Java 文字列メソッドマクロ
値の大文字小文字の変更や文字列からの値の抽出など、文字列変数を操作するには、Velocity テンプレートで Java 文字列メソッドを使用します。詳細については、クラス文字列 Java 11のドキュメント。
次の例では、 toUpperCase() メソッドは、変数の文字列値を大文字に変換します。は スプリット () メソッドは、変数を文字列の配列に分割します。変数連結は、変数、変数、および変数の配列の最初の項目から値を変更します。
テンプレートの例
#set($a = ${input1.string1} ) #set($a = $a.toUpperCase() ) #set($b = ${input1.string2} ) #set($c = $b.split("\+") ) #set($d = "We are using ""${a}"" ""${b}"" ""$c[1]"" to render this." ) $d
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
入力 string1 = 値1 入力 string2 = 値 1 + 値2 |
使用してい 」値1」 」値 1 + 値2」 」Value2」 これをレンダリングします。 |
Microsoft Dynamics マクロ
msdynamics.fieldSearchFilter
このマクロは、検索対象の値とフィールドのリストを指定して、検索フィルタを作成します。マクロは、リスト内の各フィールドと値を比較します。
テンプレートの例
$msdynamics.fieldSearchFilter(\"$input.EMAIL_ADDRESS\", [\"emailaddress1\", \"emailadress2\"]
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
入力。EMAIL_ADDRESS = TestMail @example.com | emailaddress1 eq ’TestMail@example.com’ または emailaddress2 eq ’TestMail@example.com’ |
msdynamics.phoneNumberFilter
このマクロは、電話番号と検索するフィールドのリストを指定して、検索フィルタを作成します。このマクロは、サポートされていない文字や、+ や括弧などの数字以外の値を電話番号から取り除き、各フィールドの間に \"or \" を追加します。この検索フィルタは、電話番号を取引先企業レコードの複数の電話番号と比較する場合に便利です。
テンプレートの例
$msdynamics.phoneNumberFilter(\"$input.PHONE_NUMBER\", [\"telephone1\", \"telephone2\"])
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
入力。PHONE_NUMBER = + 1 (555) 555-0123 | telephone1 eq ’+ 1 (555) 555-0123’ または telephone2 eq ’+ 1 (555) 555-0123’ または telephone1 eq ’15555550123’ または telephone2 eq ’15555550123’ |
Salesforce マクロ
Salesforce.escReserved
このマクロは、URL で作成された Salesforce SOQL/SOSL クエリからの予約文字をエスケープします。Salesforce は以下の文字を留保します。& | ! { } [ ] ( ) ^ ~ * : \ 」 ’ + -. このマクロは、文字が適切にエスケープされることを保証します。詳細については、 {SearchQuery} を検索します。 Salesforce のドキュメントを参照してください。
テンプレートの例
FIND {$salesforce.escReserved(${input.PHONE_NUMBER})} IN PHONE FIELDS
テンプレート例の結果
入力 | 解決済みテンプレート |
---|---|
入力。PHONE_NUMBER = = (555) 555-5555 | 電話フィールドで{ \ \(555 \ \)555 \ \ -5555}を見つける |
詳細については、 統合のカスタムアクションについて。
統合の詳細については、 データアクションの統合について.