ASTERIA Warpのフローデザイナーにおいてサブフローとマッピングの再利用

作成済みのを要素を再利用する

フローデザイナーにおいて、サブフローと関数コレクションを活用して効率よくフローを作成する方法についてご紹介します。

今回作成したフローの重要部分

2か所のSubFlowで同じフローをサブフローとして呼び出すことで、作成するのは共通のサブフローを1つで済ませられます。
マッパーで関数コレクションを使用することで、マッパー内部(マッピングウィンドウ)を単純化できます。

フローの構成(全体図)

フローの全体図は下図の通りになります。
右側と左側で同じフローをサブフローとして呼び出し、結果をfileputで対象のファイルに追記します。

サブフローとして呼び出されるフロー(HensyuFlow)

ストリームの値を編集するマッパーのみの構成で、最後は値を呼び出し元に返します。

ここのマッパーで関数コレクションを使用しています。

関数コレクションの作成方法

ツリーペインの上にあるアイコンの中から「関数コレクションの作成」をクリックします。この時ツリーペインで関数コレクションを作成したい場所をクリックで選択しておいてください。
(下図ではFunctionHensyuという名前の関数コレクションを既に作成しています。これは後のマッパーで使用します)

「関数コレクションの作成」画面が表示されるので「ファイル名」「関数コレクション名」「関数名」、入出力の「最小入力数」「最大入力数」「出力数」を設定してください。設定が終わったらOKボタンを押して作成します。作成される場所は「フォルダ」で設定されている値の場所になります。(この画面では編集できませんが、「関数コレクションの作成」をクリックしたときにツリーペインで選択していた場所が設定されます。)

OKボタンを押した後にツリーペインを確認すると、「フォルダ」の場所に関数コレクションが作成されていることが確認できます。

filegetで読み込むファイルの中身

下図のfile1.csvを左側のフロー、file2.csvを右側のフローでfilegetを使用して読み込みます。

フローの解説(メインフロー)

メインフローを先頭のコンポーネントから解説します。左右のフローで同じ動作を行っているので、左右一度に解説します。

fileget

ここでは前述のfile1.csvとfile2.csvを読み込みます。
英語小文字を各4文字、3つのフィールドとして読み込みます。今回はフィールド名をfield1からfield3と設定しています。

SubFlow

プロパティの「実行するフロー」の値を「HensyuFlow」と設定して、サブフローとして「HensyuFlow」を呼び出します。
他の設定はデフォルトのままです。

マッパー(HensyuFlow内)

作成した関数コレクションをツリーペインからドラッグアンドドロップでマッピングウィンドウ上に配置します。
(下図では既に3つ配置されています)

SubFunction(マッピングウィンドウに配置した関数コレクション)

マッピングウィンドウに配置したSubFunction(配置した関数コレクション)をダブルクリックして下図の画面を開きます。

ここで設定した入力から出力までの流れを、マッピングウィンドウのSubFunctionで呼び出すことができます。
上図ではfield1から3まで同じ関数FunctionHensyuを実行します。

今回は英語小文字を大文字に変えて、各フィールドの末尾に「-済」を追加します。

SubFunctionの設定が終わったらマッパーに戻ってマッピングとSubFunctionのプロパティで「関数名」に自分がドラッグアンドドロップした関数名が設定されていることを確認します。(今回ならプロパティの「関数名」はFunctionHensyuになります)

fileput

メインのフローに戻ってきて、最後のコンポーネントfileputに遷移します。

プロパティの「書き込み処理」を「追加」にしているので、ファイルは上書きされず追記されます。そのため、2回同じファイルに対してfileputを行っても両方の結果が残ります。(出力するファイル「syutsuryoku.csv」は中身の入っていないファイルです。)

フローの実行結果

各フィールドの英語小文字が大文字になり、末尾に「-済」がついていることが確認できました。