コラム コラム:変更の可能性のあるものは外部ファイル化

タスクは一度作成すると可能な限り大きな改修を避けたいものです。
そうは言っても、処理対象の項目が増えたり、ユーザー/パスワードが変更になったりした際には
タスク内にそれらを直接書いているのであれば変更対応を行わざるを得ません。

その際は、外部ファイルを使用する形にし、そちらのみを編集することにより
タスクの改修を避ける形にすると手間が少なくて済みます。

以下の例では、「処理項目あ」→「処理項目い」→「処理項目う」→「処理項目あ」→・・・
の順に処理を進める必要があり、前に行われた処理が何であるかを確認した後
次の処理を決めるような状況を想定します。
更に、「処理項目ぽ」を「処理項目い」と「処理項目う」の間に入れなければならなくなった
という状況を想定します。(なお、処理はそれぞれ対応するサブタスクを呼び出すような処理を想定します)

(変数「var_Operation」に前に行われた処理が入っているものと想定します)
-------------以下一例:項目追加の際にタスク改修が必要となるもの-------------

<AMSELECTCASE EXPRESSION="%var_Operation%" />
<AMCASE CONSTANT="処理項目あ" />
<AMTASK MANAGEDTASK="業務処理\処理項目い" TASKID="" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="処理項目い" />
<AMTASK MANAGEDTASK="業務処理\処理項目う" TASKID="" />
<AMCASE ACTIVITY="endcase" />
<AMCASE CONSTANT="処理項目う" />
<AMTASK MANAGEDTASK="業務処理\処理項目あ" TASKID="" />
<AMCASE ACTIVITY="endcase" />
<AMSELECTCASE ACTIVITY="end" />

このような作り方になっていると、「処理項目ぽ」の対応を行うには
ケースブロックを1つ増やして対応しなくてはなりません。

そこで、タスクは以下のような形で作り換え、外部に読み出し用のファイルを用意しておけば
読み出し用のファイルを編集するだけで対応が済みます。

(変数「var_Operation」に前に行われた処理が入っているものと想定します)
-------------以下一例:外部ファイルの変更のみで対応可能なもの-------------

<AMVARIABLE NAME="var_NextTask" VALUE="" DESCRIPTION="次に実行するタスク" />
<!--外部ファイル読み出し-->
<AMFILESYSTEM ACTIVITY="csv_to_dataset" SOURCE="%GetDesktopDirectory()%\RPA_TASKS.txt" RESULTDATASET="ds_Tasks" />
<AMLOOP ACTIVITY="dataset" DATASET="ds_Tasks" />
<AMIF EXPRESSION="%ds_Tasks.TaskName% = %var_Operation%" />
<!--ヒットしたのが最終行なら1行目、そうでないならヒットした行の次の行を返す-->
<AMIF EXPRESSION="%ds_Tasks.CurrentRow% = %ds_Tasks.TotalRows%" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_NextTask">%ds_Tasks(1).TASKNAME%</AMVARIABLE>
<AMELSE />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="var_NextTask">%ds_Tasks(ds_Tasks.CurrentRow + 1).TASKNAME%</AMVARIABLE>
<AMIF ACTIVITY="end" />
<AMIF ACTIVITY="end" />
<AMLOOP ACTIVITY="end" />
<AMTASK MANAGEDTASK="業務処理\%var_NextTask%" TASKID="" />

-------------以上一例:外部ファイルの変更のみで対応可能なもの-------------
(なお、処理内で使用しているデータセットに関する操作については以下の記事
https://automate.sct.co.jp/column/11742/
をご参照ください)

-------------読み出し用ファイルの内容:ここから-------------
TASKNAME
処理項目あ
処理項目い
処理項目う
-------------読み出し用ファイルの内容:ここまで-------------
読み出し用ファイルの「処理項目い」と「処理項目う」の間に
「処理項目ぽ」を追加すればそれで対応が終わります。

パスワードなど、単一項目だけであればAutoMateの定数でも問題ありませんが、
一覧・リストで管理する場合には外部ファイルを使用するとメンテナンスが楽になります。
(参考)定数については以下をご参照ください
https://automate.sct.co.jp/column/11747/

タスクのメンテナンスコストを抑えたい場合は、ぜひともご活用下さい。