S7数智化审计平台Groovy脚本开发环境
S7 数智化审计平台是一款基于Spring Boot的审计平台,dev 作为S7 平台的一个独立的模块,默认并不打包在一起。
dev 模块仅仅是为了 S7平台 提供支持Groovy脚本的开发和调试支持。
1. 环境搭建
dev 提供了一个完整的、独立的、直接运行和调试的 S7 产品环境。但对于本地开发调试环境及工具有一些要求。
注意 dev 环境并不是一个 生产级别 的环境,仅仅是为了方便开发和调试。不要用于生产环境。
1.1 版本依赖
S7-dev 模块依赖 S7 的 0.9.2-0.9.3 版本,Spring Boot的2.3.3.RELEASE` 版本。
具体依赖情况如下
- S7 0.9.2 - 0.9.3
- Spring Boot 2.3.3.RELEASE
- Open JDK 1.8+
- Maven 3.6+
仓库使用的 审友Maven仓库,仓库配置如下:
<repositories>
<repository>
<id>s7Repo</id>
<url>https://mvn.yonyouaud.com/repository/maven-public/</url>
</repository>
</repositories>更多详细依赖,请参考 pom.xml 文件。
版本依赖可能会随着
S7的版本更新而有所变化,具体以实际情况为准。
1.2 目录结构
dev 开发环境是一个标准的 Maven 项目,目录结构如下:
├── README.md
├── pom.xml
├── src
│ ├── main
│ │ ├── groovy # groovy 脚本目录
│ │ └── resources
│ │ ├── META-INF
│ │ ├── application.yml # 配置文件
│ │ ├── banner.txt
│ │ ├── nacos.properties # Nacos 配置
│ │ ├── only-office # OnlyOffice 配置
│ │ ├── processes # 流程默认模板
│ │ ├── services
│ │ ├── static # 前端静态资源
│ │ └── template # 审计模板文件
│ └── test
│ └── groovy # groovy 单元测试目录该目录结构是标准的 Spring-Boot 项目结构,Maven 直接管理,可以加入测试及调试代码,但不要随意更改目录结构。
2. 脚本开发
使用 IDE 以maven项目方式打开(或导入) dev 项目,然后在 src/main/groovy 目录下面加入 groovy 脚本,然后通过 IDEA 进行开发和调试。
2.1 脚本编写
在 src/main/groovy 目录下面加入 groovy 脚本,然后通过 IDEA 进行开发和调试。可以利用 IDE 的 Groovy 插件进行语法高亮和提示。
2.2 环境依赖
运行 dev 开发调试环境,依赖如下依赖:
- S7 标准产品数据库
- IDE 开发工具(建议使用 IDEA Community 版本)
- JDK 1.8+ 环境
- Maven 3.6+ 环境
3. 脚本调试
3.1 单元测试
可以在 src/test/groovy 目录下面加入测试脚本,然后通过 IDEA 进行单元测试。
要求:
- 单元测试必须命名为
xxxTest.groovy,如com.yonyouaud.ais.DemoTest.groovy - 单元测试类必须继承
GroovyScriptTestBase类
单元测试命令如下:
mvn test -DskipTests=false -Dtest=com.yonyouaud.ais.DemoTest或者直接在 IDEA 中运行单元测试
3.2 调试
启动本地调试环境,然后通过 IDEA 进行本地调试。前端浏览器访问地址 http://localhost:18080/ais/index.html 进行服务调试。
mvn spring-boot:run -Dspring-boot.run.mainClass=com.yonyouaud.ais.GroovyScriptDevMain或者直接在 IDEA 中启动 GroovyScriptDevMain 类进行调试
4. 脚本发布
测试通过的 groovy 脚本,可以拷贝好,然后在 S7 平台 中使用。
打开 S7 平台,点击 技术平台 -> 脚本管理 -> 后端脚本,新建或修改某个脚本项,然后粘贴脚本内容,点击 保存 即可。
功能路径可能因为版本或者项目的不同而有所不同,具体以实际情况为准。
5. 其他
下面👇列出一些可能遇到的问题和解决方案。
5.1 出现依赖冲突处理
打包的时候报错,信息如下
Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory] Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.SimpleLoggerFactory loaded from file:/Users/tufeiping/.m2/repository/org/slf4j/slf4j-simple/1.7.30/slf4j-simple-1.7.30.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.SimpleLoggerFactorymvn dependency:tree -Dverbose -Dincludes=org.slf4j:slf4j-simple输出后找到 `` 模块的问题,修改 pom.xml 文件,排除依赖
[INFO] org.springframework.boot:dev:jar:0.1.0
[INFO] \- com.yonyouaud:ai-adapter:jar:0.9.2:compile
[INFO] \- com.alibaba:dashscope-sdk-java:jar:2.8.2:compile
[INFO] \- org.slf4j:slf4j-simple:jar:1.7.30:compile