项目初始化,sql、脚本等
This commit is contained in:
parent
c0293edf96
commit
0eaf3d3b6d
39
.gitignore
vendored
Normal file
39
.gitignore
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
HELP.md
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
application-local.yml
|
||||||
|
*.log
|
||||||
|
|
||||||
|
rebel.xml
|
||||||
|
.flattened-pom.xml
|
||||||
2
RELEASE.md
Normal file
2
RELEASE.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# 发布记录
|
||||||
|
|
||||||
100
pom.xml
Normal file
100
pom.xml
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>cn.axzo.infra</groupId>
|
||||||
|
<artifactId>axzo-parent</artifactId>
|
||||||
|
<version>2.4.13.5</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<groupId>cn.axzo</groupId>
|
||||||
|
<artifactId>workflow-engine</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>workflow-engine</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<axzo-bom.version>2.0.0-SNAPSHOT</axzo-bom.version>
|
||||||
|
<axzo-dependencies.version>2.0.0-SNAPSHOT</axzo-dependencies.version>
|
||||||
|
<lombok.version>1.18.22</lombok.version>
|
||||||
|
<mapstruct.version>1.4.2.Final</mapstruct.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<!-- 导入axzo通用api依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.infra</groupId>
|
||||||
|
<artifactId>axzo-bom</artifactId>
|
||||||
|
<version>${axzo-bom.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.infra</groupId>
|
||||||
|
<artifactId>axzo-dependencies</artifactId>
|
||||||
|
<version>${axzo-dependencies.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- lombok -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- for test -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<!-- maven-compiler-plugin 插件,解决 Lombok + MapStruct 组合 -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<annotationProcessorPaths>
|
||||||
|
<path>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>${lombok.version}</version>
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<groupId>org.mapstruct</groupId>
|
||||||
|
<artifactId>mapstruct-processor</artifactId>
|
||||||
|
<version>${mapstruct.version}</version>
|
||||||
|
</path>
|
||||||
|
</annotationProcessorPaths>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>axzo</id>
|
||||||
|
<name>axzo repository</name>
|
||||||
|
<url>https://nexus.axzo.cn/repository/axzo/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<modules> <module>workflow-engine-server</module>
|
||||||
|
<module>workflow-engine-api</module>
|
||||||
|
</modules>
|
||||||
|
</project>
|
||||||
22
workflow-engine-api/pom.xml
Normal file
22
workflow-engine-api/pom.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<artifactId>workflow-engine</artifactId>
|
||||||
|
<groupId>cn.axzo</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>workflow-engine-api</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>workflow-engine-api</name>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-consumer-spring-cloud-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package cn.axzo.client;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.framework.domain.page.PageResp;
|
||||||
|
import cn.axzo.framework.domain.web.ApiException;
|
||||||
|
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||||
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
|
import cn.axzo.client.feign.MicroArchetypeApi;
|
||||||
|
import cn.axzo.client.model.NewUserReq;
|
||||||
|
import cn.axzo.client.model.QueryUserReq;
|
||||||
|
import cn.axzo.client.model.UpdateUserReq;
|
||||||
|
import cn.axzo.client.model.UserRes;
|
||||||
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/17
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class MicroArchetypeClient {
|
||||||
|
|
||||||
|
private final MicroArchetypeApi api;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 老项目迁移使用
|
||||||
|
*/
|
||||||
|
public UserRes createUser(@Valid NewUserReq req) {
|
||||||
|
CommonResponse<UserRes> apiResult = api.createUser(req);
|
||||||
|
if (apiResult.getCode() == 200) {
|
||||||
|
return apiResult.getData();
|
||||||
|
}
|
||||||
|
throw new RuntimeException(apiResult.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新项目使用
|
||||||
|
*/
|
||||||
|
public UserRes updateUser(Long id, @Valid UpdateUserReq req) {
|
||||||
|
ApiResult<UserRes> apiResult = api.updateUser(id, req);
|
||||||
|
if (apiResult.isSuccess()) {
|
||||||
|
return apiResult.getData();
|
||||||
|
}
|
||||||
|
throw new ApiException(apiResult.getRespCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
public PageResp<UserRes> fetchUsers(QueryUserReq req, PageQO page) {
|
||||||
|
ApiPageResult<UserRes> apiPageResult = api.fetchUsers(req.toQueryMap(), page);
|
||||||
|
if (apiPageResult.isSuccess()) {
|
||||||
|
return apiPageResult.toPage();
|
||||||
|
}
|
||||||
|
throw new ApiException(apiPageResult.getRespCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.axzo.client.config;
|
||||||
|
|
||||||
|
import cn.axzo.client.feign.MicroArchetypeApi;
|
||||||
|
import cn.axzo.client.MicroArchetypeClient;
|
||||||
|
import cn.axzo.client.feign.MicroArchetypeFallbackFactory;
|
||||||
|
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/17
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@EnableFeignClients(basePackages = {"cn.axzo.client"})
|
||||||
|
@Configuration
|
||||||
|
public class MicroArchetypeClientAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MicroArchetypeFallbackFactory microArchetypeFallbackFactory() {
|
||||||
|
return new MicroArchetypeFallbackFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MicroArchetypeClient microArchetypeClient(MicroArchetypeApi microArchetypeApi) {
|
||||||
|
return new MicroArchetypeClient(microArchetypeApi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
package cn.axzo.client.feign;
|
||||||
|
|
||||||
|
import cn.axzo.framework.context.client.QueryMap;
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||||
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
|
import cn.axzo.client.model.NewUserReq;
|
||||||
|
import cn.axzo.client.model.UpdateUserReq;
|
||||||
|
import cn.axzo.client.model.UserRes;
|
||||||
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/17
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@FeignClient(name = "workflow-engine", url = "http://localhost:8899", fallbackFactory = MicroArchetypeFallbackFactory.class)
|
||||||
|
public interface MicroArchetypeApi {
|
||||||
|
|
||||||
|
@PostMapping(value = "/api/v1/users", consumes = APPLICATION_JSON_VALUE)
|
||||||
|
CommonResponse<UserRes> createUser(@RequestBody NewUserReq req);
|
||||||
|
|
||||||
|
@PutMapping(value = "/api/v2/users/{id}", consumes = APPLICATION_JSON_VALUE)
|
||||||
|
ApiResult<UserRes> updateUser(@PathVariable("id") Long id, @RequestBody UpdateUserReq req);
|
||||||
|
|
||||||
|
@GetMapping(value = "/api/v2/users")
|
||||||
|
ApiPageResult<UserRes> fetchUsers(@RequestParam Map<String, Object> query, PageQO page);
|
||||||
|
}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
package cn.axzo.client.feign;
|
||||||
|
|
||||||
|
import cn.axzo.framework.client.feign.FeignFallback;
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||||
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
|
import cn.axzo.framework.jackson.utility.JSON;
|
||||||
|
import cn.axzo.client.model.NewUserReq;
|
||||||
|
import cn.axzo.client.model.UpdateUserReq;
|
||||||
|
import cn.axzo.client.model.UserRes;
|
||||||
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/17
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class MicroArchetypeApiFallback implements MicroArchetypeApi {
|
||||||
|
|
||||||
|
private final FeignFallback fallback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 老项目迁移使用
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public CommonResponse<UserRes> createUser(NewUserReq req) {
|
||||||
|
log.error("[workflow-engine-api] createUser fallback", fallback.getCause());
|
||||||
|
return CommonResponse.error("创建用户失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新项目推荐使用
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ApiResult<UserRes> updateUser(Long id, UpdateUserReq req) {
|
||||||
|
log.error("[workflow-engine-api] updateUser fallback", fallback.getCause());
|
||||||
|
return fallback.resp();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiPageResult<UserRes> fetchUsers(Map<String, Object> query, PageQO page) {
|
||||||
|
log.error("[workflow-engine-api] fetchUsers fallback", fallback.getCause());
|
||||||
|
return fallback.pageResp();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package cn.axzo.client.feign;
|
||||||
|
|
||||||
|
import cn.axzo.framework.client.feign.FeignFallback;
|
||||||
|
import cn.axzo.framework.domain.web.code.IRespCode;
|
||||||
|
import cn.axzo.framework.domain.web.code.RespCode;
|
||||||
|
import feign.hystrix.FallbackFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class MicroArchetypeFallbackFactory implements FallbackFactory<MicroArchetypeApiFallback> {
|
||||||
|
|
||||||
|
// TODO: 2022/11/3 100-调整为具体的项目编号,XXX-调整为项目名
|
||||||
|
private final IRespCode respCode = new RespCode("100" + "91001", "XXX服务不可用");
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MicroArchetypeApiFallback create(Throwable cause) {
|
||||||
|
return new MicroArchetypeApiFallback(new FeignFallback(cause, respCode));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package cn.axzo.client.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class NewUserReq {
|
||||||
|
|
||||||
|
@NotBlank(message = "名称不能为空")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
private String address;
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.axzo.client.model;
|
||||||
|
|
||||||
|
import cn.axzo.framework.context.client.IQueryMap;
|
||||||
|
import cn.axzo.framework.context.client.QueryMap;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class QueryUserReq implements IQueryMap {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void append(QueryMap.Builder builder) {
|
||||||
|
builder.put("id", id).put("name", name).put("phone", phone).put("email", email);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package cn.axzo.client.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UpdateUserReq {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
private String address;
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package cn.axzo.client.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserRes {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
private String address;
|
||||||
|
}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||||
|
cn.axzo.micro.archetype.client.config.MicroArchetypeClientAutoConfiguration
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package cn.axzo.maven.archetype.client;
|
||||||
|
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
public class AppTest {
|
||||||
|
|
||||||
|
}
|
||||||
54
workflow-engine-server/pom.xml
Normal file
54
workflow-engine-server/pom.xml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>workflow-engine</artifactId>
|
||||||
|
<groupId>cn.axzo</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>workflow-engine-server</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>workflow-engine-server</name>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-web-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-spring-cloud-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-consumer-spring-cloud-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-processor-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!--mybatis-plus-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-mybatisplus-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- swagger-yapi -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-swagger-yapi-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- druid -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>druid-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.axzo.framework</groupId>
|
||||||
|
<artifactId>axzo-logger-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package cn.axzo.server;
|
||||||
|
|
||||||
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@MapperScan(value = {"cn.axzo.**.mapper"})
|
||||||
|
@SpringBootApplication
|
||||||
|
public class Application {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(Application.class, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.axzo.server.common.enums;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.web.code.IProjectRespCode;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description: 响应码规范:一共8位,取值范围0~9,3位项目编号(首位不能为0)+2位模块编号+3位自定义编号
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum ErrorCode implements IProjectRespCode {
|
||||||
|
|
||||||
|
USER_NOT_EXISTS("01001", "用户不存在,id=%s"),
|
||||||
|
USER_PHONE_EMAIL_IS_NULL("01002", "电话和邮箱不能都为空");
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getProjectCode() {
|
||||||
|
// 根据不同项目进行项目编码调整,可联系框架组获取项目编号(首位不能为0)
|
||||||
|
return "100";
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,88 @@
|
|||||||
|
package cn.axzo.server.common.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
public enum ResultCode {
|
||||||
|
/**
|
||||||
|
* 成功 [GET]
|
||||||
|
*/
|
||||||
|
SUCCESS(200),
|
||||||
|
/**
|
||||||
|
* [POST/PUT/PATCH] 用户新建或修改数据成功
|
||||||
|
*/
|
||||||
|
CREATED(201),
|
||||||
|
/**
|
||||||
|
* [*] 标识一个请求已经进入后台排队 (异步任务)
|
||||||
|
*/
|
||||||
|
ACCEPTED(202),
|
||||||
|
/**
|
||||||
|
* [DELETE]: 用户删除数据成功
|
||||||
|
*/
|
||||||
|
NO_CONTENT(204),
|
||||||
|
/**
|
||||||
|
* [POST/PUT/PATCH] 用户发出的请求有错误, 服务器没有进行新建或修改数据的操作, 该操作是幂等的.
|
||||||
|
*/
|
||||||
|
FAIL(400),
|
||||||
|
/**
|
||||||
|
* [*] 标识没有权限 (令牌、用户名、密码错误)
|
||||||
|
*/
|
||||||
|
UNAUTHORIZED(401),
|
||||||
|
/**
|
||||||
|
* [*] 标识用户得到授权(与401错误相对), 但是访问是被禁止的
|
||||||
|
*/
|
||||||
|
FORBIDDEN(403),
|
||||||
|
/**
|
||||||
|
* [*] 用户发出的请求针对的是不存在的记录, 服务器没有进行操作
|
||||||
|
*/
|
||||||
|
NOT_FOUND(404),
|
||||||
|
/**
|
||||||
|
* [GET] 用户请求的格式不可得 (比如用户请求JSON格式, 但是只有XML格式)
|
||||||
|
*/
|
||||||
|
NOT_ACCEPTABLE(406),
|
||||||
|
/**
|
||||||
|
* [GET] 用户请求的资源被永久删除, 且不会再得到
|
||||||
|
*/
|
||||||
|
GONE(410),
|
||||||
|
/**
|
||||||
|
* [POST/PUT/PATCH] 当创建一个对象时, 发生一个验证错误646
|
||||||
|
*/
|
||||||
|
UNPROCESSABLE_ENTITY(422),
|
||||||
|
/**
|
||||||
|
* 服务器内部错误
|
||||||
|
*/
|
||||||
|
INTERNAL_SERVER_ERROR(9999),
|
||||||
|
/**
|
||||||
|
* 通用业务异常
|
||||||
|
*/
|
||||||
|
SERVICE_EXCEPTION_ERROR(9998),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ####业务的响应码####
|
||||||
|
* 按业务依次划分 :
|
||||||
|
* 一共6位, 第6位是业务代码 第1-5位响应码, 按业务不同码不同
|
||||||
|
* #100000 全局级别
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 100001 当前用户被强制下线
|
||||||
|
*/
|
||||||
|
CUSTOM_100001(100001),
|
||||||
|
/**
|
||||||
|
* 确认弹窗响应码
|
||||||
|
*/
|
||||||
|
CUSTOM_100002(100002);
|
||||||
|
|
||||||
|
public int code;
|
||||||
|
|
||||||
|
ResultCode(int code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.common.util;
|
||||||
@ -0,0 +1,259 @@
|
|||||||
|
package cn.axzo.server.config.filter;
|
||||||
|
|
||||||
|
import cn.azxo.framework.common.constatns.Constants;
|
||||||
|
import cn.azxo.framework.common.utils.LogUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONException;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.google.common.base.Strings;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.skywalking.apm.toolkit.trace.Trace;
|
||||||
|
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
|
||||||
|
import org.slf4j.MDC;
|
||||||
|
import org.springframework.core.Ordered;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.filter.OncePerRequestFilter;
|
||||||
|
import org.springframework.web.util.ContentCachingRequestWrapper;
|
||||||
|
import org.springframework.web.util.ContentCachingResponseWrapper;
|
||||||
|
import org.springframework.web.util.WebUtils;
|
||||||
|
|
||||||
|
import javax.servlet.FilterChain;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/12/6 14:48
|
||||||
|
* @Description: Http接口日志记录
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class HttpTraceLogFilter extends OncePerRequestFilter implements Ordered {
|
||||||
|
|
||||||
|
private static final String X_REQUEST_ID = "x-request-id";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOrder() {
|
||||||
|
return Ordered.LOWEST_PRECEDENCE - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Trace(operationName = "HttpTraceLogFilter")
|
||||||
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
|
||||||
|
FilterChain filterChain) throws ServletException, IOException {
|
||||||
|
String uri = request.getRequestURI();
|
||||||
|
String contextPath = request.getContextPath();
|
||||||
|
String url = uri.substring(contextPath.length());
|
||||||
|
//swagger 跳过
|
||||||
|
if (url.contains("api-docs") || url.contains("swagger") || url.contains("checkDeath")) {
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//静态资源 跳过
|
||||||
|
if (url.contains(".")) {
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(request instanceof ContentCachingRequestWrapper)) {
|
||||||
|
request = new ContentCachingRequestWrapper(request);
|
||||||
|
}
|
||||||
|
if (!(response instanceof ContentCachingResponseWrapper)) {
|
||||||
|
response = new ContentCachingResponseWrapper(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
String requestId = request.getHeader(X_REQUEST_ID);
|
||||||
|
if (Strings.isNullOrEmpty(requestId)) {
|
||||||
|
MDC.put(X_REQUEST_ID, getTraceId());
|
||||||
|
} else {
|
||||||
|
MDC.put(X_REQUEST_ID, requestId);
|
||||||
|
}
|
||||||
|
String ctxLogId = request.getHeader(Constants.CTX_LOG_ID_MDC);
|
||||||
|
if (Strings.isNullOrEmpty(ctxLogId)) {
|
||||||
|
MDC.put(Constants.CTX_LOG_ID_MDC, getTraceId());
|
||||||
|
} else {
|
||||||
|
MDC.put(Constants.CTX_LOG_ID_MDC, ctxLogId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取请求参数
|
||||||
|
String parameter = null;
|
||||||
|
String requestContentType = request.getHeader(HttpHeaders.CONTENT_TYPE);
|
||||||
|
if (requestContentType != null) {
|
||||||
|
if (requestContentType.startsWith(MediaType.APPLICATION_JSON_VALUE)) {
|
||||||
|
//Json
|
||||||
|
WrappedHttpServletRequest requestWrapper = new WrappedHttpServletRequest(request);
|
||||||
|
parameter = getRequestBody(requestWrapper);
|
||||||
|
request = requestWrapper;
|
||||||
|
} else if (requestContentType.startsWith(MediaType.APPLICATION_FORM_URLENCODED_VALUE)) {
|
||||||
|
//普通表单提交
|
||||||
|
parameter = JSON.toJSONString(request.getParameterMap());
|
||||||
|
} else if (requestContentType.startsWith(MediaType.MULTIPART_FORM_DATA_VALUE)) {
|
||||||
|
//文件表单提交
|
||||||
|
parameter = JSON.toJSONString("文件类型");
|
||||||
|
}
|
||||||
|
} else if (url.startsWith("/api")) {
|
||||||
|
if ("GET".equals(request.getMethod())) {
|
||||||
|
parameter = JSON.toJSONString(request.getParameterMap());
|
||||||
|
} else if ("POST".equals(request.getMethod())) {
|
||||||
|
WrappedHttpServletRequest requestWrapper = new WrappedHttpServletRequest(request);
|
||||||
|
parameter = getRequestBody(requestWrapper);
|
||||||
|
request = requestWrapper;
|
||||||
|
}
|
||||||
|
} else if ("GET".equals(request.getMethod())) {
|
||||||
|
parameter = JSON.toJSONString(request.getParameterMap());
|
||||||
|
}
|
||||||
|
|
||||||
|
long requestTime = System.currentTimeMillis();
|
||||||
|
try {
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
} finally {
|
||||||
|
response.setHeader(Constants.CTX_LOG_ID_MDC, MDC.get(Constants.CTX_LOG_ID_MDC));
|
||||||
|
response.setHeader(X_REQUEST_ID, MDC.get(Constants.CTX_LOG_ID_MDC));
|
||||||
|
|
||||||
|
long latency = System.currentTimeMillis() - requestTime;
|
||||||
|
String responseBody = null;
|
||||||
|
int responseStatus = response.getStatus();
|
||||||
|
String responseContentType = response.getContentType();
|
||||||
|
//Json
|
||||||
|
if (responseContentType != null && responseContentType
|
||||||
|
.startsWith(MediaType.APPLICATION_JSON_VALUE)) {
|
||||||
|
responseBody = getResponseBody(response);
|
||||||
|
}
|
||||||
|
//记录日志
|
||||||
|
HttpTraceLog traceLog = new HttpTraceLog();
|
||||||
|
traceLog.setRequestContentType(requestContentType);
|
||||||
|
traceLog.setPath(url);
|
||||||
|
traceLog.setMethod(request.getMethod());
|
||||||
|
traceLog.setTimeTaken(latency);
|
||||||
|
traceLog.setParameter(parameter);
|
||||||
|
traceLog.setResponseContentType(responseContentType);
|
||||||
|
traceLog.setStatus(responseStatus);
|
||||||
|
traceLog.setResponseBody(responseBody);
|
||||||
|
traceLog.setRequestHeaders(getRequestHeader(request));
|
||||||
|
if (traceLog.getResponseCode() != null && traceLog.getResponseCode().equals(9999)) {
|
||||||
|
LogUtil.error(LogUtil.ErrorLevel.P0, LogUtil.ErrorType.ERROR_BUSINESS, JSON.toJSONString(traceLog));
|
||||||
|
} else if (traceLog.getResponseCode() != null && traceLog.getResponseCode().equals(9998)) {
|
||||||
|
log.warn(JSON.toJSONString(traceLog));
|
||||||
|
} else {
|
||||||
|
log.info(JSON.toJSONString(traceLog));
|
||||||
|
}
|
||||||
|
updateResponse(response);
|
||||||
|
// 清理链路id
|
||||||
|
MDC.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getTraceId() {
|
||||||
|
String contextTraceId = TraceContext.traceId();
|
||||||
|
return Strings.isNullOrEmpty(contextTraceId)
|
||||||
|
? UUID.randomUUID().toString().replaceAll("-", "") : contextTraceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getRequestBody(WrappedHttpServletRequest request) throws IOException {
|
||||||
|
// 获取请求参数
|
||||||
|
return request.getRequestParams();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Trace(operationName = "HttpTraceLogFilter#getResponseBody")
|
||||||
|
private String getResponseBody(HttpServletResponse response) {
|
||||||
|
String responseBody = null;
|
||||||
|
ContentCachingResponseWrapper wrapper = WebUtils
|
||||||
|
.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||||
|
if (wrapper != null) {
|
||||||
|
responseBody = new String(wrapper.getContentAsByteArray(), StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
return responseBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getRequestHeader(HttpServletRequest request) {
|
||||||
|
Map<String, String> ret = new HashMap<>();
|
||||||
|
Enumeration<String> headerNames = request.getHeaderNames();
|
||||||
|
while (headerNames.hasMoreElements()) {
|
||||||
|
String headerName = headerNames.nextElement();
|
||||||
|
ret.put(headerName, request.getHeader(headerName));
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Trace(operationName = "HttpTraceLogFilter#updateResponse")
|
||||||
|
private void updateResponse(HttpServletResponse response) throws IOException {
|
||||||
|
ContentCachingResponseWrapper responseWrapper = WebUtils
|
||||||
|
.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||||
|
Objects.requireNonNull(responseWrapper).copyBodyToResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
private static class HttpTraceLog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 路径
|
||||||
|
*/
|
||||||
|
private String path;
|
||||||
|
/**
|
||||||
|
* 参数
|
||||||
|
*/
|
||||||
|
@JSONField(jsonDirect = true)
|
||||||
|
private String parameter;
|
||||||
|
private String requestContentType;
|
||||||
|
private String responseContentType;
|
||||||
|
private String method;
|
||||||
|
private Long timeTaken;
|
||||||
|
private Integer status;
|
||||||
|
/**
|
||||||
|
* 业务Code
|
||||||
|
*/
|
||||||
|
private Integer responseCode;//业务返回码
|
||||||
|
/**
|
||||||
|
* 响应参数
|
||||||
|
*/
|
||||||
|
@JSONField(jsonDirect = true)
|
||||||
|
private String responseBody;
|
||||||
|
|
||||||
|
@JSONField(jsonDirect = true)
|
||||||
|
private Map<String, String> requestHeaders;
|
||||||
|
|
||||||
|
public String getParameter() {
|
||||||
|
if (parameter == null) {
|
||||||
|
return parameter;
|
||||||
|
} else {
|
||||||
|
return parameter.replaceAll("\n", "").replaceAll("\t", "").replaceAll("\r", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getResponseBody() {
|
||||||
|
if (responseBody == null) {
|
||||||
|
return responseBody;
|
||||||
|
} else {
|
||||||
|
return responseBody.replaceAll("\n", "").replaceAll("\t", "").replaceAll("\r", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResponseBody(String responseBody) {
|
||||||
|
if (StringUtils.isBlank(responseBody)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.responseBody = responseBody;
|
||||||
|
JSONObject responseJson = null;
|
||||||
|
try {
|
||||||
|
responseJson = JSONObject.parseObject(responseBody);
|
||||||
|
this.responseCode = responseJson.getInteger("code");
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.debug("ResponseBody非JSON返回", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,91 @@
|
|||||||
|
package cn.axzo.server.config.filter;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import javax.servlet.ReadListener;
|
||||||
|
import javax.servlet.ServletInputStream;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletRequestWrapper;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/12/6 14:56
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
public class WrappedHttpServletRequest extends HttpServletRequestWrapper {
|
||||||
|
|
||||||
|
private byte[] bytes;
|
||||||
|
private WrappedServletInputStream wrappedServletInputStream;
|
||||||
|
|
||||||
|
public WrappedHttpServletRequest(HttpServletRequest request) throws IOException {
|
||||||
|
super(request);
|
||||||
|
// 读取输入流里的请求参数,并保存到bytes里
|
||||||
|
bytes = IOUtils.toByteArray(request.getInputStream());
|
||||||
|
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
|
||||||
|
this.wrappedServletInputStream = new WrappedServletInputStream(byteArrayInputStream);
|
||||||
|
// 很重要,把post参数重新写入请求流
|
||||||
|
reWriteInputStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 把参数重新写进请求里
|
||||||
|
*/
|
||||||
|
public void reWriteInputStream() {
|
||||||
|
wrappedServletInputStream
|
||||||
|
.setStream(new ByteArrayInputStream(bytes != null ? bytes : new byte[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServletInputStream getInputStream() throws IOException {
|
||||||
|
return wrappedServletInputStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BufferedReader getReader() throws IOException {
|
||||||
|
return new BufferedReader(new InputStreamReader(wrappedServletInputStream));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取post参数,可以自己再转为相应格式
|
||||||
|
*/
|
||||||
|
public String getRequestParams() throws IOException {
|
||||||
|
return new String(bytes, this.getCharacterEncoding());
|
||||||
|
}
|
||||||
|
|
||||||
|
private class WrappedServletInputStream extends ServletInputStream {
|
||||||
|
|
||||||
|
private InputStream stream;
|
||||||
|
|
||||||
|
public WrappedServletInputStream(InputStream stream) {
|
||||||
|
this.stream = stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStream(InputStream stream) {
|
||||||
|
this.stream = stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int read() throws IOException {
|
||||||
|
return stream.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFinished() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isReady() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setReadListener(ReadListener readListener) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.config;
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.consumer;
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package cn.axzo.server.controller;
|
||||||
|
|
||||||
|
import cn.axzo.framework.web.http.ApiResponse;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/11/25 18:00
|
||||||
|
* @Description: 健康检查接口
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
public class HealthCheckController {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 探活
|
||||||
|
*/
|
||||||
|
@GetMapping("/checkDeath")
|
||||||
|
public ApiResponse<String> checkDeath() {
|
||||||
|
return ApiResponse.ok("ok");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.controller.app;
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
package cn.axzo.server.controller.web;
|
||||||
|
|
||||||
|
import cn.axzo.server.service.user.UserService;
|
||||||
|
import cn.axzo.server.service.dto.request.user.NewUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UpdateUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO;
|
||||||
|
import cn.axzo.server.service.dto.response.user.UserVO;
|
||||||
|
import cn.azxo.framework.common.model.CommonPageResponse;
|
||||||
|
import cn.azxo.framework.common.model.CommonResponse;
|
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "web-用户信息接口")
|
||||||
|
@ApiSupport(author = "田立勇")
|
||||||
|
@RequestMapping("/api/v1")
|
||||||
|
@RestController
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UserController {
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "创建用户")
|
||||||
|
@PostMapping("/users")
|
||||||
|
public CommonResponse<UserVO> createUser(@Valid @RequestBody NewUserDTO dto) {
|
||||||
|
log.info("REST request to save user : {}", dto);
|
||||||
|
// 校验入参
|
||||||
|
dto.valid();
|
||||||
|
UserVO result = userService.create(dto);
|
||||||
|
return CommonResponse.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改用户")
|
||||||
|
@PutMapping("/users/{id}")
|
||||||
|
public CommonResponse<UserVO> updateUser(@ApiParam("用户ID") @PathVariable Long id,
|
||||||
|
@Valid @RequestBody UpdateUserDTO dto) {
|
||||||
|
log.info("REST request to update user : {}", dto);
|
||||||
|
// 校验入参
|
||||||
|
dto.valid();
|
||||||
|
UserVO result = userService.update(id, dto);
|
||||||
|
return CommonResponse.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取用户列表")
|
||||||
|
@GetMapping("/users")
|
||||||
|
public CommonResponse<CommonPageResponse<UserVO>> getUsers(@Valid UserQO userQO) {
|
||||||
|
CommonPageResponse<UserVO> results = userService.queryByPage(userQO);
|
||||||
|
return CommonResponse.success(results);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取用户详情")
|
||||||
|
@GetMapping("/users/{id}")
|
||||||
|
public CommonResponse getUser(@ApiParam("用户ID") @PathVariable Long id) {
|
||||||
|
UserVO result = userService.getOne(id);
|
||||||
|
return CommonResponse.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("删除用户")
|
||||||
|
@DeleteMapping("/users/{id}")
|
||||||
|
public CommonResponse deleteUser(@ApiParam("用户ID") @PathVariable Long id) {
|
||||||
|
userService.delete(id);
|
||||||
|
return CommonResponse.success();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
package cn.axzo.server.controller.web;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.framework.domain.page.PageResp;
|
||||||
|
import cn.axzo.framework.web.http.ApiResponse;
|
||||||
|
import cn.axzo.framework.web.http.ApiPageResponse;
|
||||||
|
import cn.axzo.server.service.dto.request.user.NewUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UpdateUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO1;
|
||||||
|
import cn.axzo.server.service.dto.response.user.UserVO;
|
||||||
|
import cn.axzo.server.service.user.UserService;
|
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/10/28
|
||||||
|
* @Description: 新项目搭建推荐方式
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "web-用户信息接口")
|
||||||
|
@ApiSupport(author = "田立勇")
|
||||||
|
@RequestMapping("/api/v2")
|
||||||
|
@RestController
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UserResource {
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "创建用户")
|
||||||
|
@PostMapping("/users")
|
||||||
|
public ApiResponse<UserVO> createUser(@Valid @RequestBody NewUserDTO dto) {
|
||||||
|
log.info("REST request to save user : {}", dto);
|
||||||
|
// 校验入参
|
||||||
|
dto.valid();
|
||||||
|
UserVO result = userService.create(dto);
|
||||||
|
return ApiResponse.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改用户")
|
||||||
|
@PutMapping("/users/{id}")
|
||||||
|
public ApiResponse<UserVO> updateUser(@ApiParam("用户ID") @PathVariable Long id,
|
||||||
|
@Valid @RequestBody UpdateUserDTO dto) {
|
||||||
|
log.info("REST request to update user : {}", dto);
|
||||||
|
// 校验入参
|
||||||
|
dto.valid();
|
||||||
|
UserVO result = userService.update(id, dto);
|
||||||
|
return ApiResponse.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取用户列表")
|
||||||
|
@GetMapping("/users")
|
||||||
|
public ApiPageResponse<UserVO> getUsers(@ModelAttribute UserQO1 userQo, PageQO page) {
|
||||||
|
PageResp<UserVO> results = userService.find(userQo, page);
|
||||||
|
return ApiPageResponse.ok(results);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("获取用户详情")
|
||||||
|
@GetMapping("/users/{id}")
|
||||||
|
public ApiResponse<UserVO> getUser(@ApiParam("用户ID") @PathVariable Long id) {
|
||||||
|
UserVO result = userService.getOne(id);
|
||||||
|
return ApiResponse.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("删除用户")
|
||||||
|
@DeleteMapping("/users/{id}")
|
||||||
|
public ApiResponse deleteUser(@ApiParam("用户ID") @PathVariable Long id) {
|
||||||
|
userService.delete(id);
|
||||||
|
return ApiResponse.ok();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.job;
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
package cn.axzo.server.repository;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.server.repository.mapper.UserMapper;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO1;
|
||||||
|
import cn.axzo.server.repository.entity.user.User;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UserDao extends ServiceImpl<UserMapper, User> {
|
||||||
|
|
||||||
|
private final UserMapper userMapper;
|
||||||
|
|
||||||
|
public User findById(Long id) {
|
||||||
|
return userMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(Long id) {
|
||||||
|
userMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPage<User> queryByPage(UserQO userQO) {
|
||||||
|
return userMapper.selectPage(userQO.toPage(),
|
||||||
|
Wrappers.lambdaQuery(User.class)
|
||||||
|
.eq(userQO.getId() != null, User::getId, userQO.getId())
|
||||||
|
.like(StringUtils.isNotBlank(userQO.getName()), User::getName, userQO.getName())
|
||||||
|
.like(StringUtils.isNotBlank(userQO.getPhone()), User::getPhone, userQO.getPhone())
|
||||||
|
.like(StringUtils.isNotBlank(userQO.getEmail()), User::getEmail, userQO.getEmail())
|
||||||
|
.orderByDesc(User::getCreateAt)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPage<User> find(UserQO1 userQO, PageQO page) {
|
||||||
|
return userMapper.selectPage(page.toPage(),
|
||||||
|
Wrappers.lambdaQuery(User.class)
|
||||||
|
.eq(userQO.getId() != null, User::getId, userQO.getId())
|
||||||
|
.like(StringUtils.isNotBlank(userQO.getName()), User::getName, userQO.getName())
|
||||||
|
.like(StringUtils.isNotBlank(userQO.getPhone()), User::getPhone, userQO.getPhone())
|
||||||
|
.like(StringUtils.isNotBlank(userQO.getEmail()), User::getEmail, userQO.getEmail())
|
||||||
|
.orderByDesc(User::getCreateAt)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.repository.entity;
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.axzo.server.repository.entity.user;
|
||||||
|
|
||||||
|
import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("b_user")
|
||||||
|
public class User extends BaseEntity<User> {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
private String address;
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package cn.axzo.server.repository.mapper;
|
||||||
|
|
||||||
|
import cn.axzo.server.repository.entity.user.User;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface UserMapper extends BaseMapper<User> {
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package cn.axzo.server.service.converter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
public interface EntityConverter<V, E>{
|
||||||
|
|
||||||
|
V toVo(E var);
|
||||||
|
|
||||||
|
List<V> toVo(List<E> var);
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package cn.axzo.server.service.converter;
|
||||||
|
|
||||||
|
import cn.axzo.server.service.dto.request.user.NewUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UpdateUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.response.user.UserVO;
|
||||||
|
import cn.axzo.server.repository.entity.user.User;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.MappingTarget;
|
||||||
|
|
||||||
|
import static org.mapstruct.NullValueCheckStrategy.ALWAYS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Mapper(
|
||||||
|
componentModel = "spring",
|
||||||
|
nullValueCheckStrategy = ALWAYS
|
||||||
|
)
|
||||||
|
public interface UserConverter extends EntityConverter<UserVO, User> {
|
||||||
|
|
||||||
|
User toEntity(NewUserDTO dto);
|
||||||
|
|
||||||
|
void updateEntity(UpdateUserDTO dto, @MappingTarget User user);
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.service.dto.request;
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package cn.axzo.server.service.dto.request.user;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class NewUserDTO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "名称", position = 1)
|
||||||
|
@NotBlank(message = "名称不能为空")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "性别", position = 2)
|
||||||
|
@NotNull
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "年龄", position = 3)
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "电话", position = 4)
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "邮箱", position = 5)
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "地址", position = 6)
|
||||||
|
private String address;
|
||||||
|
|
||||||
|
public void valid() {
|
||||||
|
// 电话和邮箱不能都为空
|
||||||
|
if (StringUtils.isEmpty(phone) && StringUtils.isEmpty(email)) {
|
||||||
|
throw new RuntimeException("电话和邮箱不能都为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
package cn.axzo.server.service.dto.request.user;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.web.ApiException;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
import static cn.axzo.server.common.enums.ErrorCode.USER_PHONE_EMAIL_IS_NULL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UpdateUserDTO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "名称", position = 1)
|
||||||
|
@NotBlank(message = "名称不能为空")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "性别", position = 2)
|
||||||
|
@NotNull
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "年龄", position = 3)
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "电话", position = 4)
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "邮箱", position = 5)
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "地址", position = 6)
|
||||||
|
private String address;
|
||||||
|
|
||||||
|
public void valid() {
|
||||||
|
// 电话和邮箱不能都为空
|
||||||
|
if (StringUtils.isEmpty(phone) && StringUtils.isEmpty(email)) {
|
||||||
|
throw new ApiException(USER_PHONE_EMAIL_IS_NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package cn.axzo.server.service.dto.request.user;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UserQO extends PageQO {
|
||||||
|
|
||||||
|
@ApiParam("主键")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiParam("姓名")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiParam("手机")
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
@ApiParam("邮箱")
|
||||||
|
private String email;
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package cn.axzo.server.service.dto.request.user;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/5
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UserQO1 {
|
||||||
|
|
||||||
|
@ApiParam("主键")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiParam("姓名")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiParam("手机")
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
@ApiParam("邮箱")
|
||||||
|
private String email;
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.service.dto.response;
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
package cn.axzo.server.service.dto.response.user;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UserVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "id", position = 1)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "名称", position = 2)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "性别", position = 3)
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "年龄", position = 4)
|
||||||
|
private Integer age;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "电话", position = 5)
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "邮箱", position = 6)
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "地址", position = 7)
|
||||||
|
private String address;
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.service.event;
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.service.manager;
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package cn.axzo.server.service.user;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.framework.domain.page.PageResp;
|
||||||
|
import cn.axzo.server.service.dto.request.user.NewUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UpdateUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO1;
|
||||||
|
import cn.axzo.server.service.dto.response.user.UserVO;
|
||||||
|
import cn.azxo.framework.common.model.CommonPageResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
public interface UserService {
|
||||||
|
UserVO create(NewUserDTO dto);
|
||||||
|
|
||||||
|
UserVO update(Long id, UpdateUserDTO dto);
|
||||||
|
|
||||||
|
UserVO getOne(Long id);
|
||||||
|
|
||||||
|
void delete(Long id);
|
||||||
|
|
||||||
|
CommonPageResponse<UserVO> queryByPage(UserQO userQO);
|
||||||
|
|
||||||
|
PageResp<UserVO> find(UserQO1 userQo, PageQO page);
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
package cn.axzo.server.service.user.impl;
|
||||||
|
|
||||||
|
import cn.axzo.framework.domain.page.PageQO;
|
||||||
|
import cn.axzo.framework.domain.page.PageResp;
|
||||||
|
import cn.axzo.framework.domain.web.ApiException;
|
||||||
|
import cn.axzo.server.common.enums.ErrorCode;
|
||||||
|
import cn.axzo.server.service.dto.request.user.NewUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UpdateUserDTO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO;
|
||||||
|
import cn.axzo.server.service.dto.request.user.UserQO1;
|
||||||
|
import cn.axzo.server.service.dto.response.user.UserVO;
|
||||||
|
import cn.axzo.server.repository.entity.user.User;
|
||||||
|
import cn.axzo.server.repository.UserDao;
|
||||||
|
import cn.axzo.server.service.user.UserService;
|
||||||
|
import cn.axzo.server.service.converter.UserConverter;
|
||||||
|
import cn.azxo.framework.common.model.CommonPageResponse;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liyong.tian
|
||||||
|
* @Date: 2022/9/2
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UserServiceImpl implements UserService {
|
||||||
|
|
||||||
|
private final UserConverter userConverter;
|
||||||
|
|
||||||
|
private final UserDao userDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserVO create(NewUserDTO dto) {
|
||||||
|
User user = userConverter.toEntity(dto);
|
||||||
|
userDao.save(user);
|
||||||
|
return userConverter.toVo(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserVO update(Long id, UpdateUserDTO dto) {
|
||||||
|
User user = userDao.findById(id);
|
||||||
|
if (user == null) {
|
||||||
|
throw new ApiException(ErrorCode.USER_NOT_EXISTS, id);
|
||||||
|
}
|
||||||
|
userConverter.updateEntity(dto, user);
|
||||||
|
return userConverter.toVo(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserVO getOne(Long id) {
|
||||||
|
User user = userDao.findById(id);
|
||||||
|
return userConverter.toVo(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delete(Long id) {
|
||||||
|
userDao.delete(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonPageResponse<UserVO> queryByPage(UserQO userQo) {
|
||||||
|
IPage<User> page = userDao.queryByPage(userQo);
|
||||||
|
List<User> userList = page.getRecords();
|
||||||
|
if (CollectionUtils.isEmpty(userList)) {
|
||||||
|
return CommonPageResponse.zero(userQo.getPage(), userQo.getPageSize());
|
||||||
|
}
|
||||||
|
return new CommonPageResponse<>(page.getCurrent(), page.getSize(), page.getTotal(), userConverter.toVo(page.getRecords()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResp<UserVO> find(UserQO1 userQo, PageQO page) {
|
||||||
|
IPage<User> userPage = userDao.find(userQo, page);
|
||||||
|
return PageResp.list(userPage, userConverter.toVo(userPage.getRecords()));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.axzo.server.service.validator;
|
||||||
37
workflow-engine-server/src/main/resources/bootstrap.yml
Normal file
37
workflow-engine-server/src/main/resources/bootstrap.yml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
spring:
|
||||||
|
application:
|
||||||
|
name: archetype-micro-standard
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
config:
|
||||||
|
server-addr: ${NACOS_HOST:test-nacos.axzo.cn}:${NACOS_PORT:80}
|
||||||
|
file-extension: yaml
|
||||||
|
namespace: ${NACOS_NAMESPACE_ID:f3c0f0d2-bac4-4498-bee7-9c3636b3afdf}
|
||||||
|
prefix: ${spring.application.name}
|
||||||
|
profiles:
|
||||||
|
active: ${NACOS_PROFILES_ACTIVE:test}
|
||||||
|
include: swagger
|
||||||
|
main:
|
||||||
|
allow-bean-definition-overriding: true
|
||||||
|
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
com.alibaba.nacos.client.config.impl: WARN
|
||||||
|
|
||||||
|
management:
|
||||||
|
endpoint:
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
prometheus:
|
||||||
|
enabled: true
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: "*"
|
||||||
|
metrics:
|
||||||
|
export:
|
||||||
|
prometheus:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
knife4j:
|
||||||
|
enable: true
|
||||||
10
workflow-engine-server/src/main/resources/logback-spring.xml
Normal file
10
workflow-engine-server/src/main/resources/logback-spring.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE xml>
|
||||||
|
<configuration>
|
||||||
|
<!-- 导入安心筑全局日志配置 -->
|
||||||
|
<include resource="logback/logback-axzo.xml" />
|
||||||
|
<!-- 覆盖开发环境日志配置 -->
|
||||||
|
<springProfile name="local,dev">
|
||||||
|
<logger name="cn.axzo" level="DEBUG" />
|
||||||
|
</springProfile>
|
||||||
|
</configuration>
|
||||||
696
workflow-engine-server/src/main/resources/sql/bpm-activiti.sql
Normal file
696
workflow-engine-server/src/main/resources/sql/bpm-activiti.sql
Normal file
@ -0,0 +1,696 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : 127.0.0.1
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 80026
|
||||||
|
Source Host : localhost:3306
|
||||||
|
Source Schema : ruoyi-vue-pro
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 80026
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 23/01/2022 01:30:47
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_EVT_LOG
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_EVT_LOG`;
|
||||||
|
CREATE TABLE `ACT_EVT_LOG` (
|
||||||
|
`LOG_NR_` bigint NOT NULL AUTO_INCREMENT,
|
||||||
|
`TYPE_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TIME_STAMP_` timestamp(3) NOT NULL,
|
||||||
|
`USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DATA_` longblob,
|
||||||
|
`LOCK_OWNER_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`IS_PROCESSED_` tinyint DEFAULT '0',
|
||||||
|
PRIMARY KEY (`LOG_NR_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_GE_BYTEARRAY
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_GE_BYTEARRAY`;
|
||||||
|
CREATE TABLE `ACT_GE_BYTEARRAY` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DEPLOYMENT_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`BYTES_` longblob,
|
||||||
|
`GENERATED_` tinyint DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_BYTEARR_DEPL` (`DEPLOYMENT_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_BYTEARR_DEPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `ACT_RE_DEPLOYMENT` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_GE_PROPERTY
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_GE_PROPERTY`;
|
||||||
|
CREATE TABLE `ACT_GE_PROPERTY` (
|
||||||
|
`NAME_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`VALUE_` varchar(300) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`NAME_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_ACTINST
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_ACTINST`;
|
||||||
|
CREATE TABLE `ACT_HI_ACTINST` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`ACT_ID_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CALL_PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ACT_NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ACT_TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`ASSIGNEE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`START_TIME_` datetime(3) NOT NULL,
|
||||||
|
`END_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`DURATION_` bigint DEFAULT NULL,
|
||||||
|
`DELETE_REASON_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_HI_ACT_INST_START` (`START_TIME_`),
|
||||||
|
KEY `ACT_IDX_HI_ACT_INST_END` (`END_TIME_`),
|
||||||
|
KEY `ACT_IDX_HI_ACT_INST_PROCINST` (`PROC_INST_ID_`,`ACT_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_ACT_INST_EXEC` (`EXECUTION_ID_`,`ACT_ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_ATTACHMENT
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_ATTACHMENT`;
|
||||||
|
CREATE TABLE `ACT_HI_ATTACHMENT` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DESCRIPTION_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`URL_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CONTENT_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_HI_ATTACHMENT
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_COMMENT
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_COMMENT`;
|
||||||
|
CREATE TABLE `ACT_HI_COMMENT` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TIME_` datetime(3) NOT NULL,
|
||||||
|
`USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ACTION_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`MESSAGE_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`FULL_MSG_` longblob,
|
||||||
|
PRIMARY KEY (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_DETAIL
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_DETAIL`;
|
||||||
|
CREATE TABLE `ACT_HI_DETAIL` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ACT_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`VAR_TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`TIME_` datetime(3) NOT NULL,
|
||||||
|
`BYTEARRAY_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DOUBLE_` double DEFAULT NULL,
|
||||||
|
`LONG_` bigint DEFAULT NULL,
|
||||||
|
`TEXT_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TEXT2_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_HI_DETAIL_PROC_INST` (`PROC_INST_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_DETAIL_ACT_INST` (`ACT_INST_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_DETAIL_TIME` (`TIME_`),
|
||||||
|
KEY `ACT_IDX_HI_DETAIL_NAME` (`NAME_`),
|
||||||
|
KEY `ACT_IDX_HI_DETAIL_TASK_ID` (`TASK_ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_IDENTITYLINK
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_IDENTITYLINK`;
|
||||||
|
CREATE TABLE `ACT_HI_IDENTITYLINK` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`GROUP_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_HI_IDENT_LNK_USER` (`USER_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_IDENT_LNK_TASK` (`TASK_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_IDENT_LNK_PROCINST` (`PROC_INST_ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_PROCINST
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_PROCINST`;
|
||||||
|
CREATE TABLE `ACT_HI_PROCINST` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`BUSINESS_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`START_TIME_` datetime(3) NOT NULL,
|
||||||
|
`END_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`DURATION_` bigint DEFAULT NULL,
|
||||||
|
`START_USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`START_ACT_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`END_ACT_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`SUPER_PROCESS_INSTANCE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DELETE_REASON_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
UNIQUE KEY `PROC_INST_ID_` (`PROC_INST_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_PRO_INST_END` (`END_TIME_`),
|
||||||
|
KEY `ACT_IDX_HI_PRO_I_BUSKEY` (`BUSINESS_KEY_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_TASKINST
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_TASKINST`;
|
||||||
|
CREATE TABLE `ACT_HI_TASKINST` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_DEF_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PARENT_TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DESCRIPTION_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`OWNER_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ASSIGNEE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`START_TIME_` datetime(3) NOT NULL,
|
||||||
|
`CLAIM_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`END_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`DURATION_` bigint DEFAULT NULL,
|
||||||
|
`DELETE_REASON_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PRIORITY_` int DEFAULT NULL,
|
||||||
|
`DUE_DATE_` datetime(3) DEFAULT NULL,
|
||||||
|
`FORM_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CATEGORY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_HI_TASK_INST_PROCINST` (`PROC_INST_ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_HI_VARINST
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_HI_VARINST`;
|
||||||
|
CREATE TABLE `ACT_HI_VARINST` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`VAR_TYPE_` varchar(100) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`BYTEARRAY_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DOUBLE_` double DEFAULT NULL,
|
||||||
|
`LONG_` bigint DEFAULT NULL,
|
||||||
|
`TEXT_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TEXT2_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CREATE_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`LAST_UPDATED_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_HI_PROCVAR_PROC_INST` (`PROC_INST_ID_`),
|
||||||
|
KEY `ACT_IDX_HI_PROCVAR_NAME_TYPE` (`NAME_`,`VAR_TYPE_`),
|
||||||
|
KEY `ACT_IDX_HI_PROCVAR_TASK_ID` (`TASK_ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_PROCDEF_INFO
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_PROCDEF_INFO`;
|
||||||
|
CREATE TABLE `ACT_PROCDEF_INFO` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`INFO_JSON_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
UNIQUE KEY `ACT_UNIQ_INFO_PROCDEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_IDX_INFO_PROCDEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_FK_INFO_JSON_BA` (`INFO_JSON_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_INFO_JSON_BA` FOREIGN KEY (`INFO_JSON_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_INFO_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_PROCDEF_INFO
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RE_DEPLOYMENT
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RE_DEPLOYMENT`;
|
||||||
|
CREATE TABLE `ACT_RE_DEPLOYMENT` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CATEGORY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
`DEPLOY_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`ENGINE_VERSION_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`VERSION_` int DEFAULT '1',
|
||||||
|
`PROJECT_RELEASE_VERSION_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RE_MODEL
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RE_MODEL`;
|
||||||
|
CREATE TABLE `ACT_RE_MODEL` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CATEGORY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`LAST_UPDATE_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`VERSION_` int DEFAULT NULL,
|
||||||
|
`META_INFO_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DEPLOYMENT_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EDITOR_SOURCE_VALUE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EDITOR_SOURCE_EXTRA_VALUE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_MODEL_SOURCE` (`EDITOR_SOURCE_VALUE_ID_`),
|
||||||
|
KEY `ACT_FK_MODEL_SOURCE_EXTRA` (`EDITOR_SOURCE_EXTRA_VALUE_ID_`),
|
||||||
|
KEY `ACT_FK_MODEL_DEPLOYMENT` (`DEPLOYMENT_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_MODEL_DEPLOYMENT` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `ACT_RE_DEPLOYMENT` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_MODEL_SOURCE` FOREIGN KEY (`EDITOR_SOURCE_VALUE_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_MODEL_SOURCE_EXTRA` FOREIGN KEY (`EDITOR_SOURCE_EXTRA_VALUE_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RE_PROCDEF
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RE_PROCDEF`;
|
||||||
|
CREATE TABLE `ACT_RE_PROCDEF` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`CATEGORY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`KEY_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`VERSION_` int NOT NULL,
|
||||||
|
`DEPLOYMENT_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`RESOURCE_NAME_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DGRM_RESOURCE_NAME_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DESCRIPTION_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HAS_START_FORM_KEY_` tinyint DEFAULT NULL,
|
||||||
|
`HAS_GRAPHICAL_NOTATION_` tinyint DEFAULT NULL,
|
||||||
|
`SUSPENSION_STATE_` int DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
`ENGINE_VERSION_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`APP_VERSION_` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
UNIQUE KEY `ACT_UNIQ_PROCDEF` (`KEY_`,`VERSION_`,`TENANT_ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_DEADLETTER_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_DEADLETTER_JOB`;
|
||||||
|
CREATE TABLE `ACT_RU_DEADLETTER_JOB` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`EXCLUSIVE_` tinyint(1) DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROCESS_INSTANCE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCEPTION_STACK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCEPTION_MSG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DUEDATE_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`REPEAT_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_CFG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_DEADLETTER_JOB_EXECUTION` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_DEADLETTER_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),
|
||||||
|
KEY `ACT_FK_DEADLETTER_JOB_PROC_DEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_FK_DEADLETTER_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_DEADLETTER_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_DEADLETTER_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_DEADLETTER_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_DEADLETTER_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_RU_DEADLETTER_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_EVENT_SUBSCR
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_EVENT_SUBSCR`;
|
||||||
|
CREATE TABLE `ACT_RU_EVENT_SUBSCR` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`EVENT_TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`EVENT_NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ACTIVITY_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CONFIGURATION_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CREATED_` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_EVENT_SUBSCR_CONFIG_` (`CONFIGURATION_`),
|
||||||
|
KEY `ACT_FK_EVENT_EXEC` (`EXECUTION_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_EVENT_EXEC` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_RU_EVENT_SUBSCR
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_EXECUTION
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_EXECUTION`;
|
||||||
|
CREATE TABLE `ACT_RU_EXECUTION` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`BUSINESS_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PARENT_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`SUPER_EXEC_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ROOT_PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ACT_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`IS_ACTIVE_` tinyint DEFAULT NULL,
|
||||||
|
`IS_CONCURRENT_` tinyint DEFAULT NULL,
|
||||||
|
`IS_SCOPE_` tinyint DEFAULT NULL,
|
||||||
|
`IS_EVENT_SCOPE_` tinyint DEFAULT NULL,
|
||||||
|
`IS_MI_ROOT_` tinyint DEFAULT NULL,
|
||||||
|
`SUSPENSION_STATE_` int DEFAULT NULL,
|
||||||
|
`CACHED_ENT_STATE_` int DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`START_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`START_USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`IS_COUNT_ENABLED_` tinyint DEFAULT NULL,
|
||||||
|
`EVT_SUBSCR_COUNT_` int DEFAULT NULL,
|
||||||
|
`TASK_COUNT_` int DEFAULT NULL,
|
||||||
|
`JOB_COUNT_` int DEFAULT NULL,
|
||||||
|
`TIMER_JOB_COUNT_` int DEFAULT NULL,
|
||||||
|
`SUSP_JOB_COUNT_` int DEFAULT NULL,
|
||||||
|
`DEADLETTER_JOB_COUNT_` int DEFAULT NULL,
|
||||||
|
`VAR_COUNT_` int DEFAULT NULL,
|
||||||
|
`ID_LINK_COUNT_` int DEFAULT NULL,
|
||||||
|
`APP_VERSION_` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_EXEC_BUSKEY` (`BUSINESS_KEY_`),
|
||||||
|
KEY `ACT_IDC_EXEC_ROOT` (`ROOT_PROC_INST_ID_`),
|
||||||
|
KEY `ACT_FK_EXE_PROCINST` (`PROC_INST_ID_`),
|
||||||
|
KEY `ACT_FK_EXE_PARENT` (`PARENT_ID_`),
|
||||||
|
KEY `ACT_FK_EXE_SUPER` (`SUPER_EXEC_`),
|
||||||
|
KEY `ACT_FK_EXE_PROCDEF` (`PROC_DEF_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_EXE_PARENT` FOREIGN KEY (`PARENT_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT `ACT_FK_EXE_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_EXE_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT `ACT_FK_EXE_SUPER` FOREIGN KEY (`SUPER_EXEC_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_IDENTITYLINK
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_IDENTITYLINK`;
|
||||||
|
CREATE TABLE `ACT_RU_IDENTITYLINK` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`GROUP_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`USER_ID_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_IDENT_LNK_USER` (`USER_ID_`),
|
||||||
|
KEY `ACT_IDX_IDENT_LNK_GROUP` (`GROUP_ID_`),
|
||||||
|
KEY `ACT_IDX_ATHRZ_PROCEDEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_FK_TSKASS_TASK` (`TASK_ID_`),
|
||||||
|
KEY `ACT_FK_IDL_PROCINST` (`PROC_INST_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_ATHRZ_PROCEDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_IDL_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TSKASS_TASK` FOREIGN KEY (`TASK_ID_`) REFERENCES `ACT_RU_TASK` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_INTEGRATION
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_INTEGRATION`;
|
||||||
|
CREATE TABLE `ACT_RU_INTEGRATION` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROCESS_INSTANCE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`FLOW_NODE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CREATED_DATE_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_INT_EXECUTION` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_INT_PROC_INST` (`PROCESS_INSTANCE_ID_`),
|
||||||
|
KEY `ACT_FK_INT_PROC_DEF` (`PROC_DEF_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_INT_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT `ACT_FK_INT_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_INT_PROC_INST` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_RU_INTEGRATION
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_JOB`;
|
||||||
|
CREATE TABLE `ACT_RU_JOB` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`LOCK_OWNER_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCLUSIVE_` tinyint(1) DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROCESS_INSTANCE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`RETRIES_` int DEFAULT NULL,
|
||||||
|
`EXCEPTION_STACK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCEPTION_MSG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DUEDATE_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`REPEAT_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_CFG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_JOB_EXECUTION` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),
|
||||||
|
KEY `ACT_FK_JOB_PROC_DEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_FK_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_RU_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_SUSPENDED_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_SUSPENDED_JOB`;
|
||||||
|
CREATE TABLE `ACT_RU_SUSPENDED_JOB` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`EXCLUSIVE_` tinyint(1) DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROCESS_INSTANCE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`RETRIES_` int DEFAULT NULL,
|
||||||
|
`EXCEPTION_STACK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCEPTION_MSG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DUEDATE_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`REPEAT_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_CFG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_SUSPENDED_JOB_EXECUTION` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_SUSPENDED_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),
|
||||||
|
KEY `ACT_FK_SUSPENDED_JOB_PROC_DEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_FK_SUSPENDED_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_SUSPENDED_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_SUSPENDED_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_SUSPENDED_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_SUSPENDED_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_RU_SUSPENDED_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_TASK
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_TASK`;
|
||||||
|
CREATE TABLE `ACT_RU_TASK` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`BUSINESS_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PARENT_TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DESCRIPTION_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_DEF_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`OWNER_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`ASSIGNEE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DELEGATION_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PRIORITY_` int DEFAULT NULL,
|
||||||
|
`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`DUE_DATE_` datetime(3) DEFAULT NULL,
|
||||||
|
`CATEGORY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`SUSPENSION_STATE_` int DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
`FORM_KEY_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`CLAIM_TIME_` datetime(3) DEFAULT NULL,
|
||||||
|
`APP_VERSION_` int DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_TASK_CREATE` (`CREATE_TIME_`),
|
||||||
|
KEY `ACT_FK_TASK_EXE` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_TASK_PROCINST` (`PROC_INST_ID_`),
|
||||||
|
KEY `ACT_FK_TASK_PROCDEF` (`PROC_DEF_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TASK_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TASK_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TASK_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_TIMER_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_TIMER_JOB`;
|
||||||
|
CREATE TABLE `ACT_RU_TIMER_JOB` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`LOCK_OWNER_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCLUSIVE_` tinyint(1) DEFAULT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROCESS_INSTANCE_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_DEF_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`RETRIES_` int DEFAULT NULL,
|
||||||
|
`EXCEPTION_STACK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`EXCEPTION_MSG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DUEDATE_` timestamp(3) NULL DEFAULT NULL,
|
||||||
|
`REPEAT_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_TYPE_` varchar(255) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`HANDLER_CFG_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TENANT_ID_` varchar(255) COLLATE utf8_bin DEFAULT '',
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_FK_TIMER_JOB_EXECUTION` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_TIMER_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),
|
||||||
|
KEY `ACT_FK_TIMER_JOB_PROC_DEF` (`PROC_DEF_ID_`),
|
||||||
|
KEY `ACT_FK_TIMER_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TIMER_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TIMER_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TIMER_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_TIMER_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of ACT_RU_TIMER_JOB
|
||||||
|
-- ----------------------------
|
||||||
|
BEGIN;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for ACT_RU_VARIABLE
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `ACT_RU_VARIABLE`;
|
||||||
|
CREATE TABLE `ACT_RU_VARIABLE` (
|
||||||
|
`ID_` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
|
`REV_` int DEFAULT NULL,
|
||||||
|
`TYPE_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`NAME_` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||||
|
`EXECUTION_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`PROC_INST_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TASK_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`BYTEARRAY_ID_` varchar(64) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`DOUBLE_` double DEFAULT NULL,
|
||||||
|
`LONG_` bigint DEFAULT NULL,
|
||||||
|
`TEXT_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
`TEXT2_` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_`),
|
||||||
|
KEY `ACT_IDX_VARIABLE_TASK_ID` (`TASK_ID_`),
|
||||||
|
KEY `ACT_FK_VAR_EXE` (`EXECUTION_ID_`),
|
||||||
|
KEY `ACT_FK_VAR_PROCINST` (`PROC_INST_ID_`),
|
||||||
|
KEY `ACT_FK_VAR_BYTEARRAY` (`BYTEARRAY_ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_VAR_BYTEARRAY` FOREIGN KEY (`BYTEARRAY_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_VAR_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),
|
||||||
|
CONSTRAINT `ACT_FK_VAR_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
1376
workflow-engine-server/src/main/resources/sql/bpm-flowable.sql
Normal file
1376
workflow-engine-server/src/main/resources/sql/bpm-flowable.sql
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,14 @@
|
|||||||
|
package cn.axzo.maven.archetype.server;
|
||||||
|
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
public class AppTest {
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user