Webブラウザから呼び出すなどHTTPからのリクエストで実行するフローのための開始コンポーネントとしてHTTPStartがあります。
コンポーネントリファレンスをみると、HTMLフォームのパラメーターを取得する方法で
「<Input type="checkbox"/>のようにひとつのパラメーターに複数の値が設定される場合、データ型にString[]を指定」
とありますが、String[]で取得したデータをその後どのように処理してよいか、ちょっと迷ってしまう所ではないかと思います。
ADNフォーラムでも話題になったことがあるようですが、そのトピックを参考にString[]で取得した値を持ち直す方法を考えてみました。
まず、動作を確認するための簡単なHTMLファイルとフローを用意します。
※リファレンスにあるサンプルフォーム(HTML)をベースにしています。
- HTMLフォーム
※サンプルフォーム(HTML)の添付ファイル(fileupload)という項目を取り除き、チェックボックス項目(送信先(CC))をもう一つ追加しています。
作成したHTMLファイルは今回は単純にユーザーのドキュメントルートに設定されているhtdocsフォルダーの下に置いておきました。
※ドキュメントルートの設定や、Webブラウザからアクセスする際のURLは詳細はマニュアルにも載っていますのでここでは割愛します。
- フロー
簡単に HTTPStart - Mapper - HTTPEnd としました。
HTTPStartのストリーム定義はリファレンスにあるものとほぼ同様に
と先ほど作成したHTMLフォームに対応するフィールド名を設定しておきます。
次のMapperでは値を確認したかったので、ひとまず取得した値をTextストリームとして出力してみます。
作成したHTMLフォームに記述したurlをURL実行設定でフローに関連付け、Webブラウザからサンプルフォームの画面を表示し、送信ボタンをクリックしてフローが実行されているか確認してみます。
ここで、HTTPEndで返したレスポンスをWebブラウザ上で確認するのもよいですが、今回はデザイナーのデバッグ機能を使ってみました。
デザイナーの「デバッグ」アイコンをクリックしてデバッグダイアログボックスを表示し、「外部からフローを実行する」にチェックをいれて「実行ボタン」をクリックします。
これで、デバッグの待受状態になりました。続いてWebブラウザからサンプルフォームの画面を表示し、送信ボタンをクリックしていきます。
デザイナーのデバッガーをみるとアタッチしてデバッグが開始されているのがわかります。
では、コンポーネントを1つずつ実行し取得したチェックボックスの値を確認してみます。
チェックボックスの値が複数入っているようです。
マッピング後では単に文字列連結した状態で出力されています。
連結した文字をもう一度、分割出来ればよいですが、チェックボックスの値が何文字なのかわからないとどうにも出来ません。。ここで、Mapperのストリーム定義をCSVストリームに変更してみます。
この状態で取得してみるとチェックボックスにチェックを付けた個数分、レコードが作成されています。
これはマニュアルのストリームプロパティ - ParameterList に記載のある通りの動作ですが、さらにマッパー変数も使ってMapperのストリーム定義を変更してみます。
マニュアル(変数 - マッパー変数)にあるように、マッパー変数はレコード数分のマッピングが実行されるので、取得した文字列をConcatenate関数で連結してフロー変数に差し込んでみています。
※Concatenate関数の設定
この状態で取得してみると、Concatenate関数で指定した区切り文字が挿入された状態で取得できました。
ここまでくれば、あとはマッパー変数に格納した値を区切り文字で分割して使うなり、フロー側で好きなように整形、加工して使うことができそうです。
ADNフォーラムにもコメントがありますが、データ型がString[]の値は扱いにちょっと癖があるようです。他にも持ち直す方法は色々あると思いますし、HTML側で受け渡す値を予め加工しておくのも一つの方法かもしれません。
今回は、チェックボックスの値を持ち直す方法に絡めて、デバッガー、マッパー変数も使ってみました。特にデバッガーを待機状態にすると、今回のURL実行設定やメール監視実行設定のフローをデバッグするときに便利です。使ってみてください。