Appendix D: Rule Node Reference Guide
Overview
Applicable Role: Tenant Administrator (rule chain configuration and management permissions); System Administrators and End‑Users may consult this appendix for reference only.
Rule Nodes are the building blocks of ThingsEye rule chains. Each node processes one incoming message at a time and routes the processing result to downstream nodes via named relations (Success, Failure, True, False, or custom names). The built‑in rule nodes in ThingsEye are divided into seven categories: Filter, Enrichment, Transformation, Action, External, Flow, and Generator.
Note: Generator nodes are primarily used for testing and development scenarios and are omitted from this document. For specific configuration interfaces of each node, refer to the actual platform version. For detailed rule chain configuration workflows, see "Rule Chain Management".
D.1 Filter Nodes
Filter nodes are routing and conditional evaluation components in the rule engine. They inspect incoming messages and decide which downstream nodes the messages should be routed to based on various conditions. Filter nodes do not modify message content or perform system actions; they are used purely to determine the processing path of messages. Typical output relations are "True/False" or named connections corresponding to the filter conditions.
| Node Name | Description |
|---|---|
| Alarm Status Filter | Routes messages based on whether the alarm status matches the configured status |
| Asset Profile Switch | Routes messages based on the profile name of the source Asset |
| Check Fields Presence | Routes messages based on whether specified fields exist in the message data or metadata |
| Check Relation Presence | Routes messages based on whether a specified relation exists between the message originator and the target entity |
| Device Profile Switch | Routes messages based on the profile name of the source Device |
| Entity Type Filter | Routes messages based on whether the source entity type matches the configured type |
| Entity Type Switch | Routes messages to different connections based on the source entity type |
| GPS Geofencing Filter | Routes messages based on whether GPS coordinates fall within the configured geofence boundary |
| Message Type Filter | Routes messages based on whether the message type matches the configured type |
| Message Type Switch | Routes messages to different connections based on the message type |
| Script Filter | Routes messages via a custom boolean script (JavaScript/TBEL) to evaluate conditions |
| Switch | Routes messages to one or more connections via a script |
Among these, Script Filter is the most flexible node, allowing arbitrary conditional logic to filter messages.
D.2 Enrichment Nodes
Enrichment nodes are used to include contextual data about the message originator, related entities, and other context in outbound messages for subsequent processing steps in the rule chain. These nodes query relevant information from the ThingsEye database and add it to the message metadata or payload.
| Node Name | Description |
|---|---|
| Calculate Delta | Calculates the difference between the current value and the previous value from the same originator, optionally including elapsed time |
| Customer Attributes | Adds server‑side attributes or latest time‑series data of the customer that owns the originator |
| Customer Details | Adds details of the customer that owns the originator (name, email, address, etc.) |
| Fetch Device Credentials | Adds credentials (type and value) of the originator device |
| Originator Attributes | Adds client/shared/server‑side attributes of the message originator |
| Originator Fields | Adds details of the message originator (e.g., name, type, etc.) |
| Originator Telemetry | Adds historical time‑series data of the message originator over a specified time interval |
| Related Device Attributes | Enriches messages by fetching attributes or telemetry from related devices |
D.3 Transformation Nodes
Transformation nodes are used to change the fields of incoming messages, including Originator, Message Type, Payload, and Metadata.
| Node Name | Description |
|---|---|
| Change Originator | Replaces the message originator with another entity (e.g., customer, tenant, related entity, alarm originator, or entity found by name pattern) |
| Copy Key-Value Pairs | Copies specified key‑value pairs between message data and metadata in either direction |
| Deduplication | Buffers messages from the same originator within a configured time window and emits only the first one |
| JSON Path | Extracts the portion of the message specified by a JSON path |
| Rename Keys | Renames keys in message data or metadata according to a configured mapping |
| Script Transformation | Changes the message payload, metadata, or message type via a JavaScript/TBEL function |
| To Email | Transforms the message into an email format |
| Duplicate To Group | Duplicates messages to entity groups |
| Duplicate To Related | Duplicates messages to related entities |
D.4 Action Nodes
Action nodes are the execution components of the rule engine, performing concrete operations and side effects based on messages flowing through the rule chain.
| Node Name | Description |
|---|---|
| Add To Group | Adds the message originator to a found entity group based on a group name pattern |
| Assign To Customer | Assigns the message originator to a specified customer |
| Calculated Fields | Triggers field calculation processing for time‑series or attribute data without persisting raw data to the database |
| Change Owner | Changes the ownership of the message originator to a specified tenant or customer |
| Clear Alarm | Clears an existing active alarm for the message originator |
| Copy To View | Copies attribute changes of a device or asset to associated entity views |
| Create Relation | Creates a relation between the message originator and a configured target entity |
| Create Alarm | Creates or updates an alarm for the message originator |
| Remove From Group | Removes the message originator from an entity group |
| Generate Report | Generates a report |
| REST Call Reply | Replies to a REST API call |
D.5 External Nodes
External nodes are used to publish or transmit data to target systems outside ThingsEye, including cloud platforms, messaging systems, communication services, etc.
| Node Name | Description |
|---|---|
| AI Request | Sends a request to an AI service (OpenAI, AWS Bedrock, Anthropic, etc.) and returns the AI‑generated response |
| AWS Lambda | Synchronously invokes an AWS Lambda function with the message data as the payload |
| GCP Pub/Sub | Publishes message data to a Google Cloud Pub/Sub topic |
| Kafka | Publishes message data to an Apache Kafka topic |
| RabbitMQ | Publishes message data to a RabbitMQ exchange |
| Send Email | Sends an email |
| REST API Call | Calls an external REST API |
| Push to Cloud | Pushes data from an Edge instance to the cloud |
| Push to Edge | Pushes data from the cloud to an Edge instance |
D.6 Flow Nodes
Flow nodes control how messages flow between different parts of the rule engine.
| Node Name | Description |
|---|---|
| Acknowledge | Acknowledges a message in the queue and forwards it to the next node |
| Checkpoint | Transfers a message to a specified queue, used for sequential processing or separating different workloads |
| Rule Chain | Forwards a message to a specified rule chain |
| Output | Returns the processing result of a child chain to the Rule Chain node that called it |
D.7 Message Type Reference
Every message in the rule engine carries a type identifier that tells the rule nodes what event triggered the message. The following are common built‑in message types in ThingsEye:
| Message Type | Display Name | Source Entity | Description |
|---|---|---|---|
| POST_ATTRIBUTES_REQUEST | Post attributes | Device | Device reports attribute updates |
| POST_TELEMETRY_REQUEST | Post telemetry | Device | Device reports telemetry data |
| TO_SERVER_RPC_REQUEST | RPC Request from Device | Device | RPC request initiated by the device |
| RPC_CALL_FROM_SERVER_TO_DEVICE | RPC Request to Device | Device | RPC request initiated by the platform to the device |
| ACTIVITY_EVENT | Activity Event | Device | Device activity event |
| INACTIVITY_EVENT | Inactivity Event | Device | Device inactivity event |
| CONNECT_EVENT | Connect Event | Device | Device connection event |
| DISCONNECT_EVENT | Disconnect Event | Device | Device disconnection event |
| ENTITY_CREATED | Entity Created | Any entity | Entity creation event |
| ENTITY_UPDATED | Entity Updated | Any entity | Entity update event |
| ENTITY_DELETED | Entity Deleted | Any entity | Entity deletion event |
| ENTITY_ASSIGNED | Entity Assigned | Any entity | Entity assignment event |
| ENTITY_UNASSIGNED | Entity Unassigned | Any entity | Entity unassignment event |
| ADDED_TO_ENTITY_GROUP | Added to Group | Any entity | Added to entity group event |
| REMOVED_FROM_ENTITY_GROUP | Removed from Group | Any entity | Removed from entity group event |
| ATTRIBUTES_UPDATED | Attributes Updated | Any entity | Attribute update event |
| ATTRIBUTES_DELETED | Attributes Deleted | Any entity | Attribute deletion event |
| ALARM | Alarm event | Any entity | Alarm event |
| ALARM_ASSIGNED | Alarm Assigned | Any entity | Alarm assignment event |
| ALARM_UNASSIGNED | Alarm Unassigned | Any entity | Alarm unassignment event |
| COMMENT_CREATED | Comment Created | Any entity | Comment creation event |
| COMMENT_UPDATED | Comment Updated | Any entity | Comment update event |
| REST_API_REQUEST | REST API Request to Rule Engine | Any entity | Request initiated to the rule engine via REST API |
Hint: Any rule node or integration can generate messages with custom type strings; custom types are not listed in the table above and depend on the specific rule chain configuration. Use the Message Type Switch or Message Type Filter nodes to route custom message types.