一、添加应用宿主机
1.1、登录行云管家后,点击主菜单中的“应用中心”菜单,即可进入应用中心界面。
1.2、点击“宿主机管理”;
1.3、在弹出的宿主机管理框中,点击“添加宿主机”按钮,弹出创建宿主机对话框 ;
1.4、在创建宿主机对话框中,输入宿主机IP,点击创建按钮,即可添加宿主机 ;
1.5、添加宿主机后,返回宿主机管理框中,可以看到添加的宿主机,其状态为“运行中”,并可查看到预置的默认工具 ;
二、发布新的工具
2.1、点击“宿主机管理”;
2.2、点击“发布新的工具”;
2.3、填写“基本信息”;
请“工具名称”、选择或自行上传“应用图标”、填写工具“版本”号、填写工具的“路径”、填写工具的“描述”;
注意:“路径”这里您需要登录到宿主机中,自行完成新工具的安装,并记录下工具的安装路径(绝对路径),如下图。
2.4、填写“参数代填”;
在这里您可以通过JSON脚本定义此工具能够接收的输入项,以及参数代填行为,以此来实现远程数据库工具后该工具自动代填数据库信息。具体填写方式请参考数据库代填指引
2.5、创建完成如图,您可以编辑、预览、删除该工具信息;
三、创建新的工具
3.1、返回至“数据库”界面,点击“数据库工具”,将弹出“数据库工具管理”;
3.2、点击“创建新的工具”;
3.3、设置工具名称、选择应用宿主机、选择工具为上述发布的Navicat、指定工具图标、指定访问应用时是否允许加载团队网盘;
3.3、选择“数据库类型”,在“参数代填”里填入上面发布时参数代填里的对应参数,例如我这里(NavicatPremium的SQLServer参数)就是${user}、${password}、 ${ip} ;
3.4、点击“下一步”后即可完成创建,点击“关闭”;
3.5、此时可以看到“数据库工具”里已经有新创建的工具了;
四、通过发布的应用工具访问数据库
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工具后,需要对操作(文件)系统做哪些清理操作。