nodeRed 源码分析8- runtime nodes模块分析

博客迁移

不恰饭的小站

功能概述 提供运行时与节点相关的接口,如节点注册、流程增删改查、节点模块处理、上下文等。

所依赖的三方库

  • when
  • path
  • fs
  • clone
  • util

文件域变量

  • @node-red/registry
    • 为runtime提供节点注册、响应、发现及管理功能
  • credentials
    • 封装credentials相关操作
  • context
    • 提供上下文环境,可定义变量、保存等
  • Node
    • 为所有新建立的节点提供初始化

API | Function | Description| | ---- | ---- | | // Lifecycle | ---- | |

init | 初始化函数,调用涉及的几个模块的init方法 | | load
| 加载依赖模块 | | // Node registry | ---- | |
createNode | 调用Node模块创建一个节点,并配置credentials | |
getNode | 调用flow模块获取节点 | | eachNode |
调用flow模块遍历所有节点,可传入回调函数 | | getContext |
调用context模块获取上下文 | | installModule | 安装一个模块 | |
uninstallModule | 删除一个模块 | | enableNode
| 启用一个模块 | | disableNode | 禁用一个模块 | | // Node type
registry | ---- | | registerType |
调用registry模块注册节点 | | getType | 调用registry模块获取节点类型 | |
getNodeInfo | 调用registry模块获取节点信息 | | getNodeList
| 调用registry模块获得已安装的node modules| | getModuleInfo |
调用registry模块获得node module信息 | | getNodeConfigs |
调用registry模块获取所有节点的html内容| | getNodeConfig |
调用registry模块获取某个node的html内容| | getNodeIconPath |
调用registry模块获取某个node的图标 | | getNodeIcons |
调用registry模块获取所有节点的图标| | getNodeExampleFlows |
调用registry模块获取示例流程 | | getNodeExampleFlowPath |
调用registry模块获取示例流程目录 | | clearRegistry |
调用registry模块清除registry模块内容 | | cleanModuleList |
调用registry模块清除模块列表 | | // Flow handling | ---- | |
loadFlows | 调用flow模块完成流程加载 | | startFlows
| 调用flow模块完成流程启动 | | stopFlows | 调用flow模块完成流程结束 | |
setFlows | 调用flow模块完成全部流程的设置 | | getFlows
| 调用flow模块返回所有流程 | | addFlow | 调用flow模块返回增加流程 | |
getFlow | 调用flow模块返回获取流程 | | updateFlow
| 调用flow模块更新获取流程 | | removeFlow | 调用flow模块更新删除流程 | |
// Credentials | ---- | | addCredentials
| 调用credentials模块增加凭证 | | getCredentials |
调用credentials模块获取凭证 | | deleteCredentials |
调用credentials模块删除凭证 | | getCredentialDefinition |
调用credentials模块获取凭证定义 | | setCredentialSecret |
调用credentials模块设置凭证密码 | | clearCredentials |
调用credentials模块清除凭证 | | exportCredentials |
调用credentials模块导出凭证 | | getCredentialKeyType |
调用credentials模块获取凭证类型 | | // Contexts | ---- | |
loadContextsPlugin | 调用context模块加载上下文保存插件 | |
closeContextsPlugin | 调用context模块关闭上下文保存插件 | |
listContextStores | 调用context模块罗列上下文保存插件 |

涉及文件

  1. packages\node_modules@node-red\runtime\lib\nodes\index.js

代码分析

参与流程

index.js@nodes@lib@runtime : init(); index.js@nodes@lib@runtime ->>
credentials.js@nodes@lib@runtime: init() index.js@nodes@lib@runtime
->> index.js@flows@lib@runtime: init() index.js@nodes@lib@runtime ->> index.js@lib@registry: init() index.js@nodes@lib@runtime ->>
context.js@nodes@lib@runtime: init() ```

```mermaid  sequenceDiagram autonumber title: start, 加载流、节点等 other
->>index.js@nodes@lib@runtime: load() index.js@nodes@lib@runtime ->>index.js@lib@registry: load()

other ->>index.js@nodes@lib@runtime: registerType()
index.js@nodes@lib@runtime ->>index.js@lib@registry: registerType()
index.js@lib@registry ->>registry.js@lib@registry:
registerNodeConstructor()

other ->>index.js@nodes@lib@runtime: loadFlows()
index.js@nodes@lib@runtime ->>index.js@flows@lib@runtime: load()

other ->>index.js@nodes@lib@runtime: startFlows()
index.js@nodes@lib@runtime ->>index.js@flows@lib@runtime: startFlows()

other ->>index.js@nodes@lib@runtime: createNode()
index.js@nodes@lib@runtime ->>Node.js@nodes@lib@runtime: Node()




title: 安装/卸载模块



other ->>index.js@nodes@lib@runtime : installModule();
index.js@nodes@lib@runtime ->>index.js@lib@registry : installModule();

other ->>index.js@nodes@lib@runtime : uninstallModule();
index.js@nodes@lib@runtime ->>index.js@lib@registry :
uninstallModule();



title: 禁用/使用节点



other ->>index.js@nodes@lib@runtime : enableNode();
index.js@nodes@lib@runtime ->>index.js@lib@registry : enableNode();
index.js@lib@registry -->>index.js@nodes@lib@runtime :
reportNodeStateChange();

other ->>index.js@nodes@lib@runtime : disableNode();
index.js@nodes@lib@runtime ->>index.js@lib@registry : disableNode();
index.js@lib@registry -->>index.js@nodes@lib@runtime :
reportNodeStateChange();


例子

  1. 使用html参数创建节点 function MQTTBrokerNode(n) { RED.nodes.createNode(this,n); }

  2. 使用html参数创建节点 ```function MQTTBrokerNode(n) {

    this.brokerConn = RED.nodes.getNode(this.broker);//根据ID从已注册的节点中找
    } ```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值