# 概述

扩展管理功能用于维护插件、组件元数据,定义路由级别的自定义属性、插件级别的自定义配置信息。创建的插件用于路由管理设置时启用,当网关接受请求匹配路由规则时会触发启用的插件逻辑执行,插件逻辑中可获取到自定义的属性数据;创建的组件用在服务编排中,执行指定类型组件的业务逻辑。

# 扩展列表

菜单位置:网关管理 > 扩展管理。点击菜单后进入扩展管理列表页面,如图所示。

manager_plugin_list_query

# 新增插件

点击 新增 按钮弹出新增窗口,在扩展分类中选择自定义插件,如图所示。

manager_plugin_add_1

manager_plugin_add_2

插件名称:插件名称由英文字母、下划线或数字组成,不能以数字开头,长度不能超过50个字符,必填;

插件描述:插件的简要描述,长度不能超过50个字符,必填;

默认执行顺序:插件的默认执行顺序,按从小到大排序,值越小越先执行,取值范围0~255,必填;

表单定义:路由级别的自定义属性,在路由管理配置启用插件时前端会将表单定义转化为表单输入界面,更多信息请查看路由管理介绍。表单规范说明如下:

/*
* plugin_config_design
* 动态插件参考结构
* */

const pluginConfig = [
  {
	/* 必有字段 */
	"field": "inputVal",
	"label": "输入框",
	"component": "input", // input, select, radio, checkbox,
	"dataType": "string", // number(long, double), string, boolean, array
	/* 可选字段 */
	"desc": "字段的说明文字",
	"placeholder": "placeholder文字",
	"default": "Aa123", // 初始默认值
	"options": [ // for select, radio, checkbox
	  {
		"label": "选项1",
		"value": 1  // number(long, double), string, boolean,
	  },
	  {
		"label": "选项2",
		"value": 2
	  }
	],
	"rules": [ // min|max / range / length / regex pattern
	  { "required": true, "message": "输入框不能为空", "trigger": "change" }, // required 必填
	  // { "min": 3, "ma x": 5, "message": "长度在 3 到 5 个字符", "trigger": "change" }, // range 长度范围(for dataType:"string")
	  // { "len": 8, "message": "长度需 8 个字符", "trigger": "change" }, // length 长度限制(for dataType:"string")
	  // { "type": "number", "message": "请输入数字类型"}, // for dataType:"number" 校验数值
	  // { "type": "integer", "message": "请输入整数数值", "trigger": "change" }, // for dataType:"long" 校验整数
	  // { "type": "float", "message": "请输入浮点数数值", "trigger": "change" }, // for dataType:"double" 校验浮点数
	  { "pattern": "^[A-Za-z\\d]+$", "message": "只能是字母或数字", "trigger": "change" } // regex pattern正则
	]
  },
  {
	"field": "selectVal",
	"label": "选择器",
	"component": "select",
	"dataType": "number",
	"options": [
	  {
		"label": "选项1",
		"value": 1
	  },
	  {
		"label": "选项2",
		"value": 2
	  },
	  {
		"label": "选项3",
		"value": 3
	  }
	],
	"desc": "选择器的说明文字",
	"placeholder": "请选择",
	"rules": [
	  { "required": true, "message": "选择器不能为空", "trigger": "change" }
	]
  },
  {
	"field": "radioVal",
	"label": "单选框",
	"component": "radio",
	"dataType": "boolean",
	"default": true,
	"options": [
	  {
		"label": "是",
		"value": true
	  },
	  {
		"label": "否",
		"value": false
	  }
	],
	"desc": "单选框的说明文字",
	"rules": [
	  { "required": true, "message": "请选择单选框", "trigger": "change" }
	]
  },
  {
	"field": "checkboxVal",
	"label": "多选框",
	"component": "checkbox",
	"dataType": "array",
	"options": [
	  {
		"label": "选项1",
		"value": 11
	  },
	  {
		"label": "选项2",
		"value": 22
	  },
	  {
		"label": "选项3",
		"value": 33
	  }
	],
	"desc": "多选框的说明文字",
	"rules": [
	  { "required": true, "message": "请选择多选框", "trigger": "change" }
	]
  }
];

// TODO 注意!!
//  组件 "checkbox" 的dataType = "array"
//  组件 "radio/select" 的实际值类型等于options内的value值类型

自定义配置:插件级别的自定义配置信息,插件逻辑中可获取到该信息。

# 新增动态插件

点击 新增 按钮弹出新增窗口,在扩展分类中选择动态插件。与新增插件不同,新增动态插件时需要上传插件节点端包。可以点击下载代码模板,并修改模板代码,编译之后上传。

plugin_edit

如需要更新编译包,选择编辑流程之后重新上传编译包即可。

# 编辑插件

点击 编辑 按钮弹出编辑窗口,如图所示。

manager_plugin_edit_1

manager_plugin_edit_2

# 删除插件

点击 删除 按钮弹出删除确认窗口,如图所示。

manager_plugin_delete_1

manager_plugin_delete_2

点击 确定 按钮后删除插件,如果插件存在关联的路由配置时,需要将关联的路由配置全部删除后才能删除插件。

# 新增动态组件

点击 新增 按钮弹出新增窗口,在扩展分类中选择动态组件。与新增插件不同,新增动态组件时除了要需要上传组件节点端包,还需要上传组件管理端前端编译包。可以点击下载代码模板,并修改模板代码,编译之后上传。

plugin_edit

# 编辑动态组件

组件编辑之后,如果有涉及到编译包的更新,管理端会推送指令触发节点更新架包。如节点更新成功,会自动重装并且启用。

# 删除动态组件

组件删除之后,管理端会推送指令触发节点更新架包。如节点更新成功,会自动卸载组件。组件代码的编写参见动态插件开发样例;