一、前言
作为售前顾问,帮助客户选型低代码产品是日常工作。考察一家低代码产品的好坏,其中一个维度就是产品的成熟度。产品成熟度直接影响产品在使用中的稳定性和用户体验,对于新工具导入和可持续运用至关重要。
那怎么考察一个产品是否成熟呢?我经常会跟客户讲,一看时间,即上市有多长时间,二看迭代,即多长时间发布新版本,三看“边角功能”。前两点相信大家一看就明白,那什么是“边角功能”?我们说,看某家人是否爱干净会收拾,应该去看墙角旮旯是否有积尘。同样道理,我们看某个产品是否覆盖到了一些貌似边缘的功能,也能窥出这一产品成熟度。其中逻辑是,只有产品发展到较为成熟的阶段时产研团队才有条件给那些看起来不那么核心的需求予资源投入的优先级。相反,一款早期产品肯定是忙于把核心功能先打造出来,再去顾及非核心功能和需求。
就Mendix来讲,它诞生于2005年,至今18年的发展历程,在低代码赛道不可谓不“老资历”。迭代方面,2-4周一个小版本,1-2个月一个中版本,相较同行也保持着快速进化。“边角功能”也有很多,断点调试便是其中代表。Mendix Studio Pro很早开始支持本地加断点甚至条件断点,进行类似传统IDE的开发调试,给予开发者更完整的用户体验。
本文要介绍的基础审计模块可以说是体现Mendix产品成熟度的另一个“边角功能”。即使是Mx 圈老人也未必听过或者详细了解这个模块的使用,然而在某些业务场合它能短平快地解决问题。
二、需求分析
笔者亲身经历的客户提到以下两类业务需求:
Case 1: 某制药企业,希望选择一款低代码产品满足规划中的某创新药研发的项目管理。其中涉及设备、样品、试验、巡检、人员、财务等多方面,且项目耗时预计5~10年,过程中会出现更多不可知的应用需求。然而有一点明确的,制药企业的某些领域软件应用,比如试验、制造,必须满足FDA(该企业在美国有研发团队且产品投放海外)和国内NMPA关于过程规范的要求GXP(Good Practices),其中一条要求所有系统内操作必须留有完整的原始记录,且可导出备查,以确保药品研制过程可审计和审查。因此,该企业对低代码产品也提出开发出的应用能记录核心对象的变更记录的需求。
Case 2: 某大型流通企业,希望用低代码快速实现过去在Excel上管理的某些应用。比如,曾经几千人在Excel中协作目标管理,从目标提出、修改、审批、跟进、更新、回顾到关闭整个过程可能有多人在不同时间点对记录进行增删改查。Excel的痛点之一便是无法跟踪谁做了何种修改。因此,负责人希望上线低代码应用后能清晰记录以上事件,包含明确的什么人在什么时间对哪个对象做了何种(增删改)操作,事件记录可导出。
Case 1和Case 2分别是行业规范和 IT系统规范的典型体现,需求类似,在Mendix 平台上都能得到满足,用的就是Mendix 基础审计模块。
三、模块解析
在Studio Pro中搜索并下载基础审计 Audittrial 模块。
在Marketplace Module 下出现新加入模块。
我们来分析一下本模块的实现逻辑。首先是核心实体。
-
AudittrailSuperClass实体:审计对象父类,核心实现了Before Commit和Before Delete两个事件。待审计的业务实体从此AudittrailSuperClass实体继承创建,获得两个触发事件,业务实体在提交和删除前执行相关操作。
-
Log实体:记录业务对象的一次变更,包括对象名称、变更时间、变更成员数量、变更类型、描述等信息。
-
LogLine实体:记录业务对象中单个成员的变更信息,包括成员类型、成员名称、旧值、新值等信息。
-
ReferenceLog 和ReferenceLogLine实体:记录业务对象涉及关联对象变更的信息。
模块中的核心逻辑。
-
微流 BCo_AudittrailSuperClass:通过调用CreateLogRecordOfObject JavaAction记录业务对象提交入库时刻的变更信息,返回Log对象。JavaAction中实例化该对象及相关关联对象。
-
微流BDe_AudittrailSuperClass:通过调用CreateLogRecordChangesBeforeDelete JavaAction记录业务对象删除时刻的变更信息,逻辑同上。
在关联和添加事件的模块使用方式下,需要复制和简单调整这两个微流,添加到待记录的业务实体。
除此之外,模块提供页面和页面片段Snippeet的样例,开发者可以直接使用或者添加到目标页面上,展示审计记录。
四、实际应用
下面展示基础审计模块的一个实际应用。这是一个库存管理的示例应用,包括物料、工厂和库存量等几个基础实体。我们通过两种方式分别为工厂和物料添加审计记录,获得关于这两个业务对象的一切变更信息。
继承的使用方式
针对物料实体,我们通过设置继承父类为AudittrailSuperClass的方式,直接获得Before Commit和Before Delete两个事件的处理逻辑。这是最为简单的模块使用方式。
注意事项:当业务实体本身已经继承自某个实体时,无法直接使用这一方式。如果当前父类没有再继承,可以考虑让该父类继承AudittrailSuperClass。但请注意Mendix 关于继承层数的最佳实践。如果遇到父类是系统实体的情况,无法修改父类,那就要考虑第二种使用方式了。
关联和添加事件的使用方式
针对工厂实体,我们首先将它和基础审计模块的Log实体建立1对多的关联关系,然后为工厂实体添加Before Commit和Before Delete的事件处理逻辑。这里我们只需要复用模块下已有的BCo_AudittrailSuperClass和BDe_AudittrailSuperClass两个微流即可。
复用方式:拷贝两个微流至业务模块,给予合适的名字,同时将微流入参对实体类型改为工厂实体。
复用审计查看页面
本应用中我们直接使用模块自带的审计查看页面,效果已经很不错。具体做法,将Log_Overview页面拷贝至业务模块,设置当前布局模板确保UX一致性,并添加到导航菜单栏。
赋予角色与权限
最后不要忘记,为需要访问审计页面的用户添加合适的角色。基础审计模块有两个角色,差别在于MxAdministrator角色才有查询关联对象变更信息的权限。因此,对于想查看业务对象变更时关联对象变更信息时,需要添加这一角色。
效果展示
首先我们添加一个物料M005,名称为Basket,当前用户名是demo_user
打开审计页面,我们看到该变更已经被记录,包括变更人、变更时间和变更详情。
然后我们修改工厂实体,经理由demo_user变更为Tom.
打开审计页面,我们同样看到变更被记录。
这里需要注意的是,变更的经理字段并未在这个页面的表格中显示出来,在新值上显示为reference changed。这是因为manager属性是来自system.user这一关联对象。其变更信息的显示需要用到前面介绍的ReferenceLog和ReferenceLogLine两个实体,并在其他页面上展示。这时候选中该行,点击View,我们就能看到此关联实体的变更信息了。
至此,我们看到两种使用方式下达到了同样的预期效果。
在审计页面点击切换到表格视图,我们可以看到所有业务对象的变更记录,并且可以进行实体名、变更日期、变更人、变更类型的筛选,最后导出为Excel或CSV格式,用于归档或外部审阅。
此外,模块提供一些配置参数,允许开发者自行设定变更记录的类型和时间戳时区和格式等。详情请查看配置页面说明文字,非常清晰。
五、总结与展望
本文介绍了Mendix官方的基础审计模块。审计是一个重要但一般低代码产品可能忽略的长尾功能,利益于Mendix早些年在金融行业客户(如荷兰RaboBank、苏黎世保险、加拿大BDC等)的应用,这一需求很早就在产品中得到覆盖。这恰恰是前言中所说产品成熟度的重要标志。模块提供两种使用方式,且很容易复用内部页面,上手简单,是项目实战中的好帮手。该模块已经发布到9.1版本,用户众多,在Marketplace 上收获了大量的正向用户反馈。
使用该模块时,也有些注意事项,比如性能方面。考虑到变更记录的逻辑触发在业务对象提交入库或删除的时间点,如果需要审计的实体很多,并且变更非常频繁,可能带来较多的延时以及审计数据量剧增的情况。以及某些情况下需要更快捷和完善的记录搜索。为此,Mendix推出了收费版本的高级审计模块,重新设计了架构,借助Kafka、ElasticSeach、Kibana等开源组件增强了可无限扩展、索引化检索、外部永久存储等特点。该模块已经在美国Johnson&Johnson项目上得到运用,以满足FDA CFR 21 Part 11 的计算机系统合规要求。
我们将在今后择机向大家介绍此高级模块,有需求的小伙伴也可以联系Mendix热线获得更多信息。
六、参考资料
-
Mendix Documentation: Audit Trial
-
Mendix Marketplace: Advanced Audit Trial
关于Mendix公司
在一个数字化先行的世界中,客户希望自己的每一项需求都得到满足,员工希望使用更好的工具来完成工作,而企业意识到自己只有通过全面数字化转型才能生存并取得成功。Mendix公司,a Siemens business正在迅速成为企业数字化转型的推动者。其业内领先的低代码平台和全方位的生态系统整合最先进的技术,帮助企业创造出提高互动性、简化操作和克服IT瓶颈的解决方案。Mendix公司以抽象化、自动化、云和协作为四大支柱,大幅提升开发者的生产力,并且依靠自己的工程协作能力和直观的可视化界面,帮助大量不熟悉技术的“公民”开发者在他们所擅长的领域创建应用程序。Mendix公司是权威行业分析师眼中的领导者和远见者,也是一个云原生、开放、可扩展、敏捷和饱经考验的平台。从人工智能和增强现实,到智能自动化和原生移动,Mendix公司已成为数字化先行企业的骨干。Mendix公司企业低代码平台已被全球4000多家领先的公司采用。