橙單低代碼生成器 v2.5 發(fā)布,支持報表和自定義打印
新版功能
- 報表打印,新增線上演示環(huán)境 http://demo.orangeforms.com/flow。
- 報表打印,新增報表統(tǒng)計模塊,可通過拖來拽方式,快速構(gòu)建 Dashboard 和各種統(tǒng)計表單。
- 報表打印,新增自定義打印模板模塊,通過在線電子表格 (基于 Luckysheet),可設(shè)計出極為靈活的打印模板,后臺計算后會通過 x-easypdf 渲染到 PDF。
- 報表打印,模塊自身已支持 MySQL、PostgreSQL 和 Oracle。
- 報表打印,動態(tài)可添加的統(tǒng)計數(shù)據(jù)源,已支持 MySQL、PostgreSQL、Oracle 和 ClickHouse。
- 報表打印,已支持全部字典類型的動態(tài)數(shù)據(jù)翻譯,如自定義常量字典,全局編碼字典、數(shù)據(jù)表字典等。
- 基礎(chǔ)架構(gòu),單體、微服務(wù)、多租戶用戶權(quán)限驗證邏輯,新增支持基于 Caffeine 的一級緩存,以提升該高頻操作的運行時效率。
- 基礎(chǔ)架構(gòu),新增全局編碼字典。支持所有類型字典的查詢翻譯和關(guān)聯(lián)驗證。如全局編碼字典、自定義常量字段、獨立字典表字典和業(yè)務(wù)表字典。
- 多租戶,完美實現(xiàn)全局編碼字典。目前已同時支持租戶公用和非公用的編碼字典。為提升運行時效率,多租戶編碼字典數(shù)據(jù)全部緩存,并可與表數(shù)據(jù)進(jìn)行動態(tài)關(guān)聯(lián)。
圖和真相
主要特征
- 前后端技術(shù)棧可根據(jù)項目規(guī)模和客戶偏好按需選擇,生成后代碼保持統(tǒng)一的接口定義規(guī)則。
- 前端模板支持基于 Fragment 和 Block 的靈活布局方式,通過配置即可生成多樣化的表單頁面。
- 高質(zhì)量的前后端工程代碼,產(chǎn)品級的代碼細(xì)節(jié)打磨和性能優(yōu)化,近乎于 0 的代碼重復(fù)率。
- 前沿的單表組合式查詢,為數(shù)據(jù)庫減負(fù),讓您的系統(tǒng)在 PaaS 云平臺運行時更具伸縮性。
- 創(chuàng)新式生成基于主表模式的規(guī)范化服務(wù)間調(diào)用接口,服務(wù)組合像搭積木一樣輕巧自如。
- 提供高可配置性的用戶權(quán)限管理模塊,目前已支持按鈕級操作權(quán)限和標(biāo)簽級顯示權(quán)限。
- 菜單級數(shù)據(jù)過濾權(quán)限,多種過濾策略任意組合。Mybatis 攔截器 JSqlParser 組合,讓代碼侵入性將至最低。
- 支持定時任務(wù)代碼生成,如流水表及其關(guān)聯(lián)表分組聚合計算后批量刷新到統(tǒng)計表。
- 通過基于qdox的代碼分析結(jié)果,可以 0 注解生成高準(zhǔn)確度的 Postman API 接口文檔。
功能介紹
工作流
- 優(yōu)勢能力,成熟的工作流產(chǎn)品價格昂貴,普通腳手架所集成的工作流模塊功能有限,而橙單通過支持 靜態(tài)路由表單工作流 的方式,有效的彌補了這一尷尬。
- 代碼生成,支持靜態(tài)路由表單 工作流的代碼生成。用戶可在生成器配置表單和流程,并生成該流程的完整前后端業(yè)務(wù)代碼。對于有些復(fù)雜的業(yè)務(wù)需求,可通過便利的二次開發(fā)搞定。
- 在線表單,集成工作流和在線表單,無需寫一行代碼即可配置出相對復(fù)雜的工作流業(yè)務(wù)。
- 工單管理,支持完整的工作流工單管理,可為不同流程配置獨立的工單菜單和管理頁面,并與現(xiàn)有的數(shù)據(jù)過濾權(quán)限完美整合。
- 用戶選擇,支持基于角色、部門、崗位、本部門崗位、上級部門崗位、同級部門崗位、指定部門崗位、本部門領(lǐng)導(dǎo)崗位、上級部門領(lǐng)導(dǎo)崗位等候選組。
- 基礎(chǔ)功能,支持工單號的自定義編碼、自定義流程節(jié)點狀態(tài)、工單撤銷和終止、會簽加簽減簽、待辦已辦轉(zhuǎn)辦、催辦、抄送和傳閱、保存草稿、撤回和駁回、流程干預(yù)、歷史任務(wù)、審批詳情列表、包含候選組的審批人列表、附件上傳下載等。前端已集成美觀的流程編輯器,同時支持流程圖高亮及任務(wù)跟蹤。
- 業(yè)務(wù)數(shù)據(jù),工作流支持主表及一對一、一對多、多對多從表數(shù)據(jù)的級聯(lián)增刪改查。同一表單可多次提交,新增數(shù)據(jù)和修改數(shù)據(jù)后均可提交審批流程。
- 數(shù)據(jù)安全,嚴(yán)格且合理的數(shù)據(jù)安全校驗,流程敏感數(shù)據(jù) (如合同附件) 不會被越權(quán)訪問和下載。同時還支持審批中數(shù)據(jù)與最終審批完成數(shù)據(jù)的分離,避免造成對其他業(yè)務(wù)關(guān)聯(lián)表的數(shù)據(jù)污染,審批完成后可自動執(zhí)行業(yè)務(wù)數(shù)據(jù)的同步。
靜態(tài)表單
以下所有功能的前后端代碼,均可通過橙單的低代碼工具配置后生成。標(biāo)準(zhǔn)化接口和數(shù)據(jù)結(jié)構(gòu),可輕松實現(xiàn)正交化組合。
- 前后端支持單表增刪改查、字典列表、分組聚合查詢、部分更新、批量刪除、導(dǎo)入導(dǎo)出、上傳下載。
- 批量導(dǎo)入支持常量字典和數(shù)據(jù)表字典的反向翻譯,比如文件存儲的是“一年級”字符串,導(dǎo)入過程中會批量替換為對應(yīng)的Id后插入數(shù)據(jù)表。
- 前后端支持主表與一對一、一對多、多對多關(guān)聯(lián)表的關(guān)聯(lián)查詢,分組聚合查詢、虛擬字段的聚合計算,數(shù)據(jù)導(dǎo)出、級聯(lián)添加、級聯(lián)更新、級聯(lián)刪除。
- 前后端支持主表與多對多中間表的批量插入、批量刪除、單條刪除、關(guān)聯(lián)列表數(shù)據(jù)查詢、未關(guān)聯(lián)列表數(shù)據(jù)查詢。
- 前后端支持主表與字典表數(shù)據(jù)、一對一、一對多和多對多與字典表數(shù)據(jù)的關(guān)聯(lián)查詢。
- 后臺接口支持主表、一對一從表、一對多從表、多對多從表關(guān)聯(lián)數(shù)據(jù)的單條和批量驗證,會根據(jù)配置生成本地服務(wù)或跨服務(wù)遠(yuǎn)程調(diào)用的高性能數(shù)據(jù)驗證。
- 以上所有功能,均支持分布式跨庫跨服務(wù)操作,接口保持不變,需要分布式事務(wù)的場景,會自動生成 Seata 相關(guān)的代碼注解。需要遠(yuǎn)程數(shù)據(jù)關(guān)聯(lián)查詢的,會生成 FeignClient 調(diào)用接口,并自動完成數(shù)據(jù)組裝。
在線表單
- 前后端代碼完全交付,甚至可配置為自己的項目包名。
- 前后端代碼無一絲混淆,且代碼質(zhì)量超高,極易學(xué)習(xí)和二次開發(fā),同時支持單體和微服務(wù)架構(gòu)。
- 可視化的拖拉拽編輯器,目前已經(jīng)支持大部分常用組件。
- 目前已支持 MySQL、PostgreSQL 和 Oracle。
- 支持主從表聯(lián)動。
- 支持富文本、多圖、多附件的上傳和下載。
- 支持主表數(shù)據(jù)、一對一從表及其字典數(shù)據(jù)的可配置性導(dǎo)出。
- 支持主表數(shù)據(jù)和一對多從表數(shù)據(jù)的批量刪除。
- 可視化接口配置編輯器,支持多數(shù)據(jù)庫、數(shù)據(jù)表、一對一表關(guān)聯(lián)、一對多表關(guān)聯(lián)和多種數(shù)據(jù)字典等。
- 支持字典過濾、主表字段過濾、一對一從表字段過濾,同時支持范圍、模糊和等于查詢方式。
- 支持主表連同一對一、一對多從表的級聯(lián)插入和更新。
- 支持一對多的聚合字段計算,在主表列表中可動態(tài)計算并顯示從表的聚合計算結(jié)果。
- 支持主表字段排序、一對一從表字段排序。
- 完美支持?jǐn)?shù)據(jù)權(quán)限過濾和操作權(quán)限控制。
- 接口參數(shù)均為數(shù)據(jù)源 ID,不暴露任何后臺數(shù)據(jù)表細(xì)節(jié),從機(jī)制上徹底消除了 SQL 注入的風(fēng)險。
- 運行時效率極高,動態(tài)表單關(guān)鍵數(shù)據(jù)結(jié)構(gòu)均緩存 Redis,從而有效提升數(shù)據(jù)接口的應(yīng)答效率。
多租戶
- 多租戶工程可同時創(chuàng)建三個應(yīng)用,分別為租戶運營管理后臺應(yīng)用 TenantAdmin,租戶運營后臺應(yīng)用,以及面向租戶前端 App 的 WebApi 應(yīng)用。
- 對于多租戶運營管理后臺應(yīng)用 TenantAdmin,不僅內(nèi)置了自身的權(quán)限管理和租戶運營管理等功能,同時也支持配置自定義的業(yè)務(wù)表單和租戶統(tǒng)計表單。
- 支持全局公用字典和租戶字典,前者由租戶運營管理后臺統(tǒng)一管理,租戶字典數(shù)據(jù)可由租戶管理員自行維護(hù)。為了保證整體運行時效率,兩者均支持緩存 Redis。
- 租戶數(shù)據(jù)支持邏輯隔離、物理隔離和混合隔離等多種方式,租戶權(quán)限數(shù)據(jù)由租戶運營管理服務(wù)統(tǒng)一管理,實時同步到多個租戶運行系統(tǒng)數(shù)據(jù)庫中。不僅非常有利于租戶數(shù)據(jù)的遷移。同時也保證了運行時效率。業(yè)務(wù)邏輯代碼與非多租戶系統(tǒng)相比,差異也降至最低。
- 可配置定時任務(wù) Job 服務(wù),并將不同租戶數(shù)據(jù)庫中的業(yè)務(wù)行為數(shù)據(jù),分組統(tǒng)計后刷新到租戶運營管理數(shù)據(jù)庫中,再由配置的統(tǒng)計表單進(jìn)行顯示。
- 可與現(xiàn)有的單點登錄服務(wù) (uaa) 無縫集成。
項目部署
- 單體環(huán)境。http://www.orangeforms.com/development-doc/edu-single/
- 微服務(wù)。http://www.orangeforms.com/development-doc/edu-multi/
- 多租戶。http://www.orangeforms.com/development-doc/edu-tenant/
技術(shù)選型
- 前端: Element (Vue) / Luckysheet / ECharts / AntV Axios Webpack。
- 后端: Spring Boot / Spring Cloud / Spring Cloud Alibaba Spring Security OAuth2 Mybatis Jwt。
- 數(shù)據(jù)庫:MySQL PostgreSQL Oracle。
- 工具庫: Flowable Hutool Guava Caffeine Lombok MapStruct Mybatis Plus Knife4j x-easypdf。
- 服務(wù)組件: Redis Zookeeper Nacos Consul XXL-Job Quartz Seata Minio Canal RocketMQ Kafka Sentinel。
- 系統(tǒng)監(jiān)控: ELK PinPoint / SkyWalking Grafana Prometheus。
基礎(chǔ)功能
- 前端框架:單頁面、多標(biāo)簽、多欄目和子路由,多套高顏值樣式主題可供選擇。
- 前端能力:列表編輯、統(tǒng)計圖表、多表聯(lián)動、明細(xì)數(shù)據(jù)下鉆、上傳下載、導(dǎo)入導(dǎo)出、自定義打印樣式模板、富文本等。
- 頁面布局:支持基于 Fragment 和 Block 的靈活布局方式,通過配置即可生成多樣化的表單頁面,并可預(yù)覽。
- 接口規(guī)范:微服務(wù)和單體服務(wù)的接口命名和參數(shù)定義規(guī)范完全一致,便于日后的平滑升級。
- 在線表單:支持可視化拖來拽編輯器,表單、后臺接口和數(shù)據(jù)字典均可動態(tài)配置,完美集成數(shù)據(jù)權(quán)限過濾和操作權(quán)限控制,即配即得。
- 流程管理:功能完整且前后端全部開源。
- 后臺架構(gòu):分布式鎖、分布式 Id、分布式緩存、分布式事務(wù)、分布式限流和灰度發(fā)布等,按需集成。
- 用戶管理:支持基于 OAuth2 的單點登錄。
- 操作權(quán)限:前端控制可精確到按鈕級的操作和標(biāo)簽級的顯示,同時提供了多維度的權(quán)限分配路徑查詢能力。
- 數(shù)據(jù)權(quán)限:基于 Mybatis 攔截器 JSqlParser 的實現(xiàn)方式,配置更靈活,代碼侵入性更低。
- 租戶管理:租戶權(quán)限管理數(shù)據(jù)、字典等通用數(shù)據(jù),均由租戶運營管理服務(wù)統(tǒng)一管理,并實時同步到多個租戶運營庫,具有極高的數(shù)據(jù)庫級別容錯性。
- 多數(shù)據(jù)源:支持簡單和復(fù)雜兩種多數(shù)據(jù)源注解。復(fù)雜注解可靈活自定義,并應(yīng)對復(fù)雜的業(yè)務(wù)場景。
- 數(shù)據(jù)組裝:Java 注解方式實現(xiàn)數(shù)據(jù)組裝,支持統(tǒng)一接口的服務(wù)內(nèi)和跨服務(wù)的一對一、一對多、多對多、字典、聚合計算等關(guān)系數(shù)據(jù)組合。
- 定時任務(wù):我們不僅提供了多套 Job 基礎(chǔ)框架的集成,更能生成靈活可配、高度優(yōu)化、便于二次開發(fā)的 Job 業(yè)務(wù)邏輯代碼。
- 系統(tǒng)監(jiān)控:基于 Kafka ELK 的日志收集,基于 PinPoint/SkyWalking 的服務(wù)鏈路跟蹤,基于 GPE 的服務(wù)性能指標(biāo)監(jiān)控。
- 接口文檔:目前已集成 Knife4j,同時支持基于 qdox 逆推 Java 工程代碼,實現(xiàn) 0 注解導(dǎo)出 Postman 接口文件和 Markdown 文檔。
- 操作日志:靈活可配置。統(tǒng)一攔截每次請求調(diào)用的輸入輸出,及各種調(diào)用數(shù)據(jù)細(xì)節(jié),以便于后期的統(tǒng)計分析和問題定位。微服務(wù)工程由 Kafka 消費者服務(wù)統(tǒng)一批量處理,并與 ELK SkyWalking/PinPoint 等日志監(jiān)控系統(tǒng)完全打通。單體工程則異步的存入數(shù)據(jù)庫表中。
代碼質(zhì)量
此為在線演示工程的代碼審查報告,而非當(dāng)前開源示例工程。前者代碼量更大,結(jié)構(gòu)更復(fù)雜。
- SonarQube 掃描
- 基于 SonarQube8.2 缺省最嚴(yán)格的代碼掃描規(guī)則,其中代碼復(fù)雜度要求為 15。
- 有氣味代碼共90處,其中85處為DTO、Model、常量字典、RPC接口等定義出現(xiàn)重復(fù)名稱所致,均與模擬實際業(yè)務(wù)有關(guān)。
- 其余氣味代碼,是在權(quán)衡性能、可讀性和易修改性等因素后保留下來的,具體見圖4。
- Alibaba Code Guide 掃描
- 下載最新版本IDEA插件,同時打開所有審查條件。
- 全部代碼掃描通過。
- Statistic 代碼統(tǒng)計
- 生成代碼總量約為86000多行,主要包括Java、XML、YAML和SQL初始化腳本等。
- Java代碼覆蓋率為37%。