应用中心
数据库工具指引

一、添加应用宿主机

1.1、登录行云管家后,点击主菜单中的“应用中心”菜单,即可进入应用中心界面。

1.2、点击“宿主机管理”,然后点击里面的“添加宿主机”;

1.3、在弹出的宿主机管理框中,点击“添加宿主机”按钮,弹出创建宿主机对话框 ;

1.4、选择网络类型;

(1)门户与宿主机之间的网络互通:门户可以访问到宿主机,宿主机可以访问到门户,适用于行云管家私有部署版的大部分场景,延时低,建议私有部署版选择此项;

(2)只有宿主机能够访问到门户:只有宿主机能够访问到门户,但门户无法直接访问到宿主机,适用于行云管家SaaS平台等网络不通的场景,建议SaaS用户选择此项;

1.5、设置基本信息,为您导入的工具宿主机设置一个名称 ;

1.6、在创建宿主机对话框中,输入宿主机IP,输入工具宿主机Administrator的密码(默认密码是W8ig@digLm),即可完成添加宿主机 ;

1.7、添加宿主机后,返回宿主机管理框中,可以看到添加的宿主机,其状态为“运行中”,并可查看到预置的默认工具 ;

二、发布新的工具

2.1、点击“宿主机管理”;

2.2、点击“发布新的工具”;

2.3、填写“基本信息”;

请“工具名称”、选择或自行上传“应用图标”、填写工具“版本”号、填写工具的“路径”、填写工具的“描述”;

注意:“路径”这里您需要登录到宿主机中,自行完成新工具的安装,并记录下工具的安装路径(绝对路径),如下图路径是C:\Program Files\PremiumSoft\Navicat\navicat.exe。

2.4、填写“参数代填”;

在这里您可以通过JSON脚本定义此工具能够接收的输入项,以及参数代填行为,以此来实现远程数据库工具后该工具自动代填数据库信息。具体填写方式请参考数据库代填指引

2.5、创建完成如图,您可以编辑、预览、删除该工具信息;

三、创建新的工具

3.1、返回至“数据库”界面,点击“数据库工具”,将弹出“数据库工具管理”;

3.2、点击“创建新的工具”;

3.3、设置工具名称、选择应用宿主机、选择工具为上述发布的Navicat、指定工具图标、指定访问应用时是否允许加载团队网盘;

3.4、选择“数据库类型”,在“参数代填”里填入上面发布时参数代填里的对应参数,例如我这里(NavicatPremium的SQLServer参数)就是${user}、${password}、 ${ip} ;

3.5、点击“下一步”后即可完成创建,点击“关闭”;

3.6、此时可以看到“数据库工具”里已经有新创建的工具了;

四、通过发布的应用工具访问数据库

4.1、点击“数据库”页面您需要访问的“数据库”进入到该数据库详情里;

4.2、点击“数据库访问串”里的“立即访问”,在这里可以看到刚创建的工具,选择即可访问该会话工具;

4.3、点开后可以看到该工具自动代填并生成新的数据库连接;

五、参数代填JSON脚本

我们以数据库客户端工具Navicat为例,来进行参数代填JSON脚本说明。

5.1、使用场景举例

首先,我们来看一下Navicat工具是如何连接到数据库服务端的。

打开的Navicat的界面如下:(不同版本的Navicat其界面会有不同,这里以Navicat 12 for MySQL 为例):

在Navicat工具中,如果我们要连接到一个MySQL数据库,我们的操作过程如下:

(1)在Navicat主界面中,点击“文件”菜单,然后将鼠标移动到弹出菜单中的“新建连接”菜单项之上,再将鼠标移动到弹出的子菜单中的“MySQL...”菜单项之上,并点击“MySQL...”菜单项,将会弹出MySQL新建连接对话框

(2)在MySQL新建连接对话框中,我们需要输入“连接名”、“主机”(IP地址或主机名)、“端口”、“用户名”及“密码”这几项信息,然后点击“确定”按钮,即可连接到MySQL数据库

总结上述Navicat连接到MySQL数据库的过程,我们会发现,有两部分信息需要处理:

a)通过点击特定的菜单项,打开“MySQL新建连接对话框”;

b)在“MySQL新建连接对话框”中,要输入MySQL的IP地址等特定的信息,以连接到MySQL;

5.2、什么是参数代填

那么,所谓参数代填,指的是这样一个场景:在行云管家将这个Navicat作为一个工具发布后,我们在使用发布的Navicat来连接指定的数据时, 行云管家可以自动点击Navicat的特定菜单项来打开“新建连接对话框”,并将您事先给出的“主机”、“端口”、“用户名”及“密码”这几项信息填入到“MySQL新建连接对话框”中的特定位置,然后自动点击“确定”按钮,连接至MySQL数据库。

5.3、参数代填JSON脚本

简而言之,我们的JSON脚本是用来描述上述参数代填过程所需的各项信息的,它最少包括两部分,即:

(1)操作描述:描述点击菜单项打开“新建连接对话框”,然后向“新建连接对话框”中相应位置填入“主机”、“端口”等各项内容,再点击“确定”按钮的过程;

(2)参数描述:填写“新建连接对话框”所需的各项信息,包括“主机”、“端口”、“用户名”及“密码”等;

在行云管家中发布的工具,往往会授权予多人,换而言之,行云管家中发布的工具会同时被多人使用,这样一来,就存在数据安全的问题,即是说用户A使用工具后留下的数据为了安全而不应该被用户B看到。那么,如果用户A使用工具之后,将其使用工具所留下的数据从文件系统中清理掉,则用户B在使用工具时就无法看到用户A所留下的数据,从而保证数据安全。

为了数据安全,通常JSON脚本中还包括第三部分:清理描述,这部分内容用于描述“关闭工具后,需要对操作(文件)系统做哪些清理操作”。

总结一下,参数代填JSON脚本主要包括三部分:

a) 参数描述;

b) 操作描述;

c) 清理描述;

5.4、参数代填JSON脚本样例

一个Navicat工具参数代填JSON脚本样例如下:

{   
  "meta_comment" : "meta是用来定义参数和自动代填变量信息的属性,是一个数组,如果没有任何变量,请定义一个空数组",
  "meta" : [
    {
      "name" : "userName",
      "label" : "用户名",
      "type" : "text"
    },
    {
      "name" : "password",
      "label" : "密码",
      "type" : "password"
    },
    {
      "name" : "host",
      "label" : "host",
      "type" : "text"
    },
    {
      "name" : "port",
      "label" : "port",
      "type" : "text"
    }
  ],
  "autoFillInfo": {
    "title": "^Navicat",
    "timeout": 10,
    "maximize": false,
    "action": [
      {
        "desc": "点击开始菜单",
        "target": {
          "desc": "标签为ActionMainMenuBar的控件,在相对位置(0,0)上点击",
          "text": "ActionMainMenuBar"
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          "left"
        ],
        "wait": 0.5
      },
      {
        "desc": "移动到子菜单上",
        "target": {
          "desc": "类型为TThemedPopupMenu的控件",
          "class": "TThemedPopupMenu"
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          ""
        ],
        "wait": 1
      },
      {
        "desc": "点击打开菜单",
        "target": {
          "desc": "类型为TThemedPopupMenu的控件",
          "class": "TThemedPopupMenu"
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          "left"
        ],
        "wait": 1
      },
      {
        "desc": "隐藏输入法,此步骤可能失败,但是失败后仍然继续",
        "target": {
          "desc": "类型为NativeHWNDHost的控件",
          "class": "NativeHWNDHost",
          "seq":0
        },
        "event": "hide",
        "param": [true],
        "wait": 1,
        "continue":true
      },
      {
        "desc": "输入连接名",
        "target": {
          "desc": "最后一个Edit控件",
          "class": "TEdit",
          "seq": -1
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${_timestamp}"
        ],
        "wait": 1,
        "focus": true
      },
      {
        "desc": "输入host",
        "target": {
          "desc": "第一个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 0
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${host}"
        ],
        "wait": 1
      },
      {
        "desc": "输入port",
        "target": {
          "desc": "第四个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 3
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${port}"
        ],
        "wait": 1
      },
      {
        "desc": "输入用户名",
        "target": {
          "desc": "第三个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 2
        },
        "event": "message",
        "param": [
          "WM_SETTEXT",
          "${userName}"
        ],
        "wait": 1
      },
      {
        "desc": "输入密码",
        "target": {
          "desc": "第二个Edit控件(从0开始)",
          "class": "TEdit",
          "seq": 1
        },
        "event": "keyboard",
        "param": [
          [
            10,
            10
          ],
          "${password}"
        ],
        "wait": 1
      },
      {
        "desc": "点击ok按钮",
        "target": {
          "desc": "第二个Tbutton控件(从0开始)",
          "class": "TButton",
          "seq": 2
        },
        "event": "mouse",
        "param": [
          [
            10,
            10
          ],
          "left"
        ],
        "wait": 1
      }
    ]
  },
  "postRun": [
    {
      "action": "fileclean",
      "params": [
        "%USERPROFILE%\\Documents\\Navicat"
      ]
    },
    {
      "action": "regclean",
      "params": [
        "HKEY_CURRENT_USER\\Software\\PremiumSoft\\Navicat\\Servers"
      ]
    },
    {
      "action": "command",
      "params": [
        "echo",
        "test"
      ]
    }
  ]
}

样例说明:

a)上述样例中“meta”部分即为“参数描述”部分。其描述了代填的参数有四个,分别为:“用户名”、“密码”、“host”和“port”。这四个参数将会出现在“创建应用”对话框中(参考前述“创建应用”一节)。

b)上述样例中“autoFillInfo”部分即为“操作描述”部分。其描述了进行代填操作时点击菜单项打开“新建连接对话框”,然后向“新建连接对话框”中相应位置填入“主机”、“端口”等各项内容,再点击“确定”按钮的过程。

c)上述样例中“postRun”部分即为“清理描述”部分。其描述了关闭Navicat工具后,需要对操作(文件)系统做哪些清理操作。