• 首页
  • 产品中心
    • 数式Oinone四大产品

      低代码开发平台无代码开发平台集成开发平台AI大模型开发
    • 数式Oinone体系能力

      用户与组织权限管理文件管理消息中心国际化业务审计
    • 数式Oinone核心产品特性

      低无一体面向软件公司场景无限制应用级扩容可分可合
  • 服务中心
    • 客户服务

      预约演示方案咨询私有部署找人定制
    • 开发者

      问答下载
    • Oinone学院

      社区学习

    《精讲面向软件公司的低代码平台——以Oinone为例》

  • 合作伙伴
    渠道申请伙伴名录专家库
  • 关于数式
0571-88757863

研发范式:模块化设计


基于 Oinone 作为研发框架的业务模块划分,需遵循高内聚、低耦合原则,结合 Oinone 的模块化架构特点,以下是最佳实践指南:

一、模块化架构:高内聚低耦合的核心

Oinone 的模块化架构是其技术体系的基石,强调 "高内聚、低耦合" 的设计原则。每个模块作为独立单元,封装特定领域的功能逻辑。在业务模块划分中,应充分利用这一特性,将不同的业务功能封装在独立的模块中,每个模块专注于解决特定的业务领域问题。

(一)功能独立性

每个模块应具备独立的业务功能,避免功能交叉和冗余。例如,将销售管理、采购管理、库存管理等划分为不同的模块,每个模块内部包含完整的业务逻辑、数据模型和用户界面。通过 Oinone 的模块定义文件,可以清晰地声明模块的依赖关系和功能特性,确保模块的独立性和可维护性。

(二)接口设计

模块之间通过定义良好的接口进行交互,而非直接依赖内部实现。Oinone 符合Java面向对象和面向接口编程规范,如模型继承、方法重写、RPC 调用等。在模块划分时,应设计公共的 API 接口,方便其他模块调用和扩展。例如,一个通用的 "客户管理" 模块可以提供客户信息的创建、查询、更新等接口,供销售、服务等模块调用,避免重复开发。一个简化的模块目录结构如下:

Module
├── module-api  模块接口工程
│   ├── model   模型
│   ├── api     服务接口
│   └── Module.java 模块定义
└── module-core 模块实现工程
    ├── action  行为
    ├── service 服务实现
    └── init    数据初始化

(三)依赖管理

合理管理模块之间的依赖关系,避免循环依赖和过度依赖。Oinone 的模块加载机制会自动处理依赖关系,但在设计模块时,应尽量减少不必要的依赖,确保模块的可插拔性。例如,一个报表生成模块可以依赖基础数据模块,但不应依赖特定的业务流程模块,以提高模块的通用性和复用性。

(四)运用事件机制与钩子,实现模块间松耦合通信

Oinone 的事件机制和Hook函数为模块间的通信提供了松耦合的解决方案。在业务模块划分时,通过设计合理的事件触发点,实现模块间的功能扩展和协同工作。例如,在订单处理模块中,当订单状态发生变化时,触发相应的事件,如 “订单已支付” 事件。财务模块可订阅该事件,自动生成财务凭证;物流模块也可订阅该事件,安排商品发货。

(五)模块化成熟度评估体系

评估维度Level 1Level 3Level 5
模块独立性存在循环依赖单向依赖完全独立可部署
变更影响范围波及多个模块控制在子模块内完全模块内闭环
测试效率需要全量回归模块级测试独立自动化验证
认知负荷需要全局理解模块接口级理解聚焦单一模块即可

(六)典型错误模式及解决方案

反模式1:事务驱动型划分 ✖ 将数据库事务范围作为模块边界 ✓ 采用领域事件最终一致性,保持业务完整性

反模式2:技术维度切割 ✖ 按Controller/Service/DAO分层作为模块 ✓ 建立垂直业务模块,每个模块包含完整分层结构

反模式3:过度解耦陷阱 ✖ 将每个类都作为独立模块 ✓ 遵循"共同闭包原则",将同时变化的类放在同一模块

三、理解 “链接” 模块

参考:与此主题相关的文档可在 “Link 模块” 中找到。

每当我们与其他模块进行交互时,都需要牢记 Oinone 的模块化特性。假设,你同时做了费用管理模块和会计模块。如果我们打算将应用程序出售给企业客户,有些客户可能会需要将费用数据传递给会计系统进行财务处理,生成相应的会计凭证。而有些则可能不需要。 对于这类使用场景,常见的做法是创建一个 “链接” 模块。在我们的例子中,这个模块将依赖于 expenses(费用管理)模块和 account(会计)模块,并包含费用管理中针对报销单创建会计凭证逻辑。通过这种方式,费用管理模块和会计模块可以独立安装。当两个模块都安装后,再安装链接模块就会提供新的功能。

四、渐进式扩展能力

  • 继承机制允许通过inherit扩展现有模块,而非直接修改源码。
  • 扩展点机制允许通过 Extpoint 追加前置、后置,以及覆盖,来扩展特定函数逻辑。
  • Hook机制允许通过 HookBefore 、HookAfter以切面的方式为系统增加通用逻辑。
  • Upstream机制允许组合一个或多个模块的入口,并将扩展逻辑在一个模块中进行统一管理。

渐进式扩展的典型场景

阶段扩展需求实现方式
初期基础销售流程启用原生sale
模块
中期增加合同管理安装第三方sale_contract
模块
后期定制报价审批开发custom_approval
模块继承sale
编辑此页
最近更新:2026/1/15 04:02
上一页
研发范式:研发流程
下一页
研发范式:模型设计
默认页脚
Copyright © 2026 Mr.Hope