- はじめに
- 覚えてほしいこと
- やりたいこと
- バッチファイルを編集する
- ちょっと一言
- おわりに
- 参考リンク
はじめに
完成したWorkflow、毎日実行している方、こんなこと思ったりしませんか?
「いちいちKNIME立ち上げて、全選択 --> Reset --> Execute All、めんどくさい!」
KNIMEを実行するのに、ダブルクリック、何ならノータッチで実行したいという方、その願い叶えます。ただし、黒い画面にはビビらないでくださいね!
※今回はWindows PCを使っていることを前提に説明をします。
MACを使用している方は、すさんのBlogをご確認ください。
Linuxを使用している方は、各コマンドをLinuxに当てはめていただけるとできるかと思います。KNIMEの公式FAQにも記載あるので参考にしてみてください。
今回のテーマ ~バッチファイル~
そもそもバッチファイルって何?って人は、下記の記事を先にご覧ください。
覚えてほしいこと
バッチファイルを使えばダブルクリックでKNIMEを立ち上げずに実行できる
やりたいこと
完全自動化するには下記を実現できればいいですよね。
「ダブルクリックでKNIME workflowを自動的に実行する」
そのためにはバッチファイルを用意して、ダブルクリックで実行できるようにする必要があります。
事前準備
さて、今回はKNIMEを実行させるバッチファイルを用意しましょう。
まずは事前準備として、KNIME workflowとバッチファイルを用意しましょう。
KNIME workflowを用意する
今回はものすごく簡単なKNIME workflowを用意しました。Excelを読んで吐き出すだけです。実行すると、読み込んだExcelファイルを”_out”という名前でそのまま書き出します。
バッチファイルを用意する
以前作ったメモ帳を実行させるバッチファイルをコピーして編集でも構いません!
バッチファイルを用意しましょう。後程中身を編集します。
バッチファイルを編集する
まずは中身からお見せします。コピペしてから、編集してみましょう!
Step1 - コピペしてみる
Step2 - KNIMEの実行ファイルのパスをコピペ
さて、インストールした時に、Exeファイルのショートカットを作っていたのを覚えていますでしょうか。今回はその場所を使います。
まずは、knime.exeというexeファイルをパソコン内で探します。インストールした時に使ったと思います。
このフォルダの場所と、ファイルの名前を上の部分にコピペしましょう。
Step3 - 実行したいWorkflowのパスをコピペ
さて、続いて実行したいWorkflowのパスをコピペします。以前、各KNIME workflowはフォルダとして存在しているといったこと、覚えていますでしょうか。
Workflow spaceのフォルダからフォルダパスを取得して、コピペしましょう。
Workflowのフォルダパスの簡単な見つけ方
とはいえ、WorkflowのPCの保存先なんてあんまり覚えていないですし、忘れますよね。そこで、簡単にフォルダパスを取得できる方法をご紹介します。
実行したいWorkflowを右クリックして、Copy Location>Local pathをクリックすると、コピーが可能です!
Step4 - ダブルクリックで実行
最後にダブルクリックで実行していきましょう!
黒い画面が2つ出てきたと思います。実行が正常終了すると、自動的に閉じます。
1つはコマンドプロンプトの画面で、もう一つはKNIMEの画面です。(普段はGUIとして立ち上がっていますが、今回は文字だけのCUIとして立ち上がっています。)
最初の方に出てくる文字の羅列は、KNIMEを立ち上げているときのログデータです。
ちょっと一言
各Optionの解説
さて、説明していませんでしたが間に色々なオプション(ハイフン - に続いていた呪文)があったかと思います。それらについて解説していきたいと思います。
ちなみに、これらのオプションは順不同です。
-nosave 保存しない
このOptionは簡単ですね。実行後、KNIMEにデータを保存するかを指定します。
-nosplash KNIMEの立ち上げ画面を表示しない
スプラッシュ画面を表示しないというオプションです。スプラッシュ画面とは下図の画面で、KNIMEの立ち上げ画面のことです。使用を推奨します。
-reset 実行前にResetを行う
GUIで通常通り実行するときは、Ctrl+Aのあと、Resetを行っていましたよね。この作業をこの一つのOptionで完了させます。使用を推奨します。
-consoleLog KNIMEの実行画面を表示
さきほど、KNIMEの実行画面として紹介した黒い画面を表示するオプションです。このOptionは使用を推奨します。もしエラー発生した場合、エラーの原因が分からなくなってしまうからです。
-application org.knime.product.KNIME_BATCH_APPLICATION
CUIモードでKNIMEを実行させる。このOptionによって、KNIMEの操作画面がすべて黒い画面に置き換わります。
-workflowDir="KNIME Workflow フォルダパス"実行するワークフローのフォルダパス
このWorkflowDirで、実行するWorkflowを指定しています。
その他のOptionの解説
-noexit 実行終了時には確認する
通常、実行が終わったら自動的に黒い画面も閉じられてしまうのですが、このオプションがあれば、自動的に閉じられてしまう心配を防げます。
-preferences=file.epf
KNIMEの設定を示す、Preferenceをファイルとして取り込んで異なる設定で実行することが可能です。ちなみにKNIMEのPreferenceはExportすることが可能です。
-workflow.variable=my_integer,5,int
実は、変数を渡すことも可能なんです。変数の種類は、Workflow変数なので、Global変数ですね。Workflow変数は右クリックで確認できます。
-workflowFile="KNIME圧縮ファイルパス" KNIMEの圧縮ファイルパス
実は、KNIME workflowをImportしなくても実行できるんです!
まずはExportしてみました。
さて、次にバッチファイルの内容を変更します。
下記が私の例です。内容を変更して実行してみてください!同様に実行できると思います。これでKNIMEにわざわざImportしなくてもいいので便利ですよね。これと変数をうまく使えば、人に渡すときに便利です。
--launcher.suppressErrors エラーが発生しても警告を出さない
エラーが発生しても、バッチ処理を中断しないオプションです。あまり使用用途が思いつかないですが、、、
エラーが起こったらどうなるのか?
最後にエラーが起こったらどうなるかを解説します。Excel WriterのOverwrite設定をOffにしておきます。そうすることで、2回目以降、上書きできずにエラーが出てくるはずです。エラー画面は下記になります。
このように、エラー画面が出てきて止まります。ただし、見てお分かりのように全然なんでエラーが起こったか分からないですよね、、
そこで登場するのが、KNIMEの実行画面です。KNIMEの実行画面の下の方をスクロールすると、エラーがこのように書いてあります!
このエラーメッセージは、Nodeで見えるものと同じですね。英語ですが、エラーメッセージが確認できます。
consoleLogのオプションを付けるのを忘れないようにしてください!また、- no exitのオプションがない場合は、上のエラー画面を閉じると自動的にKNIMEの実行画面も閉じられてしまうので注意が必要です。
LinuxやMacの方へ
今回はWindowsで解説しましたが、オプション自体はWindowsでもMacでも同じはずです。KNIMEのFAQの内容をそのまま掲載しておきます。
There is a command line option allowing the user to run KNIME in batch mode. To see a list of possible arguments execute the following line on a command prompt (for Linux):
1knime -nosplash -application org.knime.product.KNIME_BATCH_APPLICATION
On Mac the executable is not directly located in the KNIME application directory but in a sub folder of the application bundle:
1knime.app
/Contents/MacOS/knime
-nosplash -application org.knime.product.KNIME_BATCH_APPLICATION
On a Windows system, you need to add two more options to enable system messages (by default any message to System.out is suppressed):
1knime.exe -consoleLog -noexit -nosplash -application org.knime.product.KNIME_BATCH_APPLICATI
おわりに
かなり長くなってしまいましたね、いかがでしたでしょうか。1日に何個も回さないといけない人には作ってあげると、完全自動化になりますよね。開発する側がうまく作って共有する人に優しいシステムを作っていきましょう!
ではまた!
次はこちら。
参考リンク
- KNIME公式 FAQ(英語):
- t_kahi さんの blog:
KNIME WorkflowをGUI画面を介さずにコマンドプロンプトで実行する!(Windows) - t_kahi’s blog
-
t_kahi さんの Youtube:初めて存在を知りました。
-
す さんのBlog:Macの方はこちらをご覧ください。
- TugさんのBlog:
KNIMEのworkflowをコマンドで実行(batch mode) Execution KNIME workflow via command line. - Tug-uca’s blog
- KNIME.DEV:
- NUWAVE'S ARTEMIS ANTICIPATORY NETWORK (A2N) Home page: