Skip to Content
本页目录

自定义节点类型

自定义节点类型用于扩展规则引擎可编排节点。用户创建节点、维护处理逻辑和参数定义,编译成功后即可在规则流程中拖入使用。

创建前准备

先看术语

术语现场理解
自定义节点类型现场或项目自定义的规则功能块,编译成功后可拖入规则流程。
节点实例某个规则流程画布中实际拖入使用的节点。它引用一个节点类型。
输入参数上游节点传给当前节点的数据。
输出参数当前节点处理后传给下游节点的数据。
输入输出参数既能接收上游数据,也能在节点内部修改后继续传递的数据。
编译检查节点代码和参数定义能否被网关加载。编译成功后,规则流程才能使用最新节点。
分类在规则节点面板中分组显示节点,便于现场快速查找。

页面入口

登录 TGateway Web 后,点击左侧菜单“开发配置 → 自定义节点”。

自定义节点管理页面

使用前准备

  • 明确节点的输入、输出、异常处理和允许的副作用,先用最小参数集合设计。
  • 确认节点名称和分类不会与已加载节点混淆,并记录哪些规则流程将引用它。
  • 修改已在生产流程中使用的节点前,先导出相关规则流程并安排验证窗口。

配置与编译节点

页面结构

区域说明
本地节点管理已保存的自定义节点类型,支持新增、编辑、编译、删除和批量操作。
已加载节点查看已经可在规则流程中使用的节点类型,适合确认编译结果是否生效。
名称搜索按节点名称过滤。
分类筛选按节点分类过滤。
工具按钮依次为新增、批量编译、批量删除、刷新;批量操作需要先勾选节点。

列表字段

字段说明
节点名称节点类型名称,规则流程中按此名称查找和使用。
分类节点分类,便于在规则编排时组织节点。
输入参数当前节点定义的输入参数数量。
输出参数当前节点定义的输出参数数量。
输入输出参数既可输入又可输出的参数数量。
更新时间最近一次保存或编译时间。
操作编辑、编译、删除当前节点。

新建节点

点击列表右上角新增按钮,打开“新建自定义节点”弹窗。

新建节点对话框

配置项说明
节点名称必填,用于在节点面板中查找。改名后重新编译并检查引用它的流程。
分类可选。用于按业务或处理类型组织节点。
描述可选。记录节点用途、输入输出约定和维护注意事项。

点击“确定”后,系统会创建节点并自动进入节点编辑器。

节点编辑器

节点编辑器包含顶部操作栏、代码编辑区和底部信息面板。

区域说明
返回按钮返回自定义节点列表。
节点名称标签显示当前节点名称和分类。
顶部工具栏Roslyn 服务、撤销、重做及编译按钮集中在同一行。连接配置默认隐藏,点击“Roslyn 服务”可展开或收起。
编译并保存顶部右侧主按钮。先保存节点信息和处理逻辑,再执行编译。
代码编辑维护节点处理逻辑。
底部面板包含“编译日志”“节点信息”“参数定义”页签。

输入 this. 可补全当前节点中的用户方法、字段和参数属性;输入调用的括号和逗号后可查看参数说明。为方法、字段或属性添加 /// XML 注释后,补全与悬停可显示业务说明。默认语言服务为 https://roslyn.thingsgateway.cn,也可连接自建 Studio,详见代码编辑、补全与错误定位。

节点信息

“节点信息”页签用于维护基础信息。

字段说明
节点名称节点显示名称。修改后需要编译保存,再核对使用流程。
分类节点分类。
描述节点用途和维护说明。

参数定义

“参数定义”页签按输入、输出、输入输出三类维护参数。参数定义会影响规则流程中节点的连线和数据传递。

参数类型说明
输入参数从上游节点传入,节点内部读取使用。
输出参数节点处理后输出,供下游节点使用。
输入输出参数同时作为输入和输出,适合需要在节点内部修改后继续传递的值。
参数字段说明
参数名参数标识,建议使用清晰的英文或拼音命名。
数据类型参数值类型。数字选择整数或小数类型,开关量选择布尔类型,文本选择字符串,需要传递结构化内容时选择对象类型。
描述参数用途说明。
事件输入 / 事件输出将该端口定义为逐次消费的事件;相同载荷也表示新的发生。事件端口不配置状态初值,切换到事件会清除初值。
对象完整类型名对象参数需要自定义类型时填写可解析的完整类型名,并核对编译与端口契约;不能把任意对象当作数值。
初始值表达式为状态参数提供编译时起点,例如小数 1m;实例输入和连线仍需单独配置。

可按业务选择 Int16、Int32、Int64、UInt16、UInt32、UInt64、Byte、Float、Double、Decimal、Boolean、String、Object 和 DateTime。输入、输出和输入输出三种方向分别定义类型;端口名字同时参与代码引用和连线,修改名字时应同步修改代码及所有使用流程。

“初始值表达式”使用 C# 表达式,例如 Decimal 可用 1m + 1m。画布中显式输入和上游连线会覆盖该起点。描述用于解释参数,不改变数值;整数还需检查范围,日期应明确时区,对象应保留实际结构。

在“已加载节点”的详情中核对每个端口的状态/事件、可空、数组和单位约定,以及无连线的节点参数。状态与事件不直接混接;数值类型不同也应先添加转换节点。调整参数顺序不会改变命名端口,重命名则需要同步修改代码与流程并重新校验。

编译日志

点击顶部“编译并保存”后,底部“编译日志”会显示保存和编译过程。

日志项说明
正在保存节点编译前先保存当前节点信息、代码和参数定义。
节点保存成功保存成功后开始编译。
编译成功自定义节点代码通过编译。
输出显示编译输出信息,便于排查加载问题。
错误 / 警告统计底部面板右侧显示当前错误和警告数量。

出现编译错误时,先处理第一条红色错误;点击错误项可定位到对应代码位置。

“节点保存成功”表示草稿已保存,后续仍可能编译失败。失败时可重新打开草稿修改,继续使用原有效版本。修正并编译成功后,检查“已加载节点”,再按下方步骤重新装载并验证引用它的流程。

如果提示节点已被其他编辑修改,先保留自己的草稿,再重新读取当前版本进行核对,避免覆盖另一位维护人员的修改。

常用操作

操作步骤
编辑节点在列表点击“编辑”,进入编辑器维护代码、节点信息或参数定义。
单个编译在列表点击“编译”,验证当前节点是否可编译。
批量编译勾选多个节点后点击批量编译,适合升级后统一验证。
删除节点点击“删除”并确认。删除前应确认规则流程不再引用该节点。
查看已加载节点切换到“已加载节点”,查看运行时可用节点。

验证节点行为

初始参数、状态与事件端口

参数定义决定画布端口,流程配置决定某个实例的实际输入。参数的“初始值表达式”由节点编译时使用;流程中显式填写的初始输入或上游连线会覆盖该起点。修改参数定义后,应编译当前节点,并重新检查使用它的流程。

参数设置使用方法
输入从上游接受值;没有连线时,按界面要求填写实例输入。
输出把处理结果送到下游;默认状态输出仅在值变化时传播。
输入输出同时接受上游值并向下游传播,适合需要更新后继续传递的状态。
事件端口表达一次发生,即使值与上次相同也可再次消费;连线两端应使用相同的事件语义。事件参数不填写状态初始值。

例如两次输入 10.1、10.2,节点均向下取整得到 10:状态输出的下游次数可以保持,事件输出的下游应分别收到两次。检查时同步查看运行输入、输出和下游次数。

在流程中验证一个换算节点

  1. 在 Web 节点中定义 Decimal 输入 Input 和输出 Output,处理方式使用增益 2、偏置 5。成员代码写法见开发示例。
  2. 编译保存后,在“已加载节点”确认当前名称、分类和两个端口。
  3. 新建暂时禁用的测试流程,依次连接限定来源的变量通知、数值提取、当前节点及下游接收节点。
  4. 保存并启用,输入 10 应得到 25,再输入 20 应得到 45;分别核对节点输出、下游输入和执行结果。
  5. 如增加输入输出状态或计数,重新启用后应从定义的初始状态开始;需要跨重启保存时另行设计持久化。

Web 节点编辑器只填写成员代码,不再包装完整类或重复声明参数表中定义的同名属性。完整 C# 类节点通过脚本管理的“完整代码”类型编译,具体写法见自定义节点开发说明。

修改后的运行检查

  1. 编译并保存后,在“已加载节点”核对名称、分类和端口类型。新增或删除参数后重新检查每条连线和实例参数。
  2. 修改同名节点的计算方式并重新编译后,已有流程可能仍运行之前装载的实例。保存并重新装载测试流程,用两个能区分新旧公式的输入核对节点和下游输出。
  3. 禁用流程后确认没有活动实例继续消费输入;重新启用会建立新实例,内存计数和初始化状态重新开始,不会自动持久化。
  4. 删除节点前,先从所有流程定义中解除引用;禁用流程仍保留引用。

输出值、参数类型和异常处理均符合设计后,再把节点用于正式流程。

常见问题与注意

场景建议
参数修改修改参数后,应同步检查引用该节点的规则流程连线。
分类维护分类会影响节点查找效率,建议按业务域或功能类型分类。
编译失败先查看保存日志,再查看编译诊断;保存失败时不会进入真正编译。
节点未出现在规则中确认节点已编译成功,并刷新规则引擎页面或重新打开流程编辑器。
生产删除删除前先导出或备份规则流程,避免留下不可解析的节点引用。

相关链接