Project Icon

nop-entropy

基于可逆计算实现高效软件复用的低代码平台

Nop Platform 2.0基于可逆计算理论开发,旨在突破低代码平台的局限,实现高效软件复用。平台支持与Quarkus、Spring和Solon框架集成,并通过GraalVM技术编译成原生可执行程序,提高启动速度。nop-entropy设计为用户友好的领域语言工作台,支持自动生成解析器、验证器、IDE插件等。平台内置分布式事务、多租户支持,既可单机运行也可作为分布式集群提供API服务,显著降低手工编码需求,支持增量开发和在线业务模块调整。

[英文] [教程] [开发示例] [介绍和答疑视频]

Nop 平台 2.0

介绍

可逆计算:下一代软件构造理论

Nop 是非编程

Nop Platform 2.0是基于可逆计算原理从零开始构建的新一代低代码(lowcode)平台,它致力于克服低代码平台无法摆脱穷举法的困境,从理论层面超越组件技术,有效的解决粗粒度软件复用的问题。

  • nop-entropy是Nop平台的后端部分。它采用Java语言实现,不依赖第三方框架,可以和Quarkus、Spring或者Solon框架集成在一起使用。

  • nop-entropy支持GraalVM技术,可以借助于Quarkus或者SpringNative框架编译为原生可执行程序,运行时不需要安装JDK,且启动速度提升数十倍。

  • nop-entropy的设计目标是成为简单易用的领域语言工作台(Domain Language Workbench)。通过增加简单的元数据定义,就可以自动得到对应的解析器、验证器、IDE插件、调试工具等,并自动为DSL领域语言增加模块分解、差量定制、元编程等通用语言特性。在这一点上,它类似于Jetbrains公司的MPS产品,只是它的设计原理和技术实现路径与MPS有着本质性差别。

  • nop-entropy采用云原生设计,内置分布式事务和多租户支持,可以单机运行,也可以作为分布式集群运行,可以提供在线的API服务,也可以将针对单个业务对象的在线服务自动包装为针对批处理文件的批处理任务。对于大多数业务应用场景均提供相应的模型支持,只需少量配置即可完成主要功能,大大降低对手工编码的需求。

  • nop-entropy在开发期可以作为支持增量式开发的低代码平台,自动生成各类代码以及相关文档,在运行期可以作为面向最终用户的无代码平台的支撑技术,允许客户在线调整业务模块功能,以所见即所得的方式进行产品迭代。

目前开源的部分主要包含XLang语言的实现,以及ORM、依赖注入容器(IoC)、分布式配置(Config)、GraphQLEngine、报表引擎(Report Engine)、任务调度引擎(Job Scheduler)、批处理引擎(Batch Prcessing Engine)、规则引擎(Rule Engine)等基础框架,后续规划包括工作流引擎(Workflow Engine)、商业智能(BI)、流处理引擎等业务开发常用部分。

Nop Platform 2.0的代码是由Entropy Platform 1.0重构而来 最近增加了对国产框架solon的集成,参见nop-solon,打包后的jar包大小相比与Spring和Quarkus要降低10多M。

开发进度:

模块说明进度
nop-api-supportAPI接口的支持类已完成
nop-codegen数据驱动的代码生成器已完成
nop-antlrAntlr的模型驱动改造已完成
nop-core虚拟文件系统、反射机制、XML/JSON解析已完成
nop-ioc声明式IoC容器已完成
nop-config动态配置中心已完成
nop-xlangXLang脚本语言和模板语言已完成
nop-daoJDBC访问、事务、数据库方言已完成
nop-orm下一代ORM引擎已完成
nop-graphql下一代GraphQL引擎已完成
nop-rpc分布式RPC调用已完成
nop-ooxmlOffice文件的解析和生成,取代POI。Word报表模板已完成
nop-report中国式报表引擎已完成
nop-rule规则引擎已完成
nop-autotest模型驱动的自动化测试框架已完成
nop-idea-pluginIDEA开发插件,支持语法提示、文件跳转、断点调试基本可用
nop-cli将代码生成器、文件监听等功能封装为命令行工具基本可用
nop-cluster分布式集群支持50%
nop-tcc分布式事务50%
nop-dyn在线设计表单和数据模型、服务函数基本可用
nop-workflow下一代工作流引擎65%
nop-task下一代逻辑流编排50%
nop-job分布式任务调度40%
nop-batch下一代批处理引擎70%
nop-messageKafka/Pulsar消息队列封装10%
nop-dbtool数据库导入导出、数据结构比较、同步工具30%
nop-nosqlRedis封装0%
nop-stream简化的流处理,可以集成Flink0%
nop-nettyTCP/IP服务处理框架0%
nop-datavBI数据分析0%
nop-gpt与AI大模型集成,实现AIGC2%
nop-jsGraalVM Js引擎封装,在Java中运行JS50%
nop-integration邮件、短信、文件服务等外部服务封装30%
nop-auth用户权限管理已完成
nop-sys系统配置管理已完成

源码地址

设计原理

可逆计算:下一代软件构造理论

NOP:下一代软件生产范式

低代码平台需要什么样的ORM引擎?

写给程序员的可逆计算理论辨析

写给程序员的可逆计算理论辨析补遗

快速开始

开发示例

介绍和答疑视频

开发文档导引

与若依Ruoyi框架集成

更多介绍视频

软件架构

nop-entropy没有使用Spring框架,所有模块均从零开始采用模型驱动的方式研发(框架本身的很多代码也是根据模型生成并可以通过声明式方式进行定制调整的)。原则上说,nop-entropy可以运行在任何支持REST服务标准的微服务框架之上。目前,我们主要是支持Quarkus框架以及Spring框架的集成。

Quarkus是Redhat公司所开源的新一代云原生微服务框架,它的开发体验以及针对GraalVM Native编译的成熟程度都明显优于Spring框架。借助于Quarkus框架,我们既可以将应用程序编译为单一的uber jar(通过java -jar指令来运行),也可以将程序编译为exe可执行程序,在运行时不需要安装JDK,而且启动速度提升数十倍。目前,nop-entropy的开发调试主要是基于Quarkus框架进行,所以对Spring框架的支持可能会存在一些小问题。

Nop平台的前端代码在nop-chaos项目中,nop-chaos的打包结果被包装为以下Java模块。

  1. nop-web-site: 前端主页面框架的打包结果
  2. nop-web-amis-editor: 前端使用的AMIS可视化编辑器的打包结果 在一般的业务开发中我们只会编写JSON和少量JS文件,不需要重新编译nop-chaos项目。

安装教程

环境准备: JDK 17+、Maven 3.9.3+、Git

git clone https://gitee.com/canonical-entropy/nop-entropy.git
cd nop-entropy
mvn clean install -DskipTests -Dquarkus.package.type=uber-jar

注意: 编译运行需要JDK17以上版本,不支持JDK8, 在PowerShell中执行的时候需要用引号将参数包裹起来

据反馈,有些JDK版本编译会报错,如jdk:17.0.9-graal会报错IndexOutOfBound异常,所以如果编译出现问题时可以先尝试一下OpenJDK。

mvn clean install "-DskipTests" "-Dquarkus.package.type=uber-jar"

quarkus.package.type参数是quarkus框架所识别的一个参数,指定它为uber-jar将会把nop-quarkus-demo等项目打包成一个包含所有依赖类的单一jar包。可以通过java -jar XXX-runner.jar的方式直接运行。

PowerShell乱码问题解决

可以将PowerShell的编码设置为UTF8

$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8

目前已经升级到quarkus3.0版本,用低版本maven运行nop-auth-app等模块可能会失败。建议升级到maven 3.9.3版本,或者使用nop-entropy跟目录下的mvnw指令,它会自动下载并使用maven 3.9.3。

  • nop-idea-plugin nop-idea-plugin是IDEA的插件项目,必须采用Gradle编译。
cd nop-idea-plugin
gradlew buildPlugin

目前使用的idea打包插件不支持高版本gradle。gradlew会自动下载所需的gradle版本,目前使用的是7.5.1 如果想加快gradle下载速度,可以gradle-wrapper.properties中换成 distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-7.5.1-bin.zip

编译出来的插件存放在build/distributions目录下。参见插件的安装和使用

使用说明

  • 平台内置了一个演示程序,使用H2内存数据库,可以直接启动运行
cd nop-demo/nop-quarkus-demo/target
java -Dquarkus.profile=dev -jar nop-quarkus-demo-2.0.0-SNAPSHOT-runner.jar

如果不指定profile=dev,则会以prod模式启动。prod模式下需要配置application.yaml中的数据库连接,缺省使用本机的MySQL数据库

  • 访问链接 http://localhost:8080用户名:nop, 密码:123

  • 在IDEA中可以调试运行nop-quarks-demo项目中的QuarksDemoMain类。 quarkus框架在开发期提供了如下调试工具,

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

在graphql-ui工具中可以查看所有后端服务函数的定义和参数。

  • 完整的开发示例,参见教程

框架集成

nop-entropy不依赖于spring或者quarkus框架,也不依赖于特定数据库,因此它很容易集成在第三方应用中使用。

核心引擎的功能并不依赖于数据库,可以以纯内存的方式运行。所有存储相关的代码都已经剥离到独立的dao模块中,例如nop-auth-dao,nop-sys-dao等。

1.作为增量式代码生成工具使用:maven打包时可以读取Excel模型文件,应用指定的模板目录,以增量化的方式生成代码。参见codegen.md

2.为已有的XML/JSON/YAML格式的配置文件、领域模型文件提供可逆计算支持:为模型文件增加动态分解、合并、产品化定制机制,对应用层完全透明,对于引擎层只需要编写一个自定义的模型文件加载器。参见delta-loader.md

  1. 为开发领域特定语言(DSL)提供支持:只需要定义xdef元模型文件即可获得语法提示、链接跳转、断点调试等IDE支持。后续会提供可视化设计器定制支持。参见idea-plugin.md

  2. 作为模型驱动的GraphQL引擎使用:根据Excel模型自动生成GraphQL服务,支持复杂主子表的增删改查。参见graphql.md

  3. Using as a report engine: You only need to add a few annotations to the Word or Excel file to run as a report template and dynamically generate complex Chinese-style reports. See report.md

  4. Using as a workflow engine: Combined with the timing scheduling engine, it supports approval workflows with manual operations, and also supports distributed DAG task flows similar to airflow. See workflow.md

  5. Using as a batch processing engine: Similar to the SpringBatch+XXLJob framework, it provides support for distributed batch processing tasks. You can specify how to parse and generate text or binary data files through configuration files without writing parsing and generation code. See batch.md

  6. Using as a rule engine: Achieve complex business rule judgment through configuration. See rule.md

  7. Using as a data-driven automated test framework: Realize automated testing through recording and playback mechanisms. The output data is automatically recorded during the first run, and then automatically compared with the recorded data snapshots during subsequent runs, reducing the amount of code that needs to be written manually. See autotest.md

Example Pages

  1. Interface framework

  2. Use Excel to define the data model

  3. Use Excel to define the API model for external release

  4. Integration of Baidu’s front-end low-code framework AMIS

  5. Integration of GraphQL debugging tools

  6. Provide IDEA plugin to support breakpoint debugging of custom DSL

  7. Using Excel as a report designer to support complex Chinese-style reports

  8. Use Word templates to export Word reports

  9. Use Excel to design decision tables and decision matrices

Open Source Agreement

The front end of the Nop platform adopts the MIT protocol, and the overall back end adopts the AGPL3.0 open source protocol. However, small and medium-sized enterprises in China can use the code of this project under conditions similar to the Apache2.0 protocol (free commercial use, modification of the code does not require open source, but the original copyright information in the source code must be retained). For the convenience of third-party integration, the three packages nop-api-support/nop-commons/nop-core adopt the Apache 2.0 protocol.

  • The algorithm to determine whether it is a small or medium-sized enterprise is as follows:
switch(Is your company very rich?()){
  case "Yes, we have a lot of money":{
    console.log("With so much money, do you still need to worry all day about whether other people's intellectual property is free?");
    return false;
  default:
    return true;
  }
}

Technical Support

If you encounter problems or bugs during use, you can raise issues on Gitee

Acknowledgements

Community

Author's WeChat and WeChat Discussion Group

Please indicate when adding WeChat: join the Nop platform group

WeChat Official Account

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号