Problem
FlowDesigner は GUI 上でネットワークを構築し, その場で実行できるが, 処理の度に GUI を起動し実行ボタンを押すのは面倒くさい. そこで,ネットワークファイルをコマンドラインから実行したい。その時、ネットワー クのパラメータをコマンドライン引数から変更したい。
Solution
FlowDesigner のネットワーク (foo.n とする)をコマンドラインから実行する には、実行ファイルのように実行すればよい。
$ ./foo.n
コマンドライン引数を与えて、実行時に挙動を指定することも可能である。 まずFlowDesigner を開き、ネットワークファイルを次のように編集する
MAIN サブネットワークで、引数を渡したい変数を含むノードのプロパティ を開く。
引数が代入される変数の Type を subnet_param に指定し, Value に “ARG?” と入力 (?には引数のインデックスが入る. 第1引数であれば “ARG1” )
ただし、コマンドライン引数を与えられるのは MAIN サブネットワークのノード のみである。他のサブネットワークのパラメータを指定するときは、 まずそのネットワークのパラメータを subnet_param に指定して MAIN サブネッ トワークから見えるようにし、MAINで指定する必要がある。
あとは、通常の実行ファイルのように、引数を与えればよい。例えば
$ ./foo.n 0.5 0.9
こうすると、foo.n の ARG1 に 0.5, ARG2 に 0.9 が渡されてネットワー クが実行される。
Discussion
FlowDesigner はネットワークファイルを編集するGUIであり、 実際にネットワークファイルを実行するのは batchflow である。 batchflow は、ネットワークファイル (実体は XML ファイル) を 読み込んで実行する。 従って、次のような実行方法ももちろん可能である。
$ batchflow foo.n
コマンドライン引数は,すべて string 型と解釈される. int 型や float 型で渡したい時には,Value に “1”, ”1” のように指定する. 現在のバージョンでは、オブジェクト、たとえば Vector<int> などの Object 型にはこの方法で は渡すことはできない.
See Also
なし.