在实现app自动化过程中,有时候我们需要将多个手机中的任务,按照某种规则进行调度,这时仅仅使用移动端的脚本就无法完成了,需要配合使用微服务来完成。下面就举个例子来实际说明如何使用。
需求
假设我们有100台手机做任务,具体有如下需求:
- 按顺序来启动每台手机任务,移动端脚本名为:test。
- 两次启动之间需要加一个随机的间隔时间。
- 将自定义的参数传给每个启动的手机任务,自定义参数 「参数名:url,类型:string」。
分析需求
上面的需求其实非常简单,就是要求按一定规则顺序执行所有手机中的默认任务。
- 以上需求本质上是做100台手机的调度功能,仅依靠前端的js脚本是无法实现的,所以必须使用微服务。
- 由于需要输入参数url,所以我们可以使用「业务处理」服务来实现,添加一个url参数。
- 两手机任务启动间隔时间也可以做成参数,让用户自己选择间隔的范围。所以可以添加为minInterval和maxInterval两个参数分别表示最小和最大间隔时间(毫秒)。
综上分析,微服务具有三个参数:url,minInterval、maxInterval。
实现
根据上述分析,我们可以先建立「业务处理」服务,然后再编写对应的「微服务脚本」来实现具体调度功能。
- 新建业务处理服务。在冰狐智能辅助网页端选择【微服务】/【业务处理】,点击右上角的"+服务"按钮,新建一个名为demo的业务处理服务。
- 添加参数。点击"参数"按钮,添加三个参数,分别为:【名称:url,id:url,类型:字符串】;【名称:最小间隔,id:minInterval,类型:整型】;【名称:最大间隔,id:maxInterval,类型:整型】。
- 新建微服务脚本。在冰狐智能辅助网页端选择【微服务】/【微服务脚本】,点击右上角的"+脚本"按钮,新建一个名为demo的脚本。
- 关联脚本和业务处理服务。在冰狐智能辅助网页端选择【微服务】/【业务处理】,点击"编辑"按钮,选择刚创建的"demo"为脚本。
- 实现微服务脚本。脚本的核心功能为:接收参数,根据参数和调度要求来启动每个手机任务。
// url、minInterval,maxInterval为业务处理服务透传过来的参数
function main(url, minInterval, maxInterval) {
var devices = deviceList();
for (var device of devices) {
// 仅调度在线手机
if (device.onlineState == 1) {
// 在手机上执行移动端名为"test"的脚本,这里的url参数会直接透传给移动端脚本的main函数参数。
scriptExe('test', device.uuid, [url], true);
// 在minInterval和maxInterval之间随机延时一段时间
sleep(Math.random() * (maxInterval - minInterval) + minInterval);
}
}
}
- 执行服务。在冰狐智能辅助网页端【微服务】/【业务处理】,选择刚创建的"demo"服务,然后点击"执行"按钮,填充相关参数,点击"执行"即可执行代码。
- 如果您还没有手机端脚本(移动端脚本),可以参考下面的代码:
// url参数的值,是上面的微服务脚本通过调用scriptExe函数透传过来的。
function main(url) {
console.log('url:' + url);
}
总结
本文通过一个例子详细介绍了如何使用微服务实现多设备自动调度,各位同学可以根据自己的实际需求修改具体调度策略。