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