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