JVS技术全解析,一站式企业级数字化解决方案:技术开放,功能全面
JVS是软开企服构建的企业数字化平台的,其中业务开发套件主要解决快速实现业务系统的配置化,是整个JVS产品体系的业务中台,如下图所示:
开发套件不是"银弹"
低代码平台\零代码平台都不是IT行业的“银弹”,也就是说,它并不能解决软件开发中所有的问题,更不能完全替代程序员的角色。相反,快速开发平台的出现,更多的是为了辅助和增强开发团队的实施交付能力,提升开发效率和软件质量。
JVS产品的定位
JVS瞄准企业级数字化的平台,平台包含了业务数字化、智能化的多种工具和应用,为企业快速、高效的数字化、智能化转型提供便捷高效的技术工具,而业务开发平台平台作为数字化平台的一部分,能够为企业提供更高效、更灵活的业务系统构建方式。
业务开发套件作为底座上的可视化业务系统配置工具,其核心价值在于通过直观的界面和易于理解的操作方式,使得非专业需求人员也能深度参与到软件开发过程中来。这大大降低了实施过程中的信息损耗与软件开发的门槛,降低开发的周期与研发啊成本。然而,这并不意味着业务开发平台可以完全替代代码开发。相反,结合传统的代码开发方式,JVS能够发挥出更大的威力。
- 产品定位于企业的应用构建的辅助工具,企业级的应用,支持较复杂的逻辑处理场景(企业级应用)
- 侧重于私有化部署的场景,对企业数据安全性、操作的数据的自主可控性要求更高的场景(私有化应用)
- 产品工具定位于有一定技术能力的交付团队,至少有1名具备项目交付经验的技术团队(降低技术依赖)
- 能有效降低应用的研发成本,可以提升配置化功能的比例,降低编码量,提升产品人员/业务人员的参与深度(成本优势)
- 具备持续化应用迭代的能力,提供从配置工具到工程实施的整体解决方案(持续化迭代升级)
- 为合作伙伴提供技术完全开放的兜底式技术服务,无项目交付后顾之忧(技术100%开放)
JVS覆盖范围
JVS主要围绕企业的IT数字化场景进行设计,旨在实现对整个IT业务生命周期的全面支持。从业务的初步构架、内部流转、团队协同、产品或服务的提供链支撑,到商业合作的管理,再到最终的财务管理,JVS都发挥着至关重要的作用。
企业信息化一般包含三个方面,业务前台、能力中台、底座后台三方层级。
那么业务前台包括:
- 企业员工协同类、团队内部管理执行的各种场景(比如 office文档、团队协同办公、企业会议管理等)
- 企业内部管理所需要的系统,提供内部管理的各种场景(HR 系统、OKR、 OA、财务系统、人事系统、经营分析系统等等)
- 企业主营业务支撑系统,提供行业类、产业运转的基础场景(企业的主营收入所需要的系统,比如物流、仓储、物业、等等)
能力中台:
为企业提供统一的能力系统,例如业务构建的能力、数据分析能力、设备接入能力、应用持续化集成的能力等。
通过对管理系统的拆解分析,管理系统=列表页+表单页+流程+逻辑处理+数据统计,其中不可见的是数据存储的交付,这个也是核心。
基础底座后台:
为整个JVS技术体系提供通用的、统一的基础运行框架,包括统一的用户管理体系(注册、认证、登录、权限)、基础的统一技术环境(微服务、容器化)、基础的IT能力(消息、配置管理)等。构建包容性的应用运行环境:支持传统开发的应用与新工具的生成的应用。
技术路线
快速开发工具在实现途径上主要分为代码生成和能力引擎功能渲染两种主流方式,每种方式都有其独特的优势和适用场景。
代码生成模式:
- 基于数据表与模板:该模式通过预定义的数据表结构和代码模板,自动生成初始的代码框架。这大大减轻了开发人员从零开始编写代码的负担。
- 开发人员整合:生成的代码需要开发人员根据项目需求进行整合、修改和优化,以确保其符合项目的整体架构和逻辑。
- 重新构建发布:整合后的代码需要经过构建和发布流程,才能部署到生产环境中运行。
- 自动化工具:这种模式的本质是一种生产代码的自动化工具,通过减少手动编码的时间,提高开发效率。
能力引擎功能渲染:
- 在线设计执行器:该模式通过在线设计工具,将业务功能抽象为可执行的模型,然后加载到执行器中运行。
- 设计数据驱动:业务功能的设计和实现主要依赖于设计数据,而不是传统的代码编写,通过设计数据与能力引擎生成功能。
- 功能自动化:通过模型加载和执行,实现业务功能的自动化,无需手动编写代码,直接通过配置化即可渲染成功能。
代码生成模式(代码级自动) | 模型驱动模式(业务级自动) | |
优点 | 1、对于交付有目标系统的源代码,便于目前国内源代码交付的模式 2、技术比较轻便,对于技术人员比较友好,将机械性的工作通过工具生成代码 3、技术代码的理解度上相对简单 4、与已有的技术积累整合相对容易 | 1、所见即所得,可以实时生效,调整、发布、使用整体化解决,让系统具备更好的伸缩性与灵活性,从而有效降低系统变动的成本 2、对使用人员的范围相对较广,用户体验远远优于其他模式,大大降低参与人员的技术门槛 3、让业务人员深度参与,缩短业务信息表达的路径,有效降低需求变更量,从而有效控制因需求模糊带来的开发浪费。 4、更能有效积累行业的技术,在产品、应用层面提升复用度,从而更容易形成行业、场景的专业应用,从而才能有效的提升技术的复用度 |
缺点 | 1、本质是通过固定模式下的模板生成代码,这种对模型的依赖度高 2、不能实现所见即所得,需要按照传统方式编译、构建、部署 3、使用对象必须是技术人员,需要对传统编码了解 4、复用度停留在代码层面 | 1、技术复杂度相对较大 2、需要实现多种执行引擎,而且需要对业务高度抽象 3、 |
JVS模式 | × | √ |
能力套件技术栈:
前端采用VUE+ElementUI,后端采用Java,spring cloud的技术路线,构建了多个能力配置引擎:
JVS-list:列表页配置引擎 | JVS-form:表单配置引擎 |
JVS-flow:流程配置引擎 | JVS-logic:逻辑配置引擎 |
JVS-chart:图表配置引擎 | JVS-report:报表配置引擎 |
JVS-screen:大屏配置引擎 | JVS-data_factory:数据加工引擎 |
JVS-resource:多数据源接入 | JVA-AppM:应用管理 |
技术栈:
组件归属 | 组件名称 | 组件作用 | 开源协议 | |
表现层(前端) | EsLint | 前端代码质量检测 | MIT | |
Vuex | 前端框架 | MIT | ||
Element-ui | 前端组件库 | MIT | ||
Crypto-Js | 前端加密 | BSD | ||
axios | 基于promise用于浏览器和node.js的http客户端 | MIT | ||
data-set | 前端数据绑定 | MIT | ||
vue-router | 前端路由 | MIT | ||
v-charts | 图形化组件渲染 | MIT | ||
E-charts | 图形化组件渲染 | Apache 2.0 | ||
WebPack | 前端代码打包 | MIT | ||
应用逻辑层(后端框架) | Lombok | 代码精简 | MIT | |
Mybatis plus | 数据持久层 | Apache 2.0 | ||
Hutool | 底层工具集 | 木兰宽松许可证 | ||
Swagger | 在线接口文档 | Apache 2.0 | ||
Groovy | 敏捷脚本语言 | Apache 2.0 | ||
Spring boot | 基础脚手架 | Apache 2.0 | ||
spring cloud alibaba | 微服务框架 | Apache 2.0 | ||
Xxl-job | 定时任务 | GNU 3.0 | 通过端口调用 | |
Nacos | 注册中心 | Apache 2.0 | ||
Sentinel | 接口限流 | Apache 2.0 | ||
Skywalking | 链路跟踪 | Apache 2.0 | ||
Redisson | 分布式锁 | Apache 2.0 | ||
RabbitMq | 消息队列 | MPL 1.1 | ||
Kafka | 分布式消息队列 | Apache 2.0 |
数据存储层 | ElasticSearch | 文件搜索引擎(日志、打文本) | Apache 2.0 | |
Mongo | 分布式文件存储数据库 | Apache 2.0 | ||
Mysql | 关系型数据库 | GPL | 通过端口调用 | |
mycat | 数据分库 | |||
Redis | 高性能的key-value数据库 | BSD 3 |
运维支持层 | Docker | 容器 | Apache 2.0 | |
Docker-compose | 多容器编排 | Apache 2.0 | ||
k8s | 分布式容器集群 | Apache 2.0 | ||
GitLab | 代码管理 | CC BY-SA 4.0 | ||
Sonarqube | 代码质量管理 | GNU 3.0 | 通过端口调用 | |
Nexus | 程序仓库 | Apache 2.0 | ||
Harbor | 镜像库 | Apache 2.0 | ||
Jenkins | 自动化构件 | MIT | ||
Logstash | 日志采集 | Apache 2.0 | ||
Minio | 文件服务 | Apache 2.0 | ||
Nginx | 反向代理服务器 | 无开源协议(默认开源) | ||
产品实现思路
将企业的内部管理系统高度抽象 ,如下图所示,整个应用包含下面图内的各个能力部分
- 左侧是数据录入的方式,可以是通过接口的方式进行数据录入,也可以是人工通过表单的方式进行数据录入;
- 录入后,系统提供了动态的数据模型进行存储数据(物理表),数据模型可以更具列表页或者表单的动态调整而相应自动调整;
- 右侧是数据渲染的方式,可以是列表页、表单、或者直接生成查询、修改等API;
- 业务功能包括业务流程、和逻辑功能的配置,流程引擎是与人工操作相关的流转业务,逻辑引擎是实现的自动化业务;
- 通过代码补充的能力可以把 后端服务或者前端自定义页面扩展接入到应用之中,这样作为功能的补充;
- 可以通过对接数据分析,对数据模型中的数据进行抽取、加工、处理分析,形成多种分析结果。
开源框架:https://gitee.com/software-minister/jvs
*********************************