nop-entropy:基于可逆计算的低代码开发平台后端,支持领域语言与云原生部署

Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用

分支4Tags1
文件最后提交记录最后更新时间
更新文档 4 个月前
chore(tools): add ast-grep Java lint rules and pre-commit hook - 新增3条 ast-grep 规则:空 catch、getMessage-only、裸 RuntimeException - 新增 sgconfig.yml 和 run-java-lint.sh 包装脚本 - 更新 package.json 添加 @ast-grep/cli 依赖和 lint:java 脚本 - 更新 README.md 添加规则索引和激活说明 - 新增 .githooks/pre-commit 钩子,提交前自动检查暂存的 .java 文件 6 天前
修改github编译使用的jdk版本 6 个月前
文档页显示在 Git 仓库中编辑的链接 2 年前
chore: 升级Maven Wrapper到4.0.0-rc-5 - Maven版本从3.9.3升级到4.0.0-rc-5 - Maven Wrapper从3.2.0升级到3.3.4 - 更新mvnw和mvnw.cmd脚本 - 更新maven-wrapper.jar二进制文件 - 使用阿里云镜像加速下载 2 个月前
chore: 移除废弃的nop-ralph-loop plugin/skill和nop-task-planner skill 16 天前
更新文档 3 年前
docs(audit): 添加nop-stream和nop-job审计报告及修复计划 - 新增nop-stream对抗性审查和深度审计报告 - 新增nop-job对抗性审查和深度审计报告 - 新增审计修复计划103 2 小时前
docs: 重构 docs-for-ai 并统一为唯一 AI 文档入口 1 个月前
增加format配置,format规则放到build-tool项目中 4 个月前
增加OrmCompositePkTest单元测试 11 个月前
增加文档 2 年前
修正乱码 2 年前
fix unittest 2 个月前
docs: 更新XDef文档和添加数据库迁移开发计划 - 增强XDef核心概念说明 - 添加XDef属性详细文档 - 添加数据库迁移模块完整开发计划 - 包含模块结构设计和实现方案 23 天前
docs: 补充nop-stream流处理引擎文档导航 - INDEX.md: 添加nop-stream By Task路由条目和关键认知描述 - module-groups.md: 添加nop-stream子模块描述和常见任务路由 1 天前
docs(theory): 收束强判断问题域并新增证据强度分层 - 将问题域统一收束为复杂软件演化构造,删除冗余动词串 - 新增证据强度与问题归类:理论定义、形式化支点、实现锚点、治理缺口、企业采用五层 - 强判断限定:理论地位可给出,工程符合性和实证优越性仍需补齐 - 新增与类型理论的边界说明 1 天前
fix(ai-coder): 测试用file:前缀路径替代裸绝对路径避免VFS误解析 - outputDir从targetDir.getAbsolutePath()改为FileHelper.getFileUrl(targetDir) - 裸绝对路径(/开头)会被resolveRelativePath视为VFS路径导致getOutputStream失败 14 小时前
chore: 更新native-image反射配置和VFS索引 - nop-auth-app新增IndexHtmlProvider反射配置 - nop-spring-demo新增IndexHtmlProvider反射配置 - 同步更新nop-vfs-index.txt 2 小时前
fix: 修复autotest variant引号解析、TestLoginApi测试数据、TestOrmCodeGen编译错误 - JunitAutoTestCase.initVariant剥离JUnit 5.10+参数化测试displayName中的引号 - 更新TestLoginApi variants的displayName.json5测试数据 - TestOrmCodeGen: io.quarkus.arc.impl.Sets.of→java.util.Set.of 23 天前
feat(batch): 落盘action-auth i18n属性与web i18n yaml及模型更新 1 天前
修改常量名,规范化checkstyle 4 个月前
fix(nop-stream): Phase 1 - BOM+POM governance, IDE debris cleanup (Plan 76) - R2-01-03: Add nop-stream-connector and nop-stream-runtime to nop-bom - R1-01-04: Remove explicit ${project.version} from fraud-example pom - R1-01-05: Remove redundant maven.compiler properties from runtime pom - R1-02-02: Remove IDE debris (.classpath/.project/.settings) from checkpoint/flink/flow - R1-01-03: Add spec drift comment in fraud-example pom - Add .gitignore for IDE debris patterns 1 天前
fix(nop-cluster): SpecificServiceInstanceFilter改为从nop-svc-target-host header读取目标host - 新增HEADER_SVC_TARGET_HOST常量和ApiHeaders静态方法 - 废弃PROP_TARGET_HOST属性方式,统一使用header传递 - 新增4个单元测试验证header-based路由逻辑 16 天前
chore(code,job): 清理i18n和action-auth冗余配置 - 精简nop-code-meta和nop-code-web的i18n条目 - 更新NopCodeSemanticEdge视图配置 - 清理nop-job模块多余的i18n和权限配置 16 小时前
feat(xlang): 支持Xt模板简单文本值特性 - 新增xdef:bean-value-prop属性,区分简单值与复杂body的存储位置 - DslXNodeToJsonTransformer支持bean-value-prop和bean-body-prop分离解析 - 新增ValueOutputRule处理XtRuleGroupModel的value字段输出 - XtRuleGroupModel添加value属性支持 - 更新xdef.xdef和xt.xdef schema定义 - 添加TestBeanValuePropSplit单元测试覆盖新功能 - 更新XLang指南文档说明简单文本值特性 2 个月前
增加excel chart模型定义 5 个月前
chore: 更新native-image反射配置和VFS索引 - nop-auth-app新增IndexHtmlProvider反射配置 - nop-spring-demo新增IndexHtmlProvider反射配置 - 同步更新nop-vfs-index.txt 2 小时前
根据AI日志发现HttpRequest上缺少常用方法, ApiRequest上方法命名与AI自动猜测的结果不一致。重命名ApiRequest.buildSuccess为 ApiRequest.sucess 3 个月前
feat(dyn): 落盘action-auth i18n属性与web i18n yaml及模型更新 - 更新ORM模型定义和xlsx - 落盘所有xmeta/i18n/view/action-auth 1 天前
fix(e2e): 增强表格导航的SPA路由可靠性 - navigateToEntity增加SPA路由就绪检测和重试机制 - 已在目标页面时跳过导航直接等待表格加载 2 小时前
feat(file): 落盘action-auth i18n属性与web i18n yaml及模型更新 1 天前
feat(ooxml,cli): 固定xml转xlsx的OOXML entry时间 - 在 OOXML 公共打包层增加 zipEntryTime 并统一透传到 zip 输出 - 让 cli convert 继承源 XML 文件时间,避免重复导出的 xlsx 二进制漂移 - 补齐 DSL 到 xlsx saver 分支的稳定性链路并增加回归测试 1 天前
fix(web-site): 更新 nop-chaos-next 打包资源 - Refresh generated nop-chaos-next frontend assets after the AMIS layout fix - Update web resource index and hashed bundles for nop-web-site 1 天前
重构目录结构,确保每个子目录可以按顺序编译 5 个月前
fix(job): 修复PeriodicTrigger因lastScheduledTime未赋值导致周期调度失效 - executeJob()中增加job.state.lastScheduledTime赋值 - 修复前fixedDelay模式下lastScheduledTime始终为0,每次都走首次执行分支(afterTime+1) 14 小时前
fix(stream): P3审计Phase1 - Javadoc清理+拼写+注解 - 替换37处org.apache.flink.* Javadoc引用为io.nop.stream.*路径 - StreamOperator.java中文Javadoc翻译为英文 - resource-spec.xdef中cpuCors拼写修正为cpuCores - CepOperator/SharedBuffer添加@SuppressWarnings("rawtypes") - LastValue.java添加@SuppressWarnings("unchecked") - FollowKind.java添加camelCase设计意图说明 1 天前
feat(message): 增强 nop-message-pulsar 实现(Plan 31) - 依赖从 pulsar-client-api 升级为 pulsar-client-original - PulsarHelper 实现完整的 ApiMessage 构建/序列化逻辑 - PulsarMessageService 实现 init/destroy 生命周期和订阅管理 - PulsarConsumeTask 增加错误退避和生命周期控制 - PulsarProducerConfig/PulsarConsumerConfig 添加完整配置属性 - PulsarErrors 定义模块错误码 - LocalMessageService 添加消费者异常捕获和泛型修复 - 新增 IoC beans 配置和单元测试 12 天前
对nop的模块进行分组,没有改变maven坐标。原先仿照spring的扁平模块组织形式,理解总体结构存在一定困难。 6 个月前
feat(rpc-model): 扩展ApiMessageFieldModel支持codegenJavaType - 新增codegenJavaType字段用于API bean代码生成 - 扩展ApiMethodModel和ApiServiceModel支持富类型解析 - 更新api.imp.xml导入模板增加类型映射 - 添加TestApiMethodModel覆盖新功能 1 天前
fix(nop-nosql): 修复cluster模式ClassCastException + 单节点集群测试通过 - IRedisConnectionProvider改用RedisClusterAsyncCommands/RedisClusterCommands作为统一接口类型,兼容standalone和cluster两种模式 - LettuceRedisConnectionProvider使用Object连接池+instanceof分发,避免StatefulRedisClusterConnection无法转换为StatefulRedisConnection的ClassCastException - AbstractLettuceOperations/LettuceSessionStore/LettuceMessageService全部迁移到新的接口类型 - TestLettuceClusterService改为单节点集群(1 master),通过cluster-announce-ip=127.0.0.1解决Docker Desktop for Mac网络拓扑问题 - 全部44个测试通过(37 standalone + 7 cluster) 13 天前
feat(web): 支持 index.html 扩展注入 - 新增 index.html 扩展片段与标题配置项 - 在 nop-web 中提供 IndexHtmlProvider 统一生成首页内容 - 接通 Spring/Quarkus 对 / 和 /index.html 的服务端返回 - 补充 index.html 扩展机制文档与 Quarkus 反射配置 1 天前
feat(report): 落盘action-auth i18n属性与web i18n yaml及模型更新 1 天前
feat(retry): 落盘action-auth i18n属性与web i18n yaml及模型更新 - 新增nop-retry.orm.xlsx二进制模型 1 天前
feat(rule): 落盘action-auth i18n属性与web i18n yaml及模型更新 - 更新api.xlsx和orm.xlsx二进制模型 1 天前
test(runner): 添加TestConvertStableXlsxBinary测试用例 1 天前
fix(search): 修复向量搜索测试 - 调整向量搜索测试用例 2 个月前
fix(nop-biz): OrmEntityCopier inline主子表复制时提前绑定owner,AutoExprRunner scope隔离 - AutoExprRunner使用newChildScope()隔离autoExpr求值上下文,避免覆盖调用方的entity/data变量 - OrmEntityCopier新增bindRefOwner(),在copyToEntity前为子实体设置refPropName反向关联 - copyRefEntity/copyRefEntitySet的ADD和UPDATE路径均调用bindRefOwner - copyRefEntity方法参数缩进修正 - 新增testChildAutoExprCanAccessParentDuringInlineCopy和testAutoExprUsesChildScopeWithoutOverwritingCallerEntity测试 18 天前
feat(web): 支持 index.html 扩展注入 - 新增 index.html 扩展片段与标题配置项 - 在 nop-web 中提供 IndexHtmlProvider 统一生成首页内容 - 接通 Spring/Quarkus 对 / 和 /index.html 的服务端返回 - 补充 index.html 扩展机制文档与 Quarkus 反射配置 1 天前
fix(stream-runtime): 修复检查点清理和窗口算子问题 - CheckpointCoordinator简化成功快照清理逻辑 - PendingCheckpoint修复状态标记 - WindowOperator修复time evictor集成问题 - 新增回归测试覆盖上述修复 2 小时前
feat(sys-web): 落盘action-auth i18n属性与web i18n yaml 1 天前
feat(task): 落盘action-auth i18n属性与web i18n yaml及模型更新 1 天前
feat(wf): 落盘action-auth i18n属性与web i18n yaml及模型更新 - 更新api.xlsx/orm.xlsx和api.xml/orm.xml - 落盘所有xmeta/i18n/view/action-auth 1 天前
refactor(code): 迁移 Java 分析器到 nop-code-lang-java,精简 nop-java-parser - 将 JavaCodeFileAnalyzer 迁移到 nop-code-lang-java/analyzer 包 - 删除 nop-java-parser 中旧的分析器类和模型类 - 删除 nop-java-parser 中所有旧测试 - 重写 TestJavaCodeFileAnalyzer/TestJavaFileConversion 等测试适配新包结构 - nop-java-parser pom 移除冗余依赖 23 天前
feat(wf): 落盘action-auth i18n属性与web i18n yaml及模型更新 - 更新api.xlsx/orm.xlsx和api.xml/orm.xml - 落盘所有xmeta/i18n/view/action-auth 1 天前
修正stdSqlType和stdDataType不一致时seq生成的bug。修正错误的disableWebModule开关 3 个月前
用GLM4.7重构nop-graphql-gateway为nop-gateway 3 个月前
升级quarkus到3.3.3版本。springboot暂时保持在2.7.15版本 2 年前
修复部分文档中的标题等级以确保有且只有一个一级标题 2 年前
重新生成文件 3 个月前
chore: gitignore添加_tmp目录 8 天前
fix(tooling): 防止 opencode run 因权限请求永久阻塞 - goal-driver runner 添加 --dangerously-skip-permissions 标志 - AGENTS.md 添加临时文件规则:禁止使用系统 /tmp,使用项目 _tmp/ - 原因:子 agent 的 external_directory 权限请求被 run.ts 跳过无人回复 1 天前
refactor(db-migration): 重构基于JdbcDialect的数据库对象检查机制 - dialect.xdef 定义新的 exists 方法 - _DialectSqls 新增 dialect SQL 定义 - IJdbcTemplate 接口新增 table/column/index/fk/sequenceExists 方法 - JdbcTemplateImpl 实现基于 dialect 的检查逻辑 - 所有方言文件实现具体的 exists SQL - precondition checker 改用 dialect API 替代直接 SQL - MigrationEngine 使用 dialect 检查提升兼容性 - MigrationHistoryManager 使用 dialect 检查 - 测试同步覆盖新的 dialect 检查机制 2 个月前
对大部分中小企业而言,Nop平台的授权协议本质上类似于Apache2.0。仅对少量大企业采用AGPL协议。在README中已经说了与Apache2.0开源协议的不同,这里将关联协议文本修改为Apache 2.0。因为只有大企业才会关注README中的详细差异说明,凡是不关注的都是中小企业,本身就适用于Apache2.0协议。 1 年前
增加AI提示词 10 个月前
修正英文README中的链接 7 个月前
增加文档 5 个月前
简化to-one关联配置,只需要在Excel模型中为to-one关联增加queryable和sortable属性,即可按照关联表字段进行查询和排序,无需在meta中逐个指定可查询字段。 2 年前
正式提交 3 年前
chore(checkstyle): 重写规则集,按项目实际编码风格配置 - 删除风格类规则:FinalParameters、NeedBraces、LineLength、Javadoc系列、DesignForExtension等 - 保留BUG检测规则:EmptyBlock、CovariantEquals、NoFinalizer、StringLiteralEquality等 - 放宽复杂度阈值:圈复杂度10→15,匿名类长度20→40,MagicNumber允许3/10/100 - 允许throws Exception(Nop统一异常体系)、static star import - nop-kernel 16个子模块验证:0违规(原106,708条) 23 天前
增加ShellCommandRegistry 3 个月前
增加nop-git-worktree技能 3 个月前
feat(ai): 重构AI工具配置并添加ApplyDelta命令 - 重构所有AI agent tool配置文件,优化参数描述和结构 - 新增 ApplyDeltaCommand 用于应用增量修改 - 新增 export-unpushed-diff.sh 脚本导出未推送的变更 - 更新 .gitignore 和 tool.xdef schema 2 个月前
增加mermaid语法解析 9 个月前
chore: 更新mvnw文件权限为可执行 2 个月前
chore: 升级Maven Wrapper到4.0.0-rc-5 - Maven版本从3.9.3升级到4.0.0-rc-5 - Maven Wrapper从3.2.0升级到3.3.4 - 更新mvnw和mvnw.cmd脚本 - 更新maven-wrapper.jar二进制文件 - 使用阿里云镜像加速下载 2 个月前
提交nop平台logo图片 2 年前
添加 Nop 和 XLang 的 svg 图标 11 个月前
修改常量名,规范化checkstyle 4 个月前
chore(qa): 重写PMD规则集,扩展SpotBugs排除规则 - PMD规则集改为显式规则列表,避免版本升级引入噪声规则 - PMD plugin 3.26.0→3.28.0(含PMD 7.17.0) - SpotBugs排除EI_EXPOSE_REP*、CT_CONSTRUCTOR_THROW、AT_*等架构冲突规则 - 排除SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR(单例不要求私有构造函数) - 排除NP_BOOLEAN_RETURN_NULL(Boolean返回null是有意区分三值逻辑) 23 天前
fix(build): maven-clean-plugin设置failOnError避免并行构建时删除project-local-repo失败 23 天前
chore(qa): 扩展SpotBugs排除规则,过滤设计选择类 findings - 排除序列化(SE_*)、clone、序列化单例等规则(Nop不依赖Java序列化) - 排除静态导入隐藏、可变数组暴露、延迟初始化等设计选择 - 排除非资源类的返回值忽略(RV_RETURN_VALUE_IGNORED) - 保留OBL_UNSATISFIED_OBLIGATION(资源泄漏)和RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE(潜在NPE) - nop-commons有效findings: 48→5 23 天前
减小二维码大小 3 年前
修改ppt 8 个月前
增加文档 2 年前
修改ppt 8 个月前
更新xlang logo 4 个月前
添加 Nop 和 XLang 的 svg 图标 11 个月前

[English] [Tutorial] [开发示例] [介绍和答疑视频]

Nop Platform 2.0

star Ask DeepWiki

介绍

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

让演化可编程:XLang 与可逆计算的结构化范式

Nop is nOt Programming(非编程)

Nop Platform 2.0 is a next-generation low-code development platform built from scratch based on the principles of reversible computation, adopting a language-oriented programming paradigm. It includes a suite of fully designed engines such as a GraphQL engine, ORM engine, workflow engine, reporting engine, rule engine, and batch processing engine, all developed from scratch based on new principles. It automatically generates GraphQL/REST/gRPC services according to Excel data models, allowing for customized development without modifying the source code of the basic product. It supports native compilation with GraalVM, and is free for commercial use by small and medium-sized enterprises.

The underlying architecture of the Nop platform does not utilize third-party frameworks such as Spring. Instead, it has been redesigned and implemented based on new software construction principles, greatly reducing the complexity of the framework’s internal structure while significantly enhancing its flexibility, scalability, and performance. Its design goal is to explore next-generation software production technologies, laying the technical foundation for intelligent software production in the AI era.

Nop Platform 2.0是基于可逆计算原理从零开始构建的采用面向语言编程范式的下一代低代码开发平台。包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计,根据Excel数据模型自动生成GraphQL/REST/gRPC服务,定制化开发无需修改基础产品源码,支持GraalVM原生编译,中小企业可以免费商用。

Nop平台的底层没有使用Spring等第三方框架,而是基于新的软件构造原理重新设计并实现,极大降低了框架内在结构的复杂性,同时大幅提升框架的灵活性、可扩展性和性能。它的设计目标是探索下一代软件生产技术,为AI时代的软件智能生产奠定技术基础

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

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

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

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

  • nop-entropy在开发期可以作为支持增量式开发的低代码平台,自动生成各类代码以及相关文档,在运行期可以作为* 面向最终用户的无代码平台的支撑技术*,允许客户在线调整业务模块功能,以所见即所得的方式进行产品迭代。Nop平台可以作为一个非常精巧的通用SAAS平台底座,基于它只需要做少量包装即可实现一个完善的针对特定领域的SAAS平台。

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

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

开发进度:

模块 说明 进度
nop-api-support API接口的支持类 已完成
nop-codegen 数据驱动的代码生成器 已完成
nop-antlr Antlr的模型驱动改造 已完成
nop-core 虚拟文件系统、反射机制、XML/JSON解析 已完成
nop-ioc 声明式IoC容器 已完成
nop-config 动态配置中心 已完成
nop-xlang XLang脚本语言和模板语言 已完成
nop-dao JDBC访问、事务、数据库方言 已完成
nop-orm 下一代ORM引擎 已完成
nop-graphql 下一代GraphQL引擎 已完成
nop-rpc 分布式RPC调用 已完成
nop-ooxml Office文件的解析和生成,取代POI。Word报表模板 已完成
nop-report 中国式报表引擎 已完成
nop-rule 规则引擎 已完成
nop-autotest 模型驱动的自动化测试框架 已完成
nop-idea-plugin IDEA开发插件,支持语法提示、文件跳转、断点调试 基本可用
nop-cli 将代码生成器、文件监听等功能封装为命令行工具 基本可用
nop-cluster 分布式集群支持 50%
nop-tcc 分布式事务 50%
nop-dyn 在线设计表单和数据模型、服务函数 75%
nop-workflow 下一代工作流引擎 65%
nop-task 下一代逻辑流编排 基本可用
nop-job 分布式任务调度 40%
nop-batch 下一代批处理引擎 基本可用
nop-message Kafka/Pulsar消息队列封装 10%
nop-dbtool 数据库导入导出、数据结构比较、同步工具 初步实现
nop-nosql Redis封装 0%
nop-stream 简化的流处理,可以集成Flink 0%
nop-netty TCP/IP服务处理框架 10%
nop-datav BI数据分析 0%
nop-ai 与AI大模型集成,实现AIGC 2%
nop-js GraalVM Js引擎封装,在Java中运行JS 50%
nop-integration 邮件、短信、文件服务等外部服务封装 30%
nop-auth 用户权限管理 已完成
nop-sys 系统配置管理 已完成
nop-ofbiz 将Ofbiz的模型文件转换为Nop平台的模型定义 0%

源码地址

设计原理

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

NOP:下一代软件生产范式

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

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

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

让演化可编程:XLang 与可逆计算的结构化范式, 这一篇是AI整理的介绍文章,推荐阅读

快速开始

开发示例

介绍和答疑视频

开发文档导引

与若依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 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的方式直接运行。

Windows目录名长度限制

  • 避免把仓库放在深层“Downloads”路径(如 C:\Users\<用户名>\Downloads\...)。建议使用短路径,如 D:\nopC:\nop,尽量让项目的完整绝对路径保持较短。
  • 本仓库的 2.0.0-SNAPSHOT 模块需要先在本地构建安装,不能从公共仓库下载。请先在仓库根目录执行一次完整安装:
./mvnw clean install "-DskipTests" "-T 1C"

若看到“Could not resolve dependencies … (absent)”等错误,通常是因为未进行本地安装或之前的失败被缓存。可尝试:

./mvnw clean install "-DskipTests" "-U"

仍不行时,清理本地缓存后重试(默认仓库:C:\Users\<用户名>\.m2\repository):

Remove-Item -Recurse -Force "$env:USERPROFILE\.m2\repository\io\github\entropy-cloud"; 
./mvnw clean install "-DskipTests"

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工具中可以查看所有后端服务函数的定义和参数。

  • 完整的开发示例,参见tutorial

框架集成

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. 作为报表引擎使用:只需要在Word或者Excel文件中增加少量标注即可作为报表模板运行,动态生成复杂的中国式报表。参见report.md

  4. 作为工作流引擎使用:与定时调度引擎相结合,支持人工操作的审批工作流,也支持类似airflow的分布式DAG任务流。参见workflow.md

  5. 作为批处理引擎使用:类似SpringBatch+XXLJob框架,提供分布式批处理任务支持。可以通过配置文件指定如何解析、生成文本或者二进制数据文件,无需编写解析和生成代码。参见batch.md

  6. 作为规则引擎使用:通过配置实现复杂的业务规则判断。参见rule.md

  7. 作为数据驱动的自动化测试框架使用:通过录制、回放的机制实现自动化测试。第一遍运行的时候自动录制输出数据,此后运行时自动和录制的数据快照进行比较,减少手工需要编写的代码量。参见autotest.md

示例页面

  1. 界面框架

  2. 使用Excel来定义数据模型

  3. 使用Excel来定义对外发布的API模型

  4. 集成百度的前端低代码框架AMIS

  5. 集成GraphQL调试工具

  6. 提供IDEA插件,支持自定义DSL的断点调试

  7. 使用Excel作为报表设计器,支持复杂的中国式报表

  8. 使用Word模板来导出Word报表

  9. 使用Excel来设计决策表和决策矩阵

开源协议

Nop平台的前端采用MIT协议,后端整体采用AGPL3.0开源协议。但是国内的中小企业可以在类似Apache2.0协议的条件下使用本项目的代码(可以免费商用,修改代码无需开源,但是要保留源码中的原始版权信息)。为了方便第三方集成,nop-api-support/nop-commons/nop-core这三个包采用Apache 2.0协议。

  • 判断是否中小企业的算法如下:
switch(贵公司很有钱吗()){
  case "有的是钱":{
    console.log("都这么有钱了,还需要整天琢磨别人的知识产权是否免费吗?");
    return false;
  default:
    return true;
  }
}

关于第三方依赖的版权声明,详见NOTICE文件。

技术支持

使用中遇到问题或者BUG可以在Gitee上提Issues,或者在GitCode上提Issues

致谢

社区

网友评价

网友: 我们是30人的小公司,一个大半年的项目试着用了效果还可以,效果质量各方面都有提升,后面准备深度使用。 现在回过头来看最大的2个感受:

  1. 下层基础决定上层建筑,一定程度上拉高了开发人员的技术水平下限
  2. 往年维护的各种解决方案的基础框架,通过这种思想是能够形成统一,让沉淀有深度不仅仅是广度

而且现在发现之前都用错了 有一些个性的代码直接在clone分支重写了 目前看都完全可以不动Nop底层代码达到个性化的需求。如果开源项目都这样去规划 就没有那么多冗余的衍生版本了

canonical: 一个小众的框架,你们在不熟悉的情况下直接用于开发产品上线,当时是怎么想的?

网友: 低代码这块很早就了解了 也用过jeecg,jepass这种,看过很多的爱速搭、宜搭从零到一的技术路线。基于这个,一看到nop,就知道这个没错了,果断用了。

canonical: 感觉Nop与上面这些低代码框架有什么区别?

网友: 缺少理论做支撑.常见的低代码框架技术路线都会不可避免的越走越窄,太面向实践,短期可能有优势。但是web3时代,web2的产物考虑不够长远慢慢都会被淘汰。 我个人偏见,Nop相比开源的低代码框架真的是降维打击。感谢作者开源这么优秀的框架。

作者微信和微信讨论群

添加微信时请注明:加入Nop平台群

微信公众号

项目介绍

Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Java77.08%
HTML18.85%
JavaScript1.62%
SQL1.31%
TypeScript0.39%