目前国内主流的低代码开发平台有:宜搭、云程、简道云、明道云、氚云、伙伴云、道一云、JEPaaS、华炎魔方、搭搭云、JeecgBoot、RuoYi等。这些平台各有优劣势,定位也不同,用户可以根据自己需求选择。如果企业想自主可控,从零开发一个低代码平台,如何技术选型呢?
低代码平台至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端UI等组件,我们没必要重新造轮子,市场上已经有大量的成熟组件,选择合适的组件进行集成和二次开发,即可自主开发一个低代码平台。以下是以java+vue为开发技术的选型参考。
市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。开发低代码平台、OA系统、BPM软件均需要流程可视化功能,而流程可视化核心是流程引擎和流程设计器,对于市场上如此多的开源流程引擎,哪个功能和性能好,该如何选型呢?
对于低代码平台中的流程可视化,流程设计器是重要的支撑工具,目前市场上比较主流的流程设计器有bpmn-js、mxGraph、Activiti-Modeler、flowable-modeler、easy-flow、bpmn2-modeler插件等。
Activiti开源版本中带了web版流程设计器,在Activiti-explorer项目中有Activiti-Modeler,优点是集成简单,开发工作量小,缺点是界面不美观,用户体验差。
flowable开源版本中带了web版流程设计器,展示风格和功能基本跟Activiti-Modeler一样,优点是集成简单,开发工作量小,缺点是界面不美观,用户体验差。
蚂蚁金服出品,AntDesign作为一门设计语言面世,经历过多年的迭代和积累,它对UI的设计思想已经成为一套事实标准,受到众多前端开发者及企业的追捧和喜爱,也是React开发者手中的神兵利器。希望ant-design-vue能够让Vue开发者也享受到AntDesign的优秀设计。ant-design-vue是AntDesign的Vue实现,组件的风格与AntDesign保持同步,组件的html结构和css样式也保持一致,真正做到了样式0修改,组件API也尽量保持了一致。AntDesignVue致力于提供给程序员愉悦的开发体验。
Maven翻译为"专家"、“内行”,是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。本系统采用Maven来管理项目,并且建立的是多模块项目,让每个模块独立,高内聚,低耦合.不同模块之间保持自己的完整性。可以互相不干扰.方便以后的维护开发。
Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它的优点如下:速度快,完全基于内存,使用C语言实现,网络层使用epoll解决高并发问题,它的单线程模型避免了不必要的上下文切换及竞争条件。
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。SpringBoot的核心就是简化配置,快速开发,非常符合我们公司的开发理念。让开发人员只关心业务的实现而无需担心开发时繁琐的配置问题,在搭配上代码生成器,即使不懂代码也能开发出自己想要的功能。SpringBoot框架有很好的拓展性,可以将SpringBoot项目拆分为SpringCloud微服务。
Mybatis是当前最火热的java持久层框架之一,它不仅是一款优秀的持久层框架,还支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(PlainOrdinaryJavaObject,普通的Java对象)映射成数据库中的记录。而Mybatis-Plus在Mybatis的基础上进行扩展,只做增强不做改变,引入Mybatis-Plus不会对您现有的Mybatis构架产生任何影响,而且MP支持所有Mybatis原生的特性。
Quartz框架是一个全功能、开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。云程平台集成了任务调度功能,开发了可视化界面,用简单的操作来实现自己所需要的任务调度。
云程平台office文件处理采用了EasyPoi这个POI工具类来做文件的快速导入导出,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。也非常匹配简单、快速开发的理念。此外,使用OpenOffice来做文档的预览功能,OpenOffice是一个开源办公套件,它的文件处理可以实现office系列文档ppt,pptx,xls,xlsx,doc,docx都能够在线预览。
Swagger2是一个规范和完整的框架,用于生成、描述、调用和可视化Restful风格的web服务。现如今,前后端分离已经逐渐成为互联网项目一种标准的开发方式,前端与后端交给不同的人员开发,但是项目开发中的沟通成本也随之升高,这部分沟通成本主要在于前端开发人员与后端开发人员对WebAPI接口的沟通,Swagger2就可以很好地解决,它可以动态生成Api接口文档,降低沟通成本,促进项目高效开发。可以使用Swagger2+knife4j-ui进行API发布和管理。
云程平台即时通讯采用WebSocket协议,它是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。简单来说,使用WebSocket使得客户端和服务器之间的数据交换变得更加简单,并且能有效节约服务器资源和带宽。WebSocket也为本系统在web端、app端、小程序端、H5端都实现了消息实时互通,实时推送功能。
FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarkerTemplateLanguage(FTL)。低代码平台可以采用Freemarker模板引擎来进行代码生成器模板的开发,集成了前后端模板,支持全页面操作生成自己想要的功能,包括单表的增删改查,多表关联的开发,还有工作流程表单的开发以及移动端的界面功能生成。有效降低软件开发投入成本,使开发变得简单。
Minio是一个开源的对象存储服务组件,非常适合存储大量非结构后的数据,比如图片、视频、文档等。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript,Golang语言。对于中小型企业,如果不选择存储上云,那么Minio是个不错的选择,麻雀虽小,五脏俱全。当然Minio除了直接作为对象存储使用,还可以作为云上对象存储服务的网关层,无缝对接到AmazonS3、MicroSoftAzure。
vue2.6.x(vue主框架)ant-design-vue1.7.x(vue组件)less3.9.x(css管理工具)Webpack4.x(前端工程构建打包)Node8.9.x(前端工程开发运行环境)Npm3.x(前端工程包管理器)Yarn(前端工程包管理器)AntV(图表组件)Vant2.11.x(移动端框架)Uni-app(小程序框架)
Webpack是一个前端资源加载和打包工具。所谓的模块就是在平时的前端开发中,用到一些静态资源,如JavaScript、CSS、图片等文件,webpack就将这些静态资源文件称之为模块。webpack支持AMD和CommonJS,以及其他的一些模块系统,并且兼容多种JS书写规范,可以处理模块间的依赖关系,所以具有更强大的JS模块化的功能,它能对静态资源进行统一的管理以及打包发布。
Yarn就是一个类似于npm的包管理工具,它是由facebook推出并开源。与npm相比,yarn有着众多的优势,主要的优势在于:速度快、离线模式、版本控制。npm用下来比较强的一个痛点就是:当包的依赖层次比较深时,版本控制不够精确。会出现相同package.json,但不同人的电脑上安装出不同版本的依赖包,出现类似我的电脑上可以运行,别的电脑上不行的bug很难查找。可以使用npm-shrinkwrap来实现版本固化,版本信息会写入npm-shrinkwrap.json文件中,但它毕竟不是npm的标准配置。yarn天生就能实现版本固化。会生成一个类似npm-shrinkwrap.json的yarn.lock文件,而文件内会描述包自身的版本号,还会锁定所有它依赖的包的版本号,yarn.lock存储着每个包的确切依赖版本,能确保从本地开发到生产环境,所有机器上都有精确相同的依赖版本。
Vant是赞前端团队维护的移动端组件库,提供了一整套UI基础组件和业务组件。轻量、可靠的移动端Vue组件库,采用MIT开源协议,目前githubstar数9k+,是有赞的一套开源组件库。通过Vant,可以快速搭建出风格统一的页面,提升开发效率。目前已有近60+个组件,这些组件被广泛使用于有赞的各个移动端业务中。缺点是不支持小程序。
自主开发低代码平台的难点是技术组件众多,如何掌握并有效集成是难点,尤其是流程引擎和表单引擎技术难度较大,没有从事过BPM开发的团队很难搞定,开发失败的风险比较大。更合理的捷径是采购市场上成熟的低代码平台源码,再进行二次开发完善,难度和风险比从头自主开发小很多。云程是一款基于SpringBoot+VUE的云原生低代码开发平台。采用微服务、前后端分离架构,基于可视化流程建模、表单建模、报表建模工具,零代码快速构建云端业务应用,平台即可本地化部署,也可基于K8S云原生部署。云程平台也是一款专业的BPM软件,即可独立部署,支撑企业级端到端流程落地,也可嵌入到您的OA、ERP等系统中,作为流程引擎组件使用。