# xr-engine **Repository Path**: carp/xr-engine ## Basic Information - **Project Name**: xr-engine - **Description**: 这是一款卓越的后端低代码、无代码开发神器,通过在线画流程图的形式实现后端逻辑代码的编写,真正实现了无代码开发,并且扩展性极强。这款神器能够极大地提升企业/用户的开发与交付效率,同时运维也极为简便。可嵌入任意Java环境的应用程序,也可单独部署或者作为一个微服务节点进行集成。无需重启,依赖隔离,实时调试等。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.xzrong.com/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2025-01-26 - **Last Updated**: 2025-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数智引擎(xr-engine) #### 引擎的介绍 这是一款卓越的后端低代码、无代码开发神器,通过在线画流程图的形式实现后端逻辑代码的编写,真正实现了无代码开发,并且扩展性极强。这款神器能够极大地提升企业/用户的开发与交付效率,同时运维也极为简便。可嵌入任意Java环境的应用程序,也可单独部署或者作为一个微服务节点进行集成。无需重启,热加载且依赖隔离,实时调试,任意定义数据结构等。 在现今前端低代码极多的情况下,结合本神器,通过前后端分离等,可以完美实现前后端逻辑的任意DIY。 繁复的CRUD,繁复的接口调试,动态参数、多线程等,只要用上此神器,都是秒级实现,再也不怕业务的频繁变化了。告别屎山业务代码,只写高效的通用组件和程序方法,让频繁变化的业务逻辑交给流程图吧。使用此神器,可让您有更多的学习时间。  #### 引擎的引入 在引擎的整套设计理念中,作者团队始终遵循**最少依赖**的原则。开发者仅需引入核心jar包,并进行简单的配置,即可轻松集成引擎功能。任何复杂的依赖或繁琐的配置,均不符合我们的设计初衷。**插拔化**的设计理念,不仅要满足对旧有系统的适配需求,更致力于广泛兼容各类系统架构,使得引擎具有出色的灵活性和可扩展性,可无缝集成于各种场景中。它可以作为**已有应用**的一部分,为系统提供强大的服务能力;也可以作为一个**独立的应用或服务**,如Tomcat应用或Spring Boot应用等,为用户提供丰富的功能;此外,在微服务架构中,它还能作为一个**服务节点**,为整体架构贡献其独特的价值。    #### 引擎的使用 1. 演示环境:https://www.xzrong.com,账号:system,密码:123456 2. 登录系统(第一步)  3. 创建应用版本/切换应用版本(第二步)  4. 创建分类/创建程序流程/设计程序流程(第三步)   5. 启动应用版本(第四步)  6. 验证接口(第五步)
浏览器中输入:{host}/{servicePath}/flow/{流程路径}
例如演示环境:{host}=https://www.xzrong.com,{servicePath}=xbz,{流程路径}=/test/xxx
最终输入地址:https://www.xzrong.com/xbz/flow/test/xxx
7. 流程设计开始节点:每个流程有且仅有一个开始节点,用于接收前端传参或者内部调用的传参。
任务处理:执行对应的程序任务。
条件赋值:是if{}else if{}else{}的逻辑实现。
数据库查询:执行数据库查询语句,可动态传参和替换语句内容。
数据库更新:执行数据库更新语句(insert、update、delete),可动态传参和替换语句内容。
数据库管理器:可查看对应数据库的相关表结构。
系统对接:通过http的形式实现系统接口的交互。
流程数据:可定义接收或输出的流程数据结构(Json结构)并验证数据。
事务处理:可在程序流程中自定义控制数据库的事务,如果不自定义控制,则统一由系统控制,在流程结束后一并提交事务或回滚事务。
异常处理:可捕获流程某个节点的执行异常,由开发者控制异常的处理方式。
线程调用:可调用系统的其他流程(同步调用,子线程调用,异步调用等)。
循环节点:可对某个数组或列表变量进行循环遍历,免去画流程图的繁琐步骤。
结束节点:把流程的执行结果返回输出到前端。
 #### 引擎的架构 技术架构:  功能架构:  #### 捐赠与支持  #### 引擎的规划 ##### 1、前端低代码 基于低代码、无代码的设计理念,未来**作者团队**还会继续引入便捷的前端低代码设计器,最终实现引擎的前后端任意DIY设计,完成前后端的**组件闭环**。 事实上,引擎较早的版本就已引入和集成了**百度Amis**和**阿里LowcodeEngine**,基本上实现了前后端的任意DIY设计,然而作者团队最终还是把这两个集成给去掉了。一个原因是设计的太灵活全面,前端组件繁多,开发者使用起来反而感觉十分繁琐,还不如设计几个固定的模板和固定的一些样式,没那么多选择,反而使用起来更加方便。另外一个原因是前端文件多和大,而引擎需要把前端设计引擎的文件也打包到jar里面,这样就显得引擎十分的大和臃肿,违背了引擎的设计理念。 最后,作者团队还是想在将来把前端设计器做的更小和更易于扩展。其中前端设计器的设计构想,是想搭建一个基础布局框架,基于iframe引入的形式,由开发者自定义实现自己的组件,并根据自己的喜好,设计前端样式和展示方式。 **注:如果想使用百度Amis和阿里LowcodeEngine,可以使用前后端分离的形式,在引擎上设计后端的业务逻辑,快速配置前端组件所需要的数据,最终提供请求路径给到前端设计器即可。可以这么说,引擎的设计理念是十分契合百度Amis和阿里LowcodeEngine的。** 基于Layui的前端设计器,目前正在搭建架构,方便扩展:    ##### 2、未来智能化 智能化是未来的趋势也是作者团队一直在研究并持续进行的探索。未来智能化办公,智能化开发,智能化运维是趋势也是必将会到来的应用场景。而作者团队一直想把前后端设计作为一个个组件,就是为了以后可以通过引入开源的大模型进行特定领域的训练,赋予AI根据场景引入组件和组装数据的能力,从而实现引擎的智能化。而组件是开发者可以一直开发和完善的,只要开发者完成了一个组件,那么引擎就拥有某个场景的智能化能力。 #### 其他的说明Gson:引擎使用的JSON依赖库。为尽量减少运行环境的影响,特将Gson库打包到com.xbz.gson路径下。(未对代码进行修改,如需更换版本,可自行打包依赖)
```Apache Commons JEXL:引擎使用的表达式解析库,依赖Jexl3。为尽量减少运行环境的影响,特将Jexl3打包到com.xbz.jexl3目录下。(未对代码进行修改,如需更换版本,可自行打包依赖)
注意:com.xbz.jexl3.JexlHelper是作者新增工具类,替换过程请保留此工具类,否则引擎将无法解析流程中的表达式。
```ASM:字节码操作库。为尽量减少运行环境的影响,特将asm打包到com.xbz.asm目录下。(未对代码进行修改,如需更换版本,可自行打包依赖)
```