面向高效协作的Mendix开发最佳实践

2023-10-31 21:04

本文主要是介绍面向高效协作的Mendix开发最佳实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

圈内老同学都知道 Mendix 产品三大原则:速度(speed)、协作(collaboration)与治理(governance)。今天我们聊一聊那些有益于协作的Mendix 开发最佳实践,它和三大原则悉悉相关:

  • 执行最佳实践可以提升开发速度,和性能相关的最佳实践则保障应用运行速度

  • 遵循统一的开发实践让开发协作更加顺畅,增强可读性,降低理解成本

  • 最佳实践的贯彻是IT治理的应有之义,也是Mendix平台走向第二阶段(structure)应该规范的内容

无论你是身怀绝技的开发老司机,还是协调能力高超的项目经理或scrum master,还是雄心壮志又被现实压得喘不过气的开发团队负责人,为了更快速地交付高质量的应用都应该重视最佳实践的贯彻执行。

二、两个故事

一切要从本人亲身参与的两个PoC项目说起。

一个正式的PoC,有评估标准、实施范围、时间期限、交付形式、汇报呈现等关键要素。低代码更关乎做事方式而不是事情本身。因此,PoC中展示给客户开发方式和过程比展示最终应用更有意义。要让客户看清楚开发过程,必然需要主动呈现开发的工程目录、模型、页面、逻辑流、后台配置等实现细节,至少要把整体设计框架和关键模块、关键建模讲清楚。于是乎,PoC变成一场看谁能做出来,做得好,并且展示得好的比赛。

有幸这两个PoC项目中,和我搭配的开发同学都有1年以上Mendix开发经验,参与的实战项目超过5个。对于做出来大家信心十足(关键补充:用Mendix低代码的方式做出来)。然而,2个PoC项目在展示得好方面经历却完全不同。

第一个项目上,做完架构设计后我让开发同学自行去建模和配置,我开始准备汇报材料模板。每日召开项目短会,应用前端功能日渐丰富,进度在线。直到汇报前一天,当我拉取下最新工程文件,为关键实现细节截图说明时,瞬间傻了眼。除了架构设计时明确的多个模块在工程中如约实现外,具体到每一个模块内部的页面、微流、枚举值定义等完全就是横七竖八。我像是进入了一间陌生又昏暗的柴火间:一个完全无法理解的世界!页面上中英文混杂,大量的微流就叫 Microflow、Microflow_n的,数据实体的属性名称也是单个字母认识连起来猜不出意思的那种。要是把这些凌乱不堪的现场截图放进PoC汇报,客户在看懂Mendix是如何开发的之前会留下Mendix开发就是打游击战的印象。为改变这一局面,我先是花了近一个小时艰难地从菜单到页面、数据源到微流、页面动作到微流,利用where-used/usage 功能,顺腾摸瓜去理解开发的实现脉络,由语义反推各种无效命名的真正含义,同时在有把握的地方按照最佳实践直接修改。然后,再花了一个多小时向两位开发同学询问不那么直观的实现细节,并让他们自行修改不规范的地方。3个小时后,我终于可以开始截图向客户说明这个应用的实现方式,此时时间已经是凌晨。

有了前车之鉴,第二个项目在动手开发前,项目团队先就开发方式做了对齐。好在这两位开发同学所在小组本身对开发最佳实践有所重视,再次强调了几条重要最佳实践后,没有出现前一个项目上的问题。当我进入这个有着5个模块,10多个核心业务对象,30多个页面,40多条微流的工程中,借助Mendix本身可视化特点和开发友好的导航功能,穿梭其中游刃有余,以至于无需和开发同学语言沟通我就能把每处实现细节快速看明白。这就是Mendix的魅力所在,这是一种美!这也正是我们要在PoC中传达给客户的!

从这两个项目经历中,我深刻认识到,开发最佳实践关乎沟通协作,关乎应用的可持续运维和迭代。

三、事关协作的开发最佳实践

本文不准备罗列所有Mendix开发最佳实践,而是聚焦在那些能促进高效协作的最佳实践。

1. 预先确定开发语言

预先确定将用于开发应用程序的语言。这样你就有了一种语言用于模块、实体、微流、页面等。这里的关键考量点有两个:一个是开发人员的语言习惯,比如中文之外是否具备英文表述能力。另一个是应用面向用户的首选语言。考虑到平台标准模块是英文的,建议首选英文,并开发过程中保持一致性。应用需要呈现中文时,可在翻译中心统一翻译词条,参考这里。

2. 实体命名

实体反映了人们可以与之相关的现实世界对象。因此,实体名称还应反映该对象并确定其用途。有时会有特定于应用程序的异常会导致创建其他类型的实体,但这取决于您。实体的名称是单数的,因为对象是实体的单个实例。一个很好的例子是使用Customer而不是Customers 。此外,我们建议避免在实体名称中使用缩写、下划线、数学字符或任何其他特殊字符。实体名称也使用 UpperCamelCase,例如HousekeepingRecordLogEntry

3. 实体属性

实体属性应该反映人们可以关联的真实世界对象的属性,并符合该属性的用途。我们建议避免在名称中使用缩写、下划线(下一段描述的情况除外)、数学字符或任何其他特殊字符。实体属性应使用 UpperCamelCase,例如FirstNameTelephoneNumber 。不反映业务相关数据但仅出于技术原因需要的属性应以下划线 ( _ ) 开头。

4. 模块化组织应用

模块化开发是Mendix开发的重点特征,模块化管理也是大型应用开发的首选。Mendix支持模块层级的导入导出进而进行复用。因此,在规划应用开发时,首先要进行模块化设计。比如,通常把接口相关功能归为一个模块,把组织成员管理相关的归为一个模块。

5. 文件夹设置

当一个应用程序变得越来越大时,无组织的页面、逻辑流堆在一起非常影响可读性和可维护性。巧用文件夹可以有效解决这一问题。通过使用良好的文件夹结构,您将提高应用程序的可维护性;您将能够更快地找到所需的文件,从而能够更快地开发和修复。将文档最佳地分组到文件夹中取决于环境和应用程序的功能。我们建议以适合您应用的方式组合以下指南。

  • 流程相关来源

每个应用程序都由进程组成。将这些流程的文档组织到反映各个流程及其步骤的文件夹中。

  • 实体相关来源

每个应用程序都有特定实体所需的文档。考虑用于维护的概述页面、防止提交的验证微流或其他事件触发器。这些类型的文档应该被组织到一个以实体命名的文件夹中。可选地,子文件夹可用于组织,例如,事件页面

6. 微流的命名

通常,微流名称应包括触发它们的事件类型、正在处理的主要实体的名称以及正在执行的操作: {PREFIX}_{Entity}_{Operation} 。例如, ACT_Vendor_StartWorkflow

与实体处理程序相关的微流程应具有以下前缀:

事件类型字首
提交前BCO_{实体名称}
提交后ACO_{实体名称}
创建前BCR_{实体名称}
创建后ACR_{实体名称}
删除前BDE_{实体名称}
删除后ADE_{实体名称}
回滚前BRO_{实体名称}
回滚后ARO_{实体名称}

页面有许多可以触发微流的事件。有关示例和前缀,请参见以下列表:

事件类型字首用于
在进入事件OEN_{目的}输入元素
更改事件OCH_{目的}输入元素
休假活动OLE_{目的}输入元素
数据源DS_{目的}数据视图、列表视图、数据网格、数据模板网格
操作按钮ACT_{目的}菜单项、导航项、微流和操作按钮、下拉按钮
(历史上使用“IVK_”)

更多可以参考这里。

7. 枚举类型的命名

枚举应使用前缀标识。

文件类型字首
枚举ENUM_
8. 页面的命名
  • 页面使用后缀来表示它们的用途。
  • 显示单个实体概览的页面应具有_Overview后缀。
  • 用于创建、编辑或查看实体数据且不属于流程的页面应具有后缀_New_Edit_NewEdit_View
  • 用于选择一个对象的页面具有_Select后缀,其中多对象选择页面应具有后缀_MultiSelect
  • 用作工具提示页面的页面应具有后缀_Tooltip
  • 执行工作流中的用户任务时调用的页面具有后缀_Workflow 。每个用户任务有一个任务页面。这些页面始终具有 WorkflowUserTask数据视图,并且特定于执行工作流任务。
页面目的后缀
列出单个实体类型的对象_Overview
创建一个对象_New
更新对象_Edit
创建或更新对象_NewEdit
查看对象(只读)_View
选择单个对象_Select
选择多个对象_MultiSelect
工具提示_Tooltip
与用户任务交互_Workflow

9. 其它建议

  • 及时清理工程中未使用到的实体、页面、微流

  • 杜绝直接修改系统模块的页面和微流,避免下次模块升级时被覆盖,可以在副本上修改

  • 微流布局宜平衡、美观,超过15个组件的微流考虑使用子微流,增强可读性

四、案例展示

下面以Mendix 现场服务管理APP为例,一起看看以上开发最佳实践的落地效果。

  • 模块化开发和工程目录组织形式

modularized.png

  • 方便“望文生义”的实体和属性命名,一眼就能理解业务含义

entity.png

  • 微流和页面命名规范,有实质意义,相同前缀得到合理排序

microflow1.png

microflow2.png

五、总结

每一种开发语言都有自己的开发最佳实践,了解并践行开发最佳实践有助于增强工程的可读性、可维护性,有利于团队沟通和协作。在开发者个人层面,遵循最佳实践体现了开发者对语言的掌握程度、成熟度,某种程度也是开发者个人修养的体现。Mendix 倡导面向协作的低代码开发,提供了大量最佳实践供开发者参考,不管是刚入门的新手还是经验开发者,都应该重视最佳实践的学习和运用。

关于Mendix公司

在一个数字化先行的世界中,客户希望自己的每一项需求都得到满足,员工希望使用更好的工具来完成工作,而企业意识到自己只有通过全面数字化转型才能生存并取得成功。Mendix公司,a Siemens business正在迅速成为企业数字化转型的推动者。其业内领先的低代码平台和全方位的生态系统整合最先进的技术,帮助企业创造出提高互动性、简化操作和克服IT瓶颈的解决方案。Mendix公司以抽象化、自动化、云和协作为四大支柱,大幅提升开发者的生产力,并且依靠自己的工程协作能力和直观的可视化界面,帮助大量不熟悉技术的“公民”开发者在他们所擅长的领域创建应用程序。Mendix公司是权威行业分析师眼中的领导者和远见者,也是一个云原生、开放、可扩展、敏捷和饱经考验的平台。从人工智能和增强现实,到智能自动化和原生移动,Mendix公司已成为数字化先行企业的骨干。Mendix公司企业低代码平台已被全球4000多家领先的公司采用。

这篇关于面向高效协作的Mendix开发最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318124

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶