日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

一、開源項(xiàng)目簡(jiǎn)介

Nop Platform 2.0是基于可逆計(jì)算原理從零開始構(gòu)建的新一代低代碼平臺(tái),它致力于克服低代碼平臺(tái)無法擺脫窮舉法的困境,從理論層面超越組件技術(shù),有效的解決粗粒度軟件復(fù)用的問題。

基于可逆計(jì)算原理從零開始構(gòu)建的低代碼平臺(tái),根據(jù)Excel數(shù)據(jù)模型自動(dòng)生成GraphQL服務(wù),內(nèi)置全新實(shí)現(xiàn)的工作流引擎、報(bào)表引擎、規(guī)則引擎、分布式事務(wù),定制化開發(fā)無需修改基礎(chǔ)產(chǎn)品源碼,支持GraalVM原生編譯,中小企業(yè)可以免費(fèi)商用。

二、開源協(xié)議

使用AGPL-3.0開源協(xié)議

Nop平臺(tái)的前端采用MIT協(xié)議,后端整體采用AGPL3.0開源協(xié)議。但是中小企業(yè)可以在類似Apache2.0協(xié)議的條件下使用本項(xiàng)目的代碼(可以免費(fèi)商用,修改代碼無需開源,但是要保留源碼中的原始版權(quán)信息)。為了方便第三方集成,nop-api-support/nop-commons/nop-core這三個(gè)包采用Apache 2.0協(xié)議。

  • 判斷是否中小企業(yè)的算法如下:

switch(貴公司很有錢嗎()){ case "有的是錢":{ console.log("都這么有錢了,還需要整天琢磨別人的知識(shí)產(chǎn)權(quán)是否免費(fèi)嗎?"); return false; default: return true; }}

三、界面展示

界面框架

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

使用Excel來定義數(shù)據(jù)模型

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

使用Excel來定義對(duì)外發(fā)布的API模型

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

集成百度的前端低代碼框架AMIS

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

集成GraphQL調(diào)試工具

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

提供IDEA插件,支持自定義DSL的斷點(diǎn)調(diào)試

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

使用Excel作為報(bào)表設(shè)計(jì)器,支持復(fù)雜的中國(guó)式報(bào)表

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

使用Word模板來導(dǎo)出Word報(bào)表

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

使用Excel來設(shè)計(jì)決策表和決策矩陣

[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎[開源]可逆計(jì)算原理新一代低代碼平臺(tái),含工作流、報(bào)表、規(guī)則引擎

四、功能概述

Nop Platform 2.0是基于可逆計(jì)算原理從零開始構(gòu)建的新一代低代碼平臺(tái),它致力于克服低代碼平臺(tái)無法擺脫窮舉法的困境,從理論層面超越組件技術(shù),有效的解決粗粒度軟件復(fù)用的問題。

  • nop-entropy是Nop平臺(tái)的后端部分。它采用java語言實(shí)現(xiàn),不依賴第三方框架,可以和Quarkus或者Spring框架集成在一起使用。
  • nop-entropy支持GraalVM技術(shù),可以借助于Quarkus 或者SpringNative框架編譯為原生可執(zhí)行程序,運(yùn)行時(shí)不需要安裝JDK,且啟動(dòng)速度提升數(shù)十倍。
  • nop-entropy的設(shè)計(jì)目標(biāo)是成為簡(jiǎn)單易用的領(lǐng)域語言工作臺(tái)(Domain Language Workbench)。通過增加簡(jiǎn)單的元數(shù)據(jù)定義,就可以自動(dòng)得到對(duì)應(yīng)的解析器、驗(yàn)證器、IDE插件、調(diào)試工具等,并自動(dòng)為DSL領(lǐng)域語言增加模塊分解、差量定制、元編程等通用語言特性。在這一點(diǎn)上,它類似于Jetbrains公司的MPS產(chǎn)品,只是它的設(shè)計(jì)原理和技術(shù)實(shí)現(xiàn)路徑與MPS有著本質(zhì)性差別。
  • nop-entropy采用云原生設(shè)計(jì),內(nèi)置分布式事務(wù)和多租戶支持,可以單機(jī)運(yùn)行,也可以作為分布式集群運(yùn)行,可以提供在線的API服務(wù),也可以將針對(duì)單個(gè)業(yè)務(wù)對(duì)象的在線服務(wù)自動(dòng)包裝為針對(duì)批處理文件的批處理任務(wù)。對(duì)于大多數(shù)業(yè)務(wù)應(yīng)用場(chǎng)景均提供相應(yīng)的模型支持,只需少量配置即可完成主要功能,大大降低對(duì)手工編碼的需求。
  • nop-entropy在開發(fā)期可以作為支持增量式開發(fā)的低代碼平臺(tái),自動(dòng)生成各類代碼以及相關(guān)文檔,在運(yùn)行期可以作為面向最終用戶的無代碼平臺(tái)的支撐技術(shù),允許客戶在線調(diào)整業(yè)務(wù)模塊功能,以所見即所得的方式進(jìn)行產(chǎn)品迭代。

目前開源的部分主要包含XLang語言的實(shí)現(xiàn),以及ORM、依賴注入容器(IoC)、分布式配置(Config)、GraphQLEngine、報(bào)表引擎(Report Engine)、任務(wù)調(diào)度引擎(Job Scheduler)、批處理引擎(batch Prcessing Engine)等基礎(chǔ)框架, 后續(xù)規(guī)劃包括規(guī)則引擎(Rule Engine)、工作流引擎(Workflow Engine)、商業(yè)智能(BI)等業(yè)務(wù)開發(fā)常用部分。

WARNING: Nop Platform 2.0的代碼是由Entropy Platform 1.0重構(gòu)而來,目前重構(gòu)工作沒有完全做完,且尚未在實(shí)際項(xiàng)目中使用過。

五、技術(shù)選型

軟件架構(gòu)

nop-entropy沒有使用Spring框架,所有模塊均從零開始采用模型驅(qū)動(dòng)的方式研發(fā)(框架本身的很多代碼也是根據(jù)模型生成并可以通過聲明式方式進(jìn)行定制調(diào)整的)。原則上說,nop-entropy可以運(yùn)行在任何支持REST服務(wù)標(biāo)準(zhǔn)的微服務(wù)框架之上。目前,我們主要是支持Quarkus框架以及Spring框架的集成。

Quarkus是Redhat公司所開源的新一代云原生微服務(wù)框架,它的開發(fā)體驗(yàn)以及針對(duì)GraalVM Native編譯的成熟程度都明顯優(yōu)于Spring框架。借助于Quarkus框架,我們既可以將應(yīng)用程序編譯為單一的uber jar(通過Java -jar指令來運(yùn)行),也可以將程序編譯為exe可執(zhí)行程序,在運(yùn)行時(shí)不需要安裝JDK,而且啟動(dòng)速度提升數(shù)十倍。目前,nop-entropy的開發(fā)調(diào)試主要是基于Quarkus框架進(jìn)行,所以對(duì)Spring框架的支持可能會(huì)存在一些小問題。

nop-entropy項(xiàng)目目前主要包含如下模塊:

  1. nop-api-support: API接口的支持類
  2. nop-commons: 常用的幫助類和幫助函數(shù)
  3. nop-core: 虛擬文件系統(tǒng),反射系統(tǒng),基本的樹、圖、表格模型,數(shù)據(jù)驅(qū)動(dòng)的代碼生成器框架,XML和JSON解析器
  4. nop-xlang: XPL模板語言,類TypeScript腳本語言,類XPath的通用Tree路徑訪問語言, 類XSLT的通用Tree變換語言,XDefinition元模型定義語言,XDelta差量合并運(yùn)算。
  5. nop-config: 動(dòng)態(tài)配置管理
  6. nop-ioc: 支持條件裝配的依賴注入容器
  7. nop-dao: SQL管理、事務(wù)、JDBC訪問、數(shù)據(jù)庫方言
  8. nop-orm: 支持EQL對(duì)象查詢語言的ORM引擎
  9. nop-ooxml: Excel和Word模板文件的解析和生成
  10. nop-graphql: GraphQL解析器和執(zhí)行引擎
  11. nop-biz: 業(yè)務(wù)流引擎,與nop-graphql結(jié)合對(duì)外提供GraphQL和REST服務(wù)
  12. nop-ui: 視圖層模型
  13. nop-js: 對(duì)graalvm-js的封裝,用于在Java端執(zhí)行JS打包工作,擺脫對(duì)Vite/Webpack等前端打包工具的依賴
  14. nop-web: 動(dòng)態(tài)執(zhí)行Js打包工作,動(dòng)態(tài)生成前端所需的JSON頁面文件
  15. nop-rpc: 分布式RPC框架,支持灰度發(fā)布,集成Nacos、Sentinel
  16. nop-report: 采用Excel作為可視化設(shè)計(jì)器的中國(guó)式報(bào)表引擎
  17. nop-wf: 工作流引擎
  18. nop-rule: 采用Excel作為可視化設(shè)計(jì)器的規(guī)則引擎
  19. nop-batch: 批處理引擎
  20. nop-job: 分布式任務(wù)調(diào)度引擎
  21. nop-tcc: 分布式事務(wù)引擎
  22. nop-cluster: 分布式集群支持
  23. nop-auth: 用戶權(quán)限管理
  24. nop-sys: 系統(tǒng)配置管理
  25. nop-cli: 將代碼生成器封裝為命令行工具
  26. nop-autotest: 自動(dòng)化測(cè)試框架
  27. nop-demo: quarkus和spring框架的集成演示程序
  28. nop-idea-plugin: IDEA插件,支持對(duì)自定義DSL的語法提示、鏈接跳轉(zhuǎn)、斷點(diǎn)調(diào)試等

Nop平臺(tái)的前端代碼在nop-chaos項(xiàng)目中,nop-chaos的打包結(jié)果被包裝為以下Java模塊。

  1. nop-web-site: 前端主頁面框架的打包結(jié)果
  2. nop-web-amis-editor: 前端使用的AMIS可視化編輯器的打包結(jié)果 在一般的業(yè)務(wù)開發(fā)中我們只會(huì)編寫JSON和少量JS文件,不需要重新編譯nop-chaos項(xiàng)目。

安裝教程

環(huán)境準(zhǔn)備:JDK 11 、maven 3.6 、Git

訪問一飛開源:https://code.exmay.com/ 下載cd nop-entropymvn -T 2C clean install -DskipTests -Dquarkus.package.type=uber-jar

注意: 編譯運(yùn)行需要JDK11以上版本,不支持JDK8

quarkus.package.type參數(shù)是quarkus框架所識(shí)別的一個(gè)參數(shù),指定它為uber-jar將會(huì)把nop-quarkus-demo等項(xiàng)目打包成一個(gè)包含所有依賴類的單一jar包??梢酝ㄟ^java -jar XXX-runner.jar的方式直接運(yùn)行。

  • nop-idea-plugin nop-idea-plugin是IDEA的插件項(xiàng)目,必須采用Gradle編譯。

cd nop-idea-plugingradlew buildPlugin

編譯出來的插件存放在build/distributions目錄下。參見插件的安裝和使用。

使用說明

  • 平臺(tái)內(nèi)置了一個(gè)演示程序,使用H2內(nèi)存數(shù)據(jù)庫,可以直接啟動(dòng)運(yùn)行

cd nop-demo/nop-quarkus-demo/targetjava -Dquarkus.profile=dev -jar nop-quarkus-demo-2.0.0-SNAPSHOT-runner.jar

如果不指定profile=dev,則會(huì)以prod模式啟動(dòng)。prod模式下需要配置application.YAML中的數(shù)據(jù)庫連接,缺省使用本機(jī)的MySQL數(shù)據(jù)庫

  • 訪問鏈接 http://localhost:8080, 用戶名:nop, 密碼:123
  • 在IDEA中可以調(diào)試運(yùn)行nop-quarks-demo項(xiàng)目中的QuarksDemoMain類。quarkus框架在開發(fā)期提供了如下調(diào)試工具,

http://localhost:8080/q/dev http://localhost:8080/q/graphql-ui

在graphql-ui工具中可以查看所有后端服務(wù)函數(shù)的定義和參數(shù)。

  • 完整的開發(fā)示例,參見tutorial

框架集成

nop-entropy不依賴于spring或者quarkus框架,也不依賴于特定數(shù)據(jù)庫,因此它很容易集成在第三方應(yīng)用中使用。

核心引擎的功能并不依賴于數(shù)據(jù)庫,可以以純內(nèi)存的方式運(yùn)行。所有存儲(chǔ)相關(guān)的代碼都已經(jīng)剝離到獨(dú)立的dao模塊中,例如nop-auth-dao,nop-sys-dao等。

  1. 作為增量式代碼生成工具使用:maven打包時(shí)可以讀取Excel模型文件,應(yīng)用指定的模板目錄,以增量化的方式生成代碼。參見codegen.md
  2. 為已有的XML/JSON/YAML格式的配置文件、領(lǐng)域模型文件提供可逆計(jì)算支持:為模型文件增加動(dòng)態(tài)分解、合并、產(chǎn)品化定制機(jī)制,對(duì)應(yīng)用層完全透明,對(duì)于引擎層只需要編寫一個(gè)自定義的模型文件加載器。參見delta-loader.md
  3. 為開發(fā)領(lǐng)域特定語言(DSL)提供支持:只需要定義xdef元模型文件即可獲得語法提示、鏈接跳轉(zhuǎn)、斷點(diǎn)調(diào)試等IDE支持。后續(xù)會(huì)提供可視化設(shè)計(jì)器定制支持。參見idea-plugin.md
  4. 作為模型驅(qū)動(dòng)的GraphQL引擎使用:根據(jù)Excel模型自動(dòng)生成GraphQL服務(wù),支持復(fù)雜主子表的增刪改查。參見graphql.md
  5. 作為報(bào)表引擎使用:只需要在Word或者Excel文件中增加少量標(biāo)注即可作為報(bào)表模板運(yùn)行,動(dòng)態(tài)生成復(fù)雜的中國(guó)式報(bào)表。參見report.md
  6. 作為工作流引擎使用:與定時(shí)調(diào)度引擎相結(jié)合,支持人工操作的審批工作流,也支持類似airflow的分布式DAG任務(wù)流。參見workflow.md
  7. 作為批處理引擎使用:類似SpringBatch XXLJob框架,提供分布式批處理任務(wù)支持。可以通過配置文件指定如何解析、生成文本或者二進(jìn)制數(shù)據(jù)文件,無需編寫解析和生成代碼。參見batch.md
  8. 作為規(guī)則引擎使用:通過配置實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)規(guī)則判斷。參見rule.md
  9. 作為數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試框架使用:通過錄制、回放的機(jī)制實(shí)現(xiàn)自動(dòng)化測(cè)試。第一遍運(yùn)行的時(shí)候自動(dòng)錄制輸出數(shù)據(jù),此后運(yùn)行時(shí)自動(dòng)和錄制的數(shù)據(jù)快照進(jìn)行比較,減少手工需要編寫的代碼量。參見autotest.md

關(guān)注公眾號(hào),發(fā)送如下消息獲取下載鏈接:

"源代碼下載:None"

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁
返回頂部
临夏市| 澳门| 五常市| 林西县| 赤峰市| 忻州市| 古蔺县| 大石桥市| 江津市| 瑞安市| 东方市| 义马市| 依兰县| 都匀市| 沂南县| 萨迦县| 翼城县| 沁源县| 天津市| 平远县| 太康县| 舒兰市| 息烽县| 乌审旗| 岳阳市| 周至县| 孟村| 梅州市| 肇州县| 奉贤区| 昆明市| 四会市| 玉田县| 合川市| 锡林郭勒盟| 盈江县| 梁平县| 楚雄市| 沂南县| 唐山市| 湘西|