从静态到动态数据转变,业务场景脚本开发新副本开启

假如开发就像在闯关

我一直觉得自己的人生就像是在闯关,没有一劳永逸,每个阶段都有阶段性的副本任务。

每闯过一关,人生画卷就会被点亮一块区域。

我一直觉得自己的职业生涯也像是在闯关,每完成一个副本,就点亮一项技能。

到目前为止,我一直期待着点亮这项技能——“脚本开发”。

有些未完成的副本,奖励很精彩,但是我的副本必备技能还没有掌握。

得益于最近一直在体验华为云Astro,Astro提供了脚本开发功能,支持管理、调试脚本。

想到之前的活动用的还是静态数据,如果能更换成动态数据,岂不是更加完美。

一鼓作气,我准备开发一个活动销量的脚本实例。

从静态到动态数据转变,业务场景脚本开发新副本开启_第1张图片

新副本:业务场景脚本

什么是脚本

华为云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张图片

2、添加对象:ActivityResource

按照如下图填写内容,单击「保存」。

从静态到动态数据转变,业务场景脚本开发新副本开启_第3张图片

3、按照前面的表1添加字段

从静态到动态数据转变,业务场景脚本开发新副本开启_第4张图片

填写显示名称、唯一标识、字段类型

从静态到动态数据转变,业务场景脚本开发新副本开启_第5张图片

4、选择「数据」页签,添加数据。

从静态到动态数据转变,业务场景脚本开发新副本开启_第6张图片

步骤2:创建脚本

1、在左侧导航栏中,选择「逻辑」,单击「脚本」后的「➕」,进入添加脚本页面。

从静态到动态数据转变,业务场景脚本开发新副本开启_第7张图片

2、添加脚本:ResourceListScript

按照如下图填写内容,单击「保存」。

从静态到动态数据转变,业务场景脚本开发新副本开启_第8张图片

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、输出结果,和期望值一致。

从静态到动态数据转变,业务场景脚本开发新副本开启_第9张图片

技巧分享

1、我作为一个前端开发,对SQL语句使用不太熟练,但是我发现华为云Astro提供了一个脚本代码性能检查规则说明,提供了很多正确案例,简单的语句可以参考这里的写法。

从静态到动态数据转变,业务场景脚本开发新副本开启_第10张图片

总结

最近从不同的功能点体验了华为云Astro,无论是搭建页面,还是搭建业务流程,或是搭建脚本实例。

方方面面都能很好的满足日常的开发,帮助减少重复的开发量,避免了陷入开发细节,更多去进行业务场景的挖掘。

Astro的功能十分强大,我目前只体验了部分,已经想到能应用到哪些实用场景了。

未来,我就继续体验其他功能,产出体验文档。如果有项目使用经验,我也会总结成文章的形式,进行持续的输出。

优化建议

1、添加字段的页面在13寸电脑上展示的「修改时间」被遮挡了。

从静态到动态数据转变,业务场景脚本开发新副本开启_第11张图片


作者:非职业「传道授业解惑」的开发者叶一一
简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞 | 收藏⭐️ | 留言。

你可能感兴趣的:(低代码)