Flex Gateway新着情報
Governance新着情報
Monitoring API Managerテンプレートを処理して結果を取得します。
テンプレートには、Mule が評価して結果に置き換える DataWeave 式が埋め込まれたテキストが含まれます。
外部ファイル参照を使用してテンプレートを設定するか、コンポーネント設定にテンプレートを埋め込みます。
このコンポーネントは、次の XML 構造をサポートします。
<parse-template
doc:name="Parse template"
doc:id="fppwuw"
location="template.html" />
Parse Template (<parse-template/>
) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
Parse template (解析テンプレート) (デフォルト) |
|
キャンバスに表示されるコンポーネントの編集可能な名前。 |
なし |
|
コンポーネントの自動生成された識別子。 |
Content (コンテンツ) |
|
テンプレートを表す文字列であり、このテンプレートでは埋め込まれた式が評価され、その結果に置き換えられます。 |
Location (場所) |
|
テンプレートファイルの場所。Mule は、メッセージのプロパティまたは変数から抽出した値をこのファイルに挿入します。 |
Output encoding (出力エンコード) |
|
このコンポーネントで出力されるペイロードのエンコード。 |
Output mime type (出力 MIME タイプ) |
|
このコンポーネントで出力されるペイロードの MIME タイプ。詳細は、「リーダーとライターのプロパティの使用」を参照してください。 |
パラメーター |
なし |
リーダープロパティのキーと値のペアを |
Target Variable (対象変数) |
|
メッセージデータを格納する変数の名前。数字、文字、アンダースコアのみを使用できます。たとえば、名前にハイフンは使用できません。 Mule ドキュメントの Enrich Data with Target Variablesを参照してください。 |
Target Value (対象値) |
|
対象変数に格納するデータの値。このデフォルト値はメッセージペイロード (payload) です。この項目は、変数が受け入れるすべての値を受け入れます。サポートされているデータ型、DataWeave の式、 |
この例では、Parse Template を使用してデータを HTML に動的に読み込みます。
この例では、データベースから従業員データを HTML テンプレートに読み込む Mule アプリケーションで Parse Template を使用します。フローは、テンプレートで構築された出力をコール元に返します。
Unresolved include directive in modules/ROOT/pages/_partials/mule-components/4.4/component-parse-template.adoc - include::mule-runtime::example$parse-template-reference.xml[]
テンプレートでは、名前、部門、役職、開始日、および従業員種別の各値を含む項目を入力ペイロードから選択します。
Unresolved include directive in modules/ROOT/pages/_partials/mule-components/4.4/component-parse-template.adoc - include::mule-runtime::example$responseHtml.template[]
http://localhost:8081/getEmployee?id=1234
など、従業員の ID を識別するクエリパラメーターを含む URI でフローを開始し、Select 操作で次の入力を Parse Template に返すとします。
{
"first_name": "Melba",
"last_name": "Roy Mouton",
"department": "Computers",
"job_title": "Assistant Chief of Research Programs",
"start_date": "01/01/2021",
"employee_type": "mathematician"
}
この例では、テンプレートで構築された出力が返されます。出力は、選択された従業員データを含む HTML です。
<html>
<body>
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Department</th>
<th>Job Title</th>
<th>Start Date</th>
<th>Employee Type</th>
</tr>
</thead>
<tbody>
<tr>
<td>"Melba"</td>
<td>"Roy Mouton"</td>
<td>"Computers"</td>
<td>"Assistant Chief of Research Programs"</td>
<td>"01/01/2021"</td>
<td>"mathematician"</td>
</tr>
</tbody>
</table>
</body>
</html>
この例では、オブジェクトの配列として表される従業員レコードで Parse Template を使用します。
Unresolved include directive in modules/ROOT/pages/_partials/mule-components/4.4/component-parse-template.adoc - include::mule-runtime::example$parse-template-reference2.xml[]
次のテンプレートでは、DataWeave スクリプトを使用して入力配列を反復処理し、配列内のオブジェクトごとに HTML 行を作成します。
Unresolved include directive in modules/ROOT/pages/_partials/mule-components/4.4/component-parse-template.adoc - include::mule-runtime::example$responseHtmlMap.template[]
Parse Template コンポーネントは Set Payload から次のペイロードを受け取るとします。
{
Employee: [
{
"first_name" : "Melba",
"last_name" : "Roy Mouton",
"department" : "Computers",
"job_title" : "Assistant Chief of Research Programs",
"start_date" : "01/01/2021",
"employee_type" : "mathematician"
},
{
"first_name" : "Annie",
"last_name" : "Easley",
"department" : "Software Development",
"job_title" : "Technical Lead",
"start_date" : "06/02/2020",
"employee_type" : "Rocket Scientist"
}
]
}
この例では、テンプレートで構築された出力が返されます。出力は、動的に作成された行と、配列内のオブジェクトのデータを含む HTML です。
<html>
<body>
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Department</th>
<th>Job Title</th>
<th>Start Date</th>
<th>Employee Type</th>
</tr>
</thead>
<tbody>
<tr>
<td><span>Melba</span></td>
<td><span>Roy Mouton</span></td>
<td><span>Computers</span></td>
<td><span>Assistant Chief of Research Programs</span></td>
<td><span>01/01/2021</span></td>
<td><span>mathematician</span></td>
</tr>
<tr>
<td><span>Annie</span></td>
<td><span>Easley</span></td>
<td><span>Software Development</span></td>
<td><span>Technical Lead</span></td>
<td><span>06/02/2020</span></td>
<td><span>Rocket Scientist</span></td>
</tr>
</tbody>
</table>
</body>
</html>
Parse Template は、テンプレート内での式の使用や、これらの式でのリテラルの使用をサポートします。テンプレートは、\#[
といったシーケンスや引用符など、一部の特殊文字を認識します。これらの文字をエスケープすることで通常の文字として扱うことができます。
#[an-expression]
:
テンプレート内では #[]
を使用して式を指定します。たとえば、テンプレートの HTML 要素内で <td>#[upper("mulesoft")]</td>
という式を指定すると <td>MULESOFT</td>
に解決されます。空白の式 (#[]
) はエラーとなりますが、#['']
や #[""]
などの空白文字列は有効な式です。
サブ式:
引用符で囲まれたサブ式を解決するには、サブ式を別の #[]
で囲みます。たとえば、次のテンプレートスニペットでは、4 つの要素で同じサブ式 (upper("world")
) が引用符の内部または外部に指定されています。最初の 2 つは同じ結果を返します。最後の 2 つは、サブ式が引用符内に指定されていますが、別の #[]
で囲まれていないため、upper("world")
を処理せずにそのまま返します。
<td>#['hello #[upper("world")]']</td>
<td>#['hello ' ++ upper("world")]</td>
<td>#['hello upper("world")']</td>
<td>#['hello ++ upper("world")']</td>
<td>hello WORLD</td>
<td>hello WORLD</td>
<td>hello upper("world")</td>
<td>hello ++ upper("world")</td>
エスケープ文字 (\
):
Parse Template は、文字シーケンスの #[
で式の開始を示します。この文字シーケンスを式として解釈せずにリテラル文字として扱うには、\
でエスケープします。たとえば、<td>#[</td>
は <td>#[</td>
を返します。
また、式の文字列に含まれる特殊文字を通常の文字として扱いたい場合があります。式に含まれる文字列内の特殊文字をエスケープするには、特殊文字の前に \
を付けます。特殊文字の例としては、#[
のシーケンス、引用符 ('
または "
)、アポストロフィ ('
)、$
などがあります。\#
や [
は、文字列内でこれらの 2 文字が (\#
が [
の前に来て) 連続していない限り、エスケープする必要はありません。
<td>\#[</td>
<td>#['abcd\#[-1234' ++ now() as String ++ '.log']</td>
<td>'abc'def'</td>
<td>#['abc\'def']</td>
<td>"xyz"xyz"</td>
<td>#["xyz\"xyz"]</td>
<td>#["abc\$DEF\#ghi\[JKL]"]</td>
<td>#[</td>
<td>abcd#[-12342020-07-06T17:20:10.683-07:00.log</td>
<td>'abc'def'</td>
<td>abc'def</td>
<td>"xyz"xyz"</td>
<td>xyz"xyz</td>
<td>abc$DEF#ghi[JKL]</td>
詳細は、「特殊文字のエスケープ」を参照してください。