Skip to content
文档
设计原则

设计原则

一、元数据驱动

在 OpenMeta 中,元数据包括三大类:模型元数据、UI 元数据和配置元数据。

  1. 模型元数据

包含模型自身的元数据和字段的元数据,以及通过关系型字段声明的模型间依赖关系。 具体参考 模型元数据字段元数据 章节。

  1. UI 元数据

UI 元数据是定义用户界面元素的数据,包括菜单、导航的元数据,以及定义页面布局、控件、样式和交互行为的 Schema 数据,用于动态构建和管理应用程序的前端展示。 UI 元数据的定义和解析过程,需要依赖模型元数据。具体参考 UI 元数据

  1. 配置元数据

配置元数据是相对广义的元数据,泛指基于模型元数据的应用配置数据,这些配置数据本身具有很强的通用性。根据应用场景,分为以下几类:

(1) Flow 配置元数据

Flow 的触发条件、节点和动作的执行条件、动作的执行参数等等,都是 Flow 元数据的一部分,它们定义了 Flow 中如何进行数据流转和数据处理。 具体参考 Flow

(2) 数据集成元数据

定义系统与其他系统之间实现数据集成的描述信息,包括系统间的接口连接信息、认证信息,以及数据结构、数据格式、数据转换规则和数据映射关系等。通过数据集成元数据,集成中心可以自动化地执行系统间接口调用,实现数据的推送和拉取,进而实现企业上下游业务系统之间的数据打通。 具体参考 数据集成

(3) 权限配置元数据

权限配置元数据是指在企业级系统中,用于定义和管理用户权限的结构化信息。它包含用户、角色、属性、权限、权限集、资源等元素以及它们之间的关系。基于权限元数据,对用户进行授权和鉴权,确保只有经过授权的用户才能访问特定资源或执行特定操作。

通过配置权限元数据,可以灵活地调整权限策略,以满足不同业务需求,并能够实现复杂的细粒度权限控制,如根据不同属性条件,对行、列级别的数据范围进行权限管控。这在中大型企业级系统中尤为重要,能够提高系统的安全性、灵活性和可维护性。 具体参考 权限管控

(4) 导入/导出元数据

用于定义导入和导出Excel/CSV文件的结构化信息,包括按需配置的导入导出模板,在这些模板中,可以灵活地设置哪些字段需要导入或导出、数据的格式和验证规则,以及如何处理错误数据。导入/导出元数据有助于简化数据交换过程,提高数据处理的准确性和效率,满足不同业务场景下的数据交换需求,增强系统的灵活性和可维护性。

(5) 报表配置元数据

在 OpenMeta 中,报表分为数据报表、文件报表和可视化报表三种类型。每种报表的定义,都需要通过元数据定义报表的结构化信息,包括报表的布局、数据源、字段信息、过滤条件、排序规则、分组策略、显示样式等元素。通过报表元数据,可以灵活地设计和生成各种报表,满足不同业务需求,增强了报表的可维护性和扩展性。

另外,在 OpenMeta Pro-code 的开发过程中,仍然依赖底层的元数据引擎。

二、可配置优于代码实现

在企业级应用中,个性化需求不可避免,但 OpenMeta 追求通过可配置化实现个性化需求。配置优先的设计原则,能够快速适应业务需求的变化,显著提高系统的可维护性、可扩展性和整体效率。

OpenMeta 基于元数据驱动,对系统通用能力做了封装实现,通过配置,即可实现大多数业务需求。除了模型元数据和 UI 元数据,还包括对 Flow 元数据、数据集成元数据、权限元数据、导入/导出元数据和报表元数据的配置管理。

通过这些可配置元数据,系统能够在无需修改代码的情况下灵活调整业务流程、数据集成方式、权限控制、数据交换以及报表生成等功能,从而大幅缩短开发周期、降低维护成本、提升系统适应性。

三、配置数据可迁移

在企业级业务系统中,通常需要部署多套环境,例如开发环境,测试环境、UAT 环境、生产环境。为了确保配置数据的一致性和准确性,系统要具备在不同环境间迁移配置数据的能力。例如,当发生需求变更或配置变更时,用户在 UAT 环境中进行配置和验证,然后将这些配置数据迁移到生产环境,而不是在生产环境中重新配置一遍。配置数据迁移可以有效避免配置出错或遗漏,确保系统在不同环境中的配置统一,提高配置管理的效率和可靠性。

四、数据变化可追溯

数据变化可追溯的目标是确保业务系统中的所有数据变更都可以被记录和追踪。这样做的目的是提高系统的透明度和安全性,支持审计和合规要求,并在出现问题时能够快速定位和解决。

OpenMeta 通过数据变更日志和用户行为分析来实现数据变化可追溯。变更日志记录了每一次数据修改的详细信息,如变更前内容、变更后内容、变更时间、变更人和 traceID(用来追踪一次用户操作一共导致了哪些数据变更),确保在异常排查和数据审计时有据可依。用户行为分析通过记录和分析用户在系统中的操作行为,帮助识别异常活动和优化用户体验。通过追溯数据变化,企业可以确保数据的完整性和准确性,提高系统的整体可靠性和可维护性。

五、运行状态可监控

系统需要具备实时监控其运行状况的能力,以确保系统的健康运行和高效维护。该能力包括技术监控和业务监控两个方面:

  1. 技术监控

    主要关注系统的底层运行状况。通过记录接口请求日志、系统运行日志,接入请求链路追踪和异常追踪,在出现问题时自动通知到开发人员,并帮助开发人员快速定位问题原因。

  2. 业务监控

    关注业务流程的执行进度和状态,确保每个业务环节按预期运行。通过监控关键业务指标(如订单处理状态、流程处理效率等),帮助企业及时发现并处理业务异常,提高业务运营效率。

六、引擎实现优先

引擎是一种专门用于处理特定任务的软件组件或服务,它能够高效地执行预定义的逻辑和规则。引擎实现优先的设计原则强调通过各种专用引擎来完成各种复杂的业务处理任务,以提高系统的灵活性和可扩展性。

OpenMeta 通过引入计算引擎、流程引擎、规则引擎、报表引擎和模板引擎等专用组件,将复杂的业务逻辑和计算任务封装在专用引擎中。

  1. 计算引擎

    专注于提高计算效率、确保计算结果的准确性。包括高精度数值计算、业务逻辑表达式计算等场景。

  2. 流程引擎

    专注于高效管理和执行业务流程。包括自动化业务流和工作流,其中自动化业务流又分为事件触发流和计划任务流,工作流包含人工审批等业务处理。

  3. 规则引擎

    用于处理业务规则和决策逻辑,通过动态配置和执行规则,提高业务逻辑的灵活性和可维护性。

  4. 报表引擎

    专注生按照配置规则,生成各种业务报表。包括在线的数据报表和可视化报表,以及用于下载和数据交换的文件报表。

  5. 模板引擎

    通过在模板中配置展示样式和数据内容,动态生成相关文档,例如邮件模板、消息模板、网页模板、PDF 模板、Word 模板、Excel模板等等。

七、用户体验优先

用户体验优先的设计原则强调在业务系统的设计和开发过程中,在创造业务价值的基础上,以最终用户的需求和满意度为核心。该原则旨在通过增强用户交互、提高系统易用性和持续改进来提供卓越的用户体验,确保系统不仅功能强大,还能够让用户感到舒适和高效。

具体应用方面,用户体验优先包括以下几个关键点:

  1. 增强搜索框能力,集成AI交互式搜索

    通过智能推荐结果和自动匹配字段的创新功能,让用户在使用搜索功能时更加便捷和高效。

  2. 兼容简单与灵活

    灵活往往会导致复杂,OpenMeta 尽可能把复杂屏蔽在系统底层,提供各种配置项的简易版本和专业版本。在系统设计中增强构建者体验,确保系统既能满足简单操作的需求,又具有灵活的配置和扩展能力。

  3. 持续评估分析

    通过用户行为分析来了解用户使用系统的方式和痛点,进而进行数据驱动的优化。

  4. 持续迭代改进

    根据用户反馈不断优化和更新系统功能,确保系统能够不断适应用户需求变化,提高用户满意度和忠诚度。

八、抽象设计优先

抽象设计优先的设计原则强调通过封装和抽象公共方法、公共组件来提高系统的灵活性、可维护性和优雅性。该设计原则通过应用面向对象设计、设计模式、SOLID 原则、DRY 原则和模块化设计等经典设计方法,来建立良好的抽象和分层结构。开发人员能够很容易地添加新功能或修改现有功能,而不会破坏系统的整体结构和稳定性,避免硬编码和重复代码,还提高了代码的可读性和开发效率,同时增强了系统的整体稳定性和扩展性。

从长远来看,抽象设计优先能够更好地支持系统的高效扩展和创新,为系统的持续演化提供了坚实的基础,从而满足不断变化的业务需求和技术迭代。

九、可持续升级

可持续升级的设计原则旨在解决系统升级维护中的难点和痛点。这些痛点包括升级过程复杂、业务中断风险、系统兼容性问题以及数据迁移问题等。为了应对这些挑战,可持续升级设计原则提出了一系列关键策略:

  1. 标准化元数据结构

    通过标准化的元数据结构,使得系统中的元数据定义和业务配置能够独立于代码实现,进而保证系统在升级过程中的一致性和兼容性,减少升级过程中可能出现的数据迁移问题和兼容性冲突,从而实现系统框架的可持续演化。

  2. 可组合模块化服务

    通过将系统通用能力划分为多个独立的 starter 模块,多个不同的 starter 模块可以组合成一个新的服务,构成可组合模块化服务。这些模块和服务可以独立开发、测试和部署。

    通过系统的模块化设计,支持对技术组件进行灵活的扩展和迭代,降低系统升级的复杂度和风险,使系统能够更好地适应不断变化的业务需求和组织规模。

十、支持重构遗留系统

该设计原则主要在思考现代企业在维护和升级历史遗留系统时面临的诸多挑战。这些遗留系统可能包含大量定制化开发的业务代码,而且随着企业的发展,系统已经积累了大量的业务数据,这些系统通常具有高维护成本、低扩展性和复杂的技术债务。为了解决这些问题,该设计原则提出了以下方法和策略:

  1. 数据库逆向工程(Re-Model)

通过数据库逆向工程,从遗留系统的数据库中提取数据表的元数据信息,生成相应的业务模型元数据和业务数据接口,帮助开发人员理解和分析遗留系统的数据库结构,为重构遗留系统提供关键的数据基础。

  1. 代码逻辑逆向工程(Re-Implement)

代码逻辑逆向工程,也即代码逻辑的元数据化。通过 AI Agent 分析遗留系统源代码,完善业务模型元数据,并将相关的代码逻辑转化为 Flow、Report、导入导出、数据集成等配置元数据,然后由技术顾问校准、测试和验证。

  1. Pro-code 迁移转换

对于 Pro-code 应用场景,使用 AI Agent 分析遗留系统的代码逻辑,结合逆向分析出的业务模型元数据,生成基于元数据驱动的 Pro-code,发挥元数据驱动框架的优势。

  1. 支持主流关系型数据库

不同企业的不同应用可能采用不同的数据库系统,如 MySQL、PostgreSQL、Oracle 和 SQL Server。在支持重构遗留系统的设计原则下,框架必须能够兼容主流关系型数据库,以便在重构过程中能灵活选择和连接不同的数据库引擎。

通过对不同数据库方言的封装,OpenMeta 支持根据企业实际需求选择合适的数据库引擎,确保新系统能够无缝访问和操作现有数据库中的数据,以便更高效地进行数据迁移和转换,同时提高系统的灵活性和适应性。


Copyright ©2025 OpenMeta