デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - これで完全自動化! - KNIMEを立ち上げずに実行する - バッチファイル・コマンドプロンプト

 

 

はじめに

完成したWorkflow、毎日実行している方、こんなこと思ったりしませんか?

「いちいちKNIME立ち上げて、全選択 --> Reset --> Execute All、めんどくさい!」

KNIMEを実行するのに、ダブルクリック、何ならノータッチで実行したいという方、その願い叶えます。ただし、黒い画面にはビビらないでくださいね!

 

※今回はWindows PCを使っていることを前提に説明をします。

MACを使用している方は、すさんのBlogをご確認ください。

sumtat.hatenablog.com

 

Linuxを使用している方は、各コマンドをLinuxに当てはめていただけるとできるかと思います。KNIMEの公式FAQにも記載あるので参考にしてみてください。

 

 

 今回のテーマ ~バッチファイル~

 

f:id:makkynm:20200926185239j:plain

そもそもバッチファイルって何?って人は、下記の記事を先にご覧ください。

degitalization.hatenablog.jp

 

 

覚えてほしいこと

バッチファイルを使えばダブルクリックでKNIMEを立ち上げずに実行できる

 

やりたいこと

完全自動化するには下記を実現できればいいですよね。

「ダブルクリックでKNIME workflowを自動的に実行する」

そのためにはバッチファイルを用意して、ダブルクリックで実行できるようにする必要があります。

 

事前準備

 さて、今回はKNIMEを実行させるバッチファイルを用意しましょう。

まずは事前準備として、KNIME workflowとバッチファイルを用意しましょう。

KNIME workflowを用意する

今回はものすごく簡単なKNIME workflowを用意しました。Excelを読んで吐き出すだけです。実行すると、読み込んだExcelファイルを”_out”という名前でそのまま書き出します。

f:id:makkynm:20201003112722p:plain

Workflow

f:id:makkynm:20201003112827p:plain

実行後

 

バッチファイルを用意する

以前作ったメモ帳を実行させるバッチファイルをコピーして編集でも構いません!

f:id:makkynm:20200926155645p:plain

バッチファイルを用意しましょう。後程中身を編集します。

 

バッチファイルを編集する

まずは中身からお見せします。コピペしてから、編集してみましょう!

Step1 - コピペしてみる

cd C:\Program Files\knime_4.1.2
knime.exe -nosave -nosplash -reset -consoleLog -application org.knime.product.KNIME_BATCH_APPLICATION -workflowDir="C:\Users\makky\knime-workspace\00Blog\BAT\KNIME_BAT_Run_Test"

Step2 - KNIMEの実行ファイルのパスをコピペ

さて、インストールした時に、Exeファイルのショートカットを作っていたのを覚えていますでしょうか。今回はその場所を使います。

degitalization.hatenablog.jp

 まずは、knime.exeというexeファイルをパソコン内で探します。インストールした時に使ったと思います。

このフォルダの場所と、ファイルの名前を上の部分にコピペしましょう。

f:id:makkynm:20201003120656p:plain

実行ファイルのパスをコピペ

 

Step3 - 実行したいWorkflowのパスをコピペ

さて、続いて実行したいWorkflowのパスをコピペします。以前、各KNIME workflowはフォルダとして存在しているといったこと、覚えていますでしょうか。

degitalization.hatenablog.jp

 

Workflow spaceのフォルダからフォルダパスを取得して、コピペしましょう。

f:id:makkynm:20201003121730p:plain

Workflowのフォルダパスをコピペする

 

Workflowのフォルダパスの簡単な見つけ方

とはいえ、WorkflowのPCの保存先なんてあんまり覚えていないですし、忘れますよね。そこで、簡単にフォルダパスを取得できる方法をご紹介します。

実行したいWorkflowを右クリックして、Copy Location>Local pathをクリックすると、コピーが可能です!

f:id:makkynm:20201003122313p:plain

Workflowのフォルダパスを簡単に見つける

 

Step4 - ダブルクリックで実行

最後にダブルクリックで実行していきましょう!

f:id:makkynm:20201003123011p:plain

ダブルクリックで実行

黒い画面が2つ出てきたと思います。実行が正常終了すると、自動的に閉じます。

1つはコマンドプロンプトの画面で、もう一つはKNIMEの画面です。(普段はGUIとして立ち上がっていますが、今回は文字だけのCUIとして立ち上がっています。)

最初の方に出てくる文字の羅列は、KNIMEを立ち上げているときのログデータです。

f:id:makkynm:20201003123208p:plain

コマンドプロンプト画面

f:id:makkynm:20201003123311p:plain

KNIMEの実行画面(バッチファイル)

 

 

 

 ちょっと一言

各Optionの解説

さて、説明していませんでしたが間に色々なオプション(ハイフン - に続いていた呪文)があったかと思います。それらについて解説していきたいと思います。

ちなみに、これらのオプションは順不同です。

-nosave 保存しない

このOptionは簡単ですね。実行後、KNIMEにデータを保存するかを指定します。

 

-nosplash KNIMEの立ち上げ画面を表示しない

スプラッシュ画面を表示しないというオプションです。スプラッシュ画面とは下図の画面で、KNIMEの立ち上げ画面のことです。使用を推奨します。

f:id:makkynm:20201003124218p:plain

スプラッシュ画面

 

-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 実行終了時には確認する

通常、実行が終わったら自動的に黒い画面も閉じられてしまうのですが、このオプションがあれば、自動的に閉じられてしまう心配を防げます。

f:id:makkynm:20201003130653p:plain

noexitオプション

 

 -preferences=file.epf

KNIMEの設定を示す、Preferenceをファイルとして取り込んで異なる設定で実行することが可能です。ちなみにKNIMEのPreferenceはExportすることが可能です。

f:id:makkynm:20201003131115p:plain

PreferenceのExport

 

-workflow.variable=my_integer,5,int

実は、変数を渡すことも可能なんです。変数の種類は、Workflow変数なので、Global変数ですね。Workflow変数は右クリックで確認できます。

f:id:makkynm:20201003131307p:plain

Workflow変数
-workflowFile="KNIME圧縮ファイルパス" KNIMEの圧縮ファイルパス

実は、KNIME workflowをImportしなくても実行できるんです!

まずはExportしてみました。

f:id:makkynm:20201003131718p:plain

WorkflowのExport

 

さて、次にバッチファイルの内容を変更します。

下記が私の例です。内容を変更して実行してみてください!同様に実行できると思います。これでKNIMEにわざわざImportしなくてもいいので便利ですよね。これと変数をうまく使えば、人に渡すときに便利です。

cd C:\Program Files\knime_4.1.2
knime.exe -nosave -reset -nosplash -consoleLog -application org.knime.product.KNIME_BATCH_APPLICATION -workflowFile="C:\Users\makky\knime-workspace\00Blog\BAT\KNIME_BAT_Run_Test.knwf"

 

 

--launcher.suppressErrors エラーが発生しても警告を出さない

エラーが発生しても、バッチ処理を中断しないオプションです。あまり使用用途が思いつかないですが、、、

 

エラーが起こったらどうなるのか?

最後にエラーが起こったらどうなるかを解説します。Excel WriterのOverwrite設定をOffにしておきます。そうすることで、2回目以降、上書きできずにエラーが出てくるはずです。エラー画面は下記になります。

f:id:makkynm:20201003125825p:plain

エラー画面

このように、エラー画面が出てきて止まります。ただし、見てお分かりのように全然なんでエラーが起こったか分からないですよね、、

そこで登場するのが、KNIMEの実行画面です。KNIMEの実行画面の下の方をスクロールすると、エラーがこのように書いてあります!

このエラーメッセージは、Nodeで見えるものと同じですね。英語ですが、エラーメッセージが確認できます。

consoleLogのオプションを付けるのを忘れないようにしてください!また、- no exitのオプションがない場合は、上のエラー画面を閉じると自動的にKNIMEの実行画面も閉じられてしまうので注意が必要です。

f:id:makkynm:20201003130156p:plain

エラーメッセージ

 

 

LinuxMacの方へ

今回は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):

1
knime -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:

1
knime.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):

1
knime.exe -consoleLog -noexit -nosplash -application org.knime.product.KNIME_BATCH_APPLICATI

 

おわりに

 かなり長くなってしまいましたね、いかがでしたでしょうか。1日に何個も回さないといけない人には作ってあげると、完全自動化になりますよね。開発する側がうまく作って共有する人に優しいシステムを作っていきましょう!

 ではまた!

 

 

 次はこちら。

degitalization.hatenablog.jp

 

 

参考リンク