只需要会SQL语句和JavaScript,就可以实现数据同步服务的功能。msg是一个对象,在一个流程里面的任意一个节点组件里面都能够访问到,举一个例子流程就好像进行中的一场足球比赛,在这场比赛里面,球员可以理解为节点,足球可以理解为msg对象,足球在各个球员之间进行不停地传递,最后足球进入球门,整个流程也就结束,也就是说在整个流程里面msg对象是流动的,共享的。这个node-red服务的核心就是一个流程服务,所有的操作都是串行的方式执行的。不管在哪个节点组件上,msg对象就是一个核心的对象,我们可以给这个msg对象增加自定义对象,方便在以后流程的任意节点里面去使用。

能够理解上述内容,那么基本就已经掌握了node-red的核心思想了,当然了,这是我的个人理解。为了解释这个原理,现在我写一个简单的例子来说明一下。要做点什么呢?举一个例子,我们读取所有的科室表,然后根据科室id去读取患者表的数据,当然这个操作是多余的,我只是为了说明上述原理。

我本地有两张表,科室表和患者表,如图所示

image.png

image.png

这两个表的关联字段就是科室id就是departmentid,由于流程是串行的,现在需要先查询出所有的科室信息,然后,再把科室id取出来,再重新组织成一个SQL语句去查询患者信息。对了,顺便说一下,按照安装方式2搭建的服务,里面已经安装了mysql,SqlServer,Oracle的组件,当然,也可以自己安装。好了,我们需要先创建一个inject组件。如图所示。

image.png

在这个topic里面去输入查询SQL语句,之所以要把SQL语句写在topic字段里面是因为数据库组件的规则必须要这么输入,所以,按照他们的规则做就行了。接下来创建一个数据库组件。

image.png

image.png

连接起来,为了直观看一下效果,先添加一个debug组件,看一下这一步生成的记录。

image.png

现在我点一下左侧的按钮,就可以查看到查询结果了。

image.png

可以看到debug组件显示的就是msg.payload对象的信息,接下来,添加一个函数组件,处理一下这个结果,把科室id过滤出来,然后,组成新的SQL语句。如图所示。

image.png

image.png

然后,再在后面添加一个数据库组件,可以直接复制一下之前的组件就行。如图所示

image.png

最后,添加一个debug组件,查看payload里面是不是患者信息。

image.png

image.png

可以看到已经有患者信息了,那我现在要看科室信息,要怎么办,有三种办法,第一个是再添加debug组件打印departmentList;第二个就是添加函数组件,把他们合并到一起后再连接一个debug组件;第三个就是直接修改debug组件的打印信息,把payload修改成departmentList对象,为了简单起见,这里面我直接修改这个debug组件。如图所示。

image.png

点击保存按钮,最后点击重新部署按钮。

image.png

再调试一下看看结果。

image.png

可以看到打印的结果已经变成科室列表信息了。

总结,流程的每次修改,都要去重新部署一下,否则流程不会生效。

node-red是一个用于物联网管理的流程服务管理平台。是IBM开发的。是一个低代码可视化的流程管理平台。

  • 可视化,直接在浏览器拖拽创建Flow

  • 平台可使用模块丰富

  • 支持http,mqtt,websocket,tcp,utp协议

  • 使用Nodejs事件驱动的非阻塞模型,非常适合在低成本硬件运行

  • 完全开源,可以自主开发

其实有关node-red的相关教程,官网上已经写的非常清楚和详细了,如果大家对英语比较熟悉的话,建议还是去阅读官网的教程。https://nodered.org/

这里在引用网上搜索的另外一个教程:https://www.cxyzjd.com/article/github_35631540/111869601

这个教程写的也挺全面的,目前我写的是完全按照我自己的理解写的,我也在学习过程中。

安装方式1

在官网上提供了很多种的安装方式,这里我自己采用的是git源码的安装方式,也就是官网上提供的方法进行的,https://nodered.org/docs/getting-started/development,如果这里面的git地址无法访问的话,可以访问这个连接https://gitee.com/mirrors/node-red.git

安装方式2

如果安装方式1失败,可以采用第二种方式,这种方式我是采用了一种安装后的方式,需要的资料我已经上传到网盘,

链接:https://pan.baidu.com/s/19Q1m2lybVQbQv_QoIvbguQ 

提取码:1111 

详细说明参考这个PDF文件。

flows.pdf

Linux下执行nohup npm start &

在安装Oracle的数据库过程中,只需要一直下一步就可以,在这个过程中有两个地方是需要注意一下,就是有一个设置密码和管理口令的地方,需要修改一下密码,其他的基本上下一步就行了。

在安装完成Oracle以后,用Navicat工具连接的时候,需要注意的是那个服务名需要查看安装Oracle生成的那个服务名,具体目录是D:\install\oracle11g\product\11.2.0\dbhome_1\NETWORK\ADMIN这个目录下,查看tnsnames.ora文件里面的内容,如图所示

image.png


image.png


同时Navicat需要修改一下动态库oci要选中Oracle的instant12

image.png



2006年在大学期间看过的Java视频教程,当时感觉学到了很多东西,现在分享一下,有需要的可以去下载。

https://pan.baidu.com/s/1C5v13Iypqpr1n8SCrwN1sQ

提取码:38k5 

一、目前模板编辑器的优点

原来的模板编辑器可以实现大部分数据的定制化需求,确实是实现了很多的定制化功能,减少了代码的改动。

二、目前模板编辑器的缺点

这样做会往往在解析的时候,难度就比较大。因为要考虑的场景太多了。举一个例子说明,我们通过模板编辑器实现了一个床头屏的模板,然后,把这个模板发布到床头屏上,这个模板就可以按照床头屏的业务场景进行显示;同样道理,如果用模板编辑器实现了一个门口屏的模板,然后,把这个模板发布到门口屏上的后,这个模板就可以按照门口屏的业务场景进行显示。这里面有一个问题,那就是目前模板编辑器只是对数据进行了定制化,没有对业务进行定制化。这样就造成了,在终端上进行模板解析的时候,需要考虑到很多的业务场景,同时要求这些业务场景不能够互相冲突。例如,在解析床头屏模板的时候,需要保证床头屏的解析不能够影响到门口屏的业务场景。这样就会造成了代码的业务逻辑复杂度增加了很多。如果后期增加更多的业务场景,会让这个模板解析的代码复杂度越来越高;会变得越来越不容易维护。

三、重新设计模板编辑器

重新设计的模板编辑器要能够实现业务与数据同时定制化。如果能够实现这一点,那么模板解析的工作量就会变得更加容易与扩展。例如,以后床头屏的解析不会影响到门口屏的解析。这样做的好处就是降低了代码的复杂度,同时也会变得更加容易维护。

四、定制化业务和数据

目前的模板解析是一个运行环境,但是这个运行环境包括了各个不同的业务场景,数据的定制化就是选择具体的业务场景在终端上进行解析。以后的模板解析要实现业务场景的选择和数据的解析都是通过后台进行定制化。模板解析只是一个简单的解析环境,例如提供基本的类库调用,通用的功能模块等等。总而言之,凡是具有定制化需求的都通过在模板编辑器里面进行定制化改动。

辽公网安备21010602000703号 备案号:冀ICP备2022001219号