Node-REDのフローの共有で陥りがちなのが、至る所のノードにURLや固有IDなどの「マジックナンバー」、「マジックストリング」が散らばってしまい、どこを直せばいいのかわからなくなるということがあります
Node-REDのフローを業務内で活用すると、プログラミングスキルがまちまちな現場であっても、視覚的にそのフロープログラミング中で何が行われてるか確認できるというメリットがあると思います
Node.jsがわからない人、むしろプログラミングがわからない人でも、ノードの中の設定値を少し変えてみるという操作はできるはずです。
initフローを作成する
このフローは数分周期で、http POSTをするフローです。
POSTするbodyを変更したり、中でidを変えたりして、その時々でhttp requestなどの内容が変わります。
複数のフローに変更箇所がまたがってしまうと、変更に抜けが出てしまうことがあります。
なるべく、人がいじるところは少なくするべきですね。
起動時にフローを走らせる
「各種設定、初期化フロー」で示しているフローはデプロイやnode-redが起動したタイミングで一度だけ起動するようになっています。
injectノードの設定を下記のように設定しましょう。
設定するノードを1つにまとめる
チームで共有するときには、[config]のノードだけ設定を変更するようにアナウンスしておきます。
このようにflow変数(またはglobal変数)に設定値を代入しています。
functionノードを用いるときは
var hoge = {};
hoge['authorization'] = 'dummyheaders';
flow.set("hoge",headers);
このようにすると、flow.headers
に値を代入できます。(flowをglobalにすればglobal contextに保存できます。)
なるべく頻繁にいじるノードは少なくしたいので、一か所にまとめるように心がけましょう。
設定値の使い方
changeノードで、flow contextの値をmsgオブジェクトに代入したり、functionノードで取得しましょう。
2番目の例のように$flowContext(string)
のJsonata関数も用意されているので、もっと凝った書き方もできると思います。
functionで取得するときはflow.get("device")
のように指定してflow contextを取得できます。
まとめ
チームで開発ではなく、Node-REDフローを活用する際に気を付けることを書きました。
いろんなノードを適宜いじるようにすると絶対ヒューマンエラーが出るので、なるべく手を入れる箇所は少なくなるようにしましょう。