コマンドラインから引数を与えて起動したい。

Problem

FlowDesigner は GUI 上でネットワークを構築し, その場で実行できるが, 処理の度に GUI を起動し実行ボタンを押すのは面倒くさい. そこで,ネットワークファイルをコマンドラインから実行したい。その時、ネットワー クのパラメータをコマンドライン引数から変更したい。

Solution

FlowDesigner のネットワーク (foo.n とする)をコマンドラインから実行する には、実行ファイルのように実行すればよい。

$ ./foo.n

コマンドライン引数を与えて、実行時に挙動を指定することも可能である。 まずFlowDesigner を開き、ネットワークファイルを次のように編集する

  1. MAIN サブネットワークで、引数を渡したい変数を含むノードのプロパティ を開く。

  2. 引数が代入される変数の 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

なし.