レイヤーの利用
4.8 変数と定数
フローを流れるストリームとは別に、任意の値を保持したり参照したい場合がありますが、フ ローではその際に「変数」を使用します。フローデザイナーで変数に値を設定するには、マッ
4
4.8 変数と定数
パーの右側の変数フィールドに値をマッピングします。変数の値を参照するには、左側の変数 フィールドから値をマッピングします。
フローサービスの変数は、役割とスコープに応じて数種類ありますが、主な変数は次の表のと おりです。
変数の種類 説明
フロー変数 実行しているフロー内で設定と参照が可能な変数
システム変数 環境情報など、フローサービスによって設定される変数で、参照のみ可能 マッパー変数 Mapperコンポーネントで定義して使用する変数
外部変数 複数のフローやプロジェクトで共有できる変数で、以下の4種類 (1)定数
(2)リクエスト変数:リクエストが有効な間、使用できる (3)セッション変数:セッションが有効な間、使用できる (4)アプリケーション変数:永続的に使用できる
新しいフロー変数を定義する場合は、フローデザイナーの右下の変数ペインへ追加します。
「変数」タブをクリックすると変数ペインが表示されます。変数を追加するには、「変数名」欄 に名前を入力し、必要に応じて「データ型」やその他の情報を設定します。
Tips: システム変数の参照と定義
システム変数を参照するには、フローを開いた状態でツールバーの「システム変数」アイコ ンをクリックし、表示される「システム変数の選択」ダイアログで使用したい変数にチェック を入れます(システム変数は、フローサービスによってあらかじめ定義されている変数です)。
また、新しい外部変数を定義する場合は、ツリーペインの上の「外部変数セットの作成」アイ コンをクリックし、表示される「外部変数セットの作成」ダイアログで変数を追加します(外 部変数セットはStandardエディション以上の機能です)。
4
4.8 変数と定数
「外部変数セットの作成」ダイアログで変数を設定し「OK」をクリックして閉じると、左の ツリーペインに外部変数アイテムが追加表示されます。開いたフロー上へこれをドラッグ&ド ロップすると外部変数が使用可能になり、マッパーに外部変数が表示されます。ツリーペイン の外部変数アイテムをドラッグ&ドロップしていないフローでは、外部変数を使用できません。
それでは「CSVファイル処理(条件分岐)」フローを新しく修正し、フロー変数を使用するフ ローを作ってみましょう。このフローでは、BranchStartコンポーネントの条件式と、マッパー のレイヤー条件式の右辺に変数を使用し、そのときの変数の値で条件判断するようにしたいと思 います。ここでは先頭のマッパーで単純に変数の値を設定していますが、本来は、何らかのロ ジックで変数の値を決め、その値で条件判断するような流れとなります。
1. 左上のツリーペインで「CSVファイル処理(条件分岐)」フローを右クリックし、メニュー から「複製」を選択して、フローの名前を「CSVファイル処理(変数使用)」(「( )」は全 角)とします。
2. コンポーネントの位置を整え、先頭にMapperコンポーネント(「お気に入り」の「デー タをマッピングします」)を追加して、それらを接続します。
3. 先頭のマッパーではストリームを加工しません(この場合はそもそも入力のストリームは ありません)ので、「入力をそのまま出力」プロパティを「はい」に設定します。
4. 右下の変数ペインの「変数名」欄に「keyword」と入力して新しいフロー変数(keyword) を追加します。
5. 先頭のマッパーをダブルクリックし、Const関数(「お気に入り」の「文字列定数」)を配 置した後、そのConst関数をダブルクリックして「SJS」の文字列を入力します(その結 果「データ」プロパティに「SJS」の文字列が設定されます)。
6. マッピングウィンドウで、Const関数の出力を、右側のフロー変数「keyword」へ接続し
4
4.8 変数と定数
ます(これで実行時に、「keyword」変数に「SJS」文字列が格納されます)。
7. BranchStartコンポーネントの「条件式」プロパティの設定を「$record.注文番号 ~=
$flow.keyword」に変更します(「$flow」はフロー変数を指す予約語です)。
8. 2番めのマッパー(ここではMapper1)のレイヤー1の条件式を「$record.注文番号~=
$flow.keyword」に変更します。また「条件なしレイヤー」のEmbed関数をダブルクリッ クし、「データ」プロパティを「output/variable_$input1」に変更します。
このフローを実行すると、「CSVファイル処理(条件分岐)」フローのときと同様に、新しく
「variable_sample1.csv」ファイルが生成され、「variable_sample2.csv」ファイルは生成されま せん。