自定义节点
自定义节点我们可以通过docker来做的。
构建镜像
构建的Dockerfile如下所示
FROM ubuntu:20.04
RUN apt update -y && apt install -y python3 python3-pymysql
ADD db.py /usr/local/bin
ENTRYPOINT ["python3"]脚本文件 db.py
#!/usr/bin/env python3
#coding=utf8
import os
import pymysql
SQL = os.getenv('JIANMU_SQL')
HOST = os.getenv('JIANMU_HOST')
USER = os.getenv('JIANMU_USER')
PASSWORD = os.getenv('JIANMU_PASSWORD')
DB = os.getenv('JIANMU_DB')
db = pymysql.connect(host=HOST, user=USER, password=PASSWORD, database=DB)
cursor = db.cursor()
cursor.execute(SQL)
for row in cursor.fetchall():
    print(row)
db.close()直接使用命令构建
docker build -t db_runner:1.0.0 .当镜像制作完成,我们可以直接使用docker命令来运行测试
docker run -it --rm -eJIANMU_HOST=192.168.211.139 -eJIANMU_USER=root -eJIANMU_PASSWORD=123456 -eJIANMU_DB=jianmu -eJIANMU_SQL="show tables" db_runner:1.0.0 /usr/local/bin/db.py
导入node
本地node镜像已经准备好了,我们把他导入到建木系统中

节点文件定义
ref: db_runner
version: 1.0.0
description: '执行对应数据库代码'
inputParameters:
  - name: SQL代码
    ref: SQL
    type: STRING 
    required: true
    description: SQL代码
  - name: 主机
    ref: HOST
    type: STRING
    required: true
    description: 数据库主机
  - name: 用户名
    ref: USER
    type: STRING
    required: true
    description: 数据库用户名
  - name: 密码
    ref: PASSWORD
    type: SECRET
    required: true
    description: 数据库密码
  - name: 数据库名字
    ref: DB
    type: STRING
    required: true
    description: 数据库名字
spec:
  image: "db_runner:1.0.0"
  cmd: ["/usr/local/bin/db.py"]然后我们再修改下数据库
jianmu -> hub_node_definition 列 icon
然后可以看到带icon的node

测试流程
直接定义一个流程,我们来测试一下刚才定义的节点
name: db_runner_tester
description: 数据库组件测试流程
workflow:
  start:
    type: start
    targets:
      - tester
  tester:
    type: local/db_runner:1.0.0
    param:
      SQL: "show tables;"
      HOST: 192.168.211.139
      USER: root
      PASSWORD: 123456
      DB: jianmu
    sources:
      - start
    targets:
      - end
  end:
    type: end
    sources:
      - tester手动执行
