后端开发
扩展后端服务
Groovy脚本扩展

S7数智化审计平台Groovy脚本开发环境

S7 数智化审计平台是一款基于Spring Boot的审计平台,dev 作为S7 平台的一个独立的模块,默认并不打包在一起。

dev 模块仅仅是为了 S7平台 提供支持Groovy脚本的开发和调试支持。

1. 环境搭建

dev 提供了一个完整的、独立的、直接运行和调试的 S7 产品环境。但对于本地开发调试环境及工具有一些要求。

注意 dev 环境并不是一个 生产级别 的环境,仅仅是为了方便开发和调试。不要用于生产环境。

1.1 版本依赖

S7-dev 模块依赖 S70.9.2-0.9.3 版本,Spring Boot2.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. 脚本开发

使用 IDEmaven项目方式打开(或导入) dev 项目,然后在 src/main/groovy 目录下面加入 groovy 脚本,然后通过 IDEA 进行开发和调试。

2.1 脚本编写

src/main/groovy 目录下面加入 groovy 脚本,然后通过 IDEA 进行开发和调试。可以利用 IDEGroovy 插件进行语法高亮和提示。

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.SimpleLoggerFactory
mvn 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