Nodes Overview


A device integration flow consists of multiple nodes connected head-to-tail, where each node processes the input message and relays the output message (either processed or unprocessed input message containing both msg and metadata) to its downstream nodes or other EnOS services.


You can use the Flow Designer in the EnOS Management Console to drag and drop the nodes into the canvas to form integration flows as per your requirements.

Node Types

The nodes in Flow Designer are divided into the following types.

  • Server

    The purpose of a server node is to establish the corresponding server as the starting point of an integration flow and trigger the subsequent flow process.

  • Trigger

    The purpose of a trigger node is to trigger an integration flow without any input. Therefore, it does not have an entry point.

  • Logic

    A logic node does not change the content of the input message but only processes the message’s format, orchestrates message relay and execution, or clip the message as required.

  • Action

    An action node initiates an action with its input message: making a query to a server, uploading or downloading files, or zipping/unzipping files.

  • Advanced

    An advanced node is a combination of several non-advanced nodes in functionality. It is designed for industry-level solutions.

Expressions

There are two parts to a message: msg and metadata. The msg is the payload and the metadata contains attribute information in JSON format, for example, that are passed down from node to node via the input and output messages. You can use expressions to retrieve certain information from the node’s input msg or metadata, if they are a standard JSON object, for node processing.


The expression ${msg.key} for example, can quickly retrieve a key-value pair, where key is the key of a key-value pair in the JSON. See the below, where a node receives the following JSON object as its input message:

{
    "assetId":"Inverter",
    "timestamp":24214324324,
    "measurepoints":{
        "temperature":22.4,
        "humidity":78
    }
}


Using the following expressions will return these values respectively.

Expression Returned Value
${msg.assetId} Inverter
${msg.measurepoints.humidity} 78


Similarly, if a node supports using expressions to refer to a value in its JSON metadata, you can use ${metadata.key} to return the required value, where key is the key of a key-value pair in the metadata. For example, for the Task Manager node, every task object has a unqiue task ID which is stored in the metadata and can be referred to by the expression ${metadata.taskId}.

Note

Expressions can only be used for JSON objects, not JSON arrays. You must convert any non-JSON input into JSON objects if you want to use an expression. Use the Script node to help you convert the input.