从静态到动态数据转变,业务场景脚本开发新副本开启【华为云Astro低代码体验季】

举报
叶一一 发表于 2023/05/30 09:42:34 2023/05/30
【摘要】 之前做活动BI看板的时候,使用的是静态数据。一方面因为看板的数据目标少,另一方面是因为对脚本的使用不够熟练。掌握脚本开发,可以为后续的业务开发提供更多的技术支持。 所以本文主要分享借助华为云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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200