Browse Source

2.0-项目管理xm更新

1产品、项目列表后端增加根据部门自动过滤无权限查询的数据
2前端页面产品设置、项目设置分别增加了开发程度选项
3前端页面产品编辑、项目编辑分别增加归属部门字段
4表xm_product、xm_project增加字段show_out、deptid_path
master
陈裕财 2 years ago
parent
commit
831ad6c1ed
  1. 13
      xm-bootstrap/pom.xml
  2. 2
      xm-bootstrap/src/main/java/com/XmApplication.java
  3. 19
      xm-bootstrap/src/main/resources/application-prod.yml
  4. 0
      xm-cloud-bootstrap/README.md
  5. 52
      xm-cloud-bootstrap/pom.xml
  6. 15
      xm-cloud-bootstrap/src/main/java/com/AutoConfig.java
  7. 100
      xm-cloud-bootstrap/src/main/java/com/SwaggerConfig.java
  8. 66
      xm-cloud-bootstrap/src/main/java/com/WebSecurityConfig.java
  9. 17
      xm-cloud-bootstrap/src/main/java/com/XmApplication.java
  10. 278
      xm-cloud-bootstrap/src/main/resources/application-prod.yml
  11. 5
      xm-cloud-bootstrap/src/main/resources/application.yml
  12. 510
      xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.engine.sql
  13. 156
      xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.history.sql
  14. 48
      xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.identity.sql
  15. 8
      xm-cloud-bootstrap/src/main/resources/locale/message_zh.properties
  16. 36
      xm-cloud-bootstrap/src/main/resources/logback-spring.xml
  17. 0
      xm-cloud-bootstrap/src/main/resources/processes/readme.txt
  18. 10
      xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java
  19. 11
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java
  20. 7
      xm-core/src/main/java/com/xm/core/entity/XmProduct.java
  21. 5
      xm-core/src/main/java/com/xm/core/entity/XmProject.java
  22. 16
      xm-core/src/main/java/com/xm/core/mapper/XmProductMapper.xml
  23. 17
      xm-core/src/main/java/com/xm/core/mapper/XmProjectMapper.xml

13
xm-bootstrap/pom.xml

@ -4,26 +4,21 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>xm-bootstrap</artifactId>
<packaging>jar</packaging>
<name>xm-bootstrap 唛盟云-项目管理系统服务端启动器</name>
<name>xm-bootstrap 唛盟云-项目管理系统服务端单体应用启动器</name>
<parent>
<groupId>com.xm</groupId>
<artifactId>xm-backend</artifactId>
<version>2.0.0-RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>com.xm</groupId>
<artifactId>xm-core</artifactId>
</dependency>
<dependency>
<groupId>com.mdp</groupId>
<artifactId>mdp-oauth2-client-cloud</artifactId>
<artifactId>mdp-boot-starter</artifactId>
<version>${mdp.version}</version>
</dependency>
<dependency>
<groupId>com.mdp</groupId>
<artifactId>mdp-cloud-starter</artifactId>
<version>${mdp.version}</version>
<groupId>com.xm</groupId>
<artifactId>xm-core</artifactId>
</dependency>
</dependencies>
<build>

2
xm-bootstrap/src/main/java/com/XmApplication.java

@ -1,10 +1,8 @@
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@SpringCloudApplication
@EnableRedisHttpSession
public class XmApplication {

19
xm-bootstrap/src/main/resources/application-prod.yml

@ -268,10 +268,25 @@ logging:
# mdp平台授权验证服务器访问地址 cloud环境下换成 http://gate,本地调试如果不起验证服务器,可改为 https://www.qingqinkj.com/api/m1/oauth2/oauth2
# 客户端必须在数据库表adm.oauth_client_details中配置,否则无法访问
mdp:
api-gate: http://gate
#cloud环境下换成 http://gate,如果是本地运行,填写服务器的gate的微服务的ip地址及端口即可;如果不需要调第三方接口,无须填写
api-gate: http://127.0.0.1:7014
#平台管理机构号
platform-branch-id: platform-branch-001
# 站点语言类型cn\en等
#配置图片文件上传下载的相关参数
arc:
#图片上传存放的根目录
image-upload-root-path: D:/arcfile/images
#图片下载、预览的url前缀
image-download-base-uri: https://127.0.1:7014/
#文件上传存放的根目录
file-upload-root-path: D:/arcfile/files
#文件下载、预览的url前缀
file-download-base-uri: https://127.0.1:7014/
# 站点语言类型中文站点cn、英文站点en等
site-type: cn
jwt:
# 如果不对接oauth2授权中心,jwt将由本地系统自行分发自行验证 设为false
connect-oauth2-server: false
oauth2:
server:
uri: http://oauth2server

0
xm-cloud-bootstrap/README.md

52
xm-cloud-bootstrap/pom.xml

@ -0,0 +1,52 @@
<?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>
<artifactId>xm-bootstrap</artifactId>
<packaging>jar</packaging>
<name>xm-bootstrap 唛盟云-项目管理系统服务端cloud启动器</name>
<parent>
<groupId>com.xm</groupId>
<artifactId>xm-backend</artifactId>
<version>2.0.0-RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>com.xm</groupId>
<artifactId>xm-core</artifactId>
</dependency>
<dependency>
<groupId>com.mdp</groupId>
<artifactId>mdp-oauth2-client-cloud</artifactId>
<version>${mdp.version}</version>
</dependency>
<dependency>
<groupId>com.mdp</groupId>
<artifactId>mdp-cloud-starter</artifactId>
<version>${mdp.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<description>唛盟云-项目管理系统微服务启动器</description>
</project>

15
xm-cloud-bootstrap/src/main/java/com/AutoConfig.java

@ -0,0 +1,15 @@
package com;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* 要使用mdp平台功能必须 扫码com.mdp包
* 一些默认公共配置
*/
@ComponentScan(basePackages={"com.mdp"})
@Configuration
public class AutoConfig {
}

100
xm-cloud-bootstrap/src/main/java/com/SwaggerConfig.java

@ -0,0 +1,100 @@
package com;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* api 文档,
* 生产环境需要禁止访问,每个项目需要单独引入swagger包不能继承
* 如果要mdp swagger enhance生效必须 把启动文件置于com.mdp的上层或者顶层目录下否则加载不到升级文件
* mdp swagger enhance主要解决的是接收参数是map的时候的文档输出问题参考 https://blog.csdn.net/x11819130/article/details/111608470
* 需要将下面路径放到 WebSecurityConfig
*
* "/swagger-ui.html",
* "/webjars/**",
* "/swagger-ui/**",
* "/swagger-resources/**",
* "/v2/*",
* "/csrf",
* "/"
*/
//@ConditionalOnProperty(havingValue = "dev",name = {"spring.profiles.active"})
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value(value = "${spring.application.name:}")
String applicationName="";
@Value(value = "${spring.application.name:}")
String springProfilesActive="";
@Value(value = "${server.port:}")
String serverPort="";
@Value(value = "${swagger2.enable:true}")
boolean enableSwagger2;
@Bean
public Docket customDocket() {
ParameterBuilder tokenPar= new ParameterBuilder();
List<Parameter> pars=new ArrayList<>();
tokenPar.name("Authorization").description("令牌 格式:【bearer 令牌值】,注意bearer后根一个空格。").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
tokenPar.name("accessToken").description("令牌,直接填写令牌值").modelRef(new ModelRef("string")).parameterType("query").required(false).build();
pars.add(tokenPar.build());
Docket docket= new Docket(DocumentationType.SWAGGER_2).select().
apis(RequestHandlerSelectors.any())
.build().globalOperationParameters(pars)
.apiInfo(apiInfo()).enable(enableSwagger2);
/*
* 下面的语句是开启对JWT的支持当用户用Swagger调用受JWT认证保护的方法
* 必须要先提交参数例如令牌
*/
//存储用户必须提交的参数
List<ApiKey> apikey = new ArrayList();
//规定用户需要输入什么参数
apikey.add(new ApiKey("accesToken", "accesToken", "accesToken"));
docket.securitySchemes(apikey);
//以下定义如果用户JWT认证通过则在Swagger中全局有效
AuthorizationScope scope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] scopeArray = {scope};
//存储令牌和作用域
SecurityReference reference = new SecurityReference("token", scopeArray);
List refList = new ArrayList();
refList.add(reference);
SecurityContext context = SecurityContext.builder().securityReferences(refList).build();
List cxtList = new ArrayList();
cxtList.add(context);
docket.securityContexts(cxtList);
return docket;
}
private ApiInfo apiInfo() {
Contact contact = new Contact("广州擎勤网络科技有限公司", String.format("https://www.qingqinkj.com/api/m1/%s/swagger-ui.html",applicationName), "cyc58469@163.com");
return new ApiInfoBuilder()
.title("唛盟接口")
.description(String.format("接口文档 本地访问地址 http://localhost:%s/swagger-ui.html",serverPort))
.contact(contact)
.version("1.0.0")
.build();
}
}

66
xm-cloud-bootstrap/src/main/java/com/WebSecurityConfig.java

@ -0,0 +1,66 @@
package com;
import com.mdp.safe.client.jwt.JwtAuthenticationConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.jwt.JwtDecoder;
/**
* com.qqkj.WebSecurityConfig
*
* @author chenyc
* @date 2019/10/10
*/
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
JwtAuthenticationConverter jwtConverter;
@Autowired
JwtDecoder jwtDecoder;
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/webjars/**");
}
/**
* 允许匿名访问所有接口 主要是 oauth 接口
* @param http
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers(
"/**/xm/core/xmTask/shareTaskDetail",
"/**/xm/core/xmTask/getOutTask",
"/**/xm/core/xmTask/upBrowseTimes",
"/**/xm/core/xmBranchState/list/portal/allBranchSum",
"/**/xm/core/xmProjectState/list/portal",
"/**/core/xmRecordVisit/add",
"/swagger-ui.html",
"/webjars/**",
"/swagger-ui/**",
"/swagger-resources/**",
"/v2/*",
"/csrf",
"/"
).permitAll().
anyRequest().authenticated();
http.oauth2Client().and().logout().disable();
http.formLogin().usernameParameter("userloginid");
http.oauth2Login();
http.oauth2ResourceServer().jwt().decoder(jwtDecoder).jwtAuthenticationConverter(jwtConverter);
http.csrf().disable();
}
}

17
xm-cloud-bootstrap/src/main/java/com/XmApplication.java

@ -0,0 +1,17 @@
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@SpringCloudApplication
@EnableRedisHttpSession
public class XmApplication {
public static void main(String[] args) {
SpringApplication.run(XmApplication.class,args);
}
}

278
xm-cloud-bootstrap/src/main/resources/application-prod.yml

@ -0,0 +1,278 @@
server:
port: 7067
servlet:
context-path:
session:
timeout: 43200
storeType: none
tomcat:
max-swallow-size: -1
util:
http:
parser:
HttpParser: requestTargetAllow=|{}[]
error:
include-exception: true
include-stacktrace: ALWAYS
include-message: ALWAYS
compression:
enabled: true
min-response-size: 1024
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
management:
endpoints:
web:
exposure:
include: metrics,httptrace
spring:
cloud:
consul:
host: 134.175.57.249
port: 8500
inetutils:
preferredNetworks[0]: ^10\.
preferredNetworks[1]: ^172\.
discovery:
prefer-ip-address: true
healthCheckInterval: 15s
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
# 安全模块
security:
oauth2:
resourceserver:
jwt:
jwk-set-uri: ${mdp.oauth2.server.uri}/oauth2/jwks
client:
# 下面配置 password 模式
registration:
password-client:
provider: def-oauth-server
client-id: ${spring.application.name}
client-secret: ${spring.application.name}-8888
authorization-grant-type: password
scope: all
# 下面配置 client_credentials 模式
def-client:
provider: def-oauth-server
client-id: ${spring.application.name}
client-secret: ${spring.application.name}-8888
authorization-grant-type: client_credentials
scope: all
# 下面配置authorization_code模式
code-client:
provider: def-oauth-server
client-id: ${spring.application.name}
client-secret: ${spring.application.name}-8888
authorization-grant-type: authorization_code
# 授权码模式下需要配置重定向地址
redirect-uri: ${messages.base-uri}/authorized
scope: all
provider:
def-oauth-server:
# 授权码方式获取code
authorization-uri: ${mdp.oauth2.server.uri}/oauth2/authorize
# 获取token接口
token-uri: ${mdp.oauth2.server.uri}/oauth2/token
mail:
host: smtp.mxhichina.com
port: 25
username: kf@qingqinkj.com
password: QqKj@169$458
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
socketFactoryClass: javax.net.ssl.SSLSocketFactory
debug: true
jackson:
mapper:
default-view-inclusion: false
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
serialization:
indent_output: true
fail_on_empty_beans: false
deserialization:
fail_on_unknown_properties: false
parser:
allow_unquoted_control_chars: true
allow_single_quotes: true
mvc:
date-format: yyyy-MM-dd HH:mm:ss
## quartz定时任务,采用数据库方式
quartz:
job-store-type: jdbc
initialize-schema: embedded
#定时任务启动开关,true-开 false-关
auto-startup: false
#启动时更新己存在的Job
overwrite-existing-jobs: false
properties:
org:
quartz:
scheduler:
instanceName: MyScheduler
instanceId: AUTO
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix: QRTZ_
isClustered: true
misfireThreshold: 60000
clusterCheckinInterval: 10000
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 10
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
jpa:
open-in-view: false
activiti:
check-process-definitions: false
#启用作业执行器
async-executor-activate: false
#启用异步执行器
job-executor-activate: false
aop:
proxy-target-class: true
#配置freemarker
freemarker:
# 设置模板后缀名
suffix: .ftl
# 设置文档类型
content-type: text/html
# 设置页面编码格式
charset: UTF-8
# 设置页面缓存
cache: false
prefer-file-system-access: false
# 设置ftl文件路径
template-loader-path:
- classpath:/templates
resource:
static-locations: classpath:/static/,classpath:/public/
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
primary: master
strict: false,
druid:
stat-view-servlet:
enabled: true
loginUsername: root
loginPassword: 123456
allow:
web-stat-filter:
enabled: true
dynamic:
druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
# url: jdbc:mysql://124.223.85.6:31605/xm?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
#username: zchcgl
#password: zchcgl123!@#
#driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://123.207.117.5:3306/xm?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=CTT
username: root
password: 1qaz@WSX
driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置
#multi-datasource1:
#url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
#username: root
#password: root
#driver-class-name: com.mysql.cj.jdbc.Driver
mem-ds:
url: jdbc:mysql://123.207.117.5:3306/adm?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=CTT
username: root
password: 1qaz@WSX
driver-class-name: com.mysql.cj.jdbc.Driver
mall-ds:
url: jdbc:mysql://123.207.117.5:3306/adm?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=CTT
username: root
password: 1qaz@WSX
driver-class-name: com.mysql.cj.jdbc.Driver
#redis 配置
redis:
database: 0
host: 134.175.57.249
timeout: 300s
lettuce:
pool:
max-active: 8 #最大连接数据库连接数,设 -1 为没有限制
max-idle: 20 #最大等待连接中的数量,设 0 为没有限制
max-wait: 10000 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
min-idle: 8 #最小等待连接中的数量,设 0 为没有限制
shutdown-timeout: 100ms
password: QqKj*123
port: 6379
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:/**/**Mapper.xml
global-config:
# 关闭MP3.0自带的banner
banner: false
db-config:
#主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
id-type: ASSIGN_ID
# 默认数据库表下划线命名
table-underline: true
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 返回类型为Map,显示null对应的字段
call-setters-on-nulls: true
#Mybatis输出sql日志
logging:
level:
org.jeecg.modules.system.mapper : info
# mdp平台授权验证服务器访问地址 cloud环境下换成 http://gate,本地调试如果不起验证服务器,可改为 https://www.qingqinkj.com/api/m1/oauth2/oauth2
# 客户端必须在数据库表adm.oauth_client_details中配置,否则无法访问
mdp:
api-gate: http://gate
platform-branch-id: platform-branch-001
# 站点语言类型cn\en等
site-type: cn
oauth2:
server:
uri: http://oauth2server

5
xm-cloud-bootstrap/src/main/resources/application.yml

@ -0,0 +1,5 @@
spring:
application:
name: xm
profiles:
active: prod

510
xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.engine.sql

@ -0,0 +1,510 @@
create table ACT_GE_PROPERTY (
NAME_ NVARCHAR2(64),
VALUE_ NVARCHAR2(300),
REV_ INTEGER,
primary key (NAME_)
);
insert into ACT_GE_PROPERTY
values ('schema.version', '6.0.0.4', 1);
insert into ACT_GE_PROPERTY
values ('schema.history', 'create(6.0.0.4)', 1);
insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1);
create table ACT_GE_BYTEARRAY (
ID_ NVARCHAR2(64),
REV_ INTEGER,
NAME_ NVARCHAR2(255),
DEPLOYMENT_ID_ NVARCHAR2(64),
BYTES_ BLOB,
GENERATED_ NUMBER(1,0) CHECK (GENERATED_ IN (1,0)),
primary key (ID_)
);
create table ACT_RE_DEPLOYMENT (
ID_ NVARCHAR2(64),
NAME_ NVARCHAR2(255),
CATEGORY_ NVARCHAR2(255),
KEY_ NVARCHAR2(255),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
DEPLOY_TIME_ TIMESTAMP(6),
ENGINE_VERSION_ NVARCHAR2(255),
primary key (ID_)
);
create table ACT_RE_MODEL (
ID_ NVARCHAR2(64) not null,
REV_ INTEGER,
NAME_ NVARCHAR2(255),
KEY_ NVARCHAR2(255),
CATEGORY_ NVARCHAR2(255),
CREATE_TIME_ TIMESTAMP(6),
LAST_UPDATE_TIME_ TIMESTAMP(6),
VERSION_ INTEGER,
META_INFO_ NVARCHAR2(2000),
DEPLOYMENT_ID_ NVARCHAR2(64),
EDITOR_SOURCE_VALUE_ID_ NVARCHAR2(64),
EDITOR_SOURCE_EXTRA_VALUE_ID_ NVARCHAR2(64),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
primary key (ID_)
);
create table ACT_RU_EXECUTION (
ID_ NVARCHAR2(64),
REV_ INTEGER,
PROC_INST_ID_ NVARCHAR2(64),
BUSINESS_KEY_ NVARCHAR2(255),
PARENT_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
SUPER_EXEC_ NVARCHAR2(64),
ROOT_PROC_INST_ID_ NVARCHAR2(64),
ACT_ID_ NVARCHAR2(255),
IS_ACTIVE_ NUMBER(1,0) CHECK (IS_ACTIVE_ IN (1,0)),
IS_CONCURRENT_ NUMBER(1,0) CHECK (IS_CONCURRENT_ IN (1,0)),
IS_SCOPE_ NUMBER(1,0) CHECK (IS_SCOPE_ IN (1,0)),
IS_EVENT_SCOPE_ NUMBER(1,0) CHECK (IS_EVENT_SCOPE_ IN (1,0)),
IS_MI_ROOT_ NUMBER(1,0) CHECK (IS_MI_ROOT_ IN (1,0)),
SUSPENSION_STATE_ INTEGER,
CACHED_ENT_STATE_ INTEGER,
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
NAME_ NVARCHAR2(255),
START_TIME_ TIMESTAMP(6),
START_USER_ID_ NVARCHAR2(255),
LOCK_TIME_ TIMESTAMP(6),
IS_COUNT_ENABLED_ NUMBER(1,0) CHECK (IS_COUNT_ENABLED_ IN (1,0)),
EVT_SUBSCR_COUNT_ INTEGER,
TASK_COUNT_ INTEGER,
JOB_COUNT_ INTEGER,
TIMER_JOB_COUNT_ INTEGER,
SUSP_JOB_COUNT_ INTEGER,
DEADLETTER_JOB_COUNT_ INTEGER,
VAR_COUNT_ INTEGER,
ID_LINK_COUNT_ INTEGER,
primary key (ID_)
);
create table ACT_RU_JOB (
ID_ NVARCHAR2(64) NOT NULL,
REV_ INTEGER,
TYPE_ NVARCHAR2(255) NOT NULL,
LOCK_EXP_TIME_ TIMESTAMP(6),
LOCK_OWNER_ NVARCHAR2(255),
EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)),
EXECUTION_ID_ NVARCHAR2(64),
PROCESS_INSTANCE_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
RETRIES_ INTEGER,
EXCEPTION_STACK_ID_ NVARCHAR2(64),
EXCEPTION_MSG_ NVARCHAR2(2000),
DUEDATE_ TIMESTAMP(6),
REPEAT_ NVARCHAR2(255),
HANDLER_TYPE_ NVARCHAR2(255),
HANDLER_CFG_ NVARCHAR2(2000),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
primary key (ID_)
);
create table ACT_RU_TIMER_JOB (
ID_ NVARCHAR2(64) NOT NULL,
REV_ INTEGER,
TYPE_ NVARCHAR2(255) NOT NULL,
LOCK_EXP_TIME_ TIMESTAMP(6),
LOCK_OWNER_ NVARCHAR2(255),
EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)),
EXECUTION_ID_ NVARCHAR2(64),
PROCESS_INSTANCE_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
RETRIES_ INTEGER,
EXCEPTION_STACK_ID_ NVARCHAR2(64),
EXCEPTION_MSG_ NVARCHAR2(2000),
DUEDATE_ TIMESTAMP(6),
REPEAT_ NVARCHAR2(255),
HANDLER_TYPE_ NVARCHAR2(255),
HANDLER_CFG_ NVARCHAR2(2000),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
primary key (ID_)
);
create table ACT_RU_SUSPENDED_JOB (
ID_ NVARCHAR2(64) NOT NULL,
REV_ INTEGER,
TYPE_ NVARCHAR2(255) NOT NULL,
EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)),
EXECUTION_ID_ NVARCHAR2(64),
PROCESS_INSTANCE_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
RETRIES_ INTEGER,
EXCEPTION_STACK_ID_ NVARCHAR2(64),
EXCEPTION_MSG_ NVARCHAR2(2000),
DUEDATE_ TIMESTAMP(6),
REPEAT_ NVARCHAR2(255),
HANDLER_TYPE_ NVARCHAR2(255),
HANDLER_CFG_ NVARCHAR2(2000),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
primary key (ID_)
);
create table ACT_RU_DEADLETTER_JOB (
ID_ NVARCHAR2(64) NOT NULL,
REV_ INTEGER,
TYPE_ NVARCHAR2(255) NOT NULL,
EXCLUSIVE_ NUMBER(1,0) CHECK (EXCLUSIVE_ IN (1,0)),
EXECUTION_ID_ NVARCHAR2(64),
PROCESS_INSTANCE_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
EXCEPTION_STACK_ID_ NVARCHAR2(64),
EXCEPTION_MSG_ NVARCHAR2(2000),
DUEDATE_ TIMESTAMP(6),
REPEAT_ NVARCHAR2(255),
HANDLER_TYPE_ NVARCHAR2(255),
HANDLER_CFG_ NVARCHAR2(2000),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
primary key (ID_)
);
create table ACT_RE_PROCDEF (
ID_ NVARCHAR2(64) NOT NULL,
REV_ INTEGER,
CATEGORY_ NVARCHAR2(255),
NAME_ NVARCHAR2(255),
KEY_ NVARCHAR2(255) NOT NULL,
VERSION_ INTEGER NOT NULL,
DEPLOYMENT_ID_ NVARCHAR2(64),
RESOURCE_NAME_ NVARCHAR2(2000),
DGRM_RESOURCE_NAME_ varchar(4000),
DESCRIPTION_ NVARCHAR2(2000),
HAS_START_FORM_KEY_ NUMBER(1,0) CHECK (HAS_START_FORM_KEY_ IN (1,0)),
HAS_GRAPHICAL_NOTATION_ NUMBER(1,0) CHECK (HAS_GRAPHICAL_NOTATION_ IN (1,0)),
SUSPENSION_STATE_ INTEGER,
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
ENGINE_VERSION_ NVARCHAR2(255),
primary key (ID_)
);
create table ACT_RU_TASK (
ID_ NVARCHAR2(64),
REV_ INTEGER,
EXECUTION_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
NAME_ NVARCHAR2(255),
PARENT_TASK_ID_ NVARCHAR2(64),
DESCRIPTION_ NVARCHAR2(2000),
TASK_DEF_KEY_ NVARCHAR2(255),
OWNER_ NVARCHAR2(255),
ASSIGNEE_ NVARCHAR2(255),
DELEGATION_ NVARCHAR2(64),
PRIORITY_ INTEGER,
CREATE_TIME_ TIMESTAMP(6),
DUE_DATE_ TIMESTAMP(6),
CATEGORY_ NVARCHAR2(255),
SUSPENSION_STATE_ INTEGER,
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
FORM_KEY_ NVARCHAR2(255),
CLAIM_TIME_ TIMESTAMP(6),
primary key (ID_)
);
create table ACT_RU_IDENTITYLINK (
ID_ NVARCHAR2(64),
REV_ INTEGER,
GROUP_ID_ NVARCHAR2(255),
TYPE_ NVARCHAR2(255),
USER_ID_ NVARCHAR2(255),
TASK_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
primary key (ID_)
);
create table ACT_RU_VARIABLE (
ID_ NVARCHAR2(64) not null,
REV_ INTEGER,
TYPE_ NVARCHAR2(255) not null,
NAME_ NVARCHAR2(255) not null,
EXECUTION_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
TASK_ID_ NVARCHAR2(64),
BYTEARRAY_ID_ NVARCHAR2(64),
DOUBLE_ NUMBER(*,10),
LONG_ NUMBER(19,0),
TEXT_ NVARCHAR2(2000),
TEXT2_ NVARCHAR2(2000),
primary key (ID_)
);
create table ACT_RU_EVENT_SUBSCR (
ID_ NVARCHAR2(64) not null,
REV_ integer,
EVENT_TYPE_ NVARCHAR2(255) not null,
EVENT_NAME_ NVARCHAR2(255),
EXECUTION_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
ACTIVITY_ID_ NVARCHAR2(64),
CONFIGURATION_ NVARCHAR2(255),
CREATED_ TIMESTAMP(6) not null,
PROC_DEF_ID_ NVARCHAR2(64),
TENANT_ID_ NVARCHAR2(255) DEFAULT '',
primary key (ID_)
);
create table ACT_EVT_LOG (
LOG_NR_ NUMBER(19),
TYPE_ NVARCHAR2(64),
PROC_DEF_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
EXECUTION_ID_ NVARCHAR2(64),
TASK_ID_ NVARCHAR2(64),
TIME_STAMP_ TIMESTAMP(6) not null,
USER_ID_ NVARCHAR2(255),
DATA_ BLOB,
LOCK_OWNER_ NVARCHAR2(255),
LOCK_TIME_ TIMESTAMP(6) null,
IS_PROCESSED_ NUMBER(3) default 0,
primary key (LOG_NR_)
);
create sequence act_evt_log_seq;
create table ACT_PROCDEF_INFO (
ID_ NVARCHAR2(64) not null,
PROC_DEF_ID_ NVARCHAR2(64) not null,
REV_ integer,
INFO_JSON_ID_ NVARCHAR2(64),
primary key (ID_)
);
create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
create index ACT_IDX_EXEC_ROOT on ACT_RU_EXECUTION(ROOT_PROC_INST_ID_);
create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_);
create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_);
create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_);
create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_);
create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_);
create index ACT_IDX_BYTEAR_DEPL on ACT_GE_BYTEARRAY(DEPLOYMENT_ID_);
alter table ACT_GE_BYTEARRAY
add constraint ACT_FK_BYTEARR_DEPL
foreign key (DEPLOYMENT_ID_)
references ACT_RE_DEPLOYMENT (ID_);
alter table ACT_RE_PROCDEF
add constraint ACT_UNIQ_PROCDEF
unique (KEY_,VERSION_, TENANT_ID_);
create index ACT_IDX_EXE_PROCINST on ACT_RU_EXECUTION(PROC_INST_ID_);
alter table ACT_RU_EXECUTION
add constraint ACT_FK_EXE_PROCINST
foreign key (PROC_INST_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_EXE_PARENT on ACT_RU_EXECUTION(PARENT_ID_);
alter table ACT_RU_EXECUTION
add constraint ACT_FK_EXE_PARENT
foreign key (PARENT_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_EXE_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_);
alter table ACT_RU_EXECUTION
add constraint ACT_FK_EXE_SUPER
foreign key (SUPER_EXEC_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_EXE_PROCDEF on ACT_RU_EXECUTION(PROC_DEF_ID_);
alter table ACT_RU_EXECUTION
add constraint ACT_FK_EXE_PROCDEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_TSKASS_TASK on ACT_RU_IDENTITYLINK(TASK_ID_);
alter table ACT_RU_IDENTITYLINK
add constraint ACT_FK_TSKASS_TASK
foreign key (TASK_ID_)
references ACT_RU_TASK (ID_);
create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
alter table ACT_RU_IDENTITYLINK
add constraint ACT_FK_ATHRZ_PROCEDEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_IDL_PROCINST on ACT_RU_IDENTITYLINK(PROC_INST_ID_);
alter table ACT_RU_IDENTITYLINK
add constraint ACT_FK_IDL_PROCINST
foreign key (PROC_INST_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_);
alter table ACT_RU_TASK
add constraint ACT_FK_TASK_EXE
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_);
alter table ACT_RU_TASK
add constraint ACT_FK_TASK_PROCINST
foreign key (PROC_INST_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_TASK_PROCDEF on ACT_RU_TASK(PROC_DEF_ID_);
alter table ACT_RU_TASK
add constraint ACT_FK_TASK_PROCDEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_VAR_EXE on ACT_RU_VARIABLE(EXECUTION_ID_);
alter table ACT_RU_VARIABLE
add constraint ACT_FK_VAR_EXE
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_VAR_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_);
alter table ACT_RU_VARIABLE
add constraint ACT_FK_VAR_PROCINST
foreign key (PROC_INST_ID_)
references ACT_RU_EXECUTION(ID_);
create index ACT_IDX_VAR_BYTEARRAY on ACT_RU_VARIABLE(BYTEARRAY_ID_);
alter table ACT_RU_VARIABLE
add constraint ACT_FK_VAR_BYTEARRAY
foreign key (BYTEARRAY_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_JOB_EXECUTION_ID on ACT_RU_JOB(EXECUTION_ID_);
alter table ACT_RU_JOB
add constraint ACT_FK_JOB_EXECUTION
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_JOB_PROC_INST_ID on ACT_RU_JOB(PROCESS_INSTANCE_ID_);
alter table ACT_RU_JOB
add constraint ACT_FK_JOB_PROCESS_INSTANCE
foreign key (PROCESS_INSTANCE_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_JOB_PROC_DEF_ID on ACT_RU_JOB(PROC_DEF_ID_);
alter table ACT_RU_JOB
add constraint ACT_FK_JOB_PROC_DEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_JOB_EXCEPTION on ACT_RU_JOB(EXCEPTION_STACK_ID_);
alter table ACT_RU_JOB
add constraint ACT_FK_JOB_EXCEPTION
foreign key (EXCEPTION_STACK_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_TJOB_EXECUTION_ID on ACT_RU_TIMER_JOB(EXECUTION_ID_);
alter table ACT_RU_TIMER_JOB
add constraint ACT_FK_TJOB_EXECUTION
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_TJOB_PROC_INST_ID on ACT_RU_TIMER_JOB(PROCESS_INSTANCE_ID_);
alter table ACT_RU_TIMER_JOB
add constraint ACT_FK_TJOB_PROCESS_INSTANCE
foreign key (PROCESS_INSTANCE_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_TJOB_PROC_DEF_ID on ACT_RU_TIMER_JOB(PROC_DEF_ID_);
alter table ACT_RU_TIMER_JOB
add constraint ACT_FK_TJOB_PROC_DEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_TJOB_EXCEPTION on ACT_RU_TIMER_JOB(EXCEPTION_STACK_ID_);
alter table ACT_RU_TIMER_JOB
add constraint ACT_FK_TJOB_EXCEPTION
foreign key (EXCEPTION_STACK_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_SJOB_EXECUTION_ID on ACT_RU_SUSPENDED_JOB(EXECUTION_ID_);
alter table ACT_RU_SUSPENDED_JOB
add constraint ACT_FK_SJOB_EXECUTION
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_SJOB_PROC_INST_ID on ACT_RU_SUSPENDED_JOB(PROCESS_INSTANCE_ID_);
alter table ACT_RU_SUSPENDED_JOB
add constraint ACT_FK_SJOB_PROCESS_INSTANCE
foreign key (PROCESS_INSTANCE_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_SJOB_PROC_DEF_ID on ACT_RU_SUSPENDED_JOB(PROC_DEF_ID_);
alter table ACT_RU_SUSPENDED_JOB
add constraint ACT_FK_SJOB_PROC_DEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_SJOB_EXCEPTION on ACT_RU_SUSPENDED_JOB(EXCEPTION_STACK_ID_);
alter table ACT_RU_SUSPENDED_JOB
add constraint ACT_FK_SJOB_EXCEPTION
foreign key (EXCEPTION_STACK_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_DJOB_EXECUTION_ID on ACT_RU_DEADLETTER_JOB(EXECUTION_ID_);
alter table ACT_RU_DEADLETTER_JOB
add constraint ACT_FK_DJOB_EXECUTION
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_DJOB_PROC_INST_ID on ACT_RU_DEADLETTER_JOB(PROCESS_INSTANCE_ID_);
alter table ACT_RU_DEADLETTER_JOB
add constraint ACT_FK_DJOB_PROCESS_INSTANCE
foreign key (PROCESS_INSTANCE_ID_)
references ACT_RU_EXECUTION (ID_);
create index ACT_IDX_DJOB_PROC_DEF_ID on ACT_RU_DEADLETTER_JOB(PROC_DEF_ID_);
alter table ACT_RU_DEADLETTER_JOB
add constraint ACT_FK_DJOB_PROC_DEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
create index ACT_IDX_DJOB_EXCEPTION on ACT_RU_DEADLETTER_JOB(EXCEPTION_STACK_ID_);
alter table ACT_RU_DEADLETTER_JOB
add constraint ACT_FK_DJOB_EXCEPTION
foreign key (EXCEPTION_STACK_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_EVENT_SUBSCR on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_);
alter table ACT_RU_EVENT_SUBSCR
add constraint ACT_FK_EVENT_EXEC
foreign key (EXECUTION_ID_)
references ACT_RU_EXECUTION(ID_);
create index ACT_IDX_MODEL_SOURCE on ACT_RE_MODEL(EDITOR_SOURCE_VALUE_ID_);
alter table ACT_RE_MODEL
add constraint ACT_FK_MODEL_SOURCE
foreign key (EDITOR_SOURCE_VALUE_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_MODEL_SOURCE_EXTRA on ACT_RE_MODEL(EDITOR_SOURCE_EXTRA_VALUE_ID_);
alter table ACT_RE_MODEL
add constraint ACT_FK_MODEL_SOURCE_EXTRA
foreign key (EDITOR_SOURCE_EXTRA_VALUE_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_MODEL_DEPLOYMENT on ACT_RE_MODEL(DEPLOYMENT_ID_);
alter table ACT_RE_MODEL
add constraint ACT_FK_MODEL_DEPLOYMENT
foreign key (DEPLOYMENT_ID_)
references ACT_RE_DEPLOYMENT (ID_);
create index ACT_IDX_PROCDEF_INFO_JSON on ACT_PROCDEF_INFO(INFO_JSON_ID_);
alter table ACT_PROCDEF_INFO
add constraint ACT_FK_INFO_JSON_BA
foreign key (INFO_JSON_ID_)
references ACT_GE_BYTEARRAY (ID_);
create index ACT_IDX_PROCDEF_INFO_PROC on ACT_PROCDEF_INFO(PROC_DEF_ID_);
alter table ACT_PROCDEF_INFO
add constraint ACT_FK_INFO_PROCDEF
foreign key (PROC_DEF_ID_)
references ACT_RE_PROCDEF (ID_);
alter table ACT_PROCDEF_INFO
add constraint ACT_UNIQ_INFO_PROCDEF
unique (PROC_DEF_ID_);

156
xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.history.sql

@ -0,0 +1,156 @@
create table ACT_HI_PROCINST (
ID_ NVARCHAR2(64) not null,
PROC_INST_ID_ NVARCHAR2(64) not null,
BUSINESS_KEY_ NVARCHAR2(255),
PROC_DEF_ID_ NVARCHAR2(64) not null,
START_TIME_ TIMESTAMP(6) not null,
END_TIME_ TIMESTAMP(6),
DURATION_ NUMBER(19,0),
START_USER_ID_ NVARCHAR2(255),
START_ACT_ID_ NVARCHAR2(255),
END_ACT_ID_ NVARCHAR2(255),
SUPER_PROCESS_INSTANCE_ID_ NVARCHAR2(64),
DELETE_REASON_ NVARCHAR2(2000),
TENANT_ID_ NVARCHAR2(255) default '',
NAME_ NVARCHAR2(255),
primary key (ID_),
unique (PROC_INST_ID_)
);
create table ACT_HI_ACTINST (
ID_ NVARCHAR2(64) not null,
PROC_DEF_ID_ NVARCHAR2(64) not null,
PROC_INST_ID_ NVARCHAR2(64) not null,
EXECUTION_ID_ NVARCHAR2(64) not null,
ACT_ID_ NVARCHAR2(255) not null,
TASK_ID_ NVARCHAR2(64),
CALL_PROC_INST_ID_ NVARCHAR2(64),
ACT_NAME_ NVARCHAR2(255),
ACT_TYPE_ NVARCHAR2(255) not null,
ASSIGNEE_ NVARCHAR2(255),
START_TIME_ TIMESTAMP(6) not null,
END_TIME_ TIMESTAMP(6),
DURATION_ NUMBER(19,0),
DELETE_REASON_ NVARCHAR2(2000),
TENANT_ID_ NVARCHAR2(255) default '',
primary key (ID_)
);
create table ACT_HI_TASKINST (
ID_ NVARCHAR2(64) not null,
PROC_DEF_ID_ NVARCHAR2(64),
TASK_DEF_KEY_ NVARCHAR2(255),
PROC_INST_ID_ NVARCHAR2(64),
EXECUTION_ID_ NVARCHAR2(64),
PARENT_TASK_ID_ NVARCHAR2(64),
NAME_ NVARCHAR2(255),
DESCRIPTION_ NVARCHAR2(2000),
OWNER_ NVARCHAR2(255),
ASSIGNEE_ NVARCHAR2(255),
START_TIME_ TIMESTAMP(6) not null,
CLAIM_TIME_ TIMESTAMP(6),
END_TIME_ TIMESTAMP(6),
DURATION_ NUMBER(19,0),
DELETE_REASON_ NVARCHAR2(2000),
PRIORITY_ INTEGER,
DUE_DATE_ TIMESTAMP(6),
FORM_KEY_ NVARCHAR2(255),
CATEGORY_ NVARCHAR2(255),
TENANT_ID_ NVARCHAR2(255) default '',
primary key (ID_)
);
create table ACT_HI_VARINST (
ID_ NVARCHAR2(64) not null,
PROC_INST_ID_ NVARCHAR2(64),
EXECUTION_ID_ NVARCHAR2(64),
TASK_ID_ NVARCHAR2(64),
NAME_ NVARCHAR2(255) not null,
VAR_TYPE_ NVARCHAR2(100),
REV_ INTEGER,
BYTEARRAY_ID_ NVARCHAR2(64),
DOUBLE_ NUMBER(*,10),
LONG_ NUMBER(19,0),
TEXT_ NVARCHAR2(2000),
TEXT2_ NVARCHAR2(2000),
CREATE_TIME_ TIMESTAMP(6),
LAST_UPDATED_TIME_ TIMESTAMP(6),
primary key (ID_)
);
create table ACT_HI_DETAIL (
ID_ NVARCHAR2(64) not null,
TYPE_ NVARCHAR2(255) not null,
PROC_INST_ID_ NVARCHAR2(64),
EXECUTION_ID_ NVARCHAR2(64),
TASK_ID_ NVARCHAR2(64),
ACT_INST_ID_ NVARCHAR2(64),
NAME_ NVARCHAR2(255) not null,
VAR_TYPE_ NVARCHAR2(64),
REV_ INTEGER,
TIME_ TIMESTAMP(6) not null,
BYTEARRAY_ID_ NVARCHAR2(64),
DOUBLE_ NUMBER(*,10),
LONG_ NUMBER(19,0),
TEXT_ NVARCHAR2(2000),
TEXT2_ NVARCHAR2(2000),
primary key (ID_)
);
create table ACT_HI_COMMENT (
ID_ NVARCHAR2(64) not null,
TYPE_ NVARCHAR2(255),
TIME_ TIMESTAMP(6) not null,
USER_ID_ NVARCHAR2(255),
TASK_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
ACTION_ NVARCHAR2(255),
MESSAGE_ NVARCHAR2(2000),
FULL_MSG_ BLOB,
primary key (ID_)
);
create table ACT_HI_ATTACHMENT (
ID_ NVARCHAR2(64) not null,
REV_ INTEGER,
USER_ID_ NVARCHAR2(255),
NAME_ NVARCHAR2(255),
DESCRIPTION_ NVARCHAR2(2000),
TYPE_ NVARCHAR2(255),
TASK_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
URL_ NVARCHAR2(2000),
CONTENT_ID_ NVARCHAR2(64),
TIME_ TIMESTAMP(6),
primary key (ID_)
);
create table ACT_HI_IDENTITYLINK (
ID_ NVARCHAR2(64),
GROUP_ID_ NVARCHAR2(255),
TYPE_ NVARCHAR2(255),
USER_ID_ NVARCHAR2(255),
TASK_ID_ NVARCHAR2(64),
PROC_INST_ID_ NVARCHAR2(64),
primary key (ID_)
);
create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_);
create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_);
create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_);
create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_);
create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_);
create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_);
create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_);
create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_);
create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_);
create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_);
create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_);
create index ACT_IDX_HI_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_);
create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_);
create index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_);
create index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK(PROC_INST_ID_);
create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_);
create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_);
create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

48
xm-cloud-bootstrap/src/main/resources/db/activiti.oracle.create.identity.sql

@ -0,0 +1,48 @@
create table ACT_ID_GROUP (
ID_ NVARCHAR2(64),
REV_ INTEGER,
NAME_ NVARCHAR2(255),
TYPE_ NVARCHAR2(255),
primary key (ID_)
);
create table ACT_ID_MEMBERSHIP (
USER_ID_ NVARCHAR2(64),
GROUP_ID_ NVARCHAR2(64),
primary key (USER_ID_, GROUP_ID_)
);
create table ACT_ID_USER (
ID_ NVARCHAR2(64),
REV_ INTEGER,
FIRST_ NVARCHAR2(255),
LAST_ NVARCHAR2(255),
EMAIL_ NVARCHAR2(255),
PWD_ NVARCHAR2(255),
PICTURE_ID_ NVARCHAR2(64),
primary key (ID_)
);
create table ACT_ID_INFO (
ID_ NVARCHAR2(64),
REV_ INTEGER,
USER_ID_ NVARCHAR2(64),
TYPE_ NVARCHAR2(64),
KEY_ NVARCHAR2(255),
VALUE_ NVARCHAR2(255),
PASSWORD_ BLOB,
PARENT_ID_ NVARCHAR2(255),
primary key (ID_)
);
create index ACT_IDX_MEMB_GROUP on ACT_ID_MEMBERSHIP(GROUP_ID_);
alter table ACT_ID_MEMBERSHIP
add constraint ACT_FK_MEMB_GROUP
foreign key (GROUP_ID_)
references ACT_ID_GROUP (ID_);
create index ACT_IDX_MEMB_USER on ACT_ID_MEMBERSHIP(USER_ID_);
alter table ACT_ID_MEMBERSHIP
add constraint ACT_FK_MEMB_USER
foreign key (USER_ID_)
references ACT_ID_USER (ID_);

8
xm-cloud-bootstrap/src/main/resources/locale/message_zh.properties

@ -0,0 +1,8 @@
# 消息转换器,格式为:
# 技术错误码=业务错误码+消息
# 支持动态数据转换.如下面重试次数是通过程序传入的.
# errcode01=[0760881]您输入的密码不正确,请重新输入,您还可以再试{0}次.
#
#
#tips001=[0760000]网络不给力,请稍后再试.
t123456162Service27=[0760001]测试错误码转义

36
xm-cloud-bootstrap/src/main/resources/logback-spring.xml

@ -0,0 +1,36 @@
<?xml version="1.0"?>
<configuration>
<!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%X{gloNo}][%d{yyyy-MM-dd HH:mm:ss}][%-5level][%logger][%X{reqNo}] -%msg%n</pattern>
</encoder>
</appender>
<!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出 -->
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>logs/xm.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>logs/xm.%d{yyyy-MM-dd}.%i.log
</FileNamePattern>
<MaxHistory>20</MaxHistory>
<MaxFileSize>100MB</MaxFileSize>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>[%X{gloNo}][%d{yyyy-MM-dd HH:mm:ss}][%-5level][%logger][%X{reqNo}] -%msg%n</pattern>
</layout>
</appender>
<logger name="java.sql.PreparedStatement" value="DEBUG" />
<logger name="java.sql.Connection" value="DEBUG" />
<logger name="java.sql.Statement" value="DEBUG" />
<logger name="com.ibatis" value="DEBUG" />
<logger name="com.ibatis.common.jdbc.SimpleDataSource" value="DEBUG" />
<logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG"/>
<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" value="DEBUG" />
<!-- 日志级别 -->
<root level="debug">
<appender-ref ref="file" />
<appender-ref ref="console" />
</root>
</configuration>

0
xm-cloud-bootstrap/src/main/resources/processes/readme.txt

10
xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java

@ -7,6 +7,8 @@ import com.mdp.core.entity.Result;
import com.mdp.core.query.QueryTools;
import com.mdp.core.utils.RequestUtils;
import com.mdp.msg.client.PushNotifyMsgService;
import com.mdp.safe.client.cache.DeptRedisCacheService;
import com.mdp.safe.client.entity.Dept;
import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils;
import com.mdp.sensitive.SensitiveWordService;
@ -68,6 +70,9 @@ public class XmProductController {
@Autowired
SensitiveWordService sensitiveWordService;
@Autowired
DeptRedisCacheService deptRedisCacheService;
Map<String,Object> fieldsMap = toMap(new XmProduct());
@Value("${mdp.platform-branch-id:platform-branch-001}")
@ -180,6 +185,11 @@ public class XmProductController {
params.put("linkBranchId",user.getBranchId());
QueryTools.alias(params,"branchId res.branchId");
QueryWrapper<XmProduct> qw = QueryTools.initQueryWrapper(XmProduct.class , params);
Dept dept=deptRedisCacheService.getDept(user.getDeptid());
params.put("myIdPath",dept.getIdPath());
params.put("myDeptid",user.getDeptid());
params.put("myBranchId",user.getBranchId());
params.put("myUserid",user.getUserid());
List<Map<String,Object>> datas = xmProductService.selectListMapByWhereWithState(page,qw,params);
return Result.ok().setData(datas).setTotal(page.getTotal());
}

11
xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java

@ -10,6 +10,8 @@ import com.mdp.core.query.QueryTools;
import com.mdp.core.utils.BaseUtils;
import com.mdp.core.utils.RequestUtils;
import com.mdp.msg.client.PushNotifyMsgService;
import com.mdp.safe.client.cache.DeptRedisCacheService;
import com.mdp.safe.client.entity.Dept;
import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils;
import com.mdp.sensitive.SensitiveWordService;
@ -73,6 +75,9 @@ public class XmProjectController {
@Autowired
SensitiveWordService sensitiveWordService;
@Autowired
DeptRedisCacheService deptRedisCacheService;
Map<String,Object> fieldsMap = BaseUtils.toMap(new XmProject());
@ -118,6 +123,12 @@ public class XmProjectController {
params.put("platformBranchId",platformBranchId);
QueryTools.alias(params,"branchId res.branchId");
QueryWrapper<XmProject> qw = QueryTools.initQueryWrapper(XmProject.class , params);
Dept dept=deptRedisCacheService.getDept(user.getDeptid());
params.put("myIdPath",dept.getIdPath());
params.put("myDeptid",user.getDeptid());
params.put("myBranchId",user.getBranchId());
params.put("myUserid",user.getUserid());
List<Map<String,Object>> datas = xmProjectService.selectListMapByWhere(page,qw,params); //列出XmProject列表
return Result.ok().setData(datas).setTotal(page.getTotal());

7
xm-core/src/main/java/com/xm/core/entity/XmProduct.java

@ -157,6 +157,13 @@ public class XmProduct implements java.io.Serializable {
@ApiModelProperty(notes="",allowEmptyValue=true,example="",allowableValues="")
String qxCode;
@ApiModelProperty(notes="是否对外公开0-完全不可见,1-仅本司人员可见,2-关联人员可见(众包-外包-招投标),3-本部门上级及下属部门可见,4-仅本部及上级可见,5-仅本部及下级可见 9-不区分",allowEmptyValue=true,example="",allowableValues="")
String showOut;
@ApiModelProperty(notes="部门编号全路径编号",allowEmptyValue=true,example="",allowableValues="")
String deptidPath;
/**
*产品编号
**/

5
xm-core/src/main/java/com/xm/core/entity/XmProject.java

@ -186,7 +186,7 @@ public class XmProject implements java.io.Serializable {
String deptid;
@ApiModelProperty(notes="是否对外公开0-完全不可见,1-仅本司人员可见,2-关联人员可见(众包-外包-招投标)",allowEmptyValue=true,example="",allowableValues="")
@ApiModelProperty(notes="是否对外公开0-完全不可见,1-仅本司人员可见,2-关联人员可见(众包-外包-招投标),3-本部门上级及下属部门可见,4-仅本部及上级可见,5-仅本部及下级可见 9-不区分",allowEmptyValue=true,example="",allowableValues="")
String showOut;
@ -269,6 +269,9 @@ public class XmProject implements java.io.Serializable {
@ApiModelProperty(notes="",allowEmptyValue=true,example="",allowableValues="")
String qxCode;
@ApiModelProperty(notes="部门编号全路径编号",allowEmptyValue=true,example="",allowableValues="")
String deptidPath;
/**
*项目编号
**/

16
xm-core/src/main/java/com/xm/core/mapper/XmProductMapper.xml

@ -41,6 +41,22 @@
)
</if>
<if test='ext.isTpl==null or ext.isTpl=="0"'>
and (
(res.adm_userid= #{ext.myUserid} or res.pm_userid=#{ext.myUserid} or res.ass_userid=#{ext.myUserid})
or (CASE
WHEN res.show_out = '1' THEN
res.branch_id = #{ext.myBranchId}
when res.show_out='3' then
res.deptid_path like CONCAT(#{ext.myIdPath},'%') or #{ext.myIdPath} like CONCAT(res.deptid_path,'%')
when res.show_out='4' then
res.deptid_path like CONCAT(#{ext.myIdPath},'%')
when res.show_out='5' then
#{ext.myIdPath} like CONCAT(res.deptid_path,'%')
when res.show_out='6' then
res.deptid=#{ext.myDeptid}
end))
</if>
</sql>
<select id="selectListMapByWhereWithState" parameterType="HashMap" resultType="HashMap">

17
xm-core/src/main/java/com/xm/core/mapper/XmProjectMapper.xml

@ -64,5 +64,22 @@
<if test="ext.del==null or ext.del==''">
and res.del!="1"
</if>
<if test='ext.isTpl==null or ext.isTpl=="0"'>
and (
(res.create_userid = #{ext.myUserid} or res.adm_userid= #{ext.myUserid} or res.pm_userid=#{ext.myUserid} or res.ass_userid=#{ext.myUserid})
or (CASE
WHEN res.show_out = '1' THEN
res.branch_id = #{ext.myBranchId}
when res.show_out='3' then
res.deptid_path like CONCAT(#{ext.myIdPath},'%') or #{ext.myIdPath} like CONCAT(res.deptid_path,'%')
when res.show_out='4' then
res.deptid_path like CONCAT(#{ext.myIdPath},'%')
when res.show_out='5' then
#{ext.myIdPath} like CONCAT(res.deptid_path,'%')
when res.show_out='6' then
res.deptid=#{ext.myDeptid}
end))
</if>
</sql>
</mapper>
Loading…
Cancel
Save