总体结构设计示例

1.项目总体架构

Oinone总体工程架构

总体结构设计示例

Oinone总体项目分层

以常见的B2C和全渠道订单OMS为例
总体结构设计示例
分层说明:
1、最底层LCDP是低代码开发框架,提供低代码的开发能力;
2、CDM通用数据模型层,主要解决系统间的数据标准;
3、标品-标准业务产品层, 这层是我们核心的功能层,大部分业务代码都在这里完成;为了达到能按照模块组装的功能,标品需划分好模块,各模块是相对独立的服务(类似微服务的一个服务中心);
4、客户定制层,可以对标品某个模块进行扩展,也可以新建模块;
对标品扩展方式, 通常有以下几种方式:
1)继承标品功能进行扩展
2)覆盖方式,重写某个功能
3)通过扩展点的方式注入定制逻辑
4)通过SPI的方式,替换掉默认逻辑

2、设计器与应用

本地开发环境和开发环境,同一个环境下,有业务应用和设计器的两个入口,需要业务应用和设计器进行实时联动的情况,则要求:
1.1 所有的【业务应用】和【设计器】,共用base库和基础数据的库; 业务应用的【业务数据】使用各自的业务库(可多个);
1.2 业务应用和设计器之间的互通通过配置网关(如Nginx等)的路由方式;

  • 开发本地或者开发环境,若通过【业务的前端】入口直接访问到设计器,则需在【业务应用】的网关路由配置【设计器】的路由。
  • 开发本地或者开发环境,若通过【设计器的前端】入口直接访问到业务系统,则需在【设计器】的网关路由配置【业务应用】的路由。

1.3 基础应用和业务应用、基础数据和设计器包含在一起,通过指定基础应用模块到对应的数据源的方式实现基础数据共享;
1.4 基础应用(文件file/用户权限/资源等)单独部署;业务应用和设计器通过远程方式(RPC)进行调用;

2.1 模式一,应用和基础模块独立

总体方案:
1、DB层面
每个环境共用base库;主数据(用户、权限、资源等)单独建立主数据库;各自业务系统(包括设计器本身)建立自己的业务库。
2、应用层面
1)应用和设计器之间通过路由转发的方式相互访问;
2)应用单独部署的情况,应用之间通过RPC(Dubbo)的方式进行调用;
3)所有的应用AllinOne的方式部署在一起,则直接走SpringBean的方式(Injvm);

2.1.1 模式1,DB划分

总体结构设计示例

2.1.2 模式1,服务调用

总体结构设计示例

2.2 模式二,应用和基础模块合并

总体结构设计示例

3、部署架构图

image.png

4、Oinone项目包分层示例

4.1 CDM层示例

image.png

CDM层主要定义模型,包括模型之间的关系;对于主数据类的基础服务,可以确定上层不会修改的,也可包含这部分的服务层。

4.2 标品项目示例

├── pamirs-boot 应用启动模块,启动入口,启动过程中系统性的数据初始化
│ │ └── boot 启动类的包路径
│ │ └── XxxApplication 模块的应用启动类,遵循spring boot 规范
│ │ └── resources/config/application-dev.yml 研发环境的yml配置文件,遵循spring boot 规范
│ │ └── resources/bootstrap.yml 启动的yml配置文件,遵循spring boot 规范
├── pamirs-common 通用模块 工程通用常量,传输模型,Utils等
├── pamirs-major 主数据模块
│ ├── pamirs-major-api 对外api包,在此包下定义 模型 服务Service,枚举常量等
│ │ └── constant 常量的包路径
│ │ └── enums 枚举的包路径
│ │ └── model 该领域核心模型的包路径
│ │ └── service 该领域对外暴露接口api的包路径
│ │ └── tmodel 存放该领域的非存储模型如:用于传输的临时模型
│ │ └── MajorModule 该类是Major模块的定义
│ ├── pamirs-major-core api的内部逻辑实现包
│ │ └── init 模块初始化工作的包路径
│ │ └── manager manager是 service的一些公共逻辑,不会定义为独立的function的类
│ │ └── service service是对应api工程中service接口的实现类,是模型的function
├── pamirs-eip 集成模块
│ ├── pamirs-eip-api 对外api包,在此包下定义 模型 服务Service,枚举常量等
│ │ └── EipModule 该类是Major模块的定义
│ ├── pamirs-eip-core api的内部逻辑实现包
├── pamirs-item 商品模块
│ ├── pamirs-item-api 对外api包,在此包下定义 模型 服务Service,枚举常量等
│ │ └── ItemModule 该类是Major模块的定义
│ ├── pamirs-item-core api的内部逻辑实现包
│ ├── pamirs-item-view 应用PC端
│ │ └── action 模型对外交互的行为的包--对前端页面开放的接口
│ │ └── init 模块初始化工作的包路径
│ │ └── manager manager是 service的一些公共逻辑,不会定义为独立的function的类

4.3 系统的分层

himalaya(cdm)
   -- himalaya-major
     -- himalaya-common
   -- himalaya-item
     -- himalaya-inventory
     -- himalaya-trade
   -- ……

kailas-leo(标品项目)
   -- kailas-leo-major
   -- kailas-leo-item
   -- kailas-leo-trade
   -- kailas-leo-pay
   -- kailas-leo-boot
   -- ……

kailas-leo-lb(客户项目)
   -- kailas-leo-lb-trade
   -- kailas-leo-lb-boot

前端工程结构参考:【前端-工程结构】
项目工程结构参考:【后端-工程结构】

5、一些规范

编码规范
标品项目:pro.shushi.kailas.leo.trade.model.LeoTradeOrder
项目名.模块名.模型的类目:leo.trade.LeoTradeOrder
客户项目:pro.shushi.kailas.lb.trade.model.LbTradeOrder
项目名.模块名.模型的类目:lb.trade.LbTradeOrder

配置注解
使用@Model.model注解配置模型编码,模型编码唯一标识一个模型
请勿使用Query和Mutation作为模型编码和技术名称的结尾。

更多规范参考:【Oinone研发规范】章节

Oinone社区 作者:shao原创文章,如若转载,请注明出处:https://doc.oinone.top/jia-gou-kai-fa/5518.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
shao的头像shao数式管理员
上一篇 2024年2月4日 上午11:23
下一篇 2024年2月20日 下午5:42

相关推荐

发表回复

登录后才能评论