【OpenRPA】「OpenFlow」と「NodeRED」をローカルインストールしてみる


OpenRPAの記事、ほとんど私しか書いてないですね・・・。
ちまちま記事増やしていきます。

はじめに

以前、開発者ご本人からこんなコメントをもらいました。

@skadefro
Have you seen the new feature of running openflow-nodered locally?

なるほど。OpenFlow-NodeREDをローカルで動かす新機能ですか。

以前に書いた記事では、Dockerを使ってコマンドどーん!で立ち上げたのですが、今回の方法はOpenFlowとNode-REDをサービスとして起動します。
また、「OpenFlowとNode-REDは、それぞれ違うサーバーで動かそう!」といったことができます。

さっそくやってみましょう。

必要なもの

Windowsにインストールする前提です。
以下をあらかじめインストールしておく必要があります。

ダウンロード後、インストーラーに従ってインストールします。

RabbitMQ補足その1

RabbitMQは、Erlangを前提とするためあらかじめインストールしておいてください。
https://www.erlang.org/downloads

RabbitMQ補足その2

RabbitMQの管理画面を有効化する必要があります。
私はこれをやらなかったせいでOpenFlowからシナリオを実行できませんでした。
RabbitMQのインストール完了後、コマンドプロンプトから以下のコマンドを入力します。

"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.8\sbin\rabbitmq-plugins.bat" enable rabbitmq_management

※ パスはインストールしたバージョンその他環境に応じて変えて下さい。

コマンド実行後、http://localhost:15672/ にアクセスし、以下のような画面が表示されることを確認します。

OpenFlowをローカルインストール

OpenRPAのドキュメント (2.2.1. Quickstart Running OpenFlow using NPM )を参考にやっていきます。

buildtoolsのインストール

コマンドプロンプトから以下を実行します。

C:\> npm install --global windows-build-tools

※ マニュアルでは npm install --global windows-built -tools となっています。
  スペルミスっぽいので、上記のコマンドを実行してください。

openflowのインストール

コマンドプロンプトから以下のコマンドを実行します。

openiapのインストール
C:\> npm i openiap -g
+ [email protected]
added 781 packages from 697 contributors in 116.3s
設定ファイルの作成
C:\> openflow-cli --init
Creating openflow.env
サービス登録
C:\> openflow-cli --install openflow
{"message":"Serviceopenflow installed","level":"info"}

初回アクセス

ブラウザから、http://localhost.openrpa.dk にアクセスしてみましょう。
こんな画面が表示されていれば、インストールは成功です。

ユーザーの作成

OpenFlowのユーザーを作ります。
SIGN INボタンの下に英語が書かれていますが、「新しいユーザー名を入力すると、自動的のそのユーザーが作られるよ」とのことです。

自分のメールアドレスと、任意のパスワードを入力して「SIGN IN」を押すと・・・

新しくユーザーが作成されて、サインインできます。

Node-REDをローカルインストール

余談ですが、Node-REDのインストールでかなりハマってました。
マニュアル見てもNode-REDのインストール手順書いてなかったんですよね。
上記のOpenFlowのインストールをやればNode-REDも使えると思っていたので、Node-REDの画面にアクセスすらできなくてかなり悩んでました。

OpenFlowのReadmeを見て、もしかしてコレか!?と試したところでうまくいったので、以下の通りインストールします。

Node-REDのインストール

コマンドプロンプトから以下のコマンドを実行します。

Node-REDのインストール
C:\> npm i openflow-nodered -g
+ [email protected]
added 543 packages from 506 contributors in 92.33s
設定ファイルの作成
C:\> openflow-nodered-cli --init
Creating noderedlocal.env
Creating noderedremote.env
サービス登録
PS C:\WINDOWS\system32> openflow-nodered-cli --install noderedlocal
username? [OpenFlowで作ったユーザー名]
password? [OpenFlowで作ったユーザーのパスワード]
{"message":"signed in as [ユーザ名] with id xxxxxxxxxxxxxxxxxxxxxxxx","level":"info"}
{"message":"websocket.close","level":"verbose"}
{"message":"NodeJS version v12.10.0 Config C:\\WINDOWS\\system32\\noderedlocal.env","level":"info"}
{"message":"Installing servicenoderedlocal","level":"info"}
{"message":"Servicenoderedlocal installed","level":"info"}
{"message":"Quit","level":"info"}

サービス登録の時に、OpenFlowのユーザー名とパスワードを聞かれるので入力してください。

初回アクセス

ブラウザから、http://localhost.openrpa.dk:1880 にアクセスしてみましょう。

こんな画面が出ればインストール成功です。

ログイン

[Sing in with SAML]ボタンを押します。
すでにOpenFlowにログインしているのであれば、SAML認証によってそのままログインできます。
未ログインであればOpenFlowのログイン画面が表示されるので、OpenFlowに作ったユーザーでログインします。

ログインするとこんな画面が表示されます。

これでローカルインストール完了です。

補足:サービスの起動停止

コマンドでやる場合は

OpenFlow起動
openflow-cli --stop openflow
OpenFlow停止
openflow-cli --start openflow
Node-RED起動
openflow-nodered-cli --start noderedlocal
Node-RED停止
openflow-nodered-cli --stop noderedlocal

Windowsのサービスとして登録されているので、サービスの画面からでも起動・停止できます。

補足:設定ファイルについて

サービス登録のコマンドを叩くと、以下の設定ファイルが自動的に作成されます。

  • OpenFlowの設定ファイル
    • C:\Windows\System32\openflow.env
  • NodeREDの設定ファイル(ローカル接続)
    • C:\Windows\System32\noderedlocal.env
  • NodeREDの設定ファイル(デモ環境 app.openiap.io 接続)
    • C:\Windows\System32\noderedremote.env

各設定値の内容まで理解できていないのですが、1つわかっていることだけ。
最初に「OpenFlowとNode-REDは、それぞれ違うサーバーで動かそう!」と書きましたが、Node-REDの設定で、どこのOpenFlowに接続するかを定義すればよさそうです。

noderedlocal.env(一部抜粋)
saml_federation_metadata=http://localhost.openrpa.dk/issue/FederationMetadata/2007-06/FederationMetadata.xml
saml_issuer=uri:localhost.openrpa.dk
api_ws_url=ws://localhost.openrpa.dk
domain=localhost.openrpa.dk
jwt=

4か所のlocalhost.openrpa.dk を、接続したいOpenFlowのURLに書き換えます。
また、openflow-nodered-cli --install noderedlocalを実行すると、そのログイン情報としてjwtが設定されるため、jwtを空白に設定した上で再度openflow-nodered-cli --install noderedlocalコマンドを実行します。

おわりに

OpenFlowとNode-REDに関するチュートリアルは、以下の記事をご覧ください。
【OpenRPA/OpenFlow】Node-REDを使ってRestAPI経由でシナリオ実行する