はじめに
ASTERIA WARP ではストリーム型;ParameterListで文字列の配列を定義することができるようです。
〜ヘルプ フローサービス マニュアル-フローの構成要素-ParameterListより〜
データ型にString[]を指定したフィールドを持つParameterListストリームは、HttpStartコンポーネントで複数の値を取得する場合などに利用されます。 String[]を指定したフィールドがある場合、最も長い配列フィールドの長さにあわせてレコード展開されます。
HTTPStartコンポーネントでcheckboxの値を取得する場合などに使うようですが、他のストリームからParameterListで定義された文字列の配列を作成する方法を考えてみました。
環境
- OS:Windows Server 2012 R2
- ASTERIA WARP:1712
- Java:1.8.0_151
HTTPStartコンポーネントでの利用例
HTTPStartコンポーネントのヘルプにあるサンプルフォーム(HTML)をそのまま使って確認してみます。
フローの概要
サンプルフォームを表示するフローとサブミットされたデータを受け取るフローの2つを用意します。
1.サンプルフォームを表示するフロー
velocityコンポーネントにサンプルフォームのhtmlをそのまま記述しているだけのフローです。
※URL実行設定しておきます。
2.サブミットされたデータを受け取るフロー
HTTPStartでParameterListでサブミットされたデータを取得するだけのフローです。
※URL実行設定しておきます。
フローの動作結果
ブラウザから実行してみます。
サンプルフォームの送信先チェックボックスにチェックをつけて[送信]してみます。
文字列の配列は
<Field name="addr" type="String[]">
<Value>id01</Value>
<Value>id02</Value>
<Value>id03</Value>
</Field>
といった感じでParameterListで配列として持ちなおしているようです。
その他のストリームからの作り方
1.CSVデータからの作成例
用意するデータ
ParameterListのヘルプにある展開された状態を参考に以下のようなCSVデータを用意します。
aaa,bbb,ccc,fff
aaa,bbb,ddd,ggg
aaa,bbb,eee,hhh
aaa,bbb,,iii
aaa,bbb,,jjj
ParameterListのフィールド定義
このデータをヘルプにあるように以下のようなフィールド定義のParameterListでマッピングします。
フィールド名 | データ型 |
---|---|
field1 | String |
field2 | String |
field3 | String[] |
field4 | String[] |
フローの概要
フローの動作結果
field3、field4でParameterListの配列としてセットされているのがわかります。
2.XMLデータからの作成例
用意するデータ
以下のようなXMLデータを用意します。
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>
<field1>aaa</field1>
<field2>bbb</field2>
<field3>ccc</field3>
<field4>fff</field4>
</item>
<item>
<field1>aaa</field1>
<field2>bbb</field2>
<field3>ddd</field3>
<field4>ggg</field4>
</item>
<item>
<field1>aaa</field1>
<field2>bbb</field2>
<field3>eee</field3>
<field4>hhh</field4>
</item>
<item>
<field1>aaa</field1>
<field2>bbb</field2>
<field3/>
<field4>iii</field4>
</item>
<item>
<field1>aaa</field1>
<field2>bbb</field2>
<field3/>
<field4>jjj</field4>
</item>
</root>
ParameterListのフィールド定義
CSVと同様に以下のようなフィールド定義のParameterListでマッピングします。
フィールド名 | データ型 |
---|---|
field1 | String |
field2 | String |
field3 | String[] |
field4 | String[] |
フローの概要
フローの動作結果
こっちもfield3、field4でParameterListの配列としてセットされているのがわかります。
終わりに
フローの中でParameterListで文字列の配列を作成する機会はあまりないと思いますが、参考まで。