コンテンツにスキップ

フローエディター共通事項

概要

このページでは、ロボシュタインのフローエディターで共通して使用する基本的な考え方について説明します。

各ノードの設定を行う際には、ノード間で受け渡されるデータの仕組みや、データの確認方法を理解しておくと、フローを作成しやすくなります。

主に以下の内容について説明します。

  • msg とは
  • msg.payload / msg.topic とは
  • プロパティの指定方法
  • debugノードでの確認方法
  • context / flow / global の違い
  • JSON形式の基本
  • 機密情報の取り扱い
  • エラー確認の基本

msgとは

ロボシュタインのフローでは、各ノードの間で msg というデータが受け渡されます。 各ノードは、前のノードから受け取った msg をもとに処理を行い、処理結果を次のノードへ渡します。

例えば、メール受信ノードでメールを受信した場合、メールの件名や本文などの情報が msg の中に格納され、後続のノードで利用できます。

メール受信ノード → changeノード → templateノード → メール送信ノード

この場合、メール受信ノードで作成された msg が、changeノード、templateノード、メール送信ノードへ順番に渡されます。

msg.payloadとは

msg.payload は、フロー内で主に受け渡されるデータを格納するプロパティです。 多くのノードでは、処理対象のデータや処理結果が msg.payload に格納されます。

例えば、以下のような用途で使用されます。

  • メール本文
  • APIのレスポンス内容
  • 通知本文
  • ファイルの内容
  • ノードで加工した結果

例:

{
  "payload": "サーバーアラートを検知しました"
}

この場合、msg.payload には「サーバーアラートを検知しました」という文字列が入っています。

msg.topicとは

msg.topic は、件名や分類、処理の識別情報などを格納する際によく使用されるプロパティです。 例えば、switchノードで処理を分岐するための値として利用したり、標準のe-mailノードで件名として利用したりできます。

msg.topic = "サーバーアラート通知";

このように設定しておくと、後続ノードで msg.topic を参照できます。

件名に使うプロパティはノードによって異なります

ロボシュタイン専用のメール送信ノードでは、件名は msg.topic ではなく msg.subject で指定します。
どのプロパティを使うかは、各ノードのページで確認してください。

プロパティの指定方法

msg の中にある値は、プロパティ名を指定して参照します。

指定例 内容
msg.payload payload の値を指定します。
msg.topic topic の値を指定します。
msg.payload.text payload の中にある text を指定します。
msg.payload.subject payload の中にある subject を指定します。
msg.error エラー情報を指定します。

例えば、以下のようなデータがあるとします。

{
  "payload": {
    "subject": "サーバーアラート通知",
    "text": "server01でエラーを検知しました。"
  }
}

この場合、各値は以下のように指定できます。

取得したい内容 指定方法
件名 msg.payload.subject
本文 msg.payload.text

プロパティの指定を誤ると、想定した値を取得できない場合があります。必要に応じてdebugノードで msg の中身を確認してください。

debugノードでの確認方法

debugノードは、フローの途中で msg の中身を確認するためのノードです。 フロー作成時やエラー調査時には、確認したいノードの後ろにdebugノードを接続することで、その時点のデータを確認できます。

例:

メール受信ノード → debugノード
http requestノード → debugノード
functionノード → debugノード

よく確認する値は以下です。

確認対象 内容
msg.payload 主な処理データを確認します。
msg.topic 件名や分類情報を確認します。
msgオブジェクト全体 msg 全体を確認します。
msg.error エラー内容を確認します。

必要な値がどこに入っているか分からない場合は、まずdebugノードの対象を「msgオブジェクト全体」にして確認すると、msg 全体の構造を把握しやすくなります。

debugノードでメール受信データを確認

デバッグタブの使い方はこちらをご確認ください。

context/flow/globalについて

ロボシュタインでは、処理中の値を一時的に保存したり、別の処理から参照したりするために、context、flow、global を使用できます。

種類 内容
context 同じノード内で値を保持します。
flow 同じフロー(タブ)内で値を共有します。
global 複数のフローで値を共有します。

functionノードでは、以下のように値を保存・取得できます。

flowに値を保存する例

flow.set("lastAlertTime", new Date().toISOString());
return msg;

flowから値を取得する例

msg.lastAlertTime = flow.get("lastAlertTime");
return msg;

注意点

ロボシュタインでは、context、flow、global に保存した値はメモリ上に保持されるため、インスタンスの再起動などで値が消える場合があります。 再起動後も確実に値を保持したい場合は、sqliteノードなどのデータベースやファイル保存など、別の保存方法を検討してください。

JSON形式の基本

ロボシュタインでは、APIレスポンスや設定値などでJSON形式のデータを扱うことがあります。 JSONは、キーと値の組み合わせでデータを表現する形式です。

例:

{
  "status": "error",
  "level": "critical",
  "host": "server01"
}

このデータが msg.payload に入っている場合、各値は以下のように扱えます。

取得したい内容 指定例
ステータス msg.payload.status
レベル msg.payload.level
ホスト名 msg.payload.host

JSONを記述する場合は、以下に注意してください。

  • キーはダブルクォーテーションで囲む
  • 文字列の値もダブルクォーテーションで囲む
  • 区切りにはカンマを使用する
  • 最後の項目の後ろにはカンマを付けない

誤った例:

{
  "status": "error",
  "level": "critical",
}

正しい例:

{
  "status": "error",
  "level": "critical"
}

JSON形式が正しくない場合、ノードの設定エラーや実行時エラーにつながることがあります。

機密情報の取り扱い

フロー内では、APIキー、パスワード、Bearerトークン、認証ヘッダーなどの機密情報を扱う場合があります。 機密情報を扱う際は、以下に注意してください。

  • APIキーやパスワードをノード名に含めない
  • debugノードで機密情報を表示しない
  • 画面キャプチャを取得する場合は、認証情報をマスキングする
  • マニュアルや社内資料に掲載する場合は、実際の値をダミー値に置き換える
  • 必要に応じて環境変数や認証情報管理の仕組みを利用する

例:

Authorization: Bearer xxxxx

上記のような値を資料に掲載する場合は、実際のトークンではなくダミー値を使用してください。

エラー確認の基本

フロー実行中にエラーが発生した場合は、debugノードやcatchノードを使用して内容を確認します。

debugノードで確認する場合

処理結果や値の中身を確認したい場合は、対象ノードの後ろにdebugノードを接続します。

functionノード → debugノード

catchノードで確認する場合

ノード内で発生したエラーを検知したい場合は、catchノードを使用します。

catchノード → debugノード

catchノードで取得したエラー情報は、msg.error に格納されます。 よく確認する内容は以下です。

確認対象 内容
msg.error.message エラーメッセージを確認します。
msg.error.source エラー発生元のノードの情報(名前、種類、ID)を確認します。
msg.payload エラー発生時に渡されていたデータを確認します。

エラー調査では、まずエラー内容を確認し、その後、エラー発生前後の msg の中身を確認すると原因を特定しやすくなります。

よくある確認ポイント

フローが想定どおりに動作しない場合は、以下を確認してください。

確認ポイント 内容
値が想定したプロパティに入っているか msg.payload.text など、指定しているプロパティが正しいか確認します。
msg.payload の形式が想定どおりか 文字列、JSON、配列など、後続ノードが想定する形式になっているか確認します。
条件分岐の値が一致しているか switchノードの条件と実際の値に差異がないか確認します。大文字・小文字の違いにも注意します。
余分な空白や改行が含まれていないか 文字列比較がうまくいかない場合に確認します。
HTTPステータスコードが想定どおりか API連携時は msg.statusCode を確認します。
エラーが発生していないか catchノードやdebugノードで msg.error を確認します。

まとめ

フローエディターでは、各ノードの間で msg が受け渡されます。

msg.payload や msg.topic などのプロパティを理解しておくことで、各ノードの設定やデータ加工を行いやすくなります。

フロー作成時は、必要に応じてdebugノードで msg の中身を確認しながら、各ノードで必要な値を設定・加工してください。

また、context、flow、global、JSON形式、機密情報、エラー確認などは複数のノードで共通して関係するため、個別ノードの設定とあわせて理解しておくと、より安定したフローを作成できます。