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

代码分析

参与流程

other index.js@nodes@lib@runtime credentials.js@nodes@lib@runtime index.js@flows@lib@runtime index.js@lib@registry context.js@nodes@lib@runtime init() 1 init() 2 init() 3 init() 4 init() 5 other index.js@nodes@lib@runtime credentials.js@nodes@lib@runtime index.js@flows@lib@runtime index.js@lib@registry context.js@nodes@lib@runtime 初始化
other index.js@nodes@lib@runtime index.js@lib@registry registry.js@lib@registry index.js@flows@lib@runtime Node.js@nodes@lib@runtime load() 1 load() 2 registerType() 3 registerType() 4 registerNodeConstructor() 5 loadFlows() 6 load() 7 startFlows() 8 startFlows() 9 createNode() 10 Node() 11 other index.js@nodes@lib@runtime index.js@lib@registry registry.js@lib@registry index.js@flows@lib@runtime Node.js@nodes@lib@runtime start, 加载流、节点等
other index.js@nodes@lib@runtime index.js@lib@registry installModule() 1 installModule() 2 uninstallModule() 3 uninstallModule() 4 other index.js@nodes@lib@runtime index.js@lib@registry 安装/卸载模块
other index.js@nodes@lib@runtime index.js@lib@registry enableNode() 1 enableNode() 2 reportNodeStateChange() 3 disableNode() 4 disableNode() 5 reportNodeStateChange() 6 other index.js@nodes@lib@runtime index.js@lib@registry 禁用/使用节点

例子

  1. 使用html参数创建节点
function MQTTBrokerNode(n) {
    RED.nodes.createNode(this,n);
    
}
  1. 使用html参数创建节点
function MQTTBrokerNode(n) {
    
    this.brokerConn = RED.nodes.getNode(this.broker);//根据ID从已注册的节点中找
    
}

猜你喜欢

转载自blog.csdn.net/lxmuyu/article/details/114382812