Logic IDE 是一个基于 Java 17 和 Spring Boot 的可视化逻辑编排引擎,支持通过拖拽式界面设计业务流程,并提供强大的运行时执行能力。
- 🎨 可视化编排:拖拽式界面,所见即所得的逻辑设计
- 🚀 高性能执行:基于 GraalVM JS 引擎,支持 JavaScript、Java 混合执行
- 🔄 状态管理:支持有状态业务实例,可暂停/恢复执行
- 🔐 事务支持:灵活的事务边界控制,支持多种事务传播机制
- 📊 完整日志:详细的执行日志和可视化调试界面
- 🌐 REST API:完整的 REST 接口,易于集成
- 🔧 插件化:支持自定义节点类型和函数扩展
- JDK 17+
- Maven 3.6+
- MySQL 5.7+ (可选)
- Redis (可选)
# 克隆项目
git clone https://github.com/liusir2606/logic-ide.git
cd logic-solution
# 编译
mvn clean package
# 在业务数据库执行sql脚本,脚本目录:
doc/sql-script/full/v0.8.sql
# 运行测试套件(包含 Web IDE)
cd test-suite
mvn spring-boot:run
访问 http://localhost:8888 查看管理界面。
项目引入了 spring-boot-2(默认启用)与 spring-boot-3 两个 Maven Profile,用于分别拉起 Spring Boot 2.7.x 与 3.2.x 的依赖栈来编译和验证 logic-ide 模块及其依赖。
一键执行两个 Profile 构建可运行以下脚本:
./scripts/verify-compatibility.sh脚本会先后执行 clean verify,覆盖 spring-boot-2 与 spring-boot-3 两个 Profile;传入的额外参数会直接透传给 Maven。
如需单独验证某个 Profile,可手动执行:
./mvnw -pl logic-ide -am clean verify -Pspring-boot-3<dependency>
<groupId>com.aims.logic</groupId>
<artifactId>logic-sdk</artifactId>
<version>0.9.5.250925-SNAPSHOT</version>
</dependency>logic-solution/
├── logic-runtime/ # 核心执行引擎
├── logic-sdk/ # SDK 和服务层
├── logic-ide/ # Web IDE 界面
└── test-suite/ # 完整示例和测试
@Autowired
private LogicRunnerService logicService;
// 执行逻辑,传入参数
Map<String, Object> params = Map.of("input", "hello world");
LogicRunResult result = logicService.runByMap("my-logic-id", params);
// 获取结果
if (result.isSuccess()) {
System.out.println("Result: " + result.getData());
}// 创建业务实例并执行
LogicRunResult result = logicService.runBizByMap("workflow-id", "biz-001", params);
// 后续从断点继续执行
LogicRunResult nextResult = logicService.runBizByMap("workflow-id", "biz-001", newParams);logic:
config-dir: ./logic-configs # 逻辑配置文件目录
log-service: database # 日志存储:database/elasticsearch/memory
default-tran-scope: everyRequest # 默认事务范围{
"NODE_ENV": "development",
"LOG": "on",
"DEFAULT_TRAN_SCOPE": "everyRequest"
}@Component
public class CustomFunction implements ILogicItemFunctionRunner {
@Override
public LogicItemRunResult invoke(FunctionContext ctx, LogicItemTreeNode dsl) {
// 自定义逻辑实现
return new LogicItemRunResult().setSuccess(true).setData("custom result");
}
}FROM openjdk:17-jdk-slim
COPY target/logic-solution-*.jar app.jar
COPY logic-configs ./logic-configs
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]参考 deploy/ 目录下的 Kubernetes 配置文件。
我们欢迎所有形式的贡献!请阅读 CONTRIBUTING.md 了解详细信息。
- Fork 本项目
- 创建特性分支:
git checkout -b feature/new-feature - 提交更改:
git commit -am 'Add new feature' - 推送分支:
git push origin feature/new-feature - 创建 Pull Request
- 遵循阿里巴巴 Java 开发手册
- 方法和类添加必要注释
- 单元测试覆盖率 > 70%
本项目基于 Apache 2.0 许可证开源 - 详见 LICENSE 文件。
- 🐛 Bug 报告:GitHub Issues
- 💡 功能建议:GitHub Discussions
- 📚 文档:Wiki
- 加我进交流群:
详见 CHANGELOG.md。
如果这个项目对你有帮助,请给我们一个 ⭐️!