Skip to main content

Rule Engine

Try a comparison first​

Create a writable Memory.ManualValue using Memory Computation, then use this isolated input for the first flow.

  1. Add a rule and drag Variable Notification Rule onto the canvas.
  2. Set DeviceNames=Memory and VariableNames=ManualValue; leave other filters empty.
  3. Add Greater Than, set its initial InputB to 100, and connect notification Result to InputA.
  4. Save and enable the flow. Write 101 to the memory point, select the comparison, open the Runtime tab, and inspect Real-time Parameter Values: inputs should be 101 and 100, with Result=true.
  5. Write 99 and then 100; both should produce false. Writing the same value repeatedly may produce no new change notification.
  6. Disable the practice flow when finished.

Variable notification connected to Greater Than, with Result true for 101

The configured initial input and current runtime input are different views. A connected InputA receives its value from upstream. This practice flow only compares values; later control examples require separate write permissions and field feedback.

The rule engine is used to process collected data, memory variables, and external events through a visual process. Users can drag trigger nodes, check nodes, compute nodes, push nodes, etc., into the canvas, organize execution sequences by connecting lines, then save and activate workflows.

Complete rule-engine execution flow from loading a workflow to triggering downstream nodes

First, look at the terminology​

TerminologyOn-site understanding
Rules and flowsA set of automated processing logic, For example, "After pressure changes, determine whether to trigger an alarm and write the result to a memory variable."
NodeA processing step in the process, similar to a functional block in an electrical diagram.
Trigger NodeDecide when the process will start executing, such as variable changes, timed triggers, or external event triggers.
Judgment node / Calculation node / Push nodeUsed respectively to judge conditions, calculate results, and send results to downstream systems or other nodes.
CanvasDrag-drop nodes, line connections, and layout adjustment editing areas.
Connectiondata transfer relationships between nodes. The direction is usually connected from the upstream output port to the downstream input port.
Input / Output / Input/Output ParametersInput is the data received by the node, output is the result processed by the node, and input and output parameters can be modified by the node and continued to be passed.
StabilizationRepeatedly triggered within a short time frame to avoid frequent process execution when the same value fluctuates rapidly.
CSVImport and export files for a single process canvas, suitable for backing up nodes, wiring, and layout.

Function Entry​

After logging into TGateway Web, click the left menu "Develop Configuration → Rule Engine".

Rule Engine Page

Create and edit a flow​

Process List​

Rule Engine List is used to manage basic process information, start-stop status, and batch import and export.

Area or columnDescription
Search nameQuery list by process name. After entering keywords, pressing Enter or clearing the input box will refresh the results.
Add rulesCreate new rule flows. The page will first ask you to enter the process name, and after successful creation, the process editor will automatically open.
Export ExcelExport rule flow configuration according to current search criteria, suitable for backup, migration, and batch maintenance.
Importing ExcelImport rule flow from Excel files. After the import is complete, the page will display the number of successes or reasons for failure.
Batch DeleteAfter checking the process, batch delete the files. Before deletion, confirm that the process is no longer involved in production operations.
RefreshReload the flow list and available custom nodes.
Process NameRule Process Name. The name should reflect the purpose of the process and facilitate log checking.
DescriptionProcess Purpose Description. The list shows - when empty.
VersionProcess version number. The new creation process starts by default from v1.
Statusshows "Enabled" or "Disabled."
Operation"Details" to enter the process editor; In "More," you can enable, disable, or delete workflows.

New Process​

  1. Click "Add Rule" in the upper right corner of the list.
  2. Enter the process name in the prompt box.
  3. After clicking Confirm, the system creates the default enabled v1 flow and enters the process editor.
  4. Maintain process descriptions, trigger methods, nodes, wiring, and parameters in the editor.
  5. Click "Save" in the upper right corner. After a successful save, the rules engine will reload the process.

Process Editor​

Click "Details" in the flow line to enter the process editor.

Process Editor Page

AreaDescription
Top Information AreaDisplays process name, process description, version number, and trigger method. Process names and descriptions can be directly edited.
Save ButtonSave the current flow name, description, trigger method, canvas nodes, connections, and node parameters.
Back buttonReturns the list of rule flows. Before leaving, make sure the current modifications have been saved.
Stabilization / Unlimited Triggers"Stabilization" merges short-term repeated changes; "Unlimited trigger" directly triggers downstream nodes with each change.
Export CSVExport nodes, connections, positions, and node properties from the current editor canvas, suitable for backup of a single workflow structure.
Import CSVRestore the current process canvas from the CSV file. After importing, check the node type, wiring, and parameters before saving.
Auto-LayoutRearrange the canvas based on the current nodes and connections. Used when there are many nodes or intersecting wiring.
Delete the selectedDelete the currently selected node or line.
Left node panelDisplays available nodes by category, supports searching by node name and filtering by category.
Middle CanvasDrag nodes, connect ports, adjust layout, select nodes or wiring.
Right Properties PanelDisplays after selecting a node, used to edit node names, view node types, and fill in input and input parameters.
Runtime Log PanelView the rule engine runlogs, supports filtering by level, time range, and keyword, and exports the current page or all logs.

Node Panel​

Nodes in the node panel come from loaded built-in nodes and custom nodes. Common categories include holding, comparison operations, edge detection, variable RPC, constants, flip-flops, timers, counters, type conversion, logical operations, data statistics, data push, mathematical operations, conditional checks, and string processing.

OperationDescription
Search NodeEnter the node name or identification keyword in "Search Node", Quickly locating nodes.
Category FilteringSelect a category in the "All" dropdown to display only nodes under that category.
Expand/Collapse GroupsClick the category title to expand or collapse node groups.
Add nodeDrag nodes from the left panel onto the canvas. After dragging in, select the node and check the parameters in the properties panel.

If a node does not appear in the list, first confirm that the corresponding script or custom node has been successfully compiled, then refresh the rules engine page.

Canvas Operations​

OperationsSteps
Add NodesDrag nodes from the left node panel onto the canvas.
Connect to NodesDrag from one node port to another to establish data transfer relationships. The connection direction should point from the upstream output port to the downstream input port.
Configure NodesSelect the node and modify the node name, input parameters, and input/output parameters in the right properties panel.
Rename the nodeDouble-click the node on the canvas to enter the new node to display the name.
Delete nodes or connectionsAfter selecting nodes or connections, click "Delete and Select".
Auto LayoutClick "Auto Layout" to have the system rearrange nodes according to the current connection relationships.
Save ProcessClick "Save" in the upper right corner to save the current canvas and parameters.

Node Parameters​

Node parameters are determined by the node type. Different nodes display different inputs, outputs, and input/output parameters.

Parameter TypeDescription
Input ParameterReceive data from the upstream node, You can also enter the initial value in the properties panel.
Output ParameterThe output value processed by the node can be connected to downstream nodes.
Input/Output ParametersCan receive upstream data and continue output after node processing.
Customizable initial input parametersSome nodes support filling initial input values in the properties panel, used for scenarios without upstream input or default values.
Real-time Parameter ValuesAfter the process is enabled and running, the property panel and node port display the input, output, and input/output values of the current node.

When configuring parameters, confirm that data types, variable names, device names, and upstream and downstream nodes match. When connection fails or runtime results are abnormal, prioritize checking port direction, parameter names, parameter types, and process enabled status.

Advanced Execution Policy​

Select a node, open the Configuration tab, and expand Advanced Execution Policy. These settings govern that node and have no business input ports.

ParameterDescription
OutputOnlyOnChangeDefaults to true. State outputs propagate only when the value changes; disable it to propagate every assignment. Event outputs may deliver the same value repeatedly. This setting does not limit sends performed by the node itself.
ExecutionTimeoutMillisecondsDefault 30000 ms; range 100–600000. Total deadline for one execution, including all attempts and backoff, rather than a fresh timeout for each attempt.
MaxExecutionAttemptsDefault 1; range 1–5, including the initial attempt. Only explicitly recognized transient failures can be retried. Setting 2 does not retry every error.
RetryBackoffMillisecondsDefault 250 ms; range 0–60000. Base wait before the first retry; subsequent base waits double, capped at 60000 ms. No retry means no backoff.
RetryJitterMillisecondsDefault 100 ms; range 0–10000. Adds a random wait from zero through this limit to each backoff. Set 0 to disable jitter.

Allow enough total time for processing and backoff. A deadline does not undo a device write or message already sent. Once device writes, MQTT, email, or Webhook operations have started, an unconfirmed outcome can be UnknownEffect; increasing attempts does not blindly resend them. Check the actual device or receiver first. Business rejection, cancellation, and timeout are not general retry conditions.

Runtime Values and Execution Results​

Open the Runtime tab. Check the observation time and latest execution status before reading input, output, and input/output values. Expand Diagnostics for the flow instance, loaded version, snapshot sequence, latest execution ID, error code, and counters. After saving, confirm the current instance and loaded version. Expired observations or failed observation requests can retain old values; those values do not prove that the latest input ran.

Latest execution statusAction
SucceededNode execution succeeded; verify the business effect at the device or receiver.
BusinessRejectedResolve invalid parameters, permissions, disablement, or an explicit remote rejection using its error code.
FaultedInspect the error and actual attempt count to distinguish configuration errors from transient failures.
TimedOutCheck external latency, retries, backoff, and the total deadline.
CanceledCheck flow stop, reload, or cancellation.
UnknownEffectAn external operation started without confirmation. Read the device or inspect receiver records before deciding what to do next.

To observe execution in the flow, connect the ExecutionResult event output to the execution-error catch node’s Input. Successful executions are also observed, but the catch node emits only failures as errors. Connect business values separately; do not use execution events as device write values.

Import and Export​

Rule engines have two types of import and export entries, each with different scopes.

EntryLocationPurpose
Export ExcelProcess List ToolbarExport process list configuration, suitable for batch backup and migration of multiple processes.
Import ExcelWorkflow List ToolbarBatch import workflows from Excel. After importing, you should open the details to check each process.
Export the CSVProcess Editor ToolbarExport the current flow canvas nodes, lines, positions, and node properties.
Import the CSVProcess Editor toolbarRestore the current flow canvas structure. After importing, check the nodes, wiring, and parameters.
Export LogsRun Log PanelExport the current page or all rule run logs for troubleshooting and archiving.

Before importing, it is recommended to have a pre-existing process as a backup. Do not enable production immediately after importing; instead, open the process editor first to check node type, wiring direction, parameter values, and runlogs.

Nodes and triggers​

Variable, Event, and Writeback Nodes​

These nodes consume Gateway variable, alarm, and device-status events directly. Event nodes do not require an upstream input. After the process is enabled, they wait for the corresponding event and emit only when all filters match. Separate multiple names or enum values with commas; leave a filter empty to match all values.

Variable Notification Rule​

The Variable Notification Rule node under Trigger listens for value changes from online variables. Use it to feed collection values into threshold checks, recording, or notification flows. A successful match emits both the current value and the complete variable data object.

DirectionParameterDefaultDescription
InputDeviceNamesEmptyDevice-name list separated by commas. Empty matches all devices.
InputVariableNamesEmptyVariable-name list separated by commas. Empty matches all variables.
InputCollectGroupsEmptyCollection-group list separated by commas. Empty matches all groups.
OutputResult-The current Value of the matched variable. Connect it to numeric, logic, or conversion nodes.
OutputVariableBasicData-The complete variable data object. Connect it to Data or InputData on Webhook, email, or MQTT nodes.

Offline variables do not trigger this node. Use VariableBasicData when the downstream payload needs the device name, variable name, collection group, online state, change time, or collection time.

Alarm Notification Rule​

The Alarm Notification Rule node under Trigger listens for alarm lifecycle events and filters them by level, device, event type, and alarm type. A match emits the original alarm object through FilteredAlarmData.

DirectionParameterDefaultDescription
InputMinAlarmLevel0Ignore alarms below this level. 0 disables level filtering; the usable range follows the variable alarm configuration.
InputDeviceNamesEmptyDevice-name list. Empty matches all devices.
InputEventTypesEmptyRestart, PrepareAlarm, Alarm, PrepareFinish, Finish, Confirm, or ConfirmAndFinish. Empty matches all events.
InputAlarmTypesEmptyOpen, Close, HH, H, L, LL, Custom, or State. Empty matches all types.
InputDebounceMs0Debounce interval for the same device and variable, in milliseconds. 0 disables debouncing.
InputEnabledtrueIgnore alarm events when disabled.
OutputFilteredAlarmData-The matched alarm object. Connect it to a notification node's Data input.

Device Notification Rule​

The Device Notification Rule node under Trigger listens for device-status changes. It is useful for offline alarms, recovery notices, and routing by collection plugin.

DirectionParameterDefaultDescription
InputDeviceNamesEmptyDevice-name list. Empty matches all devices.
InputDeviceStatusesEmptyOnLine, OffLine, or Pause. Empty matches all statuses.
InputPluginNamesEmptyCollection-plugin name list. Empty matches all plugins.
InputDebounceMs0Debounce interval for the same device, in milliseconds. 0 disables debouncing.
InputEnabledtrueIgnore device-status events when disabled.
OutputFilteredDeviceData-The matched device data object. Connect it to a notification node's Data input.

Variable RPC Node​

The Variable RPC Node calls a variable's RPC write capability from a rule flow. It resolves the variable by DeviceName and VariableName, converts WriteData to JSON, and invokes the variable runtime RPC. It does not bypass variable permissions or call a driver directly.

DirectionParameterDescription
InputDeviceNameTarget device name. It must exactly match the running device.
InputVariableNameTarget variable name. The variable must expose executable RPC/write capability.
InputWriteDataScalar, object, or array value or method arguments passed as JSON.
OutputResultOperResult<object> operation result. Connect success or failure handling to a condition or log flow.

Place this node after a rising-edge, button, or interlock check to avoid repeated writes from high-frequency changes. Verify Result, the variable-write log, and the actual device action. Missing variables, disabled permissions, or paused devices produce a failed result.

MQTT Client Upload Node​

The Mqtt Client Upload node under Data Push publishes each InputData event as UTF-8 JSON. It supports TCP MQTT and WebSocket MQTT. Initialization does not connect or upload. The first send, a disconnected client, or changed connection settings establish a connection within that execution; failures follow the execution policy.

Parameters​

DirectionParameterDefaultDescription
InputUrlmqtt://127.0.0.1:1883MQTT endpoint. TCP accepts mqtt://, mqtts://, or tcp://; WebSocket accepts ws://, wss://, mqtt-ws://, or mqtt-wss://.
InputTopicdata/uploadPublish topic.
InputUserName / PasswordEmptyMQTT credentials. The password is not written to the runtime log.
InputClientIdEmptyClient identifier. Empty generates a random identifier for each connection. Use a stable value for broker persistent sessions.
InputRetainfalseRetain the last message. Enable only when new subscribers should receive the previous value.
InputEnabledtrueAllow publishing. A send event received while disabled reports business rejection.
InputKeepAlive60MQTT keep-alive interval in seconds.
InputCleanSessiontrueUse a clean session. Disable it with a stable ClientId when a persistent session is required.
InputMqttProtocolVersionV311MQTT protocol version supported by the broker.
InputQosLevelAtMostOnceQoS: AtMostOnce (0), AtLeastOnce (1), or ExactlyOnce (2).
InputUseSSLfalseEnable TLS.
InputSslTargetHostEmptyTLS target host; empty uses the host in Url.
InputSslClientCertificateNameEmptyClient certificate name for mutual TLS.
InputSslCACertificateNameEmptyCustom CA certificate name.
InputSslAllowUntrustedfalseAccept untrusted certificates. Keep disabled with a trusted CA; enabling it relaxes certificate validation.
InputSslProtocolsNoneTLS protocol selection; None uses system negotiation.
InputSslCheckCertificateRevocationfalseCheck certificate revocation status.
Event inputInputData-Upstream object, array, or scalar serialized as the message payload. It has no state initial value.
Event outputExecutionResult-Execution status, ID, attempt count, and error code. Connect to an execution-error catch node to observe it.

Minimal Setup and Verification​

  1. Drag in the node and fill in Url and Topic; add credentials if the broker requires them.
  2. Connect the payload output to InputData, check the indicated type and event semantics, and connect ExecutionResult to an execution-error catch node.
  3. Subscribe to the topic with an independent MQTT client first. Save and enable the process, then trigger a recognizable new payload.
  4. Confirm Succeeded for this execution on the Runtime tab and verify the topic, JSON, and QoS at the subscriber. With Retain=false, subscribing after publishing misses that message.

For failures, inspect the latest execution status, error code, and runtime log. If the result is UnknownEffect, check subscriber records before deciding whether to resend.

Email Push Node​

The Email Push node under Data Push sends rule data through SMTP after receiving a Data event. It prepares the SMTP channel on the first send or after mail settings change. Sending is subject to the total execution deadline.

Parameters​

DirectionParameterDefaultDescription
InputHostEmptySMTP server address.
InputPort587SMTP server port.
InputEnableSsltrueEnable SMTP encryption.
InputUserName / PasswordEmptySMTP credentials.
InputFromAddressEmptySender address.
InputFromNameTGatewaySender display name.
InputToAddressesEmptyRecipient addresses separated by commas.
InputSubjectTemplate告警通知 - {{DeviceName}} - {{EventType}}Subject template. Use {{PropertyName}} for properties of Data; empty uses the default template.
InputBodyTemplateDefault HTML alarm tableBody template with {{PropertyName}} replacement. A body beginning with < is sent as HTML; empty uses the default template.
InputEnabledtrueAllow sending.
InputData-Upstream object, array, or scalar.
Event outputExecutionResult-Execution status, ID, and error information. Connect to an execution-error catch node to observe it.
OutputLastPushTimeUnix epochUTC time of the latest confirmed successful send. Failures do not advance it.

Minimal Setup and Verification​

  1. Fill in the SMTP host, port, credentials, sender, and at least one recipient.
  2. Connect an alarm-rule or other object output to Data.
  3. Adjust the subject or body template for the receiver, then save and enable the process.
  4. Connect ExecutionResult to an execution-error catch node and trigger a test event. Confirm Succeeded and an advancing LastPushTime on the Runtime tab, then check substituted fields and formatting in the mailbox.

For authentication, certificate, or recipient errors, inspect the latest execution status and error code, then check the server port, SSL mode, and sender policy. Do not record passwords in rule logs or public documentation.

Webhook Push Node​

The Webhook Push node under Data Push sends rule results to a DingTalk custom robot, a WeCom message-push webhook (formerly group robot), or a custom HTTP endpoint. Platform is an explicit selector in the properties panel; the node does not infer a vendor from the URL.

Parameters​

DirectionParameterDescription
InputUrlComplete Webhook URL. DingTalk URLs contain access_token; WeCom URLs contain key.
InputPlatformDingTalk, WeCom, or Custom; new nodes default to Custom.
InputHeadersCustom request-header JSON, such as {"Authorization":"Bearer <token>"}. Usually empty for DingTalk and WeCom.
InputBodyTemplateComplete JSON request-body template. Use {{PropertyName}} to reference Data properties.
InputSecretA SEC... signing secret for DingTalk robot signing. Leave empty for WeCom and Custom.
InputEnabledAllow the node to send requests.
InputDataUpstream object, such as VariableBasicData, AlarmVariable, or a custom object.
Event outputExecutionResultExecution status, ID, and error code. Explicit remote rejection is a business rejection; a request sent without a confirmed outcome can be UnknownEffect.
OutputLastPushTimeUTC time of the latest confirmed successful send. Failures do not advance it.

Placeholders inside JSON strings escape quotes, backslashes, and line breaks. Placeholders used as JSON values preserve number, Boolean, array, or object types. A missing property becomes empty text inside a string and null in a value position.

When an Alarm Notification Rule feeds Data, use the following template for a custom HTTP endpoint. Alarm records expose Name for the variable name and AlarmCode for the trigger value; Value belongs to ordinary variable notifications.

{
"device": "{{DeviceName}}",
"variable": "{{Name}}",
"message": "{{AlarmText}}",
"level": {{AlarmLevel}},
"value": {{AlarmCode}}
}

This is template text awaiting substitution. With level 1 and alarm value 101, level becomes the number 1, while value becomes the string "101": AlarmCode is a text field. An unquoted placeholder does not convert a string property into a number.

Connect the payload to Data and ExecutionResult to an execution-error catch node. Prepare the receiver, enable the flow, and trigger a recognizable new event. On the Runtime tab, verify the current execution ID, Succeeded, and an advancing LastPushTime, then check the body at the HTTP receiver or messaging client. An initialization timestamp or previous success does not prove this send.

DingTalk​

  1. Set Platform to DingTalk.
  2. Enter the complete https://oapi.dingtalk.com/robot/send?access_token=<robot-token> URL in Url.
  3. Fill in Secret only when the robot uses signing; leave it empty for keyword or IP allowlist security.
  4. For a text message, enter this body with {{Name}} as the alarm variable name:
{
"msgtype": "text",
"text": {
"content": "Device: {{DeviceName}}\nVariable: {{Name}}\nAlarm: {{AlarmText}}\nValue: {{AlarmCode}}"
}
}

For DingTalk Markdown, use:

{
"msgtype": "markdown",
"markdown": {
"title": "Gateway alarm",
"text": "## {{DeviceName}}\n\n{{AlarmText}}"
}
}

The node appends timestamp and sign using DingTalk HmacSHA256 rules. Do not add them manually. After HTTP 2xx, it also checks the JSON response; a confirmed successful send requires numeric errcode 0 (or the string "0").

WeCom​

  1. Set Platform to WeCom.
  2. Enter the complete https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=<message-key> URL in Url.
  3. Leave Secret empty. Use the same text.content body shown above and check the variable name and alarm value.
  4. WeCom Markdown uses markdown.content, not DingTalk's title and text fields:
{
"msgtype": "markdown",
"markdown": {
"content": "# {{DeviceName}}\n{{AlarmText}}"
}
}

The node requires HTTP 2xx and a WeCom response with an integer errcode of 0 before confirming a successful send.

Frequency and Security​

DingTalk robots and WeCom message webhooks are limited to 20 messages per minute. For high-frequency variables, add an edge, threshold, hold, timer, or aggregation node before Webhook and send a summary. Webhook URLs contain credentials; do not put them in logs, screenshots, public documentation, or source control.

Trigger Method​

ConfigurationRecommended Usage
StabilizationSuitable for high-frequency data changes such as temperature, pressure, and liquid level, reducing repeated execution in a short period.
Unlimited triggersSkips flow debounce waiting for changes that need individual handling. Each node still has serial execution and capacity limits; this is not unlimited concurrency or a guarantee at any input rate.
Note

Enabling "Unlimited Triggering" may increase runtime. Before use in a production environment, the frequency of variable changes, process complexity, and downstream system load capacity should be first evaluated.

Run and verify​

Runlog​

Rule Flow After running, you can view the runtime log at the bottom of the editor.

FunctionalityDescription
Log LevelFiltering by log level, such as Trace, Debug, Info, Warning, Error.
Time RangeFilter logs by start and end time.
KeywordsSearch by log content keywords.
ExportExport the current page or all match logs.
Refreshimmediately reload the log. When the process is enabled, the log panel automatically refreshes at fixed intervals.
Maximize/restoreExpand the log panel for easier viewing of long logs.
Fold/UnfoldTemporarily fold the log panel to free up more space on the canvas.
DetailsOpen the log details drawer to view the log content and anomalies.

Verify the complete flow​

Within one filter, multiple names form the permitted set; different filters are combined with AND. Limit notification sources before enabling control. Result from a variable notification is its value; VariableBasicData is the full identity/quality/time snapshot. Use numeric extraction before numeric comparison where needed.

Set comparison B to 100, connect upstream A, and verify 101, 99, 100 produce true, false, false. A connected input comes from upstream rather than its configured initial value. Check execution time even when output remains equal. Test both conditional branches with distinct outputs.

Variable RPC Result is the business write result; ExecutionResult is the node execution event. Verify both and read the real source back. Device/target special-method nodes resolve by name or accurate ID, with nonzero ID taking priority. Reselect methods after changing the object, follow their argument arrays, and distinguish method effects from normal polling/upload.

State outputs propagate changes by default; event outputs can repeat equal payloads. Choose continuous state or edge behavior deliberately to control repeated writes.

Hysteresis fan control​

Connect scoped temperature notification → numeric extraction → threshold → fan variable RPC. Use Threshold=75, Hysteresis=5, and CompareOperator=>; connect Triggered to WriteData.

Starting off, 85 turns on, 75 keeps on, 65 turns off, and 75 keeps off. Hysteresis expands around the center: with strict >, exactly 80 does not enter from off and exactly 70 exits from on. Reload creates new state; inspect startup and the first notification. Verify the real coil and gateway readback. See Project Delivery.

Threshold Triggered output connected to the fan variable RPC WriteData

Disable the practice flow before restoring temperature and fan state, so restoration does not trigger another control action.

Common Process Design​

ScenariosDesign Methods
Single Path ProcessingTrigger or Input Nodes → Processing Nodes → Output Nodes.
Branch ProcessingA single processing node connects multiple downstream nodes and simultaneously executes alarm decisions, data logging, or message pushes.
Multi-condition Comprehensive JudgmentMultiple input or processing nodes connect to the same judgment node, which outputs the result.
Periodic tasksUse timer-type nodes to trigger periodic calculations or periodic pushes.
External PushUse data push nodes such as Webhook, MQTT, and email to send processing results to external systems.
Circular relationshipsAvoid forming closed-loop connections at nodes. When state memory is needed, prioritize using holds, counters, memory variables, or dedicated handling nodes.

Use and troubleshoot​

Usage Notes​

ScenariosRecommendations
Production Modification ProcessExport the process before modification, save it, and observe the runlog.
node cannot be foundConfirm that the custom node has been successfully compiled, and refresh the page if necessary.
Flow does not executeCheck whether the process is enabled, whether the trigger node has received data, and whether the wiring direction is correct.
Node parameters are emptyAfter selecting the node, check the properties panel and confirm that input parameters, input/output parameters, and default values are configured.
Results do not meet expectationsView real-time node parameter values and locate segment by segment from upstream to downstream.
Log is emptyConfirm that the process is enabled and actually triggered; Then check the log level and time range filter conditions.
System load increasesCheck high-frequency trigger processes, complex compute nodes, external push nodes, and "unlimited trigger" configurations.

Fault Handling​

PhenomenonHandling Recommendations
Failed SaveCheck whether the process name is empty and whether node parameters are valid, and check the page error message.
Node Exceptions After CSV ImportCheck if the imported file comes from the same version of the flow editor and confirm that the custom node name still exists.
port cannot connectConfirm that the connection direction matches the parameter type, avoiding connecting output ports to output ports or input ports connecting to input ports.
Real-time parameter values are not displayedConfirm that the process is enabled and triggered to run; Unrun processes do not generate real-time node values.
Persistent log errorsOpen log details to check the exception information, then return to the corresponding node to check parameters, scripts, and external connections.