knowledge ワークフロー変数・ワークフロー配列・ワークフローデータセットについて

【質問】
ワークフロー変数・ワークフロー配列・ワークフローデータセットについて、使用方法・メリット・注意点・仕様などが知りたい。
使用することで何が出来るようになるか、等の情報が欲しい。

【回答】
以下、説明します。

■0. 全般
ワークフロー変数・配列・データセットに登録したものは、ワークフロー全体で同じものを参照可能な共有オブジェクトとなります。
つまり、下記のようなワークフローにおいて、全タスクにおいて同じ変数を参照したり、編集したりすることができます。
[図1]
図1
上図は、ワークフロー変数(=共有変数)として「var_Result」を定義しています。
ここに定義することにより、
・タスク間における値の受け渡し
(各タスクから読取/書込アクセス可能なので、上図におけるタスク「データ抽出」から受け取った値を、後のタスク「送付状作成」で上書きすることも可能です)
・ワークフロー内の評価オブジェクトにおける処理分岐判断
に使用することが出来ます。

■1. ワークフロー変数
配列やデータセットのような構造体ではなく、単一の値のみを格納できる共有変数です。
ワークフローにおける設定で直接データ型や初期値を設定します。
ワークフロー変数として定義した場合、そのワークフローに含まれる各タスクにおいては同名の変数を定義することなく変数を使用することが出来ます。(逆に、ワークフロー変数と同名のローカル変数を各タスクで宣言すると、ワークフロー変数がローカル変数として上書きされ、値の受け渡しが行われなくなります)
また同様に、ワークフロー変数として宣言した変数は当該ワークフローを実行する場合以外は作成されない為、タスクビルダーにおけるタスク単体デバッグ実行時ではワークフロー変数は認識されません。
故に、タスク単体実行時はワークフロー変数と同名の変数を宣言しておき、ワークフローに配置する際に当該ローカル変数を無効化するといった操作が必要になります。

また、ワークフロー上における評価オブジェクトでは、このワークフロー変数「のみ」判断に使用可能です。
後述のワークフロー配列、ワークフローデータセットはそのまま評価オブジェクトで使用できない為、それらの値を評価オブジェクトでの条件判断に使用する場合は、タスク内で一度ワークフロー変数に値を格納する必要があります。
同様に、サブワークフロー(子ワークフロー)に対する値渡し・サブワークフローからの値受け取りも、ワークフロー変数のみ可能な機能です。

■2. ワークフロー配列
ワークフロー変数とは違い、ワークフロー内でデータ型や次元、要素数を定義しません。
上記のワークフロー変数とは少々意味合いが変わり、「ここに登録した名前の配列は、一度任意のタスク内で宣言するとどのタスクでも同じものを参照できる」というものになります。
つまり、ワークフロー配列はワークフロー上で宣言しただけでは意味をなさず、配列の実体はワークフロー内の任意のタスクで宣言する必要があります。

[図1]のワークフローを例にします。(以下、ワークフロー配列「WFArray_Data」を宣言したと仮定します)
「データ抽出」のタスクにおいて、以下のように配列を定義します。
(要素数4, [マグロ,ウニ,イクラ,サーモン])

<AMARRAY NAME="WFArray_Data" ROWS="4" />
<AMARRAY ACTIVITY="set" NAME="WFArray_Data" STARTINDEXZERO="YES"><SETTER INDEX="0" VALUE="マグロ" /><SETTER INDEX="1" VALUE="ウニ" /><SETTER INDEX="2" VALUE="イクラ" /><SETTER INDEX="3" VALUE="サーモン" /></AMARRAY>

(配列の要素数は「0」からカウントを始めているので、4つ目の要素「サーモン」のインデックスは「3」になります)
すると、後続のタスク「メール添付」において「%WFArray_Data(3)%」を参照すると、「サーモン」を読み出すことが出来ます。
ワークフロー配列に登録した名前の配列は、どのタスクからも読取/書込アクセスが可能なので、配列の要素を後続のタスクで参照したり、要素を変更したりすることが可能です。

■3. ワークフローデータセット
基本的にはワークフロー配列と同様であり、「ここに登録した名前のデータセットは、一度任意のタスク内で宣言するとどのタスクでも同じものを参照できる」というものになります。
そのため、ワークフローデータセットに登録するだけではなく、ワークフローにおける任意のタスク内で同名のデータセットを宣言する必要があります。
後続のタスクにおいて同名のデータセットを再度宣言しデータセットを作り直した場合は、作り直した後のデータセットが後のタスクで参照されます。

なお、「■1. ワークフロー変数」で述べた通り、ワークフロー上の評価オブジェクトにはワークフロー変数以外は利用できず、ワークフロー配列やワークフローデータセットは使用出来ません。
(データセットにおける「データセット名.CurrentRow」や「データセット名.TotalRows」も同様)
そのため、配列・データセットの要素や要素数などのメタデータを評価オブジェクトに使いたい場合は、必ずそれらの値を事前にワークフロー変数に設定しなければなりません。