这里写目录标题
探秘 Microi 吾码:强大的低代码平台全解析
一、引言
在当今数字化时代,软件应用的需求呈爆炸式增长,传统的软件开发方式已难以满足快速变化的市场需求。低代码平台应运而生,成为软件开发领域的一股强大力量。低代码平台的发展趋势不仅代表着软件开发方式的变革,也为企业的数字化转型提供了新的途径。而在众多低代码平台中,Microi 吾码以其独特的优势和特点,占据着重要的地位。
随着对快速软件开发的需求不断增长,低代码开发平台正在成为应用程序开发领域的游戏规则改变者。在这个数字化转型的时代,低代码趋势使企业比以往任何时候都更容易创建自定义应用程序、简化工作流程并改善对市场变化的响应。近年来,由于低代码在时间、成本、可扩展性和降低风险方面提供的好处,低代码的使用有所增加。这些优势催生了新的用例,例如快速原型设计、快速部署和新产品开发。据权威机构数据,2021 年全球低代码市场规模为 163 亿美元,到 2030 年预计将达到 1485 亿美元的预期价值,这是一个表明这项技术已经席卷商业世界,组织不应该错过利用他们的机会的明确指标。
低代码平台在国家层面也得到了大力支持。我国在《“十四五” 软件和信息技术服务业发展规划》和《中小企业数字化转型指南》等文件中,明确提出要突破低代码关键核心技术,推广低代码产品服务,并大力支持低代码开发平台的发展。在省、市层面,各级政府更具体地提出支持低代码发展的相关措施,如给予资金支持、加大保险力度、大力推广低代码关键技术的开发与应用,以及推进低代码开发平台建设等,并结合自身发展情况,有针对性地推动当地企业数字化转型。
从市场规模看,国内涌现了众多低代码厂商,产值迅速增长。同时,随着政府利好政策的支持,以及市场认知度的提高,中国低代码(包括零代码)市场规模将持续扩大。从市场需求看,中国越来越多的企业和开发者选择低代码开发技术。国际咨询公司 Forrester2021 年 11 月发布的在报告《The State Of Low-Code Platforms In China (低代码平台中国市场现状分析报告)》也指出:“中国公司的商业及技术决策者在数字化转型过程中优先考虑低代码技术。” 从市场投资看,越来越多的投资机构选择投资低代码技术。国际金融科技领域公司 PitchBook 在低代码 / 无代码市场报告中提出低代码开发平台已成为企业最关键的数字化投资之一。在中国的低代码市场,投融资热度也在持续上升。从 2016 年开始,融资笔数和亿元以上融资占比都在逐年增加。
低代码开发平台具有众多优势,如快速应用开发、业务部门与 IT 部门协调一致、降低开发成本、增强业务敏捷性、提高数据安全性和促进业务与技术的融合等。低代码开发平台简化应用开发流程,缩短周期,降低成本,提升敏捷性和安全性,适用于企业内部系统、移动及物联网应用。尽管有局限性,但随数字化转型加速,低代码有望成为主流开发方式之一。
Microi 吾码作为一款开源低代码平台,始于 2014 年,基于 Avalon.js 开发,并于 2018 年使用 Vue 进行重构。平台于 2024 年 10 月正式开源,致力于为企业提供一站式低代码开发解决方案。Microi 吾码采用.NET8 + Redis + MySql/SqlServer/Oracle + Vue2/3 + Element-UI/Element-Plus 的技术架构,支持跨平台、跨数据库、分布式部署,并集成了消息队列、搜索引擎、MongoDB 等组件,提供强大的后端支持。
Microi 吾码具有无限制、跨平台、分布式、界面自定义、多租户支持等亮点。不限制用户数、表单数、数据量、数据库数量等。支持 gRPC 以实现跨开发语言通信。支持 Docker、K8S 等容器化平台,以及 Jenkins、Rancher 等 CI/CD 工具。提供界面自定义引擎,满足个性化需求。支持数据库级别隔离多租户、TenantId 租户隔离、独立组织机构数据隔离。
在数字化转型的浪潮中,Microi 吾码以其高效、灵活的特点,成为企业快速构建应用的有力工具。它在跨平台、分布式部署、界面自定义以及数据集成与处理能力方面表现出色,适合对系统灵活性和数据集成有较高要求的企业。
二、Microi 吾码简介
1. 技术架构
-
介绍.NET8 + Redis + MySql/SqlServer/Oracle + Vue2/3 + Element-UI/Element-Plus 的技术组合优势。 Microi 吾码采用的技术组合具有诸多显著优势。.NET8作为强大的后端开发框架,提供了高效、稳定的运行环境,确保平台能够处理复杂的业务逻辑和大规模的数据请求。Redis作为分布式缓存,极大地提高了数据的读取速度,减少了数据库的压力,为平台的快速响应提供了有力支持。MySql/SqlServer/Oracle等多种数据库的支持,使得平台能够适应不同企业的数据库需求,无论是小型企业的 MySql,还是大型企业对 SqlServer 和 Oracle 的需求,都能轻松满足。同时,支持读写分离和分库分表,可扩展更多数据库类型,为企业的业务扩展提供了灵活的数据库解决方案。
Vue2/3 和 Element-UI/Element-Plus 的结合,为前端开发带来了丰富的组件库和简洁的界面设计,使得用户能够获得良好的交互体验。 -
平台始于 2014 年,历经多次重构和发展。在这个过程中,不断吸收新的技术和理念,逐渐完善和优化自身的技术架构。2014 年基于 Avalon.js 开发,2018 年使用 Vue 进行重构,2024 年又进一步优化和开源,展现了其强大的生命力和持续发展的能力。
强调平台始于 2014 年,历经多次重构和发展。
Microi 吾码自 2014 年诞生以来,一直致力于为企业提供高效的低代码开发解决方案。在这漫长的发展历程中,平台经历了多次重大的重构和升级。每一次重构都是对技术的一次革新和提升,旨在更好地满足企业不断变化的需求。
从最初的基于 Avalon.js 开发,到 2018 年引入 Vue 进行重构,再到 2024 年的开源,Microi 吾码始终紧跟技术发展的潮流,不断探索和创新。通过多次重构,平台不仅在技术架构上更加先进和稳定,而且在功能上也不断丰富和完善。
在这个过程中,平台积累了丰富的开发经验和用户反馈,不断优化用户体验,提高开发效率。如今,Microi 吾码已经成为一款成熟、稳定、高效的低代码开发平台,为众多企业的数字化转型提供了有力支持。
2. 平台亮点
- 无限制的用户数、表单数、数据量等。
Microi 吾码平台具有无限制的用户数、表单数和数据量等特点,为企业提供了极大的灵活性和扩展性。无论企业规模大小,都无需担心用户数量的限制,可以自由地添加用户,满足企业不断发展的需求。
同样,表单数和数据量的无限制,使得企业可以根据实际业务需求创建任意数量的表单,存储海量的数据。这对于那些数据量庞大、业务复杂的企业来说,无疑是一个巨大的优势。企业可以放心地使用 Microi 吾码平台来管理和处理大量的数据,而无需担心平台的性能和容量问题。 - 跨平台、跨数据库、分布式等特性。
Microi 吾码具有跨平台的特性,基于.NET8,支持 gRPC 以实现跨开发语言通信。这意味着无论企业使用何种开发语言和平台,都可以轻松地与 Microi 吾码平台进行集成和交互。这种跨平台的特性为企业提供了更多的选择和灵活性,使得企业可以根据自身的技术栈和需求来选择最适合的开发方式。
跨数据库的支持也是 Microi 吾码的一大亮点。平台支持 MySql5.5+、SqlServer2016+、Oracle11g + 等多种数据库,并且支持读写分离 / 分库分表,可扩展更多数据库类型。这使得企业可以根据自身的数据库需求和技术实力来选择合适的数据库,同时也为企业的业务扩展提供了灵活的数据库解决方案。
分布式特性是 Microi 吾码的另一个重要优势。平台支持分布式部署,支持 Docker、K8S、Jenkins、Rancher、CICD 等容器化平台和工具。这使得平台可以轻松地应对大规模的数据处理和高并发的访问请求,提高了平台的可靠性和稳定性。同时,分布式存储的支持,如支持阿里云 OSS、MinIO、亚马逊 S3 等,可扩展更多存储介质,为企业的数据存储提供了更多的选择和保障。 - 界面自定义、SaaS 引擎、表单引擎等特色功能。
界面自定义是 Microi 吾码的一大特色功能。平台提供界面自定义引擎,满足个性化需求。企业可以根据自身的品牌形象和用户需求,自由地定制平台的界面风格和布局。通过界面自定义,企业可以打造出独一无二的软件应用,提高用户的满意度和忠诚度。
SaaS 引擎是 Microi 吾码的另一个重要特色。平台提供三种 SAAS 模式,支持数据库级别隔离多租户、TenantId 租户隔离、独立组织机构数据隔离。这使得企业可以根据自身的业务需求和管理模式,选择合适的 SAAS 模式,实现多租户管理和数据隔离,提高数据的安全性和管理效率。
表单引擎是 Microi 吾码的核心功能之一。平台的表单引擎支持扩展组件、支持自定义 vue 组件嵌入表单、支持二次开发调用表单引擎,支持 V8 引擎事件,灵活实现复杂业务逻辑。表单引擎的强大功能使得企业可以快速地创建和定制各种表单,满足不同业务场景的需求。同时,丰富的 V8 事件和动态关联表单等功能,为表单的设计和使用提供了更多的灵活性和可能性。
三、快速开始
1. 安装方式
1. 介绍 CentOS7 一键安装脚本的使用方法和注意事项。
CentOS7 一键安装脚本为用户提供了便捷的安装方式,无需进行繁琐的本地编译代码、打包镜像、安装服务器环境和 docker 容器等操作。使用方法如下:
注意事项如下:
- 首先,获取安装脚本。可以使用以下命令获取脚本:
url=https://static.itdos.com/install/install-microi-centos.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install-microi-centos.sh $url;fi;bash install-microi-centos.sh
。 - 执行脚本时,会提示用户输入
g
以公网 IP 安装,输入n
以内网 IP 安装,请根据实际情况进行选择。 - 如果服务器没有 docker 环境,脚本会提示是否安装 docker。虽然推荐使用 1Panel、宝塔等面板工具来管理服务器并安装 docker,但如果想快速开始可以直接键入
y
进行安装。 - 安装成功后,必须开放 microi-api 端口、前端传统界面端口、前端 Web 操作系统端口、MinIO 端口。
- 执行脚本前,若服务器上已有以 “microi-install-” 开头的容器,需要先通过命令
docker ps -a --format "{{.Names}}" | grep "^microi-install-" | xargs -r docker rm -f
删除所有相关容器后再重新运行,注意此操作将会删除数据库、MinIO 文件,请谨慎操作。 - 安装过程中,如果报错
timeout
,可以去阿里云申请一个自己私有的加速地址来配置 Docker 镜像加速器。
2. 详细说明安装过程中的各项配置和操作步骤。
- 获取 IP:脚本首先获取局域网 IP 和公网 IP,分别使用
hostname -I | awk '{print $1}'
和curl -s ifconfig.me
命令。 - 询问安装类型:提示用户选择公网或内网安装,输入
g
以公网 IP 安装,输入n
以内网 IP 安装。 - 安装 Docker:如果服务器未安装 Docker,会提示用户是否立即安装。安装过程包括更新 yum、安装 yum 工具、添加 Docker 源、安装 Docker 软件包、启动 Docker 服务并设置为开机启动。
- 配置 Docker 镜像加速器:使用
https://mirrors.aliyun.com/docker-ce/作为镜像加速器地址,通过sudo tee /etc/docker/daemon.json <<EOF{\"registry-mirrors\": [\"${DOCKER_ACCELERATOR}\"]}EOF
命令进行配置,然后重新加载配置并重启 Docker。 - 生成随机端口和密码:通过
generate_random_port
和generate_random_password
函数生成随机端口和密码,用于安装 MySQL 和 Redis。 - 安装 MySQL:创建 MySQL 配置文件
/tmp/my_custom.cnf
,设置一些参数如lower_case_table_names = 1
、max_connections = 500
等。然后随机生成端口、密码和数据目录,使用docker pull
命令拉取 MySQL 5.6 镜像,通过docker run
命令启动容器,设置端口映射、数据目录挂载、环境变量等。 - 安装 Redis:同样生成随机端口和密码,拉取 Redis 6.2 镜像并启动容器,设置端口映射和密码。
- 等待 MySQL 容器启动并检查连接:等待 MySQL 容器启动,通过循环尝试连接 MySQL 服务,如果在 60 次尝试后仍无法连接,则退出脚本。
2. 创建模块
- 方式一:先在平台表单引擎创建表、设计表单、创建模块并关联表单。
- 进入平台的表单引擎模块,新增一条数据即会自动往数据库新建一张物理表,多数据库时可选择指定在哪个数据库创建表(不选择则是主库)。
- 查看在表单引擎中创建的数据,操作栏点击【设计】,即可进入表单设计器。每拖一个字段控件则会立即往数据库添加一个物理字段,之后的每次保存都是修改字段。
- 进入模块引擎,新增一条数据,选择打开方式为【Diy】,选择刚刚创建的物理表,选择模板为【搜索 + 表格】或【搜索 + 卡片】(可扩展更多模板)。更多配置玩法见平台文档【模块引擎.md】。
- 若看不到菜单,可能是自动给 admin 角色赋值权限出错,或其它角色无权限查看,去平台【角色管理】配置一下权限即可。
- 方式二:先在数据库管理工具中创建物理表,再在平台进行后续操作。
- 进入数据库管理工具(如 Navicat)新增一张物理表,并新增需要的字段。
- 如果是主库:进入平台表单引擎,在非 Diy 表下拉框中选择刚刚创建的物理表,点击【加载为 Diy 表】,此时表格会自动生成一条数据。
- 如果是扩展库:进入平台数据库扩展,新增或查看扩展库那条数据,在非 Diy 表下拉框中选择刚刚创建的物理表,点击【加载为 Diy 表】,此时平台表单引擎会自动生成一条数据。
- 后续操作与方式一相同,即设计表单、创建模块并关联表单。一张物理表可以被多个模块引擎进行关联设计模块,也可以被多个流程引擎进行关联流程审批,还可以被多个报表引擎进行关联设计虚拟报表。
四、表单引擎
1. V8.FormEngine 用法
- 服务器端和前端的用法差异。
- V8.FormEngine 是 Microi 吾码平台中的重要组成部分,前后端均支持该对象且使用的是 JavaScript 语法,用法基本一致但略有差别。服务器端在对表进行操作时,所有函数均可传入 V8.DbTrans 对象作为第二个参数,而前端由于多次请求 HTTP 接口,多次调用 FormEngine 的函数无法带事务。在接口引擎中,需要执行 V8.DbTrans.Commit () 或 V8.DbTrans.Rollback (),但在服务器端 V8 事件中,通常只需视情况执行 V8.DbTrans.Rollback (),外部会自动执行提交操作。
- 对于前端 V8,有两种用法:第一种是同步执行,使用
await
关键字等待结果返回,如var result = await V8.FormEngine.GetTableData('表名或表Id,不区分大小写',{_Where :[]});;
第二种是异步执行,通过回调函数获取结果,如V8.FormEngine.GetTableData('表名或表Id',{_Where :[]},function(result){//在回调函数中获取result结果//注:若要在回调函数中使用 await,那么需要将上面的 function(result)定义为 async function(result)});
。 - 后端 V8 目前用法暂时只有一种同步执行方式,如
var result = V8.FormEngine.GetTableData('表名或表Id',{_Where :[],},V8.DbTrans);,也可以写await V8.FormEngine.GetTableData(),
目前写或不写await均为同步返回结果。异步写法为V8.FormEngine.GetTableDataAsync()
,但暂不支持回调函数。 - 若是服务器端.net 二次开发,则使用 C# 写法,如
var _formEngine = new FormEngine();var result = await _formEngine.GetTableDataAsync('表名或表Id',new{_Where =new List<DiyWhere>{new DiyWhere(){Name ="Xingming", Value = '张三', Type ="Like"}}});
。
- 详细介绍各种函数的使用方法,如
GetFormData、UptFormData
等。
- GetFormData 获取一条数据:这里列举了服务器端 V8、前端 V8 两种写法。服务器端 V8 写法(同步):
var modelResult = V8.FormEngine.GetFormData({FormEngineKey :'',//必传。可以是 TableName 的值,也可以是 TableId 的值,Id :'',//Id 与_Where 两者必传其一_Where :[]//Id 与_Where 两者必传其一});
;前端 V8 写法一(同步):var modelResult = await V8.FormEngine.GetFormData({FormEngineKey :'',Id :''});
;前端 V8 写法二(异步):V8.FormEngine.GetFormData({FormEngineKey :'',Id :''},function(modelResult){//在回调函数中获取 modelResult 结果//值得注意的是:如果要在回调函数中使用 await,那么需要将上面的 function(modelResult)定义为 async function(modelResult)});
。返回结果为{ Code : 1/0, Data : {}, Msg : '错误信息' }
。当表单属性中开启了【允许匿名新增数据】,可以不传入 token 使用V8.FormEngine.GetFormDataAnonymous()
获取数据,参数与上述一致,但需要新增一个 OsClient 的参数。 - UptFormData 修改一条数据:
V8.FormEngine.UptFormData({FormEngineKey :'',Id :'',//必传_RowModel :{FieldName :''//要修改的字段,注意字段值不能是{}或[],需要序列化}});
。
UptFormDataBatch 批量修改数据:批量修改,自带事务,也可第二个参数传入 V8.DbTrans 事务对象。每条数据支持不同的表 FormEngineKey,如var uptList =[];uptList.push({FormEngineKey :'',Id :'',//必传_RowModel:{}});var uptResult = V8.FormEngine.UptFormDataBatch(uptList);
。 - UptFormDataByWhere 根据 where 条件进行批量修改,谨慎操作。如果未传入条件,则返回错误,如
var result = V8.FormEngine.UptFormDataByWhere({FormEngineKey :'diy_content',_Where :[{ Name :'ContentKey', Value :'test', Type :'Like'}],_RowModel :{Name :'xxx'}});
。 - DelFormData 删除一条数据:
V8.FormEngine.DelFormData({FormEngineKey :'',//必传Id :'',//必传});
。 - DelFormDataBatch 批量删除,自带事务,也可第二个参数传入 V8.DbTrans 事务对象。每条数据支持不同的表
FormEngineKey,如var delList =[];delList.push({FormEngineKey :'',Id :'',//必传});var delResult = V8.FormEngine.DelFormDataBatch(delList);
。 - DelFormDataByWhere 根据 where 条件进行批量删除,谨慎操作。如果未传入条件,则返回错误,如
var result = V8.FormEngine.DelFormDataByWhere({FormEngineKey :'diy_content',_Where :[{ Name :'ContentKey', Value :'test', Type :'Like'}],});
。 - AddFormData 新增一条数据:
V8.FormEngine.AddFormData({FormEngineKey :'',//必传Id :'',//可选,若不传则由服务器端自动生成 guid 值_RowModel :{}});
,返回结果为{ Code : 1/0, Data : {新增后的数据对象,包含 Id、CreateTime、UserId 等默认字段}, Msg : '错误信息!' }
。当表单属性中开启了【允许匿名新增数据】,可以不传入 token 使用V8.FormEngine.AddFormDataAnonymous()
新增数据,参数与上面一致,但需要新增一个 OsClient 的参数。
2. 黑科技
- 拓展表单组件、定制表单组件、强大的 V8.FormEngine 和丰富的 V8 事件。
- 拓展表单组件:表单引擎组件库支持二次开发自由扩展,比如可以增加一个 “显示天气” 组件。
- 定制表单组件:表单设计里面可以任意嵌入自己开发的 vue 组件,嵌入的 vue 组件也能通过一句代码来调用表单引擎二次开发。
- 强大的 V8.FormEngine。
- 丰富的 V8 事件:平台提供了非常丰富的前端事件、后端事件、键盘事件、值变更事件等等。比如表单提交前在 “前端事件” 中判断哪些字段必填、哪些字段填写不符合规则;在 “后端事件” 中判断更严格的数据校验,防止通过 postman 调用接口绕开前端验证。
- 动态关联表单的应用场景和实现方法。
- 应用场景:比如商品信息中,商品可能是饮水机,也可能是电脑。饮水机需要填写出水模式、出水龙头、制水能力等信息;电脑需要填写 CPU、内存、显卡等信息。此时就可以用到动态关联表单,为商品分类设计多张表单引擎,然后动态调用。
- 实现方法:为不同的商品分类设计多张表单引擎,根据商品类型动态调用相应的表单。例如,可以在表单中设置判断逻辑,根据商品类型的选择来显示不同的字段和表单内容。具体实现可以参考以下方式:在表单中先选择下拉框控件【商品类型】,然后根据不同的商品类型,通过值变更事件来动态加载相应的字段和表单内容。比如选择饮水机时,显示出水模式、出水龙头、制水能力等字段;选择电脑时,显示 CPU、内存、显卡等字段。可以使用 V8.FormEngine 的相关函数来获取和设置表单数据,实现动态关联表单的功能。
五、工作流引擎
1. 吾码四代工作流引擎优势
1.1 表单引擎驱动带来的灵活性。
Microi 吾码第四代工作流引擎的流程属性和节点属性均由表单引擎驱动,这种设计极大地增强了工作流的灵活性。通过表单引擎的驱动,用户可以根据实际业务需求轻松调整流程和节点的属性,无需进行复杂的代码编写。例如,在业务需求发生变化时,可以快速修改表单中的字段和规则,从而实现对工作流的动态调整。
1.2 丰富的前端和后端事件满足复杂业务需求。
吾码四代工作流引擎具有丰富的前端和后端事件,能够满足各种复杂的业务需求。前端事件包括用户点击发起流程或处理工作表单进入事件、用户点击【提交】按钮、表单提交前事件等,后端事件涵盖表单提交前事件、表单提交后事件、条件判断等。这些事件配合集成的前后端 V8 引擎,使得工作流可以实现复杂的业务逻辑。例如,在表单提交前,可以通过前端事件进行字段必填项检查和数据格式验证;在后端事件中,可以进行更严格的数据校验,防止通过 postman 调用接口绕开前端验证。
1.3 与业务表单解耦,可集成第三方表单和二次开发。
流程引擎与业务表单解耦是吾码四代工作流引擎的一大优势。这意味着可以集成第三方表单,同时也支持二次开发。这种解耦设计使得工作流引擎更加灵活和可扩展,能够适应不同的业务场景和需求。例如,企业可以根据自身的业务需求,选择合适的第三方表单进行集成,或者对现有表单进行二次开发,以满足特定的业务流程要求。
2. 流程引擎相关物理表说明
介绍 WF_FlowDesign、WF_Node 等相关物理表的作用。
WF_FlowDesign 是流程图设计表,一个流程图对应一条数据。它用于存储流程图的基本信息,如流程图的名称、描述、创建时间等。通过 WF_FlowDesign 表,可以对流程图进行管理和维护。
WF_Node 是流程节点属性表,用于存储流程节点的属性信息。每个流程节点都有相应的属性,如节点名称、节点类型、审批人、条件判断等。通过 WF_Node 表,可以对流程节点进行详细的配置和管理。
WF_Line 是流程条件(线)属性表,用于存储流程条件的属性信息。在工作流中,不同的条件会导致流程走向不同的节点。通过 WF_Line 表,可以对流程条件进行设置和管理。
WF_Flow 是流程实例表,发起一个流程,就会生成一条实例数据。一条实例数据对应 WF_Work 表 N 条工作数据。WF_Flow 表用于存储流程实例的基本信息,如流程实例的编号、发起时间、发起人等。
WF_Work 是流程工作待办表,如发起一个流程实例,产生了 3 个待办,会写入 3 条 WF_Work 数据。WF_Work 表用于存储流程工作的待办信息,包括待办的任务编号、任务状态、处理人等。
WF_History 是流程轨迹表,详细记录流程每一步、每个人的所有操作,如同意、拒绝、撤回等。通过 WF_History 表,可以对流程的执行轨迹进行追溯和审计。
3. V8 事件顺序和内置函数
详细说明用户操作流程中的各个 V8 事件和可访问的内置函数。
用户操作流程中的 V8 事件顺序如下:
用户点击发起流程或处理工作表单进入事件 V8(前端)。
- 用户点击【提交】按钮。
- 节点开始事件 V8(前端)。
- 表单提交前事件 V8(前端)。
- 表单提交前事件 V8(后端)。
- 表单提交后事件 V8(后端)。
- 表单提交后事件 V8(前端)。
- 调用后端处理工作接口。
- 条件判断 V8(后端)。
- 节点开始事件 V8(后端)。
- 节点结束事件 V8(后端)。
- 节点结束事件 V8(前端)。
可访问的内置函数有:
- V8.WF.ApprovalType:用户点击的审批类型。可能的值有‘Auto’(发起流程 (开始节点)/ 业务节点)、‘Agree’(同意)、‘Disagree’(拒绝)、‘Recall’(撤回)。
- V8.WF.ApprovalIdea:用户填写的审批意见。
- V8.WF.AddUsers:用户添加的审批人。
- V8.WF.SelectUsers:用户选择的审批人。
- V8.WF.CurrentFlowDesign:当前流程设计图实体。
- V8.WF.CurrentNode:当前节点实体。
- V8.WF.BackNodeId:如果用户点击的是拒绝,并且选择了退回到哪个节点,这就是那个节点 Id。
在节点开始事件 V8(前端)中,可以进行一些前端的验证和操作。例如:
if(V8.Form.Money >1000){
V8.Tips('金额不能大于1000!',false);
V8.Result=false;
}
//金额加1
V8.Form.Money =V8.Form.Money +1;
//强制指定下一节点审批人
V8.WF.ForceSelectUsers=['userid'];
在节点开始事件 V8(后端)中,可以进行回滚事务、阻止流程提交等操作。例如:
可使用 V8.Result = { Code :0, Msg : ‘阻止流程提交’ }; 进行回滚事务、阻止流程提交
在条件判断 V8(后端)中,可以根据条件设置流程走向。例如:
//在服务器端执行
//这里赋值 LineValue 就是条件属性设置的【条件值】
if(V8.Form.Money <=100){
V8.LineValue =1;
}else{
V8.LineValue =2;
}
在节点结束事件 V8(前端)中,可以获取流程执行成功后返回的数据。例如:
V8.WF.WorkResult:流程执行成功后返回的数据,如发送到了哪个节点、哪些审批人
在节点结束事件 V8(后端)中,可以访问下一节点实体和接收人信息。例如:
V8.WF.NextNode:访问下一节点实体
V8.WF.NextTodoUsers:访问接收人,格式:[{Id:'',Name:''}]
4. 撤回功能介绍
阐述撤回功能的实现机制和使用场景。
撤回功能的实现机制如下:A 节点提交到 B 节点后,在 B 节点审批之前,A 节点提交人可随时主动撤回到自己手上,重新编辑表单数据并重新提交。B 节点审批后,A 节点无法再撤回,但 B 节点可以在 C 节点审批之前撤回到自己 B 节点手上。A 节点实再想撤回,只有找 C 节点拒绝并退回到 A 节点。注意:撤回时,也会执行节点开始 V8、结束 V8。
使用场景例如在业务流程中,用户提交了一份表单,但在后续审批过程中发现填写有误或需要补充信息。此时,用户可以使用撤回功能,将表单撤回到自己手中进行修改,然后重新提交。这样可以提高业务流程的灵活性和准确性,避免因错误提交而导致的不必要的审批环节和时间浪费。
六、模块引擎
模块引擎作为 Microi 吾码低代码平台的重要组成部分,具有强大的功能和丰富的配置玩法,为用户提供了高效、灵活的开发体验。
多表关联功能
模块引擎支持多表关联,使得开发者可以轻松地在不同的表之间建立关系,实现数据的整合和查询。例如,在一个企业管理系统中,可能需要将员工表、部门表和项目表进行关联,以便查询某个部门下的所有员工以及他们参与的项目。通过模块引擎,开发者可以快速地实现这种多表关联的功能,无需编写复杂的 SQL 语句。
复杂 where 条件配置
模块引擎还支持复杂的 where 条件配置,让用户能够根据特定的条件筛选数据。用户可以使用各种逻辑运算符(如 AND、OR、NOT)和比较运算符(如等于、大于、小于等)来构建复杂的查询条件。例如,可以设置一个 where 条件为 “年龄大于 30 岁且性别为男性”,或者 “销售额在 10000 元以上或订单数量大于 100 个”。这样的复杂 where 条件可以帮助用户精确地获取所需的数据。
此外,模块引擎还具有查询列、不显示列、统计列、可搜索列、可排序列、动态 V8 按钮、接口地址替换、支持多种嵌入模式(iframe、微服务、组件、内置界面模板等)等功能。这些功能使得模块引擎在数据查询、展示和交互方面具极高的灵活性和可定制性。
例如,通过查询列功能,用户可以选择需要显示的列,隐藏不相关的信息;不显示列功能则可以在特定情况下隐藏敏感或不必要的列;统计列可以对数据进行汇总和统计,如计算总和、平均值、最大值等;可搜索列允许用户在特定的列上进行搜索,快速定位所需的数据;可排序列让用户可以按照特定的列进行排序,方便数据的查看和分析;动态 V8 按钮可以根据特定的条件动态生成按钮,实现更加灵活的交互操作;接口地址替换功能可以在不同的环境下轻松切换接口地址,提高系统的可维护性和可扩展性;多种嵌入模式则为用户提供了更多的选择,满足不同的应用场景需求。
总之,Microi 吾码的模块引擎功能强大,配置玩法丰富,为用户提供了高效、灵活的低代码开发解决方案。无论是简单的应用场景还是复杂的企业级系统,模块引擎都能满足用户的需求,帮助用户快速构建出高质量的软件应用。
七、与其他低代码平台对比
与 Jeecg 对比
从技术架构、平台特点、功能对比、用户体验等方面进行详细比较。
技术架构:
- Microi 吾码:采用.NET8 + Redis + MySql/SqlServer/Oracle + Vue2/3 + Element-UI/Element-Plus 的技术架构,支持跨平台、跨数据库、分布式部署,并集成了消息队列、搜索引擎、MongoDB 等组件,提供强大的后端支持。
- Jeecg:采用前后端分离的架构,前端使用 Vue.js,后端使用 Spring Boot,保证了良好的开发体验和高效的运行性能。
平台特点:
- Microi 吾码:无限制的用户数、表单数、数据量等;跨平台、跨数据库、分布式;界面自定义;多租户支持。
- Jeecg:内置图形化表单设计和工作流引擎,支持拖拽方式快速创建和配置业务流程;动态表单,支持动态生成表单,无需编写 HTML 或 JS,只需在后台配置即可自动生成前端界面;微服务兼容,无缝对接 Docker 和 Kubernetes 等容器化平台,支持微服务部署;大数据集成,内置对 Elasticsearch、Hadoop 等大数据组件的支持;完善的 RBAC(Role-Based Access Control)角色权限控制。
功能对比:
- 组件与模板:
Microi 吾码:提供丰富的组件库和模板,支持扩展组件和自定义 Vue 组件嵌入表单,满足多样化需求。
Jeecg:同样提供丰富的组件和模板,支持在线表单开发、报表配置、在线图表设计等。 - 流程设计:
Microi 吾码:提供可视化的流程设计工具,支持拖拽方式创建流程,并设置流程节点、审批人等。
Jeecg:内置工作流引擎,支持复杂的流程逻辑和条件判断,提供图形化流程设计器。 - 数据集成与处理能力:
Microi 吾码:支持与其他系统的数据集成,实现顺畅对接,并提供全能采集引擎,可在接口引擎中采集网页、接口请求等数据。
Jeecg:支持大数据集成,内置对 Elasticsearch、Hadoop 等组件的支持,便于数据挖掘和分析。 - 权限管理与安全性:
Microi 吾码:提供细粒度的权限控制,细化到每张表、每个字段、每个菜单等,支持单点登陆和第三方系统单点登陆。
Jeecg:完善的 RBAC 角色权限控制,保障系统安全性和数据隐私。
用户体验:
- 界面与操作:
Microi 吾码:界面自定义引擎提供高度灵活的界面设计,用户可根据需求进行个性化定制。
Jeecg:提供直观的可视化界面,开发者可以快速上手,降低学习成本。 - 社区与支持:
Microi 吾码:拥有活跃的开源社区,提供丰富的文档教程和问题解答,持续更新维护。
Jeecg:同样拥有活跃的社区和丰富的文档资源,遵循 Apache 2.0 协议,完全免费且可自由定制和扩展。
对比总结
分析 Microi 吾码的优势和适用场景,为用户选择提供参考。
Microi 吾码在跨平台、分布式部署、界面自定义以及数据集成与处理能力方面表现出色。其无限制的用户数、表单数、数据量等特点,为企业提供了极大的灵活性和扩展性。界面自定义功能满足了企业个性化需求,多租户支持使得企业可以根据自身业务需求选择合适的 SAAS 模式,实现多租户管理和数据隔离,提高数据的安全性和管理效率。
适用场景方面,Microi 吾码适合对系统灵活性和数据集成有较高要求的企业。例如,那些需要快速构建应用,同时对数据集成和处理能力有较高要求的企业,可以选择 Microi 吾码。对于需要根据自身品牌形象和用户需求进行个性化定制的企业,Microi 吾码的界面自定义功能也能满足其需求。此外,多租户企业可以利用 Microi 吾码的多租户支持功能,实现高效的管理和数据隔离。
相比之下,Jeecg 在低代码开发、动态表单生成以及大数据集成方面有着显著优势。适合需要快速构建应用并进行数据挖掘和分析的企业。
在选择低代码平台时,企业应根据自身需求进行综合考虑。如果企业注重系统的灵活性、数据集成能力和个性化定制,Microi 吾码可能是更好的选择。如果企业更关注低代码开发效率、动态表单生成以及大数据分析,Jeecg 则更适合。总之,选择最适合自己的平台,才能更好地推动企业数字化转型。
八、应用场景
Microi 吾码在不同领域都有着广泛的应用,以下是一些具体的实例:
- 房地产领域
在房地产领域,Microi 吾码成功应用于互联网房地产二手房、新房、租房平台。通过其强大的功能,实现了高效的房源管理、客户信息管理以及交易流程的优化。平台能够快速响应市场变化,为房地产企业提供了强大的数字化支持。 - 电器 ERP 领域
大型电器 ERP 系统中,Microi 吾码发挥了重要作用。拥有 300 多张表和 100 多个模块,能够满足复杂的业务需求。其跨平台、跨数据库的特性使得系统能够轻松集成不同来源的数据,提高了企业的运营效率。 - 服装 ERP 领域
多个服装 ERP 项目采用了 Microi 吾码,仅需 1 个人在 1 个月内即可完成。例如,截止 2024 - 11 - 08,某服装 ERP 项目已配置 146 个菜单模块、141 张物理表,68 个接口引擎,总数据量已超过 1000 万。并且已开 80 个 SaaS 数据库,应用到 80 家服装工厂。该产品实现了动态尺码数据【行转列】,动态控制列的显隐,通过接口引擎实现逻辑非常复杂的裁床分包、裁床配比、分包明细、菲票明细生成算法。
九、总结
Microi 吾码作为一款开源低代码平台,在低代码领域展现出了巨大的价值和广阔的发展前景。
- 技术优势突出
Microi 吾码采用.NET8 + Redis + MySql/SqlServer/Oracle + Vue2/3 + Element-UI/Element-Plus 的技术架构,支持跨平台、跨数据库、分布式部署,集成了众多先进的组件,为企业提供了强大的后端支持。同时,平台始于 2014 年,历经多次重构和发展,不断吸收新的技术和理念,技术架构更加先进和稳定,功能也不断丰富和完善。
平台的亮点众多,无限制的用户数、表单数、数据量等为企业提供了极大的灵活性和扩展性;跨平台、跨数据库、分布式等特性使得平台能够适应不同企业的需求,提高了平台的可靠性和稳定性;界面自定义、SaaS 引擎、表单引擎等特色功能满足了企业的个性化需求,提高了用户的满意度和忠诚度。 - 功能强大丰富
表单引擎功能强大
V8.FormEngine 在服务器端和前端的用法虽略有差异,但都支持同步和异步执行,提供了丰富的函数如 GetFormData、UptFormData 等,方便用户对表单数据进行操作。
黑科技方面,拓展表单组件、定制表单组件、强大的 V8.FormEngine 和丰富的 V8 事件为用户提供了更多的开发可能性,动态关联表单的应用场景广泛,实现方法灵活。
工作流引擎优势明显
吾码四代工作流引擎由表单引擎驱动,流程属性和节点属性可根据实际业务需求轻松调整,具有丰富的前端和后端事件,满足复杂业务需求。同时,流程引擎与业务表单解耦,可集成第三方表单和二次开发。
相关物理表如 WF_FlowDesign、WF_Node 等对流程图、流程节点、条件等进行详细管理,V8 事件顺序和内置函数为用户提供了更多的操作控制和功能实现。撤回功能提高了业务流程的灵活性和准确性。
模块引擎配置玩法丰富
支持多表关联,实现数据的整合和查询;复杂 where 条件配置,精确筛选数据。此外,还具有查询列、不显示列、统计列、可搜索列、可排序列、动态 V8 按钮、接口地址替换、多种嵌入模式等功能,为用户提供了高效、灵活的低代码开发解决方案。 - 与其他平台对比有优势
与 Jeecg 对比,Microi 吾码在跨平台、分布式部署、界面自定义以及数据集成与处理能力方面表现出色。适合对系统灵活性和数据集成有较高要求的企业,而 Jeecg 在低代码开发、动态表单生成以及大数据集成方面有显著优势,适合不同需求的企业。 - 应用场景广泛
Microi 吾码在房地产、电器 ERP、服装 ERP 等领域都有成功的应用案例。在房地产领域,实现了高效的房源管理、客户信息管理以及交易流程的优化;在电器 ERP 领域,满足了复杂的业务需求,提高了企业的运营效率;在服装 ERP 领域,仅需一人在一个月内即可完成项目,实现了动态尺码数据【行转列】等复杂功能。 - 未来发展前景广阔
随着数字化转型的加速,低代码开发平台的需求将不断增长。Microi 吾码以其独特的优势和特点,将在低代码领域发挥更大的作用。未来,Microi 吾码将继续优化技术架构,丰富功能模块,提高用户体验,为企业的数字化转型提供更强大的支持。
总之,Microi 吾码在低代码领域具有重要的价值和广阔的发展前景,是企业数字化转型的有力工具。
标签:探秘,流程,平台,表单,引擎,V8,解析,Microi From: https://blog.csdn.net/qq_33650655/article/details/144224535