从静态到动态数据转变,业务场景脚本开发新副本开启【华为云Astro低代码体验季】
假如开发就像在闯关
我一直觉得自己的人生就像是在闯关,没有一劳永逸,每个阶段都有阶段性的副本任务。
每闯过一关,人生画卷就会被点亮一块区域。
我一直觉得自己的职业生涯也像是在闯关,每完成一个副本,就点亮一项技能。
到目前为止,我一直期待着点亮这项技能——“脚本开发”。
有些未完成的副本,奖励很精彩,但是我的副本必备技能还没有掌握。
得益于最近一直在体验华为云Astro,Astro提供了脚本开发功能,支持管理、调试脚本。
想到之前的活动用的还是静态数据,如果能更换成动态数据,岂不是更加完美。
一鼓作气,我准备开发一个活动销量的脚本实例。
新副本:业务场景脚本
什么是脚本
华为云Astro中脚本开发的介绍如下:
针对业务逻辑比较复杂的场景,低代码平台提供了脚本(Script)能力,支持用户在线开发TypeScript脚本,完成灵活复杂的业务逻辑。
来自百度百科的介绍更加直观:
脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。
准备工作
根据对象的数据生成资源列表数据,用于前台数据呈现,启用本脚本后,可实现数据导入模板使用。
在创建脚本前,需要先创建脚本中操作的对象ActivityResource,对象的字段说明如下表1:
字段标签 |
字段名称 |
字段类型 |
取值 |
读写权限 |
含义 |
activitiyId |
activitiyId |
文本 |
长度:64 |
全选 |
活动ID |
activitiyName |
activitiyName |
文本 |
长度:255 |
全选 |
活动名称 |
salesmanId |
salesmanId |
文本 |
长度:64 |
全选 |
战区业务员ID |
salesmanName |
salesmanName |
文本 |
长度:255 |
全选 |
战区业务员名字 |
activitiySalesNum |
activitiySalesNum |
数字 |
不涉及 |
全选 |
活动销量 |
belongZone |
belongZone |
文本 |
长度:255 |
全选 |
所属战区 |
开发一个脚本实例
步骤1:创建对象
1、登录新版应用设计器。
在左侧导航栏中,选择「数据」,单击「对象」后的「➕」,进入添加对象页面。
2、添加对象:ActivityResource。
按照如下图填写内容,单击「保存」。
3、按照前面的表1添加字段
填写显示名称、唯一标识、字段类型
4、选择「数据」页签,添加数据。
步骤2:创建脚本
1、在左侧导航栏中,选择「逻辑」,单击「脚本」后的「➕」,进入添加脚本页面。
2、添加脚本:ResourceListScript。
按照如下图填写内容,单击「保存」。
3、编写脚本内容
//导入该脚本所依赖的标准库文件,decimal和context是系统预置的标准库。
import * as db from 'db';
import * as decimal from 'decimal';
import * as context from 'context';
//声明该脚本中所应用到的ActivityResource__CST对象
@useObject(['BEAST__ActivityResource__CST'])
//定义入参变量activitiyId、salesmanId
@action.object({ type: 'param' })
export class Input {
@action.param({ type: 'string', required: true })
activitiyId: string;
@action.param({ type: 'string', required: true })
salesmanId: string;
}
//定义出参变量resource和totalCount,分别表示资源数组集合和资源总数(固定100)。
@action.object({ type: 'param' })
export class Output {
@action.param({ type: 'any', isCollection: true, label: "object" })
resource: object[];
@action.param({ type: 'number' })
totalCount: number;
}
//定义数据源方法体,用于模拟数据源,并支持状态检查和分页功能。
@action.object({ type: 'method' })
export class SearchScript {
@action.method({ input: 'ParamsInput', output: 'ParamsOutput' })
public run(input: Input): Output {
let out = new Output()
this.doSearchScript(input);
return out;
}
private doSearchScript(input) {
console.log(input, 'input')
let sql = db.sql();
// 定义查询SQL语句,用于查询某活动销量;SQL语句中的表名和字段名要和预定义的对象名和字段名保持一致。
let sqlTest = "select BEAST__activitiySalesNum__CST, BEAST__belongZone__CST from BEAST__ActivityResource__CST "
+ "where BEAST__activitiyId__CST = ? OR BEAST__salesmanId__CST = ?"
let result = sql.exec(sqlTest, { params: [input.activitiyId, input.salesmanId] });
console.log("result", result)
}
}
步骤3:测试脚本
1、单击代码编辑器上方的「保存」按钮,保存脚本。
单击编辑器上方的「运行」按钮,执行脚本。
2、输入参数。
{
"salesmanId": 1
}
3、输出结果,和期望值一致。
技巧分享
1、我作为一个前端开发,对SQL语句使用不太熟练,但是我发现华为云Astro提供了一个脚本代码性能检查规则说明,提供了很多正确案例,简单的语句可以参考这里的写法。
总结
最近从不同的功能点体验了华为云Astro,无论是搭建页面,还是搭建业务流程,或是搭建脚本实例。
方方面面都能很好的满足日常的开发,帮助减少重复的开发量,避免了陷入开发细节,更多去进行业务场景的挖掘。
Astro的功能十分强大,我目前只体验了部分,已经想到能应用到哪些实用场景了。
未来,我就继续体验其他功能,产出体验文档。如果有项目使用经验,我也会总结成文章的形式,进行持续的输出。
优化建议
1、添加字段的页面在13寸电脑上展示的「修改时间」被遮挡了。
作者:非职业「传道授业解惑」的开发者叶一一
简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
我正在参加【有奖征文 第22期】华为云Astro低代码体验季,输出优质文章,赢开发者大礼包!
https://bbs.huaweicloud.com/blogs/397241
- 点赞
- 收藏
- 关注作者
评论(0)