“关注”和“Star”我们,每天接收亚马逊云技术的最新资讯!作为一名课外生活丰富多彩的大学生,你可能参加过很多兴趣小组。如果您阅读了这篇文章,那么您很有可能也会加入各种计算机兴趣小组。那你不妨试试和团队成员一起,为大家开发一个在线课程预约系统吧!不仅可以借此机会锻炼自己的软件开发技能,学习新技术,在实践中掌握新技能,还可以造福于更多的师生。是不是很美?即使你已经步入职场,类似的技术也可以从另一个角度应用到工作中很多与预订相关的场景。快来看看吧!01.定义数据表数据表是低代码或零代码的基础,本质上是通过对数据表的操作来自定义和展示数据。先说明一下这个项目会用到的数据表。本例一共涉及7张表,分别是:ClassTab表,用于显示本周所有的课程安排;MyClass表,用于记录学生本周选择参加的课程。表中“value”列的数据是从WeekDays表中的“value”列中提取出来的,用于工作日排序,后面会用到。=FINDROW(WeekDays,"WeekDays[WorkingDay]=%",[Weekday])[Value]ClassList表,记录了本周所有课程目录ClassLocation表,该表记录了每门课程对应的上课位置ClassMap表Teachers表是一张教师目录表,记录了每门课程对应的教师姓名,记录了本周课程对应的所有教师的姓名。WeekDays表是本周工作日的记录表。表中的Value列为数字列,用于排序使用以上七张表的对应关系如下:ClassTab表●ClassList表和Teachers表是ClassMap表的“Name”和“Teacher”列的PickList引用数据源表。ClassList表也是ClassLocation表的“Class”列的PickList引用表。可以看出,ClassList课程表是其他大部分表的参考数据源,本质上是一种逻辑对应关系。,以显示ClassList中的课程。这里需要重点理解。02.业务逻辑分析接下来介绍本例的业务逻辑,它决定了底层数据如何展现。首页数据展示,数据来自ClassTab表,每个工作日的课程按行显示,不同课程时段按列划分。每日课程展示,首页每条数据线代表一个工作日课程,点击可展开每日课程详情,在此页面,您可以点击“详情”按钮查看当天每门课程的详细信息(课程名称、课程时间、对应老师、上课地点),您也可以点击“参加”按钮,决定是否参加您感兴趣的课程。我的课程展示,所有订阅的课程都在我的课程页面列出,并且可以看到这些课程对应的工作日、时间和课程名称信息。也可以取消。此页面上的数据来自MyClass表,并将按“工作日”和“时间”列排序。03.开始构建App在介绍完数据表设计和业务逻辑之后,我们开始构建APP。登录Honeycode网站,创建一个新的Workbook并将其命名为ClassBooking。创建第一部分介绍的七张数据表,并设置引用关系。在首页添加ColumnList列表对象,选择“Classtab”数据表作为数据源。检查添加详细信息页面。列表属性页增加条件显示,用于每行以蓝色和绿色间隔显示,同时钝化边缘,增加界面美观度。条件表达式为:=MOD(ROW(THISROW()),2)=0表达式中先用ROW标记当前数据行,再用MOD对行号求模,确定奇偶行并设置相应的颜色。在自动生成的行内容详情页中,每行后面分别添加了“详情”和“参与”两个按钮。在详情页底部添加一个Block和四个DataCells来显示课程详情。设置步骤5中“详情”按钮的可见性,表达式内容为:=NOT(ISBLANK($[08000950列数据]))通过判断是否显示“详情”按钮课程期间列为空。设置“Details”按钮的ACTIONS,从InputRow中取出数据写入第6步的属性Block中。需要注意的是,DataCell变量teacher和location的值取自ClassMap和ClassLocation表,并由FINDROW函数匹配。设置“加入”按钮的可见性。表达式为:=AND(NOT(ISBLANK($[08000950列数据])),ROWS(FILTER(MyClass,"MyClass[Time]=%ANDMyClass[Class]=%ANDMyClass[Weekday]=%",$[08000950columnheader],$[08000950columndata],$[Weekdaycolumndata]))=0)用AND函数连接两个条件语句,第一个是判断对应课程的值是否period为空,二是判断我的courseMyClass表中是否已经存在这一期的课程。“加入”按钮只有在满足所有条件时才会显示。设置“参加”按钮的ACTIONS,将要参加的课程信息写入我的课程MyClass表中。对每个时间段列重复步骤7-10。值得注意的是课程详情页中工作日DataCell的值设置。仔细想想为什么要这样写?我们前面提到,WeekDays表是ClassTab表中“工作日”列的PickList外部数据源表。详情页显示的数据是ClassTab表每一行的数据。那么weekday的DataCell对应的值就是指向WeekDays表中某行的RowLink,所以这意味着“weekday”列的值取自“weekDays表”所指向的行数据ClassTab的工作日”列。添加一个新的Screen来显示要参加的课程,并在页面中添加一个ColumnList对象,并设置数据源。数据源表达式为:=FILTER(MyClass,"ORDERBYMyClass[value],MyClass[Time]")注意表达式中使用了ORDERBY,这里我们按照“值”列和“时间”列进行排序“我的班级。在上面新建的Screen中的列表行添加一个“Cancel”按钮,用于从MyClass表中删除对应的课程记录。设置其ACTIONS以删除当前行。至此,这个APP的搭建就完成了,所有页面的展示效果如下:04.总结在这个例子中,涉及到了AmazonHoneycode的很多核心操作,比如PickList和RowLink的使用,过滤数据来源和根据条件设置样式等,但是课程发布的链接没有设置。可以尝试判断当前登录的用户,绑定角色和权限,然后对课程表进行增删改查。相信通过这些动手练习,你一定会对Honeycode低代码平台有更深入的了解,积累可观的动手经验。如果您想深入了解AmazonHoneycode,我们向您推荐“AmazonHoneycode社区”,您可以在这里与其他Honeycoder交流,共同学习新技能!复制网址(https://honeycodecommunity.aws/)或扫描下方二维码即可访问~本文作者介绍亚马逊云技术专业服务团队云架构顾问李俊强,负责云为企业级客户提供架构咨询和基础设施现代化改造和优化。在基础设施和容器领域拥有多年运维管理经验,对DevOps、持续交付、云原生服务框架、运维自动化有深刻理解。结尾
