2020年,随着低代码概念日趋火热,越来越多的产品冠以“低代码”的名义推向企业信息化市场。这些产品“乱花渐欲迷人眼”,在产品功能、应用场景上存在较大差异,不由得让人们怀疑,低代码究竟能否支撑ERP、SCM、WMS等业务逻辑复杂的企业级系统开发?

近日,南京正念行的开发经理周齐先生,在葡萄城公开课的平台上给大家分享了使用活字格开发库存核算功能的经验,让我们得以窥见引领国内技术趋势的活字格低代码开发平台在企业级应用开发领域的实力。

个性化需求高的库存核算

库存核算是对商品价值的一种计量手段,是WMS的核心功能,也是ERP、SCM等行业解决方案的重要组成部分。库存核算可以拆解为出入库核算、出入库凭证处理、核算报表查询、期初期末处理及相关资料维护等应用场景。

然而,不同行业、不同管理方式的企业在库存核算方面有着不同的要求,如冷冻食品和纺织品企业在货品保质期上的差异,就会体现在库存核算的策略上。正是库存核算的这个特点,让定制化WMS/ERP/SCM有着非常大的市场空间,也能够给企业带来更高的价值。

典型的企业级应用场景

从业务角度看,库存核算的本质是管理出库单、入库单、盘存单等一系列单据,通过自动汇总计算,为操作人员提供准确的库存数量和金额数据。然而,库存核算远不是用户可以看到的这几张单据和几个数字可以覆盖的。

作为制造业、批发零售业等行业的核心业务,库存核算对数据准确性要求非常高。为了避免人为原因导致数据出错,库存核算还需要进行多重检验。如果企业不允许出现负库存的话,这些校验将会起到非常重要的作用。在数据存储上,库存数据和财务系统密不可分,所以库存也需要按照财务的要求,支持月结(以月份为单位进行结转),为财务提供准确的期初库存和期末库存数据。除了上面提到的业务要求,随着数据量的增长,如何确保即时库存和可用库存的计算速度?性能优化也会成为绕不开的问题。

总之,库存核算具备企业级应用的典型特点:关注数据完整性、业务处理复杂、性能要求高。面对类似的企业级应用需求,受限于过于简单的逻辑处理能力和数据库编程功能的缺失,“表单”和“BPM”型低代码产品确实束手无策。没关系,让我们把目光转型低代码开发平台中应用场景最广的“瑞士军刀”:活字格企业级低代码开发平台,看看出身于全球领先开发技术提供商的产品如何应对这种复杂的业务场景。

多管齐下,用活字格实现库存核算

以周先生使用活字格交付的家纺行业SCM系统为例,开发库存核算需要用到活字格的外联数据库、视图、调用存储过程、服务端命令等进阶功能。如果您正在开发库存核算模块,或者使用低代码构建类似库存核算的企业级复杂应用,相信下面的内容会对您有所启发。

数据建模:外联数据库

如果您使用过“表单”型低代码产品,一定会发现面对库存核算这种复杂的企业级应用场景,通过表单来实现数据存储全部数据是不现实的。而活字格的表和页面是完全分离的,开发者可以在活字格内置的数据库或外联Microsoft SQL Server、MySQL或Oracle数据库上,根据业务需要,通过表和外键等数据技术完成数据建模。周先生的团队在这个项目中采用了Microsoft SQL Server 2008 R2数据库,数据库关系图如下所示。

(库存核算系统的数据库关系图)

在周先生进行演示的数据库中,表名中均被替换为拼音或英文单词的首字母,如t_IN_D表示入库单明细表。此外,据周先生介绍,实际项目中有多种类型的出库单数据,系统将这些不同的类型的出库单存储在了不同的表中,如需一次查询不同类型的出库单,可以使用专门设计的出库数据视图:v_OUT_A。为了简化后面的演示,这些出库表在这里也被简化成了一张表。

从数据模型上,我们能够清晰的看到入库单表、出库单表、盘存表、期初表与仓库、物料之间的关联关系。与采用纯代码的方式类似,符合数据库设计范式的数据模型,也是使用低代码开发企业级应用的基础。

库存查询:视图

在周先生演示的项目中,出入库、盘存、期初余额等数据存储在不同的表中,这样在方便了对应表单管理功能开发的同时,也增大了库存查询的复杂度。有没有高效的手段,能够快速完成关联多表的数据查询?周先生选择了使用活字格访问数据库中的查询视图,来实现当月库存实时数据查询功能。

(当月库余额查询视图的创建脚本)

在这个查询视图中,数据库将根据仓库和物料,分别汇总出库库和盘存记录,与期初余额加总得出当月出入库量和当前的库存数量。

不论是外联的SQL Server等数据库,还是活字格内置的数据库,都提供了以SQL语句编写查询视图的能力,而活字格可以像访问数据表一样访问这些查询视图,以拖拽的方式,将视图与表格绑定,将数据展示给最终用户。相比于将数据拉取到服务器端甚至客户端后再进行处理,查询视图因为运行在数据库引擎中,执行效率可以大幅提升,是实现复杂查询的利器。

编写视图需要开发者具备一定的SQL代码编程能力。一定程度上讲,在拖拽式完成大多数业务功能开发的前提下,使用数据库视图来扩展其应用场景,正是低代码相比于无代码等其他工具的优势之一。正是因为活字格具备了对接查询视图的能力,才能帮助周先生利用SQL代码,为大负载、高复杂度的业务逻辑进行性能优化,满足企业级应用对数据处理性能的高要求。

可用库存校验:表格、公式与命令

对于一套B/S架构的企业级系统,关键业务模块都会在服务端对最终用户提交上来的数据进行校验。比如在进行出库操作前,库存核算模块需要查询可用库存,达到避免出现负库存的目的。然而,为了提升系统的易用性,系统通常会采用“批量编辑/提交”的模式进行设计。最终用户在一个页面上同时设置多个物料的出入库数据,然后一键提交。如果仅在服务端进行校验和检查,就无法帮助最终用户及时发现数据错误,导致重复性操作。

为了提升用户体验,周先生的团队在服务端验证的基础上,还通过活字格的命令机制,为出入库单等页面设置了前端验证。当最终用户创建和修改出入库单上的物料数量时,系统会实时检查可用库存,可能出现负库存时,及时提醒用户。在服务端验证的基础上,追加前端验证可以提升校验的响应速度,用户体验更佳。然而,如何在不写JavaScript代码的情况下,于页面上完成复杂的库存余额计算?

(修改出库单时,实时检查物料库存)

为了实现出入库单的前端验证,周先生用到活字格的表格操作等命令,在页面中隐藏的表格中完整校验计算。

(通过隐藏的表格实现前端验证逻辑)

在页面中隐藏若干个表格,通过表格操作命令实现表格间的数据传递,是活字格的一大功能也行。配合vlookup等兼容Excel的公式,使用活字格构建前端验证的操作非常易于上手,且功能强大。

月度盘存:存储过程+服务端命令

从上面的介绍中,我们不难看出周先生开发的库存核算功能,库存数量的计算都是基于“期初库存”,叠加本期的进出库记录,进行增量计算得来的。对于出入库频繁,数据量大的企业级系统而言,这种“增量计算”的思路可以将汇总计算的时间区间缩短到不超过一期(一个月),大大降低参与计算的数据量,提升整个系统的处理能力。那么,如何生成期初库存呢?

(通过服务端命令实现事务性的数据处理逻辑)

周先生的团队选择了活字格的调用存储过程命令和服务端命令,构建了运行于服务端和数据库引擎的月度盘存逻辑。服务端命令是活字格的创新性功能,可以通过可视化的方式,构建运行于后台的数据处理等业务逻辑。在服务端命令中,开发者除了可以结合兼容Excel的公式来操作数据表,还能执行调用数据库的存储过程、第三方的Web API、发送企业微信/钉钉消息等操作,全面满足企业级业务系统所需。

立即行动

在葡萄城公开课上,周先生重点介绍了其开发的库存核算模块中部分有代表性的功能极其技术实现。从中我们不难看出,以活字格为代表的企业级低代码开发平台,凭借着丰富的内置功能和强大的扩展能力,足以支撑起库存核算等企业级应用项目开发,帮助开发降低技术门槛、提升开发效率。

不论您来自软件公司抑或是企业IT团队,如果您和南京正念行的周齐先生一样,正在寻找一套低代码开发平台来为企业数字化转型升级提速,活字格企业级低代码开发平台是您不容错过的选项。欢迎使用百度搜索“活字格”访问官网,了解详情,免费下载试用。