在移动自动化、设备集群管理与业务流程定制场景中,传统开发常面临服务器运维成本高、部署繁琐、弹性不足、前后端割裂等问题。云原生 将FaaS(函数即服务) 作为核心 Serverless 实现方案,让开发者无需关注服务器、容器、扩容与运维,只需用 JavaScript 编写轻量函数,即可快速扩展 SaaS 能力、搭建独立后端、实现跨端调用与批量设备调度。
一、冰狐云原生与 FaaS 核心架构解析
冰狐云原生原生支持 FaaS、BaaS 与事件驱动,FaaS 是其轻量化、高弹性的核心实现模式,属于典型 Serverless 架构。平台底层由 JS 引擎驱动,提供模块化管理、高并发访问、数据库操作、设备管理等原生能力,整体架构清晰分层:
- 接入层:移动端接口、服务端 Open API、业务处理服务、通用数据服务统一入口;
- 执行层:FaaS JS 脚本运行时,负责函数调度、参数透传、逻辑执行;
- 支撑层:冰狐 SaaS(用户 / 设备 / 脚本管理)、数据库、系统服务,提供底层能力支撑;
- 伸缩层:平台自动根据流量弹性扩缩容,无需人工干预。
这种架构让 FaaS 脚本成为轻量微服务,既可扩展标准 SaaS 功能,也能独立承载后端逻辑,完美适配自动化脚本的灵活定制需求。
二、冰狐 FaaS 核心能力
冰狐 FaaS 基于 JavaScript 开发,零服务器依赖、零复杂部署,核心能力覆盖四大场景,精准解决自动化开发痛点:
- 扩展冰狐 SaaS 定制能力标准 SaaS 满足通用需求,特殊业务可通过 FaaS 注入扩展,无需改造平台底层;
- 快速搭建独立后端替代传统后端开发,省去服务器采购、运维、框架搭建,用 JS 实现接口、数据处理;
- 跨端统一调用支持移动端脚本、第三方服务端双向调用,打通前端自动化与后端逻辑;
- 批量设备调度与数据操作支撑多设备批量执行、数据库增删改查、网页端触发业务,适配集群自动化场景。
三、FaaS 四大调用方式与 Demo 实战
冰狐 FaaS 提供移动端接口、服务端 Open API、业务处理服务、通用数据服务四种调用方式,覆盖全场景开发需求,以下结合官方 Demo 详解用法与源码。
(一)移动端调用 FaaS
移动端脚本通过callMicroService函数调用 FaaS,指定脚本名、函数名(默认 main),参数透传,返回值直接接收,适用于移动端需访问数据库、获取设备信息等场景。
移动端脚本 Demo(前端自动化)
javascript
// 移动端脚本:调用FaaS接口call_demo,传递字符串和数字参数
function main() {
// 调用格式:callMicroService(脚本名, [参数数组])
var result = callMicroService("call_demo", ["冰狐自动化", 2025]);
// 打印FaaS返回结果
console.log("FaaS返回结果:" + result);
// 前端提示
toast("调用成功,结果:" + result);
}
FaaS 服务端脚本 Demo(后端逻辑)
javascript
// FaaS脚本:对应接口call_demo,接收移动端参数并处理
function main(name = "", value = 0) {
console.log("接收参数------name:" + name + ",value:" + value);
// 业务逻辑:字符串拼接+数值计算
return name + " | 年份:" + value;
}
(二)第三方服务端调用 FaaS
第三方系统通过/api/call_micro_service接口调用 FaaS,携带鉴权参数、脚本名、参数列表,实现跨平台集成,适用于外部系统触发自动化任务。
调用请求示例
javascript
https://aznfz.com/api/call_micro_service?clientKey=你的密钥&accessToken=你的令牌&name=call_demo&isDev=true¶ms=["冰狐自动化",2025]
FaaS 脚本(同移动端调用,无需修改)
javascript
function main(name = "", value = 0) {
console.log("第三方调用参数:" + name + "," + value);
return "第三方响应:" + name + value;
}
(三)业务处理服务:网页端触发批量设备自动化
适用于网页端输入参数、触发云端 FaaS、控制多设备执行任务,支持整数、字符串、文件、动态选项等参数类型,是批量设备调度的核心方案。
实战需求:100 台手机批量调度执行自动化脚本
- 按顺序启动每台手机的
test自动化脚本; - 支持自定义启动间隔(最小 / 最大毫秒数);
- 传递自定义
url参数至移动端脚本。
步骤 1:创建业务处理服务
- 网页端进入【FaaS】-【业务处理】,新建
device_schedule服务; - 添加 3 个参数:
- url(字符串,任务链接);
- minInterval(整数,最小间隔);
- maxInterval(整数,最大间隔)。
步骤 2:FaaS 调度脚本 Demo
javascript
// 核心调度函数:接收业务参数,批量控制在线设备
function main(url, minInterval, maxInterval) {
console.log("调度参数------url:" + url + ",最小间隔:" + minInterval + ",最大间隔:" + maxInterval);
// 获取所有设备列表
var deviceList = deviceList();
for (var device of deviceList) {
// 仅调度在线设备
if (device.onlineState === 1) {
console.log("执行设备:" + device.uuid);
// 调用移动端test脚本,透传url参数
scriptExe("test", device.uuid, [url], true);
// 随机延时:避免并发过高
var sleepTime = Math.random() * (maxInterval - minInterval) + minInterval;
sleep(sleepTime);
console.log("延时:" + sleepTime + "毫秒");
}
}
console.log("批量调度完成");
}
步骤 3:移动端接收参数脚本 Demo
javascript
// 移动端test脚本:接收FaaS透传的url参数并执行
function main(url) {
console.log("接收调度url:" + url);
toast("开始执行任务:" + url);
// 此处添加自动化逻辑(如打开网页、点击控件等)
// 示例:打开指定url
app.openUrl(url);
}
(四)通用数据服务:数据库 CRUD 与表格操作
通用服务基于数据库表格,实现数据增删改查、批量处理,适配自动化数据持久化场景,内置dbQuery/dbInsert/dbUpdate/dbDelete等数据库 API。
1. 数据查询 Demo
javascript
// 查询函数:支持分页、条件筛选、统计总数
function query(fetchCountOnly, conditions, startIndex, itemCount) {
var queryParams = [];
// 构建查询条件
for (var item of conditions) {
if ((item.name === "uuid" || item.name === "name") && strIsNotEmpty(item.value)) {
queryParams.push(`${item.name}="${item.value}"`);
}
}
// 仅查询总数
if (fetchCountOnly) {
var countResult = dbQuery("device_table", "count(id) as count", queryParams);
return countResult[0].count;
}
// 分页查询数据
return dbQuery("device_table", "*", queryParams, "", startIndex, itemCount);
}
2. 数据新增 Demo
javascript
// 新增数据:接收前端参数,插入数据库
function confirmAdd(itemIds, params) {
var dataObj = {};
// 转换参数格式
for (var p of params) {
dataObj[p.name] = p.value;
}
// 执行插入
var insertResult = dbInsert("device_table", dataObj);
console.log("新增结果:" + insertResult);
return insertResult;
}
3. 数据删除 Demo
javascript
// 删除数据:批量删除指定ID数据
function confirmDelete(itemIds, params) {
var deleteResult = false;
for (var id of itemIds) {
deleteResult = dbDelete("device_table", [`id=${id}`]);
console.log("删除ID:" + id + ",结果:" + deleteResult);
}
return deleteResult;
}
四、冰狐 FaaS 开发核心规范
- 函数入口 :默认入口为
main函数,参数与调用方一一对应; - 参数类型:支持整数、浮点数、布尔、字符串、文件、动态选项;
- 原生 API :内置
deviceList(设备列表)、scriptExe(执行脚本)、dbQuery(数据库查询)、sleep(延时)等自动化专用 API; - 模块化:支持多脚本拆分、函数复用,便于复杂业务维护;
- 日志调试 :通过
console.log打印日志,网页端实时查看调试。
五、冰狐云原生 FaaS 优势总结
- 零运维成本:无需服务器、容器、运维,平台自动弹性伸缩;
- 低开发门槛:纯 JS 开发,前后端语法统一,自动化开发者快速上手;
- 高灵活性:四种调用方式覆盖全场景,可扩展 SaaS、独立建后端、控设备;
- 强集成性:打通移动端、第三方服务、网页端,实现自动化全链路闭环;
- 高性能稳定:JS 引擎高效执行,支持高并发,适配批量设备调度场景。
六、结语
本文详细介绍了将云原生 与FaaS深度融入自动化脚本开发,彻底重构了传统移动自动化的开发模式。从单设备自动化到集群调度,从前端逻辑到后端服务,从简单扩展到复杂业务定制,开发者只需聚焦业务逻辑,用轻量 JS 函数即可实现全栈能力。