目前,大多数企业已经通过实施ERP在内的成品软件,实现了将财务、销售等业务的数字化,并因此获得了工作效率的显著提升。为了将信息化的成功经验复制到其他业务环境,在保证现有IT投资的前提下,推进生产、库存等业务环节的数字化进程,越来越多的企业选择基于现有软件做扩展开发、二次开发。而低代码技术的出现,为开发者带来了集成能力更强、开发效率更高的技术方案,进一步降低了成品软件二开的技术门槛。

大量的项目实践表明,低代码能帮助我们提升业务功能开发的效率,也可以为我们提供通过数据库或API集成现有软件的能力。但是,一些早期的行业软件并没有提供编程接口,甚至连数据库说明文档都不完整。我们该如何快速弄清楚一个业务操作对应的数据库操作呢?

这个时候,我们需要使用数据库监控工具,跟踪成品软件上的操作对应的数据库执行脚本,从其中的规律反推出该操作对应的数据库操作。主流的数据库厂商均有对应的监控工具,如MySQL的Neor Profile SQL,MS SQL Server的SQL Server Profiler。下面以SQL Server Profile为例给大家介绍监控工具的具体用法。

(MS SQL Server安装程序)

首先,我们需要运行和服务器上版本相同的MS SQL Server的安装程序,在安装SQL Server管理工具下,选择安装SQL Server Profiler;或者运行单独的SQL Server Management Studio安装包。

以SQL Server Profile 17为例,我们打开这个工具,选择【文件】→【新建】,创建一个新的跟踪。在输入目标数据库的连接信息后,我们还需要选择模板“TSQL”,然后在“跟踪属性”下的“事件选择”选项卡中,勾选SQL:BatchStaring(直接执行的SQL语句)和RPC:Starting(通过OLEDB等接口执行的存储过程)。

(SQL Server Profiler 17的事件选择界面)

点击运行后,工具将会记录该数据库上执行的所有SQL语句和存储过程。

(SQL Server Profiler 17中监控到的SQL语句)

在数据库监控工具开始运行后,我们就可以在成品软件上执行操作了。操作结束后,回到监控工具,点击停止。此时,在工具的界面上展示的,就是成品软件上的操作所对应的SQL语句。在具体工作中,我们有以下的经验供参考:

  • 将成品软件的操作进行细分,分别对这些细分后的操作进行监控可以降低分析SQL语句的工作量
  • 在专门的测试环境而不是生产环境中做监控,避免影响生产环境的性能
  • 确保测试环境中只有自己一个人做操作,避免混杂入不相关的SQL语句
  • 在成品软件中进行操作时,有意使用可快速识别的数据,并做好记录,方便与SQL语句中的文本进行比对
  • 与熟悉业务的同事配合,通过输入不同的参数多次进行操作,覆盖更多应用场景,通过在这些SQL语句中寻找共性,最终总结出界面操作背后的SQL语句。根据输入的参数不同,一个操作可能会对应不同的SQL语句
  • 成品软件进行大版本升级后,需要重复上述操作,检查并更新相关的SQL语句

在数据库监控工具的帮助下,我们找到了成品软件界面操作所对应的SQL语句,如果语句较为简单,可以清晰地拆分成若干个表的增删改查操作,我们就能在低代码开发平台上复现这些数据表操作,来达到抓取数据、生成单据等目标。在活字格中,这个操作需要用到的是设置参数服务端命令(在服务器端读取数据表的数据)和数据表操作服务端命令(在服务器端插入、更新和删除数据表的数据)。

(活字格的数据表操作服务端命令)

如果SQL语句较复杂,也可以利用活字格的执行SQL语句服务端命令,直接在数据库上执行带有参数的SQL语句。在这个过程中,我们需要将监控得出的SQL语句中,我们在页面上输入的值,替换为对应的参数。活字格在执行SQL语句服务端命令中采用了参数化查询设计,请确保用户录入的内容仅出现在参数中,而没有出现在SQL语句里,这样就能避免数据库注入攻击的风险。

如果你正准备在使用以活字格为代表的低代码开发平台做成品软件的二次开发,希望本文中提到的工具和方法可以帮您快速了解成品软件背后的数据库操作,加速系统集成相关功能落地。