# usher-groovy-flex **Repository Path**: opentech_usher/usher-groovy-flex ## Basic Information - **Project Name**: usher-groovy-flex - **Description**: groovy-flex是一个专为Spring Boot应用设计的动态脚本执行框架,基于Groovy语言开发,支持在运行时动态修改业务逻辑,适用于企业级应用中的规则引擎、工作流条件判断等场景。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-24 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Usher Groovy Flex `usher-groovy-flex` 是一个专为Spring Boot应用设计的动态脚本执行框架,基于Groovy语言开发,支持在运行时动态修改业务逻辑,适用于企业级应用中的规则引擎、工作流条件判断等场景。 ## 特性 - **动态脚本执行**: 支持在运行时动态执行Groovy脚本 - **Spring Boot集成**: 无缝集成Spring Boot,开箱即用 - **脚本缓存**: 提供脚本缓存机制,提升执行性能 - **参数传递**: 支持向脚本传递参数 - **安全执行**: 提供安全的脚本执行环境 - **灵活配置**: 支持通过配置文件自定义行为 ## 快速开始 ### 1. 添加依赖 在你的 `pom.xml` 中添加以下依赖: ```xml top.uhyils.usher usher-groovy-flex-boot-starter 2.1.2.2.usher ``` ### 2. 配置选项 在 `application.yml` 或 `application.properties` 中进行配置: ```yaml usher: groovy: flex: enable-script-cache: true # 启用脚本缓存 max-cache-size: 100 # 最大缓存数量 script-timeout: 5000 # 脚本超时时间(毫秒) ``` 或 ```properties usher.groovy.flex.enable-script-cache=true usher.groovy.flex.max-cache-size=100 usher.groovy.flex.script-timeout=5000 ``` ### 3. 使用示例 #### 基本用法 ```java @RestController public class ScriptController { @Autowired private GroovyScriptRunner groovyScriptRunner; @PostMapping("/execute") public Object executeScript(@RequestBody ScriptRequest request) { Map params = new HashMap<>(); params.put("input", request.getInput()); params.put("data", request.getData()); return groovyScriptRunner.run(request.getScript(), params); } @PostMapping("/execute-with-cache") public Object executeScriptWithCache(@RequestBody CachedScriptRequest request) { Map params = new HashMap<>(); params.put("input", request.getInput()); params.put("data", request.getData()); return groovyScriptRunner.runWithCache( request.getScriptId(), request.getScript(), params ); } } ``` #### Groovy脚本示例 ```groovy // 简单计算 def calculate(a, b) { return a + b } calculate(input.a, input.b) ``` ```groovy // 条件判断 if (data.status == 'ACTIVE') { return [result: 'allowed', code: 200] } else { return [result: 'denied', code: 403] } ``` ```groovy // 数据处理 def processList(items) { return items.findAll { it.value > 100 } .collect { it.name } } processList(data.items) ``` ## 核心组件 ### 1. GroovyScriptRunner 主要的脚本执行接口,提供基本的脚本执行功能: - `run()`: 执行脚本 - `runWithCache()`: 执行带缓存的脚本 - `clearCache()`: 清除缓存 ### 2. 配置属性 - `enableScriptCache`: 是否启用脚本缓存 - `maxCacheSize`: 最大缓存大小 - `scriptTimeout`: 脚本执行超时时间 ## 应用场景 - **规则引擎**: 动态定义业务规则 - **工作流条件**: 动态判断流程走向 - **数据转换**: 动态数据格式转换 - **报表生成**: 动态报表逻辑 - **API路由**: 动态API路由规则 ## 安全考虑 - 限制脚本执行时间防止长时间运行 - 不允许执行系统级操作(如文件IO、网络请求) - 建议对上传的脚本进行安全验证 ## 开发指南 ### 本地构建 ```bash mvn clean install ``` ### 运行测试 ```bash mvn test ``` ## 许可证 Apache License, Version 2.0 ## 联系方式 - 作者: uhyils - 邮箱: uhyils@qq.com