为了进一步帮助开发者提升大规模、高复杂度项目交付效率,葡萄城正式推出了活字格 V7.0 Update 1版本。新版本除了进一步提升数据库操作能力,增强服务端Web API的开发和调试能力外,还新增了分支管理功能,从开发能力到项目管理,全面提升大型系统的开发效率。

新特性概览

协同开发模式下支持分支功能,全面支持敏捷式项目管理

分支(Branch)是敏捷式项目管理中比较重要的组成部分。使用分支意味着开发者可以把工作从开发主线上分离开来,以免影响开发主线。在新项目开发中,由于不存在维护系统稳定和紧急修复错误的压力,所以单分支模式基本是可以胜任的;而在项目的后期维护过程中,开发组需要在维护系统稳定的前提下不断改进系统,同时也承担了立刻修复紧急错误的时间压力,这个时候,单分支已经不能满足开发的要求,必须寻求多分支的解决方案。

协同开发模式下支持分支功能,全面支持敏捷式项目管理
(一个项目的多个分支,简化版)

在之前的版本中,活字格提供了兼容GIT的协同开发模式。在构建大规模企业级应用时,多名开发者在同一个协作工程中分别开发不同的页面,可大幅缩短项目的交付周期。为了满足开发者在项目维护期间产生的多分支管理需求,活字格V7.0 Update 1中引入了分支功能,帮助开发者轻松应对线上缺陷修正和客户定制化开发等软件工程管理中常见却棘手的场景。

打开协作工程时选择分支
(打开协作工程时选择分支)

此外,活字格V7.0 Update 1中,签出的粒度进一步细化。除了页面、主题等之外,开发者可以单独签出数据表(含内置库和外联库中的数据表和视图)、母版页、服务端命令、定时任务。更细的粒度,让协同开发更灵活。

支持单独签出的对象类型
(支持单独签出的对象类型)

数据库相关功能大幅提升,轻松构建更复杂、更高性能的企业级应用

为了支撑企业级应用开发,活字格支持模型驱动的应用构建模式。相比于表单驱动的低代码和无代码产品,开发者可以在活字格中通过直接操作数据库,在满足数据库设计范式的基础上,构建更高复杂度的应用。

在活字格V7.0 Update 1中,数据库功能进一步增强,涉及到的主要功能如下:

1、执行SQL命令

相比于运行于服务端程序中的服务端命令,在数据库上直接执行SQL语句有着更高的灵活度和运行性能。为了帮助有SQL编程能力的开发者构建更高性能的应用,活字格提供了可直接执行参数化SQL查询的 “执行SQL服务端命令”,可用于执行数据查询、批量数据处理、调用Function、执行存储过程等。“执行SQL服务端命令”的出现,进一步完善了活字格编程接口所覆盖的层级,确保开发者能分别针对前端、服务端和数据库端进行编程扩展。

通过执行SQL命令,执行参数化查询
(通过执行SQL命令,执行参数化查询)

2、列别名与列备注

在基于第三方成品软件的数据库进行扩展开发时,开发者经常遇到数据表、数据表中的字段数量多,不易查找和定位的问题。为此,活字格借鉴了主流商业智能软件的做法,为数据表增加了备注,为列增加了别名和备注功能。通过设置别名,在不破坏数据库结构的前提下,开发者能更轻松地找到需要操作的表和字段,减少出错的可能性,降低学习成本,提升开发效率。

为来自用友U8+的数据表设置列别名
(为来自用友U8+的数据表设置列别名)

3、支持达梦V8等更多主流数据库

活字格在设计之初就充分考虑了开发者整合多个外部数据源、打通数据孤岛的应用场景,所以,开发者不但可以使用内置数据库,还能以外联的方式使用外部数据库进行应用开发。活字格V7.0 Update 1支持的数据库产品列表中新增了达梦V8、PostgreSQL、Tibero等主流的关系型数据库。如果开发者熟悉的或者需要集成的是这几种数据库,新版的活字格使用起来将会更加方便。

活字格新增支持的数据源
(活字格新增支持的数据源)

服务端命令进一步增强,大幅提升开发和调试效率

因为可以用来构建更高复杂度、更高性能的服务端逻辑,服务端命令自发布以来就深受开发者的好评,堪称活字格在低代码平台领域“最具代表性的功能”。在活字格V7.0 Update 1中,服务端命令再次得到增强,覆盖了设计和调试阶段,进一步提升了该功能的开发效率。

1、自定义返回值的数据结构

在做系统集成时,除了在活字格的服务器上调用第三方Web API外,还有一类场景为开放Web API供第三方调用。为了适配该应用场景,活字格为服务端命令提供了自定义返回值数据结构的能力。开发者可以根据第三方程序的要求,自由定义返回值中包含的对象属性。

为服务端命令的返回值创建新属性
(为服务端命令的返回值创建新属性)

2、记录并显示每一步操作的执行耗时

服务端命令通常涉及到大量的数据库操作和逻辑分支,一旦发现性能不及预期,开发者很难快速判断出问题所在。为此,活字格进一步完善了服务端命令的调试日志,显示每一步操作的执行耗时。有了这个功能,开发者可以更全面地了解服务端命令的执行过程,准确定位性能瓶颈,轻松构建更高性能的企业级应用。

带有单步执行耗时的服务端命令日志
(带有单步执行耗时的服务端命令日志)

3、在设计器中测试服务端命令

开发者使用服务端命令构建的业务逻辑通常较为复杂,为了在第一时间验证逻辑的正确性,活字格在设计器中为服务端命令新增了测试功能,开发者不再需要创建一个测试页面来验证服务端命令,开发效率得到显著提升。

动图,在设计器中测试服务端命令
(动图,在设计器中测试服务端命令)

其他功能增强

  • 单元格与命令相关
  • 新增【设置变量命令】。该命令可以代替隐藏的单元格,用于从数据库中查询数据,或存取临时用的数据,使用这一命令能增强命令的可读性,提升开发和维护效率
  • 新增【表格重载命令】(插件)。该命令可用于清空用户设置的筛选条件和排序规则,并重新加载表格中的数据
  • 新增【创建文件夹服务端命令】。该命令可用于在服务器上创建文件夹,配合【拷贝文件服务端命令】等,可实现更复杂的文件管理需求
  • 新增【获取媒体元素信息命令】和【媒体控制命令】,可以控制音频和视频,实现播放与暂停效果
  • 新增音频播放单元格类型(插件),可用于播放数据表中存储的文件、静态视频文件或者指定URL的外部音频文件
  • 视频播放单元格类型(插件)支持从单元格中动态读取需要播放的视频文件
  • 新增【调用模板命令】,让开发者可以像调用服务端命令那样,直接调用模板命令并完成参数设置,提升开发效率
  • 新增【等待命令服务端命令】,可用来让特定的操作延迟执行,如调用一些仅支持轮训方式的第三方Web API
  • 新增【预览图片命令】,可以位于将图片单元格中的内容放大显示,并支持旋转等操作
  • 新增【获取管理站点URL服务端命令】,可以将包含有主机名或IP地址的管理控制台完整URL地址存放到指定的变量,与添加用户、添加角色等用户管理Web API联合使用,能帮助开发者快速构建定制化的用户和权限组管理功能
  • 【设置单元格属性命令】可以适用于表格中的列,即设置当前行中该列的数据
  • 【发送邮件命令】和【发送邮件服务端命令】支持从数据库中批量选择接收者的邮箱
  • 图标的数据标签支持条件格式化,可以更直观的展示数据间的规律,如将饼图中占比最高项目的数据标签设置为红色,以示强调
  • 表格中的所有列,包括公式计算列、通过【加载JSON到表格命令】填充的列均支持列头筛选功能,和绑定数据表的列完全一致
  • 表格中的按钮也支持样式设置功能,与按钮类型单元格保持一致
  • 标签页类型单元格(插件)支持隐藏标签的功能,在使用标签页将第三方Web页面签入系统时,隐藏标签可以让两个页面无缝融合
  • 图片单元格中的内置图标可以设置为“单元格字体颜色”,实现和当前页面主题联动的效果
  • 组合框支持多选模式,用户可以直接在下拉列表中完成勾选,用户体验更佳
  • 甘特图单元格类型(插件)中新增开始日期、持续时间、结束日期间的自动计算,设置其中两者后,自动推送第三个值
  • 图表、数据透视表和树形图单元格,以及【图片轮转命令】可以通过参数属性完成数据设置,可代替隐藏的单元格
  • 附件单元格支持设置主题样式,与按钮、文本框等单元格类型保持一致,提升页面样式的一致性
  • 开发者可为树形图单元格类型中展开的节点和收起的节点分别设置图标
  • 树形图单元格类型支持“一个子节点对应多个父节点”的模式,可直接用于构建BOM树
  • 树形图单元格类型支持设置查询结果的展示模式,控制结果节点、结果节点的子节点、结果节点的父节点是否自动展开显示
  • 服务端命令支持【异常捕获服务端命令】,类似于编程语言中的Try Catch,可用于处理来自数据或网络操作的异常情况
  • 【条件命令】的条件表达式中支持以“值变更的原因”作为判断依据,开发者可以针对用户输入、公式计算、页面传值、命令、JavaScript脚本等原因分别进行处理,通常用于自动计算的场景
  • 【设置变量命令】和【设置变量服务端命令】新增显示行数和跳过行数参数,可用于获取指定分页的数据,提升数据处理性能
  • 【存储过程调用命令】和【存储过程调用服务端命令】新增返回值参数,可以将存储过程的执行结果数据集存入指定的变量,方便后续处理
  • 【发送HTTP请求命令】支持将返回值保存至指定的变量,配合【导入JSON数据到单元格命令】(插件)和【导入JSON数据到表格命令】(插件),开发者可以像数据绑定一样,对来自Web API的数据进行处理
  • 【发送HTTP请求服务端命令】支持将返回值保存至指定的变量,方便进行后续处理
  • 【数据表操作命令】支持开发者设置是否在提交数据前执行数据校验操作
  • 表格中的文本框支持设置命令,与文本框单元格类似,在该文本框的内容发生变化时触发
  • 开发者可以为表格中的列设置缺省值,当用户添加新行时,会自动填充该缺省值
  • 表格中类型为组合框的列,在用户新创建的行中会显示出下拉箭头,方便用户理解
  • 数据库相关
  • 统计字段支持针对子表的数据进行统计计算,如统计订单下订单明细表的总金额,可替代大量需要在前端进行统计计算,或用SQL语言编写视图的场景
  • 在设计列的自动编号规则,可以引用其他字段,这样就能设计出更复杂的自动编号规则,如带有产品或区域编码的订单号等
  • 开发者可以像操作内置表一样,为外联库的视图设置数据查询权限
  • 开发者可以在活字格设计器中配置外联库的表结构,包含统计字段、默认值、必填项目约束、唯一性约束、字段长度约束等
  • 开发者可以在活字格设计器中创建和管理外联库的视图
  • 在执行发布时,开发者可以像操作内置库一样对外联库的结构和数据进行比对,设计器会生成差分脚本,供开发者做数据库升级时使用
  • 开发者可以设置同一个表中字段的展示顺序,方便查找和定位
  • 协同开发相关
  • 对于协作工程,开发者可以选择是否记忆Git的用户名和密码,提升安全性
  • 开发者可以像操作本地工程一样,将一个协同工程的对象导入另一个协同工程,实现精确到页面、表、服务端命令等对象的分支合并
  • 编程扩展相关
  • JavaScript编程接口新增getVariableValue和setVariableValue方法,在【JavaScript命令】中可操作使用【设置变量命令】创建的变量
  • JavaScript编程接口新增executeCellCommand方法,在【JavaScript命令】中可触发执行特定的按钮上绑定的命令,效果与用户点击该按钮一致
  • 设计器相关的其他项目
  • 在设计器中编写视图时,开发者可以在窗口右侧查看数据表结构和常用的SQL语句模板,将其拖拽入编辑框即可生成对应的语句,提升开发效率
  • 与服务端命令类似,开发者在调试命令时也可以从浏览器控制台中查看命令的执行过程和耗时
  • 在设计器中,开发者对服务端命令中的参数进行重命名时,设计器将自动检测引用并进行更新,减少人工操作,提升开发效率
  • 和服务端命令类似,开发者可以在设计器中测试定时任务
  • 设计器不再为【数据库操作服务端命令】自动设置返回变量名,降低开发者误操作的概率
  • 导入活字格工程时,对象按照其分类以多标签页和树形图的形式展示,方便开发者查找和定位,提升开发效率
  • 在设计器中,开发者可以通过在对象管理器上双击,快速打开公式字段和统计字段的设置对话框
  • 在设计器中,开发者可以将对象管理器中的报表和页面拖拽入页面的单元格中,设计器会自动生成按钮和跳转到该报表或页面的命令
  • 在设计器里,开发者可以在命令、服务端命令、模板命令的设计窗口中选择一个或多个命令,将其批量复制到其他的命令中
  • 在设计器里,开发者可以在对象管理器中,对数据库的字段进行重命名和删除
  • 开发者可以在设计器的表格中,通过右键的方式快速调整表格大小
  • 在设计器里,开发者可以通过Tooltips快速查看菜单单元格类型(插件)中,菜单项目对应的命令
  • 在设计器里,开发者可以使用新增的背景图片面板,操作同一个页面上设置的多个背景图
  • 在设计器里,开发者可以按住Ctrl键选择多个命令,进行批量删除
  • 在设计器里,开发者可以在【设置单元格属性命令】的目标单元格的选择窗口中,按住Ctrl键选择多个单元格
  • 在设计器里,开发者可以在【JavaScript命令】窗口的右侧查看所有JavaScript编程接口,还可以将其中的方法拖拽入文本框,设计器会自动生成代码
  • 在设计器里,开发者可以为母版页、报表创建文件夹,像页面和服务端命令一样管理
  • 在设计器里,开发者可以通过Ctrl+Shit+r一键重设页面中所有单元格的名称
  • 在设计器里,开发者可以通过拖动列头的方式快速调整对应列的宽度
  • 在设计器里,开发者可以在右侧面板中直接设置单元格的数据验证规则,操作更方便
  • 为了在对象管理器中区分外部可访问的服务端命令(即Web API)和私有服务端命令,设计器采用了不同颜色的图标
  • 管理控制台相关的其他项目
  • 管理控制台中外联库、用户信息库的连接字符串以加密的形式展示,实现防窥屏
  • 支持用户通过CDNconfig.js设置静态文件的URL,利用CDN提升页面加载速度
  • 支持为每个应用设置用于存储用户上传文件的路径,配合外联数据库,可轻松实现在多个应用间共享文件
  • 其他提升
  • 在可见性权限的基础上,输入类型单元格(如文本框、组合框、附件、用户选择器等)新增支持可编辑权限,开发者可以在设计器和管理控制台上控制哪些角色有权限修改,哪些仅有只读权限
  • 计划任务中新增“执行服务端命令后”的触发模式,开发者可以在所有的服务端命令执行后记录日志,或在特定服务端命令执行后进行后续处理
  • 页面中新增未提交数据检查设置功能,可以在页面跳转前检查当前页面中是否有数据修改尚未提交,给用户提示,避免数据丢失,提升用户体验
  • 开发者可以设置用户登出后跳转的页面地址,通常用于和其他系统联动
  • 导出的工程文件说明中新增命令的描述文字和数据库连接字符串
  • 优化JavaScript文件的加载模式,显著提升页面载入速度
  • 兼容Chrome 80及以后版本中cookie的SameSite属性,在GlobalConfig.xml中将其设置为none后,就能避免以iframe形式嵌入第三方Web系统时出错
  • 离线发布工具支持覆盖服务端的页面和单元格权限数据