ASTERIA WARPでParameterListの配列を作ってみる

# はじめに

ASTERIA WARP ではストリーム型；ParameterListで文字列の配列を定義することができるようです。

〜ヘルプ [フローサービス マニュアル-フローの構成要素-ParameterList](https://help.asteria.com/documentation/warp/ja/current/flow/designer/flowservice/stream_parameterlist.html)より〜

> データ型に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実行設定しておきます。

![parameterlist01.png](https://qiita-image-store.s3.amazonaws.com/0/180292/1bf3b5ea-49c9-35fe-d100-214884a009a4.png)


### 2.サブミットされたデータを受け取るフロー
HTTPStartでParameterListでサブミットされたデータを取得するだけのフローです。
※URL実行設定しておきます。

![parameterlist02.png](https://qiita-image-store.s3.amazonaws.com/0/180292/7c88dc53-2bc9-55f7-f64f-8a1cbaddb737.png)

## フローの動作結果

ブラウザから実行してみます。

![parameterlist03.png](https://qiita-image-store.s3.amazonaws.com/0/180292/1c96d474-546b-3126-f93b-37ec75c86aa9.png)

サンプルフォームの送信先チェックボックスにチェックをつけて[送信]してみます。

![parameterlist04.png](https://qiita-image-store.s3.amazonaws.com/0/180292/1d2e7735-ae68-8e56-67d7-ef5831386459.png)


文字列の配列は

```xml
<Field name="addr" type="String[]">
<Value>id01</Value>
<Value>id02</Value>
<Value>id03</Value>
</Field>
```
といった感じでParameterListで配列として持ちなおしているようです。

# その他のストリームからの作り方

## 1.CSVデータからの作成例

### 用意するデータ

ParameterListのヘルプにある展開された状態を参考に以下のようなCSVデータを用意します。

```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[]    |

### フローの概要

![parameterlist05.png](https://qiita-image-store.s3.amazonaws.com/0/180292/da9a750a-3e45-8aef-6e28-68dafa06d694.png)

### フローの動作結果

![parameterlist06.png](https://qiita-image-store.s3.amazonaws.com/0/180292/5f9b31b8-21ca-95b0-33eb-b38967efa3b6.png)

field3、field4でParameterListの配列としてセットされているのがわかります。

## 2.XMLデータからの作成例

### 用意するデータ

以下のような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[]    |

### フローの概要

![parameterlist06.png](https://qiita-image-store.s3.amazonaws.com/0/180292/2867e66c-1b8f-1a61-3870-ffd8fda5a93a.png)


### フローの動作結果

![parameterlist07.png](https://qiita-image-store.s3.amazonaws.com/0/180292/1664014a-fa2e-6f3a-83e8-2cf292484961.png)

こっちもfield3、field4でParameterListの配列としてセットされているのがわかります。

# 終わりに

フローの中でParameterListで文字列の配列を作成する機会はあまりないと思いますが、参考まで。