Jelajahi Sumber

淘宝百亿补贴爬虫

xuzuoyun 4 tahun lalu
induk
melakukan
af92ac9e66
100 mengubah file dengan 8481 tambahan dan 210 penghapusan
  1. 30 5
      jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/CacheConstant.java
  2. 189 53
      jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/CommonConstant.java
  3. 16 3
      jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/DataBaseConstant.java
  4. 25 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
  5. 56 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/WebsocketConst.java
  6. 21 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/handler/IFillRuleHandler.java
  7. 278 20
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/api/ISysBaseApi.java
  8. 36 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/ComboModel.java
  9. 34 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/DictQuery.java
  10. 52 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/DynamicDataSourceModel.java
  11. 45 30
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/LoginUser.java
  12. 50 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/SysCategoryModel.java
  13. 147 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/SysDepartModel.java
  14. 144 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/SysPermissionDataRuleModel.java
  15. 64 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/CommonUtils.java
  16. 57 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/FillRuleUtil.java
  17. 53 35
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/MD5Util.java
  18. 208 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/MinioUtil.java
  19. 238 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/ReflectHelper.java
  20. 70 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/SysAnnmentTypeEnum.java
  21. 92 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/DataSourceCachePool.java
  22. 31 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/DbValidationQueryEnum.java
  23. 298 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/DynamicDBUtil.java
  24. 171 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/FreemarkerParseFactory.java
  25. 212 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/SqlUtils.java
  26. 123 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java
  27. 12 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/encryption/EncryptedString.java
  28. 162 64
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/oConvertUtils.java
  29. 289 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java
  30. 77 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/SecurityTools.java
  31. 9 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/MyKeyPair.java
  32. 11 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecurityReq.java
  33. 10 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecurityResp.java
  34. 9 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecuritySignReq.java
  35. 10 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecuritySignResp.java
  36. 338 0
      jeecg-boot-module-activiti/db/create/activiti.db2.create.engine.sql
  37. 156 0
      jeecg-boot-module-activiti/db/create/activiti.db2.create.history.sql
  38. 46 0
      jeecg-boot-module-activiti/db/create/activiti.db2.create.identity.sql
  39. 322 0
      jeecg-boot-module-activiti/db/create/activiti.h2.create.engine.sql
  40. 154 0
      jeecg-boot-module-activiti/db/create/activiti.h2.create.history.sql
  41. 46 0
      jeecg-boot-module-activiti/db/create/activiti.h2.create.identity.sql
  42. 322 0
      jeecg-boot-module-activiti/db/create/activiti.hsql.create.engine.sql
  43. 154 0
      jeecg-boot-module-activiti/db/create/activiti.hsql.create.history.sql
  44. 46 0
      jeecg-boot-module-activiti/db/create/activiti.hsql.create.identity.sql
  45. 333 0
      jeecg-boot-module-activiti/db/create/activiti.mssql.create.engine.sql
  46. 155 0
      jeecg-boot-module-activiti/db/create/activiti.mssql.create.history.sql
  47. 46 0
      jeecg-boot-module-activiti/db/create/activiti.mssql.create.identity.sql
  48. 324 0
      jeecg-boot-module-activiti/db/create/activiti.mysql.create.engine.sql
  49. 155 0
      jeecg-boot-module-activiti/db/create/activiti.mysql.create.history.sql
  50. 46 0
      jeecg-boot-module-activiti/db/create/activiti.mysql.create.identity.sql
  51. 324 0
      jeecg-boot-module-activiti/db/create/activiti.mysql55.create.engine.sql
  52. 155 0
      jeecg-boot-module-activiti/db/create/activiti.mysql55.create.history.sql
  53. 344 0
      jeecg-boot-module-activiti/db/create/activiti.oracle.create.engine.sql
  54. 155 0
      jeecg-boot-module-activiti/db/create/activiti.oracle.create.history.sql
  55. 48 0
      jeecg-boot-module-activiti/db/create/activiti.oracle.create.identity.sql
  56. 342 0
      jeecg-boot-module-activiti/db/create/activiti.postgres.create.engine.sql
  57. 155 0
      jeecg-boot-module-activiti/db/create/activiti.postgres.create.history.sql
  58. 48 0
      jeecg-boot-module-activiti/db/create/activiti.postgres.create.identity.sql
  59. 82 0
      jeecg-boot-module-activiti/db/drop/activiti.db2.drop.engine.sql
  60. 25 0
      jeecg-boot-module-activiti/db/drop/activiti.db2.drop.history.sql
  61. 10 0
      jeecg-boot-module-activiti/db/drop/activiti.db2.drop.identity.sql
  62. 22 0
      jeecg-boot-module-activiti/db/drop/activiti.h2.drop.engine.sql
  63. 26 0
      jeecg-boot-module-activiti/db/drop/activiti.h2.drop.history.sql
  64. 4 0
      jeecg-boot-module-activiti/db/drop/activiti.h2.drop.identity.sql
  65. 22 0
      jeecg-boot-module-activiti/db/drop/activiti.hsql.drop.engine.sql
  66. 24 0
      jeecg-boot-module-activiti/db/drop/activiti.hsql.drop.history.sql
  67. 4 0
      jeecg-boot-module-activiti/db/drop/activiti.hsql.drop.identity.sql
  68. 44 0
      jeecg-boot-module-activiti/db/drop/activiti.mssql.drop.engine.sql
  69. 25 0
      jeecg-boot-module-activiti/db/drop/activiti.mssql.drop.history.sql
  70. 7 0
      jeecg-boot-module-activiti/db/drop/activiti.mssql.drop.identity.sql
  71. 83 0
      jeecg-boot-module-activiti/db/drop/activiti.mysql.drop.engine.sql
  72. 25 0
      jeecg-boot-module-activiti/db/drop/activiti.mysql.drop.history.sql
  73. 10 0
      jeecg-boot-module-activiti/db/drop/activiti.mysql.drop.identity.sql
  74. 109 0
      jeecg-boot-module-activiti/db/drop/activiti.oracle.drop.engine.sql
  75. 25 0
      jeecg-boot-module-activiti/db/drop/activiti.oracle.drop.history.sql
  76. 13 0
      jeecg-boot-module-activiti/db/drop/activiti.oracle.drop.identity.sql
  77. 13 0
      jeecg-boot-module-activiti/db/drop/activiti.postgres.drop.engine.sql
  78. 8 0
      jeecg-boot-module-activiti/db/drop/activiti.postgres.drop.history.sql
  79. 4 0
      jeecg-boot-module-activiti/db/drop/activiti.postgres.drop.identity.sql
  80. 81 0
      jeecg-boot-module-activiti/db/update.sql
  81. 55 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.510.to.511.engine.sql
  82. 36 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.510.to.511.history.sql
  83. 20 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.511.to.512.history.sql
  84. 13 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.512.to.513.history.sql
  85. 62 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.514.to.515.engine.sql
  86. 38 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.514.to.515.history.sql
  87. 2 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.515.to.5151.engine.sql
  88. 28 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.5151.to.516.engine.sql
  89. 4 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.5151.to.516.history.sql
  90. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.516.to.5161.engine.sql
  91. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.5161.to.5162.engine.sql
  92. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51630.to.51640.engine.sql
  93. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51630.to.51640.history.sql
  94. 3 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51640.to.51700.engine.sql
  95. 3 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51700.to.51701.engine.sql
  96. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51701.to.51702.engine.sql
  97. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51701.to.51702.history.sql
  98. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51702.to.51800.engine.sql
  99. 1 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51702.to.51800.history.sql
  100. 0 0
      jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51800.to.51801.engine.sql

+ 30 - 5
jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/CacheConstant.java

@@ -10,17 +10,42 @@ public interface CacheConstant {
 	/**
 	 * 字典信息缓存
 	 */
-    public static final String DICT_CACHE = "dictCache";
+    public static final String SYS_DICT_CACHE = "sys:cache:dict";
+	/**
+	 * 表字典信息缓存
+	 */
+    public static final String SYS_DICT_TABLE_CACHE = "sys:cache:dictTable";
+
+	/**
+	 * 数据权限配置缓存
+	 */
+    public static final String SYS_DATA_PERMISSIONS_CACHE = "sys:cache:permission:datarules";
+
+	/**
+	 * 缓存用户信息
+	 */
+	public static final String SYS_USERS_CACHE = "sys:cache:user";
 
 	/**
-	 * 权限信息缓存
+	 * 全部部门信息缓存
 	 */
-    public static final String PERMISSION_CACHE = "permission";
+	public static final String SYS_DEPARTS_CACHE = "sys:cache:depart:alldata";
+
+
+	/**
+	 * 全部部门ids缓存
+	 */
+	public static final String SYS_DEPART_IDS_CACHE = "sys:cache:depart:allids";
+
 
 	/**
-	 * 登录用户规则缓存
+	 * 测试缓存key
 	 */
-    public static final String LOGIN_USER_RULES_CACHE = "loginUser_cacheRules";
+	public static final String TEST_DEMO_CACHE = "test:demo";
 
+	/**
+	 * 字典信息缓存
+	 */
+	public static final String SYS_DYNAMICDB_CACHE = "sys:cache:dbconnect:dynamic:";
 
 }

+ 189 - 53
jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/CommonConstant.java

@@ -2,116 +2,139 @@ package org.jeecg.common.constant;
 
 public interface CommonConstant {
 
-	/**
-	 * 正常状态
-	 */
+    /**
+     * 正常状态
+     */
+    public static final Integer STATUS_NORMAL = 0;
+
+    /**
+     * 禁用状态
+     */
+    public static final Integer STATUS_DISABLE = -1;
 
-	public static final Integer STATUS_NORMAL = 0;
+    /**
+     * 删除标志
+     */
+    public static final Integer DEL_FLAG_1 = 1;
 
+    /**
+     * 未删除
+     */
+    public static final Integer DEL_FLAG_0 = 0;
 
-	/**
-	 * 禁用状态
-	 */
+    /**
+     * 系统日志类型: 登录
+     */
+    public static final int LOG_TYPE_1 = 1;
 
-	public static final Integer STATUS_DISABLE = -1;
+    /**
+     * 系统日志类型: 操作
+     */
+    public static final int LOG_TYPE_2 = 2;
 
+    /**
+     * 操作日志类型: 查询
+     */
+    public static final int OPERATE_TYPE_1 = 1;
 
-	/**
-	 * 删除标志
-	 */
-	public static final Integer DEL_FLAG_1 = 1;
+    /**
+     * 操作日志类型: 添加
+     */
+    public static final int OPERATE_TYPE_2 = 2;
 
-	/**
-	 * 未删除
-	 */
+    /**
+     * 操作日志类型: 更新
+     */
+    public static final int OPERATE_TYPE_3 = 3;
 
-	public static final Integer DEL_FLAG_0 = 0;
+    /**
+     * 操作日志类型: 删除
+     */
+    public static final int OPERATE_TYPE_4 = 4;
 
-	/**
-	 * 系统日志类型: 登录
-	 */
-	public static final int LOG_TYPE_1 = 1;
+    /**
+     * 操作日志类型: 倒入
+     */
+    public static final int OPERATE_TYPE_5 = 5;
 
-	/**
-	 * 系统日志类型: 操作
-	 */
-	public static final int LOG_TYPE_2 = 2;
-	
-	
-	/** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
+    /**
+     * 操作日志类型: 导出
+     */
+    public static final int OPERATE_TYPE_6 = 6;
+
+
+    /** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
     public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
     /** {@code 200 OK} (HTTP/1.0 - RFC 1945) */
     public static final Integer SC_OK_200 = 200;
-    
+
     /**访问权限认证未通过 510*/
     public static final Integer SC_JEECG_NO_AUTHZ=510;
 
-    /** 登录用户拥有角色缓存KEY前缀 */
-    public static String LOGIN_USER_CACHERULES_ROLE = "loginUser_cacheRules::Roles_";
-    /** 登录用户拥有权限缓存KEY前缀 */
-    public static String LOGIN_USER_CACHERULES_PERMISSION  = "loginUser_cacheRules::Permissions_";
-    /** 登录用户令牌缓存KEY前缀 */
+    /** 登录用户Shiro权限缓存KEY前缀 */
+    public static String PREFIX_USER_SHIRO_CACHE  = "shiro:cache:org.jeecg.modules.shiro.authc.ShiroRealm.authorizationCache:";
+    /** 登录用户Token令牌缓存KEY前缀 */
+    public static final String PREFIX_USER_TOKEN  = "prefix_user_token_";
+    /** Token缓存时间:3600秒即一小时 */
+    public static final int  TOKEN_EXPIRE_TIME  = 3600;
+
 
-    public static final int TOKEN_EXPIRE_TIME = 3600;
-    
-    public static final String PREFIX_USER_TOKEN  = "PREFIX_USER_TOKEN_";
-    
     /**
      *  0:一级菜单
      */
     public static final Integer MENU_TYPE_0  = 0;
-   /**
-    *  1:子菜单 
-    */
+    /**
+     *  1:子菜单
+     */
     public static final Integer MENU_TYPE_1  = 1;
     /**
      *  2:按钮权限
      */
     public static final Integer MENU_TYPE_2  = 2;
-    
+
     /**通告对象类型(USER:指定用户,ALL:全体用户)*/
     public static final String MSG_TYPE_UESR  = "USER";
     public static final String MSG_TYPE_ALL  = "ALL";
-    
+
     /**发布状态(0未发布,1已发布,2已撤销)*/
     public static final String NO_SEND  = "0";
     public static final String HAS_SEND  = "1";
     public static final String HAS_CANCLE  = "2";
-    
+
     /**阅读状态(0未读,1已读)*/
     public static final String HAS_READ_FLAG  = "1";
     public static final String NO_READ_FLAG  = "0";
-    
+
     /**优先级(L低,M中,H高)*/
     public static final String PRIORITY_L  = "L";
     public static final String PRIORITY_M  = "M";
     public static final String PRIORITY_H  = "H";
-    
+
     /**
      * 短信模板方式  0 .登录模板、1.注册模板、2.忘记密码模板
      */
     public static final String SMS_TPL_TYPE_0  = "0";
     public static final String SMS_TPL_TYPE_1  = "1";
     public static final String SMS_TPL_TYPE_2  = "2";
-    
+
     /**
      * 状态(0无效1有效)
      */
     public static final String STATUS_0 = "0";
     public static final String STATUS_1 = "1";
-    
+
     /**
      * 同步工作流引擎1同步0不同步
      */
-    public static final String ACT_SYNC_0 = "0";
-    public static final String ACT_SYNC_1 = "1";
-    
+    public static final Integer ACT_SYNC_1 = 1;
+    public static final Integer ACT_SYNC_0 = 0;
+
     /**
      * 消息类型1:通知公告2:系统消息
      */
     public static final String MSG_CATEGORY_1 = "1";
     public static final String MSG_CATEGORY_2 = "2";
-    
+
     /**
      * 是否配置菜单的数据权限 1是0否
      */
@@ -119,11 +142,124 @@ public interface CommonConstant {
     public static final Integer RULE_FLAG_1 = 1;
 
     /**
-     * 是否用户已被冻结 1(解冻)正常 2冻结
+     * 是否用户已被冻结 1正常(解冻) 2冻结
      */
     public static final Integer USER_UNFREEZE = 1;
     public static final Integer USER_FREEZE = 2;
-    
+
     /**字典翻译文本后缀*/
     public static final String DICT_TEXT_SUFFIX = "_dictText";
+
+    /**
+     * 表单设计器主表类型
+     */
+    public static final Integer DESIGN_FORM_TYPE_MAIN = 1;
+
+    /**
+     * 表单设计器子表表类型
+     */
+    public static final Integer DESIGN_FORM_TYPE_SUB = 2;
+
+    /**
+     * 表单设计器URL授权通过
+     */
+    public static final Integer DESIGN_FORM_URL_STATUS_PASSED = 1;
+
+    /**
+     * 表单设计器URL授权未通过
+     */
+    public static final Integer DESIGN_FORM_URL_STATUS_NOT_PASSED = 2;
+
+    /**
+     * 表单设计器新增 Flag
+     */
+    public static final String DESIGN_FORM_URL_TYPE_ADD = "add";
+    /**
+     * 表单设计器修改 Flag
+     */
+    public static final String DESIGN_FORM_URL_TYPE_EDIT = "edit";
+    /**
+     * 表单设计器详情 Flag
+     */
+    public static final String DESIGN_FORM_URL_TYPE_DETAIL = "detail";
+    /**
+     * 表单设计器复用数据 Flag
+     */
+    public static final String DESIGN_FORM_URL_TYPE_REUSE = "reuse";
+    /**
+     * 表单设计器编辑 Flag (已弃用)
+     */
+    public static final String DESIGN_FORM_URL_TYPE_VIEW = "view";
+
+    /**
+     * online参数值设置(是:Y, 否:N)
+     */
+    public static final String ONLINE_PARAM_VAL_IS_TURE = "Y";
+    public static final String ONLINE_PARAM_VAL_IS_FALSE = "N";
+
+    /**
+     * 文件上传类型(本地:local,Minio:minio,阿里云:alioss)
+     */
+    public static final String UPLOAD_TYPE_LOCAL = "local";
+    public static final String UPLOAD_TYPE_MINIO = "minio";
+    public static final String UPLOAD_TYPE_OSS = "alioss";
+
+    /**
+     * 文档上传自定义桶名称
+     */
+    public static final String UPLOAD_CUSTOM_BUCKET = "eoafile";
+    /**
+     * 文档上传自定义路径
+     */
+    public static final String UPLOAD_CUSTOM_PATH = "eoafile";
+    /**
+     * 文件外链接有效天数
+     */
+    public static final Integer UPLOAD_EFFECTIVE_DAYS = 1;
+
+    /**
+     * 员工身份 (1:普通员工  2:上级)
+     */
+    public static final Integer USER_IDENTITY_1 = 1;
+    public static final Integer USER_IDENTITY_2 = 2;
+
+    /** sys_user 表 username 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_SYS_USER_USERNAME = "uniq_sys_user_username";
+    /** sys_user 表 work_no 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_SYS_USER_WORK_NO = "uniq_sys_user_work_no";
+    /** sys_user 表 phone 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_SYS_USER_PHONE = "uniq_sys_user_phone";
+    /** sys_user 表 email 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_SYS_USER_EMAIL = "uniq_sys_user_email";
+    /** sys_quartz_job 表 job_class_name 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_JOB_CLASS_NAME = "uniq_job_class_name";
+    /** sys_position 表 code 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_CODE = "uniq_code";
+    /** sys_role 表 code 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_SYS_ROLE_CODE = "uniq_sys_role_role_code";
+    /** sys_depart 表 code 唯一键索引 */
+    public static final String SQL_INDEX_UNIQ_DEPART_ORG_CODE = "uniq_depart_org_code";
+    /**
+     * 在线聊天 是否为默认分组
+     */
+    public static final String IM_DEFAULT_GROUP = "1";
+    /**
+     * 在线聊天 图片文件保存路径
+     */
+    public static final String IM_UPLOAD_CUSTOM_PATH = "imfile";
+    /**
+     * 在线聊天 用户状态
+     */
+    public static final String IM_STATUS_ONLINE = "online";
+
+    /**
+     * 在线聊天 SOCKET消息类型
+     */
+    public static final String IM_SOCKET_TYPE = "chatMessage";
+
+    /**
+     * 考勤补卡业务状态 (1:同意  2:不同意)
+     */
+    public static final String SIGN_PATCH_BIZ_STATUS_1 = "1";
+    public static final String SIGN_PATCH_BIZ_STATUS_2 = "2";
 }

+ 16 - 3
jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/DataBaseConstant.java

@@ -3,7 +3,17 @@ package org.jeecg.common.constant;
  * 数据库上下文常量
  */
 public interface DataBaseConstant {
-	
+	//*********数据库类型****************************************
+	public static final String DB_TYPE_MYSQL = "MYSQL";
+	public static final String DB_TYPE_ORACLE = "ORACLE";
+	public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL";
+	public static final String DB_TYPE_SQLSERVER = "SQLSERVER";
+
+	// 数据库类型,对应 database_type 字典
+	public static final String DB_TYPE_MYSQL_NUM = "1";
+	public static final String DB_TYPE_ORACLE_NUM = "2";
+	public static final String DB_TYPE_SQLSERVER_NUM = "3";
+	public static final String DB_TYPE_POSTGRESQL_NUM = "4";
 	//*********系统上下文变量****************************************
 	/**
 	 * 数据-所属机构编码
@@ -12,12 +22,15 @@ public interface DataBaseConstant {
 	/**
 	 * 数据-所属机构编码
 	 */
+	public static final String SYS_ORG_CODE_TABLE = "sys_org_code";
+	/**
+	 * 数据-所属机构编码
+	 */
 	public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode";
-	
 	/**
 	 * 数据-所属机构编码
 	 */
-	public static final String SYS_ORG_CODE_TABLE = "sys_org_code";
+	public static final String SYS_MULTI_ORG_CODE_TABLE = "sys_multi_org_code";
 	/**
 	 * 数据-系统用户编码(对应登录用户账号)
 	 */

+ 25 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/FillRuleConstant.java

@@ -0,0 +1,25 @@
+package org.jeecg.common.constant;
+
+/**
+ * 规则值生成 编码常量类
+ * @author: taoyan
+ * @date: 2020年04月02日
+ */
+public class FillRuleConstant {
+
+    /**
+     * 公文发文编码
+     */
+    public static final String DOC_SEND = "doc_send_code";
+
+    /**
+     * 部门编码
+     */
+    public static final String DEPART = "org_num_role";
+
+    /**
+     * 分类字典编码
+     */
+    public static final String CATEGORY = "category_code_rule";
+
+}

+ 56 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/constant/WebsocketConst.java

@@ -0,0 +1,56 @@
+package org.jeecg.common.constant;
+
+/**
+ * @Description: Websocket常量类
+ * @author: taoyan
+ * @date: 2020年03月23日
+ */
+public class WebsocketConst {
+
+
+    /**
+     * 消息json key:cmd
+     */
+    public static final String MSG_CMD = "cmd";
+
+    /**
+     * 消息json key:msgId
+     */
+    public static final String MSG_ID = "msgId";
+
+    /**
+     * 消息json key:msgTxt
+     */
+    public static final String MSG_TXT = "msgTxt";
+
+    /**
+     * 消息json key:userId
+     */
+    public static final String MSG_USER_ID = "userId";
+
+    /**
+     * 消息类型 heartcheck
+     */
+    public static final String CMD_CHECK = "heartcheck";
+
+    /**
+     * 消息类型 user 用户消息
+     */
+    public static final String CMD_USER = "user";
+
+    /**
+     * 消息类型 topic 系统通知
+     */
+    public static final String CMD_TOPIC = "topic";
+
+    /**
+     * 消息类型 email
+     */
+    public static final String CMD_EMAIL = "email";
+
+    /**
+     * 消息类型 meetingsign 会议签到
+     */
+    public static final String CMD_SIGN = "sign";
+
+}

+ 21 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/handler/IFillRuleHandler.java

@@ -0,0 +1,21 @@
+package org.jeecg.common.handler;
+
+import com.alibaba.fastjson.JSONObject;
+
+/**
+ * 填值规则接口
+ *
+ * @author Yan_东
+ * 如需使用填值规则功能,规则实现类必须实现此接口
+ */
+public interface IFillRuleHandler {
+
+    /**
+     * @param params 页面配置固定参数
+     * @param formData  动态表单参数
+     * @return
+     */
+    public Object execute(JSONObject params, JSONObject formData);
+
+}
+

+ 278 - 20
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/api/ISysBaseApi.java

@@ -2,33 +2,45 @@ package org.jeecg.common.system.api;
 
 import java.sql.SQLException;
 import java.util.List;
+import java.util.Map;
 
-import org.jeecg.common.system.vo.DictModel;
-import org.jeecg.common.system.vo.LoginUser;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import org.jeecg.common.system.vo.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * @Description: 底层共通业务API,提供其他独立模块调用
  * @Author: scott
- * @Date:2019-4-20 
+ * @Date:2019-4-20
  * @Version:V1.0
  */
 public interface ISysBaseApi {
 
 	/**
 	 * 日志添加
-     * @param logContent 内容
+	 * @param LogContent 内容
 	 * @param logType 日志类型(0:操作日志;1:登录日志;2:定时任务)
 	 * @param operatetype 操作类型(1:添加;2:修改;3:删除;)
 	 */
-    void addLog(String logContent, Integer logType, Integer operatetype);
-	
+	void addLog(String LogContent, Integer logType, Integer operatetype);
+
 	/**
-	  * 根据用户账号查询登录用户信息
+	 * 根据用户账号查询用户信息
 	 * @param username
 	 * @return
 	 */
 	public LoginUser getUserByName(String username);
-	
+
+	/**
+	 * 根据用户id查询用户信息
+	 * @param id
+	 * @return
+	 */
+	public LoginUser getUserById(String id);
+
 	/**
 	 * 通过用户账号查询角色集合
 	 * @param username
@@ -37,14 +49,28 @@ public interface ISysBaseApi {
 	public List<String> getRolesByUsername(String username);
 
 	/**
+	 * 通过用户账号查询部门集合
+	 * @param username
+	 * @return 部门 id
+	 */
+	List<String> getDepartIdsByUsername(String username);
+
+	/**
+	 * 通过用户账号查询部门 name
+	 * @param username
+	 * @return 部门 name
+	 */
+	List<String> getDepartNamesByUsername(String username);
+
+	/**
 	 * 获取当前数据库类型
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public String getDatabaseType() throws SQLException;
-	
+
 	/**
-	  * 获取数据字典
+	 * 获取数据字典
 	 * @param code
 	 * @return
 	 */
@@ -52,21 +78,34 @@ public interface ISysBaseApi {
 
 	/** 查询所有的父级字典,按照create_time排序 */
 	public List<DictModel> queryAllDict();
+
+	/**
+	 * 查询所有分类字典
+	 * @return
+	 */
+	public List<SysCategoryModel> queryAllDSysCategory();
+
 	/**
-	  * 获取表数据字典
+	 * 获取表数据字典
 	 * @param table
 	 * @param text
 	 * @param code
 	 * @return
 	 */
-    List<DictModel> queryTableDictItemsByCode(String table, String text, String code);
-    
-    /**
-   	 * 查询所有部门 作为字典信息 id -->value,departName -->text
-   	 * @return
-   	 */
-   	public List<DictModel> queryAllDepartBackDictModel();
-   	
+	List<DictModel> queryTableDictItemsByCode(String table, String text, String code);
+
+	/**
+	 * 查询所有部门 作为字典信息 id -->value,departName -->text
+	 * @return
+	 */
+	public List<DictModel> queryAllDepartBackDictModel();
+
+	/**
+	 * 查询所有部门,拼接查询条件
+	 * @return
+	 */
+	List<JSONObject> queryAllDepart(Wrapper wrapper);
+
 	/**
 	 * 发送系统消息
 	 * @param fromUser 发送人(用户登录账户)
@@ -75,4 +114,223 @@ public interface ISysBaseApi {
 	 * @param msgContent  消息内容
 	 */
 	public void sendSysAnnouncement(String fromUser,String toUser,String title, String msgContent);
+
+	/**
+	 * 发送系统消息
+	 * @param fromUser 发送人(用户登录账户)
+	 * @param toUser   发送给(用户登录账户)
+	 * @param title    通知标题
+	 * @param map  	   模板参数
+	 * @param templateCode  模板编码
+	 */
+	public void sendSysAnnouncement(String fromUser, String toUser,String title, Map<String, String> map, String templateCode);
+
+	/**
+	 *
+	 * @param fromUser 发送人(用户登录账户)
+	 * @param toUser 发送给(用户登录账户)
+	 * @param title 通知标题
+	 * @param map 模板参数
+	 * @param templateCode 模板编码
+	 * @param busType 业务类型
+	 * @param busId 业务id
+	 */
+	public void sendSysAnnouncement(String fromUser, String toUser,String title, Map<String, String> map, String templateCode,String busType,String busId);
+
+	/**
+	 * 通过消息中心模板,生成推送内容
+	 *
+	 * @param templateCode 模板编码
+	 * @param map          模板参数
+	 * @return
+	 */
+	public String parseTemplateByCode(String templateCode, Map<String, String> map);
+
+
+	/**
+	 * 发送系统消息
+	 * @param fromUser 发送人(用户登录账户)
+	 * @param toUser  发送给(用户登录账户)
+	 * @param title  消息主题
+	 * @param msgContent  消息内容
+	 * @param setMsgCategory  消息类型 1:消息2:系统消息
+	 */
+	public void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory);
+
+	/**queryTableDictByKeys
+	 * 发送系统消息
+	 * @param fromUser 发送人(用户登录账户)
+	 * @param toUser  发送给(用户登录账户)
+	 * @param title  消息主题
+	 * @param msgContent  消息内容
+	 * @param setMsgCategory  消息类型 1:消息2:系统消息
+	 * @param busType  业务类型
+	 * @param busId  业务id
+	 */
+	public void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory,String busType,String busId);
+
+	/**
+	 * 根据业务类型及业务id修改消息已读
+	 * @param busType
+	 * @param busId
+	 */
+	public void updateSysAnnounReadFlag(String busType,String busId);
+	/**
+	 * 查询表字典 支持过滤数据
+	 * @param table
+	 * @param text
+	 * @param code
+	 * @param filterSql
+	 * @return
+	 */
+	public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql);
+
+	/**
+	 * 查询指定table的 text code 获取字典,包含text和value
+	 * @param table
+	 * @param text
+	 * @param code
+	 * @param keyArray
+	 * @return
+	 */
+	@Deprecated
+	public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray);
+
+	/**
+	 * 获取所有有效用户
+	 * @return
+	 */
+	public List<ComboModel> queryAllUser();
+
+	/**
+	 * 获取所有有效用户 带参
+	 * userIds 默认选中用户
+	 * @return
+	 */
+	public JSONObject queryAllUser(String[] userIds, int pageNo, int pageSize);
+
+	/**
+	 * 获取所有有效用户 拼接查询条件
+	 *
+	 * @return
+	 */
+	List<JSONObject> queryAllUser(Wrapper wrapper);
+
+	/**
+	 * 获取所有角色
+	 * @return
+	 */
+	public List<ComboModel> queryAllRole();
+
+	/**
+	 * 获取所有角色 带参
+	 * roleIds 默认选中角色
+	 * @return
+	 */
+	public List<ComboModel> queryAllRole(String[] roleIds );
+
+	/**
+	 * 通过用户账号查询角色Id集合
+	 * @param username
+	 * @return
+	 */
+	public List<String> getRoleIdsByUsername(String username);
+
+	/**
+	 * 通过部门编号查询部门id
+	 * @param orgCode
+	 * @return
+	 */
+	public String getDepartIdsByOrgCode(String orgCode);
+
+	/**
+	 * 查询上一级部门
+	 * @param departId
+	 * @return
+	 */
+	public DictModel getParentDepartId(String departId);
+
+	/**
+	 * 查询所有部门
+	 * @return
+	 */
+	public List<SysDepartModel> getAllSysDepart();
+
+	/**
+	 * 根据 id 查询数据库中存储的 DynamicDataSourceModel
+	 *
+	 * @param dbSourceId
+	 * @return
+	 */
+	DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId);
+
+	/**
+	 * 根据 code 查询数据库中存储的 DynamicDataSourceModel
+	 *
+	 * @param dbSourceCode
+	 * @return
+	 */
+	DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode);
+
+	/**
+	 * 根据部门Id获取部门负责人
+	 * @param deptId
+	 * @return
+	 */
+	public List<String> getDeptHeadByDepId(String deptId);
+
+	/**
+	 * 文件上传
+	 * @param file 文件
+	 * @param bizPath 自定义路径
+	 * @param uploadType 上传方式
+	 * @return
+	 */
+	public String upload(MultipartFile file,String bizPath,String uploadType);
+
+	/**
+	 * 文件上传 自定义桶
+	 * @param file
+	 * @param bizPath
+	 * @param uploadType
+	 * @param customBucket
+	 * @return
+	 */
+	public String upload(MultipartFile file,String bizPath,String uploadType,String customBucket);
+
+	/**
+	 * 文档管理文件下载预览
+	 * @param filePath
+	 * @param uploadpath
+	 * @param response
+	 */
+	public void viewAndDownload(String filePath, String uploadpath, String uploadType,HttpServletResponse response);
+
+
+	/**
+	 * 给指定用户发消息
+	 * @param userIds
+	 * @param cmd
+	 */
+	public void sendWebSocketMsg(String[] userIds, String cmd);
+
+	/**
+	 * 根据id获取所有参与用户
+	 * userIds
+	 * @return
+	 */
+	public List<LoginUser> queryAllUserByIds(String[] userIds);
+	/**
+	 * 将会议签到信息推动到预览
+	 * userIds
+	 * @return
+	 * @param userId
+	 */
+	void meetingSignWebsocket(String userId);
+	/**
+	 * 根据name获取所有参与用户
+	 * userNames
+	 * @return
+	 */
+	List<LoginUser> queryUserByNames(String[] userNames);
 }

+ 36 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/ComboModel.java

@@ -0,0 +1,36 @@
+package org.jeecg.common.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ComboModel implements Serializable {
+    private String id;
+    private String title;
+    /**文档管理 表单table默认选中*/
+    private boolean checked;
+    /**文档管理 表单table 用户账号*/
+    private String username;
+    /**文档管理 表单table 用户邮箱*/
+    private String email;
+    /**文档管理 表单table 角色编码*/
+    private String roleCode;
+
+    public ComboModel(){
+
+    };
+
+    public ComboModel(String id,String title,boolean checked,String username){
+        this.id = id;
+        this.title = title;
+        this.checked = false;
+        this.username = username;
+    };
+}

+ 34 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/DictQuery.java

@@ -0,0 +1,34 @@
+package org.jeecg.common.system.vo;
+
+import lombok.Data;
+
+/**
+ * 字典查询参数实体
+ */
+@Data
+public class DictQuery {
+    /**
+     * 表名
+     */
+    private String table;
+    /**
+     * 存储列
+     */
+    private String code;
+
+    /**
+     * 显示列
+     */
+    private String text;
+
+    /**
+     * 关键字查询
+     */
+    private String keyword;
+
+    /**
+     * 存储列的值 用于回显查询
+     */
+    private String codeValue;
+
+}

+ 52 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/DynamicDataSourceModel.java

@@ -0,0 +1,52 @@
+package org.jeecg.common.system.vo;
+
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+@Data
+public class DynamicDataSourceModel {
+
+    public DynamicDataSourceModel() {
+
+    }
+
+    public DynamicDataSourceModel(Object dbSource) {
+        if (dbSource != null) {
+            BeanUtils.copyProperties(dbSource, this);
+        }
+    }
+
+    /**
+     * id
+     */
+    private String id;
+    /**
+     * 数据源编码
+     */
+    private String code;
+    /**
+     * 数据库类型
+     */
+    private String dbType;
+    /**
+     * 驱动类
+     */
+    private String dbDriver;
+    /**
+     * 数据源地址
+     */
+    private String dbUrl;
+    /**
+     * 数据库名称
+     */
+    private String dbName;
+    /**
+     * 用户名
+     */
+    private String dbUsername;
+    /**
+     * 密码
+     */
+    private String dbPassword;
+
+}

+ 45 - 30
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/LoginUser.java

@@ -1,12 +1,14 @@
 package org.jeecg.common.system.vo;
 
+import java.util.Date;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
 
 /**
  * <p>
@@ -36,10 +38,15 @@ public class LoginUser {
 	 */
 	private String realname;
 
-     /**
-      * 当前登录部门code
-      */
-    private String orgCode;
+	/**
+	 * 登录人密码
+	 */
+	private String password;
+
+	/**
+	 * 当前登录部门code
+	 */
+	private String orgCode;
 	/**
 	 * 头像
 	 */
@@ -72,27 +79,35 @@ public class LoginUser {
 	 */
 	private Integer status;
 
-	private String delFlag;
-	/**
-     * 同步工作流引擎1同步0不同步
-     */
-    private String activitiSync;
-
-	@Override
-	public String toString() {
-		return "LoginUser{" +
-				"id='" + id + '\'' +
-				", username='" + username + '\'' +
-				", realname='" + realname + '\'' +
-				", orgCode='" + orgCode + '\'' +
-				", avatar='" + avatar + '\'' +
-				", birthday=" + birthday +
-				", sex=" + sex +
-				", email='" + email + '\'' +
-				", phone='" + phone + '\'' +
-				", status=" + status +
-				", delFlag='" + delFlag + '\'' +
-				", activitiSync='" + activitiSync + '\'' +
-				'}';
-	}
+	private Integer delFlag;
+	/**
+	 * 同步工作流引擎1同步0不同步
+	 */
+	private Integer activitiSync;
+
+	/**
+	 * 创建时间
+	 */
+	private Date createTime;
+
+	/**
+	 *  身份(1 普通员工 2 上级)
+	 */
+	private Integer userIdentity;
+
+	/**
+	 * 管理部门ids
+	 */
+	private String departIds;
+
+	/**
+	 * 职务,关联职务表
+	 */
+	private String post;
+
+	/**
+	 * 座机号
+	 */
+	private String telephone;
+
 }

+ 50 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/SysCategoryModel.java

@@ -0,0 +1,50 @@
+package org.jeecg.common.system.vo;
+
+/**
+ * @Author qinfeng
+ * @Date 2020/2/19 12:01
+ * @Description:
+ * @Version 1.0
+ */
+public class SysCategoryModel {
+    /**主键*/
+    private String id;
+    /**父级节点*/
+    private String pid;
+    /**类型名称*/
+    private String name;
+    /**类型编码*/
+    private String code;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getPid() {
+        return pid;
+    }
+
+    public void setPid(String pid) {
+        this.pid = pid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+}

+ 147 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/SysDepartModel.java

@@ -0,0 +1,147 @@
+package org.jeecg.common.system.vo;
+
+/**
+ * lvdandan 部门机构model
+ */
+public class SysDepartModel {
+    /**ID*/
+    private String id;
+    /**父机构ID*/
+    private String parentId;
+    /**机构/部门名称*/
+    private String departName;
+    /**英文名*/
+    private String departNameEn;
+    /**缩写*/
+    private String departNameAbbr;
+    /**排序*/
+    private Integer departOrder;
+    /**描述*/
+    private String description;
+    /**机构类别 1组织机构,2岗位*/
+    private String orgCategory;
+    /**机构类型*/
+    private String orgType;
+    /**机构编码*/
+    private String orgCode;
+    /**手机号*/
+    private String mobile;
+    /**传真*/
+    private String fax;
+    /**地址*/
+    private String address;
+    /**备注*/
+    private String memo;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getDepartName() {
+        return departName;
+    }
+
+    public void setDepartName(String departName) {
+        this.departName = departName;
+    }
+
+    public String getDepartNameEn() {
+        return departNameEn;
+    }
+
+    public void setDepartNameEn(String departNameEn) {
+        this.departNameEn = departNameEn;
+    }
+
+    public String getDepartNameAbbr() {
+        return departNameAbbr;
+    }
+
+    public void setDepartNameAbbr(String departNameAbbr) {
+        this.departNameAbbr = departNameAbbr;
+    }
+
+    public Integer getDepartOrder() {
+        return departOrder;
+    }
+
+    public void setDepartOrder(Integer departOrder) {
+        this.departOrder = departOrder;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getOrgCategory() {
+        return orgCategory;
+    }
+
+    public void setOrgCategory(String orgCategory) {
+        this.orgCategory = orgCategory;
+    }
+
+    public String getOrgType() {
+        return orgType;
+    }
+
+    public void setOrgType(String orgType) {
+        this.orgType = orgType;
+    }
+
+    public String getOrgCode() {
+        return orgCode;
+    }
+
+    public void setOrgCode(String orgCode) {
+        this.orgCode = orgCode;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+}

+ 144 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/system/vo/SysPermissionDataRuleModel.java

@@ -0,0 +1,144 @@
+package org.jeecg.common.system.vo;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 菜单权限规则表
+ * </p>
+ *
+ * @Author huangzhilin
+ * @since 2019-03-29
+ */
+public class SysPermissionDataRuleModel {
+
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 对应的菜单id
+     */
+    private String permissionId;
+
+    /**
+     * 规则名称
+     */
+    private String ruleName;
+
+    /**
+     * 字段
+     */
+    private String ruleColumn;
+
+    /**
+     * 条件
+     */
+    private String ruleConditions;
+
+    /**
+     * 规则值
+     */
+    private String ruleValue;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 修改人
+     */
+    private String updateBy;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getPermissionId() {
+        return permissionId;
+    }
+
+    public void setPermissionId(String permissionId) {
+        this.permissionId = permissionId;
+    }
+
+    public String getRuleName() {
+        return ruleName;
+    }
+
+    public void setRuleName(String ruleName) {
+        this.ruleName = ruleName;
+    }
+
+    public String getRuleColumn() {
+        return ruleColumn;
+    }
+
+    public void setRuleColumn(String ruleColumn) {
+        this.ruleColumn = ruleColumn;
+    }
+
+    public String getRuleConditions() {
+        return ruleConditions;
+    }
+
+    public void setRuleConditions(String ruleConditions) {
+        this.ruleConditions = ruleConditions;
+    }
+
+    public String getRuleValue() {
+        return ruleValue;
+    }
+
+    public void setRuleValue(String ruleValue) {
+        this.ruleValue = ruleValue;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+}

+ 64 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/CommonUtils.java

@@ -0,0 +1,64 @@
+package org.jeecg.common.util;
+
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.util.oss.OssBootUtil;
+import org.jeecgframework.poi.util.PoiPublicUtil;
+import org.springframework.util.FileCopyUtils;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+
+public class CommonUtils {
+
+    public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){
+        String dbPath = null;
+        String fileName = "image" + Math.round(Math.random() * 100000000000L);
+        fileName += "." + PoiPublicUtil.getFileExtendName(data);
+        try {
+            if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){
+                File file = new File(basePath + File.separator + bizPath + File.separator );
+                if (!file.exists()) {
+                    file.mkdirs();// 创建文件根目录
+                }
+                String savePath = file.getPath() + File.separator + fileName;
+                File savefile = new File(savePath);
+                FileCopyUtils.copy(data, savefile);
+                dbPath = bizPath + File.separator + fileName;
+            }else {
+                InputStream in = new ByteArrayInputStream(data);
+                String relativePath = bizPath+"/"+fileName;
+                if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
+                    dbPath = MinioUtil.upload(in,relativePath);
+                }else if(CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)){
+                    dbPath = OssBootUtil.upload(in,relativePath);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return dbPath;
+    }
+
+    /**
+     * 判断文件名是否带盘符,重新处理
+     * @param fileName
+     * @return
+     */
+    public static String getFileName(String fileName){
+        //判断是否带有盘符信息
+        // Check for Unix-style path
+        int unixSep = fileName.lastIndexOf('/');
+        // Check for Windows-style path
+        int winSep = fileName.lastIndexOf('\\');
+        // Cut off at latest possible point
+        int pos = (winSep > unixSep ? winSep : unixSep);
+        if (pos != -1)  {
+            // Any sort of path separator found...
+            fileName = fileName.substring(pos + 1);
+        }
+        //替换上传文件名字的特殊字符
+        fileName = fileName.replace("=","").replace(",","").replace("&","");
+        return fileName;
+    }
+}

+ 57 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/FillRuleUtil.java

@@ -0,0 +1,57 @@
+package org.jeecg.common.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.handler.IFillRuleHandler;
+
+
+/**
+ * 规则值自动生成工具类
+ *
+ * @author qinfeng
+ * @举例: 自动生成订单号;自动生成当前日期
+ */
+@Slf4j
+public class FillRuleUtil {
+
+    /**
+     * @param ruleCode ruleCode
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static Object executeRule(String ruleCode, JSONObject formData) {
+        if (!StringUtils.isEmpty(ruleCode)) {
+            try {
+                // 获取 Service
+                ServiceImpl impl = (ServiceImpl) SpringContextUtils.getBean("sysFillRuleServiceImpl");
+                // 根据 ruleCode 查询出实体
+                QueryWrapper queryWrapper = new QueryWrapper();
+                queryWrapper.eq("rule_code", ruleCode);
+                JSONObject entity = JSON.parseObject(JSON.toJSONString(impl.getOne(queryWrapper)));
+                if (entity == null) {
+                    log.warn("填值规则:" + ruleCode + " 不存在");
+                    return null;
+                }
+                // 获取必要的参数
+                String ruleClass = entity.getString("ruleClass");
+                JSONObject params = entity.getJSONObject("ruleParams");
+                if (params == null) {
+                    params = new JSONObject();
+                }
+                if (formData == null) {
+                    formData = new JSONObject();
+                }
+                // 通过反射执行配置的类里的方法
+                IFillRuleHandler ruleHandler = (IFillRuleHandler) Class.forName(ruleClass).newInstance();
+                return ruleHandler.execute(params, formData);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+}

File diff ditekan karena terlalu besar
+ 53 - 35
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/MD5Util.java


+ 208 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/MinioUtil.java

@@ -0,0 +1,208 @@
+package org.jeecg.common.util;
+
+import io.minio.MinioClient;
+import io.minio.errors.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.multipart.MultipartFile;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLDecoder;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * minio文件上传工具类
+ */
+@Slf4j
+public class MinioUtil {
+    private static String minioUrl;
+    private static String minioName;
+    private static String minioPass;
+    private static String bucketName;
+
+    public static void setMinioUrl(String minioUrl) {
+        MinioUtil.minioUrl = minioUrl;
+    }
+
+    public static void setMinioName(String minioName) {
+        MinioUtil.minioName = minioName;
+    }
+
+    public static void setMinioPass(String minioPass) {
+        MinioUtil.minioPass = minioPass;
+    }
+
+    public static void setBucketName(String bucketName) {
+        MinioUtil.bucketName = bucketName;
+    }
+
+    public static String getMinioUrl() {
+        return minioUrl;
+    }
+
+    public static String getBucketName() {
+        return bucketName;
+    }
+
+    private static MinioClient minioClient = null;
+
+    /**
+     * 上传文件
+     * @param file
+     * @return
+     */
+    public static String upload(MultipartFile file, String bizPath, String customBucket) {
+        String file_url = "";
+        String newBucket = bucketName;
+        if(oConvertUtils.isNotEmpty(customBucket)){
+            newBucket = customBucket;
+        }
+        try {
+            initMinio(minioUrl, minioName,minioPass);
+            // 检查存储桶是否已经存在
+            if(minioClient.bucketExists(newBucket)) {
+                log.info("Bucket already exists.");
+            } else {
+                // 创建一个名为ota的存储桶
+                minioClient.makeBucket(newBucket);
+                log.info("create a new bucket.");
+            }
+            InputStream stream = file.getInputStream();
+            // 获取文件名
+            String orgName = file.getOriginalFilename();
+            orgName = CommonUtils.getFileName(orgName);
+            String objectName = bizPath+"/"+orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
+
+            // 使用putObject上传一个本地文件到存储桶中。
+            minioClient.putObject(newBucket,objectName, stream,stream.available(),"application/octet-stream");
+            stream.close();
+            file_url = minioUrl+newBucket+"/"+objectName;
+        }catch (IOException e){
+            log.error(e.getMessage(), e);
+        } catch (InvalidKeyException e) {
+            log.error(e.getMessage(), e);
+        } catch (NoSuchAlgorithmException e) {
+            log.error(e.getMessage(), e);
+        } catch (NoResponseException e) {
+            log.error(e.getMessage(), e);
+        } catch (XmlPullParserException e) {
+            log.error(e.getMessage(), e);
+        } catch (InvalidArgumentException e) {
+            log.error(e.getMessage(), e);
+        } catch (RegionConflictException e) {
+            log.error(e.getMessage(), e);
+        } catch (InvalidBucketNameException e) {
+            log.error(e.getMessage(), e);
+        } catch (ErrorResponseException e) {
+            log.error(e.getMessage(), e);
+        } catch (InternalException e) {
+            log.error(e.getMessage(), e);
+        } catch (InsufficientDataException e) {
+            log.error(e.getMessage(), e);
+        }
+        return file_url;
+    }
+
+    /**
+     * 文件上传
+     * @param file
+     * @param bizPath
+     * @return
+     */
+    public static String upload(MultipartFile file, String bizPath) {
+        return  upload(file,bizPath,null);
+    }
+
+    /**
+     * 获取文件流
+     * @param bucketName
+     * @param objectName
+     * @return
+     */
+    public static InputStream getMinioFile(String bucketName,String objectName){
+        InputStream inputStream = null;
+        try {
+            initMinio(minioUrl, minioName, minioPass);
+            inputStream = minioClient.getObject(bucketName, objectName);
+        } catch (Exception e) {
+            log.info("文件获取失败" + e.getMessage());
+        }
+        return inputStream;
+    }
+
+    /**
+     * 删除文件
+     * @param bucketName
+     * @param objectName
+     * @throws Exception
+     */
+    public static void removeObject(String bucketName, String objectName) {
+        try {
+            initMinio(minioUrl, minioName,minioPass);
+            minioClient.removeObject(bucketName, objectName);
+        }catch (Exception e){
+            log.info("文件删除失败" + e.getMessage());
+        }
+    }
+
+    /**
+     * 获取文件外链
+     * @param bucketName
+     * @param objectName
+     * @param expires
+     * @return
+     */
+    public static String getObjectURL(String bucketName, String objectName, Integer expires) {
+        initMinio(minioUrl, minioName,minioPass);
+        try{
+            String url = minioClient.presignedGetObject(bucketName, objectName, expires);
+            return URLDecoder.decode(url,"UTF-8");
+        }catch (Exception e){
+            log.info("文件路径获取失败" + e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 初始化客户端
+     * @param minioUrl
+     * @param minioName
+     * @param minioPass
+     * @return
+     */
+    private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
+        if (minioClient == null) {
+            try {
+                minioClient = new MinioClient(minioUrl, minioName,minioPass);
+            } catch (InvalidEndpointException e) {
+                e.printStackTrace();
+            } catch (InvalidPortException e) {
+                e.printStackTrace();
+            }
+        }
+        return minioClient;
+    }
+
+    /**
+     * 上传文件到minio
+     * @param stream
+     * @param relativePath
+     * @return
+     */
+    public static String upload(InputStream stream,String relativePath) throws IOException, InvalidKeyException, NoSuchAlgorithmException, InsufficientDataException, InternalException, NoResponseException, InvalidBucketNameException, XmlPullParserException, ErrorResponseException, RegionConflictException, InvalidArgumentException {
+        initMinio(minioUrl, minioName,minioPass);
+        if(minioClient.bucketExists(bucketName)) {
+            log.info("Bucket already exists.");
+        } else {
+            // 创建一个名为ota的存储桶
+            minioClient.makeBucket(bucketName);
+            log.info("create a new bucket.");
+        }
+        minioClient.putObject(bucketName,relativePath, stream, stream.available(),"application/octet-stream");
+        stream.close();
+        return minioUrl+bucketName+"/"+relativePath;
+    }
+
+}

+ 238 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/ReflectHelper.java

@@ -0,0 +1,238 @@
+package org.jeecg.common.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
+/**
+ * @author 张代浩
+ * @desc 通过反射来动态调用get 和 set 方法
+ */
+@Slf4j
+public class ReflectHelper {
+
+    private Class cls;
+
+    /**
+     * 传过来的对象
+     */
+    private Object obj;
+
+    /**
+     * 存放get方法
+     */
+    private Hashtable<String, Method> getMethods = null;
+    /**
+     * 存放set方法
+     */
+    private Hashtable<String, Method> setMethods = null;
+
+    /**
+     * 定义构造方法 -- 一般来说是个pojo
+     *
+     * @param o 目标对象
+     */
+    public ReflectHelper(Object o) {
+        obj = o;
+        initMethods();
+    }
+
+    /**
+     * @desc 初始化
+     */
+    public void initMethods() {
+        getMethods = new Hashtable<String, Method>();
+        setMethods = new Hashtable<String, Method>();
+        cls = obj.getClass();
+        Method[] methods = cls.getMethods();
+        // 定义正则表达式,从方法中过滤出getter / setter 函数.
+        String gs = "get(\\w+)";
+        Pattern getM = Pattern.compile(gs);
+        String ss = "set(\\w+)";
+        Pattern setM = Pattern.compile(ss);
+        // 把方法中的"set" 或者 "get" 去掉
+        String rapl = "$1";
+        String param;
+        for (int i = 0; i < methods.length; ++i) {
+            Method m = methods[i];
+            String methodName = m.getName();
+            if (Pattern.matches(gs, methodName)) {
+                param = getM.matcher(methodName).replaceAll(rapl).toLowerCase();
+                getMethods.put(param, m);
+            } else if (Pattern.matches(ss, methodName)) {
+                param = setM.matcher(methodName).replaceAll(rapl).toLowerCase();
+                setMethods.put(param, m);
+            } else {
+                // logger.info(methodName + " 不是getter,setter方法!");
+            }
+        }
+    }
+
+    /**
+     * @desc 调用set方法
+     */
+    public boolean setMethodValue(String property, Object object) {
+        Method m = setMethods.get(property.toLowerCase());
+        if (m != null) {
+            try {
+                // 调用目标类的setter函数
+                m.invoke(obj, object);
+                return true;
+            } catch (Exception ex) {
+                log.info("invoke getter on " + property + " error: " + ex.toString());
+                return false;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * @desc 调用set方法
+     */
+    public Object getMethodValue(String property) {
+        Object value = null;
+        Method m = getMethods.get(property.toLowerCase());
+        if (m != null) {
+            try {
+                /*
+                 * 调用obj类的setter函数
+                 */
+                value = m.invoke(obj, new Object[]{});
+
+            } catch (Exception ex) {
+                log.info("invoke getter on " + property + " error: " + ex.toString());
+            }
+        }
+        return value;
+    }
+
+    /**
+     * 把map中的内容全部注入到obj中
+     *
+     * @param data
+     * @return
+     */
+    public Object setAll(Map<String, Object> data) {
+        if (data == null || data.keySet().size() <= 0) {
+            return null;
+        }
+        for (Entry<String, Object> entry : data.entrySet()) {
+            this.setMethodValue(entry.getKey(), entry.getValue());
+        }
+        return obj;
+    }
+
+    /**
+     * 把map中的内容全部注入到obj中
+     *
+     * @param o
+     * @param data
+     * @return
+     */
+    public static Object setAll(Object o, Map<String, Object> data) {
+        ReflectHelper reflectHelper = new ReflectHelper(o);
+        reflectHelper.setAll(data);
+        return o;
+    }
+
+    /**
+     * 把map中的内容全部注入到新实例中
+     *
+     * @param clazz
+     * @param data
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T setAll(Class<T> clazz, Map<String, Object> data) {
+        T o = null;
+        try {
+            o = clazz.newInstance();
+        } catch (Exception e) {
+            e.printStackTrace();
+            o = null;
+            return o;
+        }
+        return (T) setAll(o, data);
+    }
+
+    /**
+     * 根据传入的class将mapList转换为实体类list
+     *
+     * @param mapist
+     * @param clazz
+     * @return
+     */
+    public static <T> List<T> transList2Entrys(List<Map<String, Object>> mapist, Class<T> clazz) {
+        List<T> list = new ArrayList<T>();
+        if (mapist != null && mapist.size() > 0) {
+            for (Map<String, Object> data : mapist) {
+                list.add(ReflectHelper.setAll(clazz, data));
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 根据属性名获取属性值
+     */
+    public static Object getFieldValueByName(String fieldName, Object o) {
+        try {
+            String firstLetter = fieldName.substring(0, 1).toUpperCase();
+            String getter = "get" + firstLetter + fieldName.substring(1);
+            Method method = o.getClass().getMethod(getter, new Class[]{});
+            Object value = method.invoke(o, new Object[]{});
+            return value;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 获取属性名数组
+     */
+    public static String[] getFiledName(Object o) {
+        Field[] fields = o.getClass().getDeclaredFields();
+        String[] fieldNames = new String[fields.length];
+        for (int i = 0; i < fields.length; i++) {
+            //log.info(fields[i].getType());
+            fieldNames[i] = fields[i].getName();
+        }
+        return fieldNames;
+    }
+
+    /**
+     * 获取属性类型(type),属性名(name),属性值(value)的map组成的list
+     */
+    public static List<Map> getFiledsInfo(Object o) {
+        Field[] fields = o.getClass().getDeclaredFields();
+        String[] fieldNames = new String[fields.length];
+        List<Map> list = new ArrayList<Map>();
+        Map<String, Object> infoMap = null;
+        for (int i = 0; i < fields.length; i++) {
+            infoMap = new HashMap<String, Object>();
+            infoMap.put("type", fields[i].getType().toString());
+            infoMap.put("name", fields[i].getName());
+            infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
+            list.add(infoMap);
+        }
+        return list;
+    }
+
+    /**
+     * 获取对象的所有属性值,返回一个对象数组
+     */
+    public static Object[] getFiledValues(Object o) {
+        String[] fieldNames = getFiledName(o);
+        Object[] value = new Object[fieldNames.length];
+        for (int i = 0; i < fieldNames.length; i++) {
+            value[i] = getFieldValueByName(fieldNames[i], o);
+        }
+        return value;
+    }
+
+}

+ 70 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/SysAnnmentTypeEnum.java

@@ -0,0 +1,70 @@
+package org.jeecg.common.util;
+
+/**
+ * 系统公告自定义跳转方式
+ */
+public enum SysAnnmentTypeEnum {
+    /**
+     * 邮件跳转组件
+     */
+    EMAIL("email", "component", "modules/eoa/email/modals/EoaEmailInForm"),
+    /**
+     * 工作流跳转链接我的办公
+     */
+    BPM("bpm", "url", "/bpm/task/MyTaskList");
+
+    /**
+     * 业务类型(email:邮件 bpm:流程)
+     */
+    private String type;
+    /**
+     * 打开方式 组件:component 路由:url
+     */
+    private String openType;
+    /**
+     * 组件/路由 地址
+     */
+    private String openPage;
+
+    SysAnnmentTypeEnum(String type, String openType, String openPage) {
+        this.type = type;
+        this.openType = openType;
+        this.openPage = openPage;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getOpenType() {
+        return openType;
+    }
+
+    public void setOpenType(String openType) {
+        this.openType = openType;
+    }
+
+    public String getOpenPage() {
+        return openPage;
+    }
+
+    public void setOpenPage(String openPage) {
+        this.openPage = openPage;
+    }
+
+    public static SysAnnmentTypeEnum getByType(String type) {
+        if (oConvertUtils.isEmpty(type)) {
+            return null;
+        }
+        for (SysAnnmentTypeEnum val : values()) {
+            if (val.getType().equals(type)) {
+                return val;
+            }
+        }
+        return null;
+    }
+}

+ 92 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/DataSourceCachePool.java

@@ -0,0 +1,92 @@
+package org.jeecg.common.util.db;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.jeecg.common.constant.CacheConstant;
+import org.jeecg.common.system.api.ISysBaseApi;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
+import org.jeecg.common.util.SpringContextUtils;
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 数据源缓存池
+ */
+public class DataSourceCachePool {
+    /** 数据源连接池缓存【本地 class缓存 - 不支持分布式】 */
+    private static Map<String, DruidDataSource> dbSources = new HashMap<>();
+    private static RedisTemplate<String, Object> redisTemplate;
+
+    private static RedisTemplate<String, Object> getRedisTemplate() {
+        if (redisTemplate == null) {
+            redisTemplate = (RedisTemplate<String, Object>) SpringContextUtils.getBean("redisTemplate");
+        }
+        return redisTemplate;
+    }
+
+    /**
+     * 获取多数据源缓存
+     *
+     * @param dbKey
+     * @return
+     */
+    public static DynamicDataSourceModel getCacheDynamicDataSourceModel(String dbKey) {
+        String redisCacheKey = CacheConstant.SYS_DYNAMICDB_CACHE + dbKey;
+        if (getRedisTemplate().hasKey(redisCacheKey)) {
+            return (DynamicDataSourceModel) getRedisTemplate().opsForValue().get(redisCacheKey);
+        }
+        ISysBaseApi sysBaseAPI = SpringContextUtils.getBean(ISysBaseApi.class);
+        DynamicDataSourceModel dbSource = sysBaseAPI.getDynamicDbSourceByCode(dbKey);
+        if (dbSource != null) {
+            getRedisTemplate().opsForValue().set(redisCacheKey, dbSource);
+        }
+        return dbSource;
+    }
+
+    public static DruidDataSource getCacheBasicDataSource(String dbKey) {
+        return dbSources.get(dbKey);
+    }
+
+    /**
+     * put 数据源缓存
+     *
+     * @param dbKey
+     * @param db
+     */
+    public static void putCacheBasicDataSource(String dbKey, DruidDataSource db) {
+        dbSources.put(dbKey, db);
+    }
+
+    /**
+     * 清空数据源缓存
+     */
+    public static void cleanAllCache() {
+        //关闭数据源连接
+        for(Map.Entry<String, DruidDataSource> entry : dbSources.entrySet()){
+            String dbkey = entry.getKey();
+            DruidDataSource druidDataSource = entry.getValue();
+            if(druidDataSource!=null && druidDataSource.isEnable()){
+                druidDataSource.close();
+            }
+            //清空redis缓存
+            getRedisTemplate().delete(CacheConstant.SYS_DYNAMICDB_CACHE + dbkey);
+        }
+        //清空缓存
+        dbSources.clear();
+    }
+
+    public static void removeCache(String dbKey) {
+        //关闭数据源连接
+        DruidDataSource druidDataSource = dbSources.get(dbKey);
+        if(druidDataSource!=null && druidDataSource.isEnable()){
+            druidDataSource.close();
+        }
+        //清空redis缓存
+        getRedisTemplate().delete(CacheConstant.SYS_DYNAMICDB_CACHE + dbKey);
+        //清空缓存
+        dbSources.remove(dbKey);
+    }
+
+}

+ 31 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/DbValidationQueryEnum.java

@@ -0,0 +1,31 @@
+package org.jeecg.common.util.db;
+
+public enum DbValidationQueryEnum {
+    ORACLE("oracle", "SELECT 1 FROM DUAL"),
+    MYSQL("mysql", "select 1"),
+    SQLSERVER("sqlserver", "SELECT 1 FROM DUAL"),;
+
+    DbValidationQueryEnum(String dbType, String validationQuerySql) {
+        this.dbType = dbType;
+        this.validationQuerySql = validationQuerySql;
+    }
+
+    private String dbType;
+    private String validationQuerySql;
+
+    public String getDbType() {
+        return dbType;
+    }
+
+    public void setDbType(String dbType) {
+        this.dbType = dbType;
+    }
+
+    public String getValidationQuerySql() {
+        return validationQuerySql;
+    }
+
+    public void setValidationQuerySql(String validationQuerySql) {
+        this.validationQuerySql = validationQuerySql;
+    }
+}

+ 298 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/DynamicDBUtil.java

@@ -0,0 +1,298 @@
+package org.jeecg.common.util.db;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.ArrayUtils;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
+import org.jeecg.common.util.ReflectHelper;
+import org.jeecg.common.util.oConvertUtils;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Spring JDBC 实时数据库访问
+ *
+ * @author chenguobin
+ * @version 1.0
+ * @date 2014-09-05
+ */
+@Slf4j
+public class DynamicDBUtil {
+
+    /**
+     * 获取数据源【最底层方法,不要随便调用】
+     *
+     * @param dbSource
+     * @return
+     */
+    private static DruidDataSource getJdbcDataSource(final DynamicDataSourceModel dbSource) {
+        DruidDataSource dataSource = new DruidDataSource();
+
+        String driverClassName = dbSource.getDbDriver();
+        String url = dbSource.getDbUrl();
+        String dbUser = dbSource.getDbUsername();
+        String dbPassword = dbSource.getDbPassword();
+        dataSource.setDriverClassName(driverClassName);
+        dataSource.setUrl(url);
+        //dataSource.setValidationQuery("SELECT 1 FROM DUAL");
+        dataSource.setTestWhileIdle(true);
+        dataSource.setTestOnBorrow(false);
+        dataSource.setTestOnReturn(false);
+        dataSource.setBreakAfterAcquireFailure(true);
+        dataSource.setConnectionErrorRetryAttempts(0);
+        dataSource.setUsername(dbUser);
+        dataSource.setMaxWait(60000);
+        dataSource.setPassword(dbPassword);
+
+        log.info("******************************************");
+        log.info("*                                        *");
+        log.info("*====【"+dbSource.getCode()+"】=====Druid连接池已启用 ====*");
+        log.info("*                                        *");
+        log.info("******************************************");
+        return dataSource;
+    }
+
+    /**
+     * 通过 dbKey ,获取数据源
+     *
+     * @param dbKey
+     * @return
+     */
+    public static DruidDataSource getDbSourceByDbKey(final String dbKey) {
+        //获取多数据源配置
+        DynamicDataSourceModel dbSource = DataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+        //先判断缓存中是否存在数据库链接
+        DruidDataSource cacheDbSource = DataSourceCachePool.getCacheBasicDataSource(dbKey);
+        if (cacheDbSource != null && !cacheDbSource.isClosed()) {
+            log.debug("--------getDbSourceBydbKey------------------从缓存中获取DB连接-------------------");
+            return cacheDbSource;
+        } else {
+            DruidDataSource dataSource = getJdbcDataSource(dbSource);
+            if(dataSource!=null && dataSource.isEnable()){
+                DataSourceCachePool.putCacheBasicDataSource(dbKey, dataSource);
+            }else{
+                throw new JeecgBootException("动态数据源连接失败,dbKey:"+dbKey);
+            }
+            log.info("--------getDbSourceBydbKey------------------创建DB数据库连接-------------------");
+            return dataSource;
+        }
+    }
+
+    /**
+     * 关闭数据库连接池
+     *
+     * @param dbKey
+     * @return
+     */
+    public static void closeDbKey(final String dbKey) {
+        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
+        try {
+            if (dataSource != null && !dataSource.isClosed()) {
+                dataSource.getConnection().commit();
+                dataSource.getConnection().close();
+                dataSource.close();
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    private static JdbcTemplate getJdbcTemplate(String dbKey) {
+        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
+        return new JdbcTemplate(dataSource);
+    }
+
+    /**
+     * Executes the SQL statement in this <code>PreparedStatement</code> object,
+     * which must be an SQL Data Manipulation Language (DML) statement, such as <code>INSERT</code>, <code>UPDATE</code> or
+     * <code>DELETE</code>; or an SQL statement that returns nothing,
+     * such as a DDL statement.
+     */
+    public static int update(final String dbKey, String sql, Object... param) {
+        int effectCount;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        if (ArrayUtils.isEmpty(param)) {
+            effectCount = jdbcTemplate.update(sql);
+        } else {
+            effectCount = jdbcTemplate.update(sql, param);
+        }
+        return effectCount;
+    }
+
+    /**
+     * 支持miniDao语法操作的Update
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static int updateByHash(final String dbKey, String sql, HashMap<String, Object> data) {
+        int effectCount;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        //根据模板获取sql
+        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
+        effectCount = namedParameterJdbcTemplate.update(sql, data);
+        return effectCount;
+    }
+
+    public static Object findOne(final String dbKey, String sql, Object... param) {
+        List<Map<String, Object>> list;
+        list = findList(dbKey, sql, param);
+        if (oConvertUtils.listIsEmpty(list)) {
+            log.error("Except one, but not find actually");
+        }
+        if (list.size() > 1) {
+            log.error("Except one, but more than one actually");
+        }
+        return list.get(0);
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回HashMap
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static Object findOneByHash(final String dbKey, String sql, HashMap<String, Object> data) {
+        List<Map<String, Object>> list;
+        list = findListByHash(dbKey, sql, data);
+        if (oConvertUtils.listIsEmpty(list)) {
+            log.error("Except one, but not find actually");
+        }
+        if (list.size() > 1) {
+            log.error("Except one, but more than one actually");
+        }
+        return list.get(0);
+    }
+
+    /**
+     * 直接sql查询 根据clazz返回单个实例
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句
+     * @param clazz 返回实例的Class
+     * @param param
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> Object findOne(final String dbKey, String sql, Class<T> clazz, Object... param) {
+        Map<String, Object> map = (Map<String, Object>) findOne(dbKey, sql, param);
+        return ReflectHelper.setAll(clazz, map);
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回单个实例
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param clazz 返回实例的Class
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> Object findOneByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
+        Map<String, Object> map = (Map<String, Object>) findOneByHash(dbKey, sql, data);
+        return ReflectHelper.setAll(clazz, map);
+    }
+
+    public static List<Map<String, Object>> findList(final String dbKey, String sql, Object... param) {
+        List<Map<String, Object>> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+
+        if (ArrayUtils.isEmpty(param)) {
+            list = jdbcTemplate.queryForList(sql);
+        } else {
+            list = jdbcTemplate.queryForList(sql, param);
+        }
+        return list;
+    }
+
+    /**
+     * 支持miniDao语法操作的查询
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static List<Map<String, Object>> findListByHash(final String dbKey, String sql, HashMap<String, Object> data) {
+        List<Map<String, Object>> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        //根据模板获取sql
+        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
+        list = namedParameterJdbcTemplate.queryForList(sql, data);
+        return list;
+    }
+
+    //此方法只能返回单列,不能返回实体类
+    public static <T> List<T> findList(final String dbKey, String sql, Class<T> clazz, Object... param) {
+        List<T> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+
+        if (ArrayUtils.isEmpty(param)) {
+            list = jdbcTemplate.queryForList(sql, clazz);
+        } else {
+            list = jdbcTemplate.queryForList(sql, clazz, param);
+        }
+        return list;
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回单列数据list
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param clazz 类型Long、String等
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static <T> List<T> findListByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
+        List<T> list;
+        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
+        //根据模板获取sql
+        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
+        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
+        list = namedParameterJdbcTemplate.queryForList(sql, data, clazz);
+        return list;
+    }
+
+    /**
+     * 直接sql查询 返回实体类列表
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持 minidao 语法逻辑
+     * @param clazz 返回实体类列表的class
+     * @param param sql拼接注入中需要的数据
+     * @return
+     */
+    public static <T> List<T> findListEntities(final String dbKey, String sql, Class<T> clazz, Object... param) {
+        List<Map<String, Object>> queryList = findList(dbKey, sql, param);
+        return ReflectHelper.transList2Entrys(queryList, clazz);
+    }
+
+    /**
+     * 支持miniDao语法操作的查询 返回实体类列表
+     *
+     * @param dbKey 数据源标识
+     * @param sql   执行sql语句,sql支持minidao语法逻辑
+     * @param clazz 返回实体类列表的class
+     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
+     * @return
+     */
+    public static <T> List<T> findListEntitiesByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
+        List<Map<String, Object>> queryList = findListByHash(dbKey, sql, data);
+        return ReflectHelper.transList2Entrys(queryList, clazz);
+    }
+}

+ 171 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/FreemarkerParseFactory.java

@@ -0,0 +1,171 @@
+package org.jeecg.common.util.db;
+
+import freemarker.cache.StringTemplateLoader;
+import freemarker.core.ParseException;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.jeecgframework.codegenerate.generate.util.SimpleFormat;
+
+import java.io.StringWriter;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * @author 赵俊夫
+ * @version V1.0
+ * @Title:FreemarkerHelper
+ * @description:Freemarker引擎协助类
+ * @date Jul 5, 2013 2:58:29 PM
+ */
+@Slf4j
+public class FreemarkerParseFactory {
+
+    private static final String ENCODE = "utf-8";
+    /**
+     * 参数格式化工具类
+     */
+    private static final String MINI_DAO_FORMAT = "DaoFormat";
+
+    /**
+     * 文件缓存
+     */
+    private static final Configuration _tplConfig = new Configuration();
+    /**
+     * SQL 缓存
+     */
+    private static final Configuration _sqlConfig = new Configuration();
+
+    private static StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
+
+    // 使用内嵌的(?ms)打开单行和多行模式
+    private final static Pattern p = Pattern
+            .compile("(?ms)/\\*.*?\\*/|^\\s*//.*?$");
+
+    static {
+        _tplConfig.setClassForTemplateLoading(
+                new FreemarkerParseFactory().getClass(), "/");
+        _tplConfig.setNumberFormat("0.#####################");
+        _sqlConfig.setTemplateLoader(stringTemplateLoader);
+        _sqlConfig.setNumberFormat("0.#####################");
+        //classic_compatible设置,解决报空指针错误
+        _sqlConfig.setClassicCompatible(true);
+    }
+
+    /**
+     * 判断模板是否存在
+     *
+     * @throws Exception
+     */
+    public static boolean isExistTemplate(String tplName) throws Exception {
+        try {
+            Template mytpl = _tplConfig.getTemplate(tplName, "UTF-8");
+            if (mytpl == null) {
+                return false;
+            }
+        } catch (Exception e) {
+            //update-begin--Author:scott  Date:20180320 for:解决问题 - 错误提示sql文件不存在,实际问题是sql freemarker用法错误-----
+            if (e instanceof ParseException) {
+                log.error(e.getMessage(), e.fillInStackTrace());
+                throw new Exception(e);
+            }
+            log.debug("----isExistTemplate----" + e.toString());
+            //update-end--Author:scott  Date:20180320 for:解决问题 - 错误提示sql文件不存在,实际问题是sql freemarker用法错误------
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 解析ftl模板
+     *
+     * @param tplName 模板名
+     * @param paras   参数
+     * @return
+     */
+    public static String parseTemplate(String tplName, Map<String, Object> paras) {
+        try {
+            log.debug(" minidao sql templdate : " + tplName);
+            StringWriter swriter = new StringWriter();
+            Template mytpl = _tplConfig.getTemplate(tplName, ENCODE);
+            if (paras.containsKey(MINI_DAO_FORMAT)) {
+                throw new RuntimeException("DaoFormat 是 minidao 保留关键字,不允许使用 ,请更改参数定义!");
+            }
+            paras.put(MINI_DAO_FORMAT, new SimpleFormat());
+            mytpl.process(paras, swriter);
+            String sql = getSqlText(swriter.toString());
+            paras.remove(MINI_DAO_FORMAT);
+            return sql;
+        } catch (Exception e) {
+            log.error(e.getMessage(), e.fillInStackTrace());
+            log.error("发送一次的模板key:{ " + tplName + " }");
+            //System.err.println(e.getMessage());
+            //System.err.println("模板名:{ "+ tplName +" }");
+            throw new RuntimeException("解析SQL模板异常");
+        }
+    }
+
+    /**
+     * 解析ftl
+     *
+     * @param tplContent 模板内容
+     * @param paras      参数
+     * @return String 模板解析后内容
+     */
+    public static String parseTemplateContent(String tplContent,
+                                              Map<String, Object> paras) {
+        try {
+            StringWriter swriter = new StringWriter();
+            if (stringTemplateLoader.findTemplateSource("sql_" + tplContent.hashCode()) == null) {
+                stringTemplateLoader.putTemplate("sql_" + tplContent.hashCode(), tplContent);
+            }
+            Template mytpl = _sqlConfig.getTemplate("sql_" + tplContent.hashCode(), ENCODE);
+            if (paras.containsKey(MINI_DAO_FORMAT)) {
+                throw new RuntimeException("DaoFormat 是 minidao 保留关键字,不允许使用 ,请更改参数定义!");
+            }
+            paras.put(MINI_DAO_FORMAT, new SimpleFormat());
+            mytpl.process(paras, swriter);
+            String sql = getSqlText(swriter.toString());
+            paras.remove(MINI_DAO_FORMAT);
+            return sql;
+        } catch (Exception e) {
+            log.error(e.getMessage(), e.fillInStackTrace());
+            log.error("发送一次的模板key:{ " + tplContent + " }");
+            //System.err.println(e.getMessage());
+            //System.err.println("模板内容:{ "+ tplContent +" }");
+            throw new RuntimeException("解析SQL模板异常");
+        }
+    }
+
+    /**
+     * 除去无效字段,去掉注释 不然批量处理可能报错 去除无效的等于
+     */
+    private static String getSqlText(String sql) {
+        // 将注释替换成""
+        sql = p.matcher(sql).replaceAll("");
+        sql = sql.replaceAll("\\n", " ").replaceAll("\\t", " ")
+                .replaceAll("\\s{1,}", " ").trim();
+        // 去掉 最后是 where这样的问题
+        if (sql.endsWith("where") || sql.endsWith("where ")) {
+            sql = sql.substring(0, sql.lastIndexOf("where"));
+        }
+        // 去掉where and 这样的问题
+        int index = 0;
+        while ((index = StringUtils.indexOfIgnoreCase(sql, "where and", index)) != -1) {
+            sql = sql.substring(0, index + 5)
+                    + sql.substring(index + 9, sql.length());
+        }
+        // 去掉 , where 这样的问题
+        index = 0;
+        while ((index = StringUtils.indexOfIgnoreCase(sql, ", where", index)) != -1) {
+            sql = sql.substring(0, index)
+                    + sql.substring(index + 1, sql.length());
+        }
+        // 去掉 最后是 ,这样的问题
+        if (sql.endsWith(",") || sql.endsWith(", ")) {
+            sql = sql.substring(0, sql.lastIndexOf(","));
+        }
+        return sql;
+    }
+}

+ 212 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/db/SqlUtils.java

@@ -0,0 +1,212 @@
+package org.jeecg.common.util.db;
+
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.constant.DataBaseConstant;
+import org.jeecg.common.system.vo.DynamicDataSourceModel;
+
+import java.text.MessageFormat;
+import java.util.Map;
+
+/**
+ * 根据不同的数据库,动态生成SQL,例如分页
+ */
+public class SqlUtils {
+
+    public static final String DATABSE_TYPE_MYSQL = "mysql";
+    public static final String DATABSE_TYPE_POSTGRE = "postgresql";
+    public static final String DATABSE_TYPE_ORACLE = "oracle";
+    public static final String DATABSE_TYPE_SQLSERVER = "sqlserver";
+
+
+    /**
+     * 分页SQL
+     */
+    public static final String MYSQL_SQL = "select * from ( {0}) sel_tab00 limit {1},{2}";
+    public static final String POSTGRE_SQL = "select * from ( {0}) sel_tab00 limit {2} offset {1}";
+    public static final String ORACLE_SQL = "select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}";
+    public static final String SQLSERVER_SQL = "select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}";
+
+    /**
+     * 获取所有表的SQL
+     */
+    public static final String MYSQL_ALLTABLES_SQL = "select distinct table_name from information_schema.columns where table_schema = {0}";
+    public static final String POSTGRE__ALLTABLES_SQL = "SELECT distinct c.relname AS  table_name FROM pg_class c";
+    public static final String ORACLE__ALLTABLES_SQL = "select distinct colstable.table_name as  table_name from user_tab_cols colstable";
+    public static final String SQLSERVER__ALLTABLES_SQL = "select distinct c.name as  table_name from sys.objects c";
+
+    /**
+     * 获取指定表的所有列名
+     */
+    public static final String MYSQL_ALLCOLUMNS_SQL = "select column_name from information_schema.columns where table_name = {0} and table_schema = {1}";
+    public static final String POSTGRE_ALLCOLUMNS_SQL = "select table_name from information_schema.columns where table_name = {0}";
+    public static final String ORACLE_ALLCOLUMNS_SQL = "select column_name from all_tab_columns where table_name ={0}";
+    public static final String SQLSERVER_ALLCOLUMNS_SQL = "select name from syscolumns where id={0}";
+
+    /*
+     * 判断数据库类型
+     */
+
+    public static boolean dbTypeIsMySQL(String dbType) {
+        return dbTypeIf(dbType, DATABSE_TYPE_MYSQL, DataBaseConstant.DB_TYPE_MYSQL_NUM);
+    }
+
+    public static boolean dbTypeIsOracle(String dbType) {
+        return dbTypeIf(dbType, DATABSE_TYPE_ORACLE, DataBaseConstant.DB_TYPE_ORACLE_NUM);
+    }
+
+    public static boolean dbTypeIsSQLServer(String dbType) {
+        return dbTypeIf(dbType, DATABSE_TYPE_SQLSERVER, DataBaseConstant.DB_TYPE_SQLSERVER_NUM);
+    }
+
+    public static boolean dbTypeIsPostgre(String dbType) {
+        return dbTypeIf(dbType, DATABSE_TYPE_POSTGRE, DataBaseConstant.DB_TYPE_POSTGRESQL_NUM);
+    }
+
+    /**
+     * 判断数据库类型
+     */
+    public static boolean dbTypeIf(String dbType, String... correctTypes) {
+        for (String type : correctTypes) {
+            if (type.equalsIgnoreCase(dbType)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 获取全 SQL
+     * 拼接 where 条件
+     *
+     * @param sql
+     * @param params
+     * @return
+     */
+    public static String getFullSql(String sql, Map params) {
+        return getFullSql(sql, params, null, null);
+    }
+
+    /**
+     * 获取全 SQL
+     * 拼接 where 条件
+     * 拼接 order 排序
+     *
+     * @param sql
+     * @param params
+     * @param orderColumn 排序字段
+     * @param orderBy     排序方式,只能是 DESC 或 ASC
+     * @return
+     */
+    public static String getFullSql(String sql, Map params, String orderColumn, String orderBy) {
+        StringBuilder sqlBuilder = new StringBuilder();
+        sqlBuilder.append("SELECT t.* FROM ( ").append(sql).append(" ) t ");
+        if (params != null && params.size() >= 1) {
+            sqlBuilder.append("WHERE 1=1 ");
+            for (Object key : params.keySet()) {
+                String value = String.valueOf(params.get(key));
+                if (StringUtils.isNotBlank(value)) {
+                    sqlBuilder.append(" AND (").append(key).append(" = N'").append(value).append("')");
+                }
+            }
+            if (StringUtils.isNotBlank(orderColumn) && StringUtils.isNotBlank(orderBy)) {
+                sqlBuilder.append("ORDER BY ").append(orderColumn).append(" ").append("DESC".equalsIgnoreCase(orderBy) ? "DESC" : "ASC");
+            }
+        }
+        return sqlBuilder.toString();
+    }
+
+    /**
+     * 获取求数量 SQL
+     *
+     * @param sql
+     * @return
+     */
+    public static String getCountSql(String sql) {
+        return String.format("SELECT COUNT(1) \"total\" FROM ( %s ) temp_count", sql);
+    }
+
+    /**
+     * 生成分页查询 SQL
+     *
+     * @param dbType 数据库类型
+     * @param sql
+     * @param page
+     * @param rows
+     * @return
+     */
+    public static String createPageSqlByDBType(String dbType, String sql, int page, int rows) {
+        int beginNum = (page - 1) * rows;
+        Object[] sqlParam = new Object[3];
+        sqlParam[0] = sql;
+        sqlParam[1] = String.valueOf(beginNum);
+        sqlParam[2] = String.valueOf(rows);
+        if (dbTypeIsMySQL(dbType)) {
+            sql = MessageFormat.format(MYSQL_SQL, sqlParam);
+        } else if (dbTypeIsPostgre(dbType)) {
+            sql = MessageFormat.format(POSTGRE_SQL, sqlParam);
+        } else {
+            int beginIndex = (page - 1) * rows;
+            int endIndex = beginIndex + rows;
+            sqlParam[2] = Integer.toString(beginIndex);
+            sqlParam[1] = Integer.toString(endIndex);
+            if (dbTypeIsOracle(dbType)) {
+                sql = MessageFormat.format(ORACLE_SQL, sqlParam);
+            } else if (dbTypeIsSQLServer(dbType)) {
+                sqlParam[0] = sql.substring(getAfterSelectInsertPoint(sql));
+                sql = MessageFormat.format(SQLSERVER_SQL, sqlParam);
+            }
+        }
+        return sql;
+    }
+
+    /**
+     * 生成分页查询 SQL
+     *
+     * @param sql
+     * @param page
+     * @param rows
+     * @return
+     */
+    public static String createPageSqlByDBKey(String dbKey, String sql, int page, int rows) {
+        DynamicDataSourceModel dynamicSourceEntity = DataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
+        String dbType = dynamicSourceEntity.getDbType();
+        return createPageSqlByDBType(dbType, sql, page, rows);
+    }
+
+    private static int getAfterSelectInsertPoint(String sql) {
+        int selectIndex = sql.toLowerCase().indexOf("select");
+        int selectDistinctIndex = sql.toLowerCase().indexOf("select distinct");
+        return selectIndex + (selectDistinctIndex == selectIndex ? 15 : 6);
+    }
+
+    public static String getAllTableSql(String dbType, Object... params) {
+        if (StringUtils.isNotEmpty(dbType)) {
+            if (dbTypeIsMySQL(dbType)) {
+                return MessageFormat.format(MYSQL_ALLTABLES_SQL, params);
+            } else if (dbTypeIsOracle(dbType)) {
+                return ORACLE__ALLTABLES_SQL;
+            } else if (dbTypeIsPostgre(dbType)) {
+                return POSTGRE__ALLTABLES_SQL;
+            } else if (dbTypeIsSQLServer(dbType)) {
+                return SQLSERVER__ALLTABLES_SQL;
+            }
+        }
+        return null;
+    }
+
+    public static String getAllColumnSQL(String dbType, Object... params) {
+        if (StringUtils.isNotEmpty(dbType)) {
+            if (dbTypeIsMySQL(dbType)) {
+                return MessageFormat.format(MYSQL_ALLCOLUMNS_SQL, params);
+            } else if (dbTypeIsOracle(dbType)) {
+                return MessageFormat.format(ORACLE_ALLCOLUMNS_SQL, params);
+            } else if (dbTypeIsPostgre(dbType)) {
+                return MessageFormat.format(POSTGRE_ALLCOLUMNS_SQL, params);
+            } else if (dbTypeIsSQLServer(dbType)) {
+                return MessageFormat.format(SQLSERVER_ALLCOLUMNS_SQL, params);
+            }
+        }
+        return null;
+    }
+
+}

+ 123 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java

@@ -0,0 +1,123 @@
+package org.jeecg.common.util.encryption;
+
+import org.apache.shiro.codec.Base64;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * AES 加密
+ */
+public class AesEncryptUtil {
+
+    //使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
+    private static String KEY = EncryptedString.key;
+    private static String IV = EncryptedString.iv;
+
+    /**
+     * 加密方法
+     * @param data  要加密的数据
+     * @param key 加密key
+     * @param iv 加密iv
+     * @return 加密的结果
+     * @throws Exception
+     */
+    public static String encrypt(String data, String key, String iv) throws Exception {
+        try {
+
+            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"NoPadding PkcsPadding
+            int blockSize = cipher.getBlockSize();
+
+            byte[] dataBytes = data.getBytes();
+            int plaintextLength = dataBytes.length;
+            if (plaintextLength % blockSize != 0) {
+                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
+            }
+
+            byte[] plaintext = new byte[plaintextLength];
+            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
+
+            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
+            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
+
+            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
+            byte[] encrypted = cipher.doFinal(plaintext);
+
+            return Base64.encodeToString(encrypted);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 解密方法
+     * @param data 要解密的数据
+     * @param key  解密key
+     * @param iv 解密iv
+     * @return 解密的结果
+     * @throws Exception
+     */
+    public static String desEncrypt(String data, String key, String iv) throws Exception {
+        try {
+			byte[] encrypted1 = Base64.decode(data);
+
+            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
+            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
+            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
+
+            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
+
+            byte[] original = cipher.doFinal(encrypted1);
+            String originalString = new String(original);
+            return originalString;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 使用默认的key和iv加密
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    public static String encrypt(String data) throws Exception {
+        return encrypt(data, KEY, IV);
+    }
+
+    /**
+     * 使用默认的key和iv解密
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    public static String desEncrypt(String data) throws Exception {
+        return desEncrypt(data, KEY, IV);
+    }
+
+
+
+    /**
+     * 测试
+     */
+    public static void main(String args[]) throws Exception {
+
+        String test1 = "sa";
+        String test =new String(test1.getBytes(),"UTF-8");
+        String data = null;
+        String key =  KEY;
+        String iv = IV;
+        // /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
+        data = encrypt(test, key, iv);
+        System.out.println("数据:"+test);
+        System.out.println("加密:"+data);
+        String jiemi =desEncrypt(data, key, iv).trim();
+        System.out.println("解密:"+jiemi);
+
+
+    }
+}

+ 12 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/encryption/EncryptedString.java

@@ -0,0 +1,12 @@
+package org.jeecg.common.util.encryption;
+
+
+import lombok.Data;
+
+@Data
+public class  EncryptedString {
+
+    public static  String key = "1234567890adbcde";//长度为16个字符
+
+    public static  String iv  = "1234567890hjlkew";//长度为16个字符
+}

+ 162 - 64
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/oConvertUtils.java

@@ -1,8 +1,10 @@
 package org.jeecg.common.util;
 
-import org.apache.commons.lang.StringEscapeUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -16,10 +18,11 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
- *
+ * 
  * @Author  张代浩
  *
  */
+@Slf4j
 public class oConvertUtils {
 	public static boolean isEmpty(Object object) {
 		if (object == null) {
@@ -33,9 +36,9 @@ public class oConvertUtils {
 		}
 		return (false);
 	}
-
+	
 	public static boolean isNotEmpty(Object object) {
-        if (object != null && !"".equals(object) && !"null".equals(object)) {
+		if (object != null && !object.equals("") && !object.equals("null")) {
 			return (true);
 		}
 		return (false);
@@ -46,13 +49,28 @@ public class oConvertUtils {
 		return temp;
 	}
 
+	public static String StrToUTF(String strIn, String sourceCode, String targetCode) {
+		strIn = "";
+		try {
+			strIn = new String(strIn.getBytes("ISO-8859-1"), "GBK");
+		} catch (UnsupportedEncodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return strIn;
+
+	}
+
 	private static String code2code(String strIn, String sourceCode, String targetCode) {
-        if (strIn == null || "".equals(strIn.trim())) {
+		String strOut = null;
+		if (strIn == null || (strIn.trim()).equals("")) {
 			return strIn;
 		}
-		String strOut = null;
 		try {
 			byte[] b = strIn.getBytes(sourceCode);
+			for (int i = 0; i < b.length; i++) {
+				System.out.print(b[i] + "  ");
+			}
 			strOut = new String(b, targetCode);
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -62,7 +80,7 @@ public class oConvertUtils {
 	}
 
 	public static int getInt(String s, int defval) {
-		if (s == null || s.trim().equals("")) {
+		if (s == null || s == "") {
 			return (defval);
 		}
 		try {
@@ -73,7 +91,7 @@ public class oConvertUtils {
 	}
 
 	public static int getInt(String s) {
-		if (s == null || s.trim().equals("")) {
+		if (s == null || s == "") {
 			return 0;
 		}
 		try {
@@ -84,7 +102,7 @@ public class oConvertUtils {
 	}
 
 	public static int getInt(String s, Integer df) {
-		if (s == null || s.trim().equals("")) {
+		if (s == null || s == "") {
 			return df;
 		}
 		try {
@@ -95,10 +113,10 @@ public class oConvertUtils {
 	}
 
 	public static Integer[] getInts(String[] s) {
+		Integer[] integer = new Integer[s.length];
 		if (s == null) {
 			return null;
 		}
-		Integer[] integer = new Integer[s.length];
 		for (int i = 0; i < s.length; i++) {
 			integer[i] = Integer.parseInt(s[i]);
 		}
@@ -107,7 +125,7 @@ public class oConvertUtils {
 	}
 
 	public static double getDouble(String s, double defval) {
-		if (s == null || s.trim().equals("")) {
+		if (s == null || s == "") {
 			return (defval);
 		}
 		try {
@@ -124,6 +142,14 @@ public class oConvertUtils {
 		return s;
 	}
 
+	/*public static Short getShort(String s) {
+		if (StringUtil.isNotEmpty(s)) {
+			return (Short.parseShort(s));
+		} else {
+			return null;
+		}
+	}*/
+
 	public static int getInt(Object object, int defval) {
 		if (isEmpty(object)) {
 			return (defval);
@@ -134,7 +160,7 @@ public class oConvertUtils {
 			return (defval);
 		}
 	}
-
+	
 	public static Integer getInt(Object object) {
 		if (isEmpty(object)) {
 			return null;
@@ -153,12 +179,12 @@ public class oConvertUtils {
 		return s.intValue();
 	}
 
-	public static Integer[] getIntegerArray(String[] object) {
+	public static Integer[] getIntegerArry(String[] object) {
 		int len = object.length;
 		Integer[] result = new Integer[len];
 		try {
 			for (int i = 0; i < len; i++) {
-                result[i] = Integer.getInteger(object[i].trim());
+				result[i] = new Integer(object[i].trim());
 			}
 			return result;
 		} catch (NumberFormatException e) {
@@ -175,10 +201,10 @@ public class oConvertUtils {
 	 * @param s
 	 * @return
 	 */
-    public static String escapeJava(Object s) {
+	/*public static String escapeJava(Object s) {
 		return StringEscapeUtils.escapeJava(getString(s));
-    }
-
+	}*/
+	
 	public static String getString(Object object) {
 		if (isEmpty(object)) {
 			return "";
@@ -209,7 +235,12 @@ public class oConvertUtils {
 	}
 
 	public static long stringToLong(String str) {
-		return Long.valueOf(str);
+		Long test = new Long(0);
+		try {
+			test = Long.valueOf(str);
+		} catch (Exception e) {
+		}
+		return test.longValue();
 	}
 
 	/**
@@ -229,12 +260,12 @@ public class oConvertUtils {
 
 	/**
 	 * 判断一个类是否为基本数据类型。
-     *
+	 * 
 	 * @param clazz
 	 *            要判断的类。
 	 * @return true 表示为基本数据类型。
 	 */
-	private static boolean isBaseDataType(Class clazz) {
+	private static boolean isBaseDataType(Class clazz) throws Exception {
 		return (clazz.equals(String.class) || clazz.equals(Integer.class) || clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(BigInteger.class) || clazz.equals(Boolean.class) || clazz.equals(Date.class) || clazz.isPrimitive());
 	}
 
@@ -262,25 +293,22 @@ public class oConvertUtils {
 	 * @throws SocketException
 	 */
 	public static String getRealIp() throws SocketException {
-        // 本地IP,如果没有配置外网IP则返回它
-        String localip = null;
-        // 外网IP
-        String netip = null;
+		String localip = null;// 本地IP,如果没有配置外网IP则返回它
+		String netip = null;// 外网IP
 
 		Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
 		InetAddress ip = null;
-        // 是否找到外网IP
-        boolean finded = false;
+		boolean finded = false;// 是否找到外网IP
 		while (netInterfaces.hasMoreElements() && !finded) {
 			NetworkInterface ni = netInterfaces.nextElement();
 			Enumeration<InetAddress> address = ni.getInetAddresses();
 			while (address.hasMoreElements()) {
 				ip = address.nextElement();
-				if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(':') == -1) {
+				if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP
 					netip = ip.getHostAddress();
 					finded = true;
 					break;
-				} else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(':') == -1) {
+				} else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 内网IP
 					localip = ip.getHostAddress();
 				}
 			}
@@ -295,7 +323,7 @@ public class oConvertUtils {
 
 	/**
 	 * java去除字符串中的空格、回车、换行符、制表符
-     *
+	 * 
 	 * @param str
 	 * @return
 	 */
@@ -312,7 +340,7 @@ public class oConvertUtils {
 
 	/**
 	 * 判断元素是否在数组内
-     *
+	 * 
 	 * @param substring
 	 * @param source
 	 * @return
@@ -331,13 +359,20 @@ public class oConvertUtils {
 	}
 
 	/**
+	 * 获取Map对象
+	 */
+	public static Map<Object, Object> getHashMap() {
+		return new HashMap<Object, Object>();
+	}
+
+	/**
 	 * SET转换MAP
-     *
-	 * @param setobj
+	 * 
+	 * @param str
 	 * @return
 	 */
-    public static Map<Object, Object> setToMap(Set<Object> setobj) {
-		Map<Object, Object> map = new HashMap<>();
+	public static Map<Object, Object> SetToMap(Set<Object> setobj) {
+		Map<Object, Object> map = getHashMap();
 		for (Iterator iterator = setobj.iterator(); iterator.hasNext();) {
 			Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>) iterator.next();
 			map.put(entry.getKey().toString(), entry.getValue() == null ? "" : entry.getValue().toString().trim());
@@ -346,7 +381,7 @@ public class oConvertUtils {
 
 	}
 
-    public static boolean isInnerIp(String ipAddress) {
+	public static boolean isInnerIP(String ipAddress) {
 		boolean isInnerIp = false;
 		long ipNum = getIpNum(ipAddress);
 		/**
@@ -358,7 +393,7 @@ public class oConvertUtils {
 		long bEnd = getIpNum("172.31.255.255");
 		long cBegin = getIpNum("192.168.0.0");
 		long cEnd = getIpNum("192.168.255.255");
-        isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || "127.0.0.1".equals(ipAddress);
+		isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1");
 		return isInnerIp;
 	}
 
@@ -368,18 +403,20 @@ public class oConvertUtils {
 		long b = Integer.parseInt(ip[1]);
 		long c = Integer.parseInt(ip[2]);
 		long d = Integer.parseInt(ip[3]);
-		return a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
+
+		long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
+		return ipNum;
 	}
 
 	private static boolean isInner(long userIp, long begin, long end) {
 		return (userIp >= begin) && (userIp <= end);
 	}
-
+	
 	/**
 	 * 将下划线大写方式命名的字符串转换为驼峰式。
 	 * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
 	 * 例如:hello_world->helloWorld
-     *
+	 * 
 	 * @param name
 	 *            转换前的下划线大写方式命名的字符串
 	 * @return 转换后的驼峰式命名的字符串
@@ -398,7 +435,7 @@ public class oConvertUtils {
 			//update-end--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
 		}
 		// 用下划线将原始字符串分割
-        String[] camels = name.split("_");
+		String camels[] = name.split("_");
 		for (String camel : camels) {
 			// 跳过原始字符串中开头、结尾的下换线或双重下划线
 			if (camel.isEmpty()) {
@@ -416,18 +453,18 @@ public class oConvertUtils {
 		}
 		return result.toString();
 	}
-
+	
 	/**
 	 * 将下划线大写方式命名的字符串转换为驼峰式。
 	 * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
 	 * 例如:hello_world,test_id->helloWorld,testId
-	 *
-     * @param names
+	 * 
+	 * @param name
 	 *            转换前的下划线大写方式命名的字符串
 	 * @return 转换后的驼峰式命名的字符串
 	 */
 	public static String camelNames(String names) {
-        if (names == null || "".equals(names)) {
+		if(names==null||names.equals("")){
 			return null;
 		}
 		StringBuffer sf = new StringBuffer();
@@ -439,13 +476,13 @@ public class oConvertUtils {
 		String result = sf.toString();
 		return result.substring(0, result.length() - 1);
 	}
-
+	
 	//update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
 	/**
 	 * 将下划线大写方式命名的字符串转换为驼峰式。(首字母写)
 	 * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
 	 * 例如:hello_world->HelloWorld
-     *
+	 * 
 	 * @param name
 	 *            转换前的下划线大写方式命名的字符串
 	 * @return 转换后的驼峰式命名的字符串
@@ -461,7 +498,7 @@ public class oConvertUtils {
 			return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
 		}
 		// 用下划线将原始字符串分割
-        String[] camels = name.split("_");
+		String camels[] = name.split("_");
 		for (String camel : camels) {
 			// 跳过原始字符串中开头、结尾的下换线或双重下划线
 			if (camel.isEmpty()) {
@@ -474,27 +511,26 @@ public class oConvertUtils {
 		return result.toString();
 	}
 	//update-end--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
-
-    /**
+	
+	/**
 	 * 将驼峰命名转化成下划线
 	 * @param para
 	 * @return
 	 */
 	public static String camelToUnderline(String para){
         if(para.length()<3){
-            return para.toLowerCase();
+        	return para.toLowerCase(); 
         }
         StringBuilder sb=new StringBuilder(para);
-        //定位
-        int temp = 0;
-        //从第三个字符开始 避免命名不规范
+        int temp=0;//定位
+        //从第三个字符开始 避免命名不规范 
         for(int i=2;i<para.length();i++){
             if(Character.isUpperCase(para.charAt(i))){
                 sb.insert(i+temp, "_");
                 temp+=1;
             }
         }
-        return sb.toString().toLowerCase();
+        return sb.toString().toLowerCase(); 
 	}
 
 	/**
@@ -510,10 +546,10 @@ public class oConvertUtils {
 		}
 		return sb.toString();
 	}
-
-    /**
+	
+	/**
 	 * 获取类的所有属性,包括父类
-     *
+	 * 
 	 * @param object
 	 * @return
 	 */
@@ -528,9 +564,8 @@ public class oConvertUtils {
 		fieldList.toArray(fields);
 		return fields;
 	}
-
-
-    /**
+	
+	/**
 	  * 将map的key全部转成小写
 	 * @param list
 	 * @return
@@ -539,13 +574,76 @@ public class oConvertUtils {
 		List<Map<String, Object>> select = new ArrayList<>();
 		for (Map<String, Object> row : list) {
 			 Map<String, Object> resultMap = new HashMap<>();
-            Set<String> keySet = row.keySet();
-            for (String key : keySet) {
-                String newKey = key.toLowerCase();
-                resultMap.put(newKey, row.get(key));
+			 Set<String> keySet = row.keySet(); 
+			 for (String key : keySet) { 
+				 String newKey = key.toLowerCase(); 
+				 resultMap.put(newKey, row.get(key)); 
 			 }
 			 select.add(resultMap);
 		}
 		return select;
 	}
+
+	/**
+	 * 将entityList转换成modelList
+	 * @param fromList
+	 * @param tClass
+	 * @param <F>
+	 * @param <T>
+	 * @return
+	 */
+	public static<F,T> List<T> entityListToModelList(List<F> fromList, Class<T> tClass){
+		if(fromList.isEmpty() || fromList == null){
+			return null;
+		}
+		List<T> tList = new ArrayList<>();
+		for(F f : fromList){
+			T t = entityToModel(f, tClass);
+			tList.add(t);
+		}
+		return tList;
+	}
+
+	public static<F,T> T entityToModel(F entity, Class<T> modelClass) {
+		log.debug("entityToModel : Entity属性的值赋值到Model");
+		Object model = null;
+		if (entity == null || modelClass ==null) {
+			return null;
+		}
+
+		try {
+			model = modelClass.newInstance();
+		} catch (InstantiationException e) {
+			log.error("entityToModel : 实例化异常", e);
+		} catch (IllegalAccessException e) {
+			log.error("entityToModel : 安全权限异常", e);
+		}
+		BeanUtils.copyProperties(entity, model);
+		return (T)model;
+	}
+
+	/**
+	 * 判断 list 是否为空
+	 *
+	 * @param list
+	 * @return true or false
+	 * list == null		: true
+	 * list.size() == 0	: true
+	 */
+	public static boolean listIsEmpty(Collection list) {
+		return (list == null || list.size() == 0);
+	}
+
+	/**
+	 * 判断 list 是否不为空
+	 *
+	 * @param list
+	 * @return true or false
+	 * list == null		: false
+	 * list.size() == 0	: false
+	 */
+	public static boolean listIsNotEmpty(Collection list) {
+		return !listIsEmpty(list);
+	}
+
 }

+ 289 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java

@@ -0,0 +1,289 @@
+package org.jeecg.common.util.oss;
+
+import com.aliyun.oss.ClientConfiguration;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.common.auth.DefaultCredentialProvider;
+import com.aliyun.oss.model.CannedAccessControlList;
+import com.aliyun.oss.model.OSSObject;
+import com.aliyun.oss.model.PutObjectResult;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.http.fileupload.FileItemStream;
+import org.jeecg.common.util.CommonUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * @Description: 阿里云 oss 上传工具类(高依赖版)
+ * @Date: 2019/5/10
+ */
+@Slf4j
+public class OssBootUtil {
+
+    private static String endPoint;
+    private static String accessKeyId;
+    private static String accessKeySecret;
+    private static String bucketName;
+    private static String staticDomain;
+
+    public static void setEndPoint(String endPoint) {
+        OssBootUtil.endPoint = endPoint;
+    }
+
+    public static void setAccessKeyId(String accessKeyId) {
+        OssBootUtil.accessKeyId = accessKeyId;
+    }
+
+    public static void setAccessKeySecret(String accessKeySecret) {
+        OssBootUtil.accessKeySecret = accessKeySecret;
+    }
+
+    public static void setBucketName(String bucketName) {
+        OssBootUtil.bucketName = bucketName;
+    }
+
+    public static void setStaticDomain(String staticDomain) {
+        OssBootUtil.staticDomain = staticDomain;
+    }
+
+    public static String getStaticDomain() {
+        return staticDomain;
+    }
+
+    /**
+     * oss 工具客户端
+     */
+    private static OSSClient ossClient = null;
+
+    /**
+     * 上传文件至阿里云 OSS
+     * 文件上传成功,返回文件完整访问路径
+     * 文件上传失败,返回 null
+     *
+     * @param file    待上传文件
+     * @param fileDir 文件保存目录
+     * @return oss 中的相对文件路径
+     */
+    public static String upload(MultipartFile file, String fileDir, String customBucket) {
+        String FILE_URL = null;
+        initOSS(endPoint, accessKeyId, accessKeySecret);
+        StringBuilder fileUrl = new StringBuilder();
+        String newBucket = bucketName;
+        if(oConvertUtils.isNotEmpty(customBucket)){
+            newBucket = customBucket;
+        }
+        try {
+            //判断桶是否存在,不存在则创建桶
+            if(!ossClient.doesBucketExist(newBucket)){
+                ossClient.createBucket(newBucket);
+            }
+            // 获取文件名
+            String orgName = file.getOriginalFilename();
+            orgName = CommonUtils.getFileName(orgName);
+            String fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
+            if (!fileDir.endsWith("/")) {
+                fileDir = fileDir.concat("/");
+            }
+            fileUrl = fileUrl.append(fileDir + fileName);
+
+            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
+                FILE_URL = staticDomain + "/" + fileUrl;
+            } else {
+                FILE_URL = "https://" + newBucket + "." + endPoint + "/" + fileUrl;
+            }
+            PutObjectResult result = ossClient.putObject(newBucket, fileUrl.toString(), file.getInputStream());
+            // 设置权限(公开读)
+//            ossClient.setBucketAcl(newBucket, CannedAccessControlList.PublicRead);
+            if (result != null) {
+                log.info("------OSS文件上传成功------" + fileUrl);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+        return FILE_URL;
+    }
+
+    /**
+     * 文件上传
+     * @param file
+     * @param fileDir
+     * @return
+     */
+    public static String upload(MultipartFile file, String fileDir) {
+        return upload(file, fileDir,null);
+    }
+
+    /**
+     * 上传文件至阿里云 OSS
+     * 文件上传成功,返回文件完整访问路径
+     * 文件上传失败,返回 null
+     *
+     * @param file    待上传文件
+     * @param fileDir 文件保存目录
+     * @return oss 中的相对文件路径
+     */
+    public static String upload(FileItemStream file, String fileDir) {
+        String FILE_URL = null;
+        initOSS(endPoint, accessKeyId, accessKeySecret);
+        StringBuilder fileUrl = new StringBuilder();
+        try {
+            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
+            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
+            if (!fileDir.endsWith("/")) {
+                fileDir = fileDir.concat("/");
+            }
+            fileUrl = fileUrl.append(fileDir + fileName);
+
+            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
+                FILE_URL = staticDomain + "/" + fileUrl;
+            } else {
+                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
+            }
+            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
+            // 设置权限(公开读)
+            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
+            if (result != null) {
+                log.info("------OSS文件上传成功------" + fileUrl);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+        return FILE_URL;
+    }
+
+    /**
+     * 删除文件
+     * @param url
+     */
+    public static void deleteUrl(String url) {
+        deleteUrl(url,null);
+    }
+
+    /**
+     * 删除文件
+     * @param url
+     */
+    public static void deleteUrl(String url,String bucket) {
+        String newBucket = bucketName;
+        if(oConvertUtils.isNotEmpty(bucket)){
+            newBucket = bucket;
+        }
+        String bucketUrl = "";
+        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
+            bucketUrl = staticDomain + "/" ;
+        } else {
+            bucketUrl = "https://" + newBucket + "." + endPoint + "/";
+        }
+        url = url.replace(bucketUrl,"");
+        ossClient.deleteObject(newBucket, url);
+    }
+
+    /**
+     * 删除文件
+     * @param fileName
+     */
+    public static void delete(String fileName) {
+        ossClient.deleteObject(bucketName, fileName);
+    }
+
+    /**
+     * 获取文件流
+     * @param objectName
+     * @param bucket
+     * @return
+     */
+    public static InputStream getOssFile(String objectName,String bucket){
+        InputStream inputStream = null;
+        try{
+            String newBucket = bucketName;
+            if(oConvertUtils.isNotEmpty(bucket)){
+                newBucket = bucket;
+            }
+            initOSS(endPoint, accessKeyId, accessKeySecret);
+            OSSObject ossObject = ossClient.getObject(newBucket,objectName);
+            inputStream = new BufferedInputStream(ossObject.getObjectContent());
+        }catch (Exception e){
+            log.info("文件获取失败" + e.getMessage());
+        }
+        return inputStream;
+    }
+
+    /**
+     * 获取文件流
+     * @param objectName
+     * @return
+     */
+    public static InputStream getOssFile(String objectName){
+        return getOssFile(objectName,null);
+    }
+
+    /**
+     * 获取文件外链
+     * @param bucketName
+     * @param objectName
+     * @param expires
+     * @return
+     */
+    public static String getObjectURL(String bucketName, String objectName, Date expires) {
+        initOSS(endPoint, accessKeyId, accessKeySecret);
+        try{
+            if(ossClient.doesObjectExist(bucketName,objectName)){
+                URL url = ossClient.generatePresignedUrl(bucketName,objectName,expires);
+                return URLDecoder.decode(url.toString(),"UTF-8");
+            }
+        }catch (Exception e){
+            log.info("文件路径获取失败" + e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 初始化 oss 客户端
+     *
+     * @return
+     */
+    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
+        if (ossClient == null) {
+            ossClient = new OSSClient(endpoint,
+                    new DefaultCredentialProvider(accessKeyId, accessKeySecret),
+                    new ClientConfiguration());
+        }
+        return ossClient;
+    }
+
+
+    /**
+     * 上传文件到oss
+     * @param stream
+     * @param relativePath
+     * @return
+     */
+    public static String upload(InputStream stream, String relativePath) {
+        String FILE_URL = null;
+        String fileUrl = relativePath;
+        initOSS(endPoint, accessKeyId, accessKeySecret);
+        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
+            FILE_URL = staticDomain + "/" + relativePath;
+        } else {
+            FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
+        }
+        PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(),stream);
+        // 设置权限(公开读)
+        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
+        if (result != null) {
+            log.info("------OSS文件上传成功------" + fileUrl);
+        }
+        return FILE_URL;
+    }
+
+
+}

+ 77 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/SecurityTools.java

@@ -0,0 +1,77 @@
+package org.jeecg.common.util.security;
+
+import cn.hutool.core.codec.Base64Decoder;
+import cn.hutool.core.codec.Base64Encoder;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
+import cn.hutool.crypto.asymmetric.Sign;
+import cn.hutool.crypto.asymmetric.SignAlgorithm;
+import cn.hutool.crypto.symmetric.AES;
+import cn.hutool.json.JSONObject;
+import org.jeecg.common.util.security.entity.*;
+
+import javax.crypto.SecretKey;
+import java.security.KeyPair;
+
+public class SecurityTools {
+    public static final String ALGORITHM = "AES/ECB/PKCS5Padding";
+
+    public static SecurityResp valid(SecurityReq req) {
+        SecurityResp resp=new SecurityResp();
+        String pubKey=req.getPubKey();
+        String aesKey=req.getAesKey();
+        String data=req.getData();
+        String signData=req.getSignData();
+        RSA rsa=new RSA(null, Base64Decoder.decode(pubKey));
+        Sign sign= new Sign(SignAlgorithm.SHA1withRSA,null,pubKey);
+
+
+
+        byte[] decryptAes = rsa.decrypt(aesKey, KeyType.PublicKey);
+        //log.info("rsa解密后的秘钥"+ Base64Encoder.encode(decryptAes));
+        AES aes = SecureUtil.aes(decryptAes);
+
+        String dencrptValue =aes.decryptStr(data);
+        //log.info("解密后报文"+dencrptValue);
+        resp.setData(new JSONObject(dencrptValue));
+
+        boolean verify = sign.verify(dencrptValue.getBytes(), Base64Decoder.decode(signData));
+        resp.setSuccess(verify);
+        return resp;
+    }
+
+    public static SecuritySignResp sign(SecuritySignReq req) {
+        SecretKey secretKey = SecureUtil.generateKey(ALGORITHM);
+        byte[] key= secretKey.getEncoded();
+        String prikey=req.getPrikey();
+        String data=req.getData();
+
+        AES aes = SecureUtil.aes(key);
+        aes.getSecretKey().getEncoded();
+        String encrptData =aes.encryptBase64(data);
+        RSA rsa=new RSA(prikey,null);
+        byte[] encryptAesKey = rsa.encrypt(secretKey.getEncoded(), KeyType.PrivateKey);
+        //log.info(("rsa加密过的秘钥=="+Base64Encoder.encode(encryptAesKey));
+
+        Sign sign= new Sign(SignAlgorithm.SHA1withRSA,prikey,null);
+        byte[] signed = sign.sign(data.getBytes());
+
+        //log.info(("签名数据===》》"+Base64Encoder.encode(signed));
+
+        SecuritySignResp resp=new SecuritySignResp();
+        resp.setAesKey(Base64Encoder.encode(encryptAesKey));
+        resp.setData(encrptData);
+        resp.setSignData(Base64Encoder.encode(signed));
+        return resp;
+    }
+    public static MyKeyPair generateKeyPair(){
+        KeyPair keyPair= SecureUtil.generateKeyPair(SignAlgorithm.SHA1withRSA.getValue(),2048);
+        String priKey= Base64Encoder.encode(keyPair.getPrivate().getEncoded());
+        String pubkey= Base64Encoder.encode(keyPair.getPublic().getEncoded());
+        MyKeyPair resp=new MyKeyPair();
+        resp.setPriKey(priKey);
+        resp.setPubKey(pubkey);
+        return resp;
+    }
+}

+ 9 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/MyKeyPair.java

@@ -0,0 +1,9 @@
+package org.jeecg.common.util.security.entity;
+
+import lombok.Data;
+
+@Data
+public class MyKeyPair {
+    private String priKey;
+    private String pubKey;
+}

+ 11 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecurityReq.java

@@ -0,0 +1,11 @@
+package org.jeecg.common.util.security.entity;
+
+import lombok.Data;
+
+@Data
+public class SecurityReq {
+    private String data;
+    private String pubKey;
+    private String signData;
+    private String aesKey;
+}

+ 10 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecurityResp.java

@@ -0,0 +1,10 @@
+package org.jeecg.common.util.security.entity;
+
+import cn.hutool.json.JSONObject;
+import lombok.Data;
+
+@Data
+public class SecurityResp {
+    private Boolean success;
+    private JSONObject data;
+}

+ 9 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecuritySignReq.java

@@ -0,0 +1,9 @@
+package org.jeecg.common.util.security.entity;
+
+import lombok.Data;
+
+@Data
+public class SecuritySignReq {
+    private String data;
+    private String prikey;
+}

+ 10 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/security/entity/SecuritySignResp.java

@@ -0,0 +1,10 @@
+package org.jeecg.common.util.security.entity;
+
+import lombok.Data;
+
+@Data
+public class SecuritySignResp {
+    private String data;
+    private String signData;
+    private String aesKey;
+}

+ 338 - 0
jeecg-boot-module-activiti/db/create/activiti.db2.create.engine.sql

@@ -0,0 +1,338 @@
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64) not null,
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ BLOB,
+    GENERATED_ smallint check(GENERATED_ in (1,0)),
+    primary key (ID_)
+);
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64) not null,
+    NAME_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    DEPLOY_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATE_TIME_ timestamp,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    ACT_ID_ varchar(255),
+    IS_ACTIVE_ smallint check(IS_ACTIVE_ in (1,0)),
+    IS_CONCURRENT_ smallint check(IS_CONCURRENT_ in (1,0)),
+    IS_SCOPE_ smallint check(IS_SCOPE_ in (1,0)),
+    IS_EVENT_SCOPE_ smallint check(IS_EVENT_SCOPE_ in (1,0)),
+	SUSPENSION_STATE_ integer,
+	CACHED_ENT_STATE_ integer,
+	TENANT_ID_ varchar(255) default '',
+	NAME_ varchar(255),
+	LOCK_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    LOCK_EXP_TIME_ timestamp,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ smallint check(EXCLUSIVE_ in (1,0)),
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) not null,
+    VERSION_ integer not null,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DESCRIPTION_ varchar(4000),
+    HAS_START_FORM_KEY_ smallint check(HAS_START_FORM_KEY_ in (1,0)),
+    HAS_GRAPHICAL_NOTATION_ smallint check(HAS_GRAPHICAL_NOTATION_ in (1,0)),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) not null default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_TASK (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp,
+    DUE_DATE_ timestamp,
+    CATEGORY_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    FORM_KEY_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+	PROC_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(64),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp not null,
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_EVT_LOG (
+    LOG_NR_ bigint not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp not null,
+    USER_ID_ varchar(255),
+    DATA_ BLOB,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp,
+    IS_PROCESSED_ integer default 0,
+    primary key (LOG_NR_)
+);
+
+create table ACT_PROCDEF_INFO (
+	ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    REV_ integer,
+    INFO_JSON_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_EXECUTION_PROC on ACT_RU_EXECUTION(PROC_DEF_ID_);
+create index ACT_IDX_EXECUTION_PARENT on ACT_RU_EXECUTION(PARENT_ID_);
+create index ACT_IDX_EXECUTION_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_);
+create index ACT_IDX_EXECUTION_IDANDREV on ACT_RU_EXECUTION(ID_, REV_);
+create index ACT_IDX_VARIABLE_BA on ACT_RU_VARIABLE(BYTEARRAY_ID_);
+create index ACT_IDX_VARIABLE_EXEC on ACT_RU_VARIABLE(EXECUTION_ID_);
+create index ACT_IDX_VARIABLE_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_);
+create index ACT_IDX_IDENT_LNK_TASK on ACT_RU_IDENTITYLINK(TASK_ID_);
+create index ACT_IDX_IDENT_LNK_PROCINST on ACT_RU_IDENTITYLINK(PROC_INST_ID_);
+create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_);
+create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_);
+create index ACT_IDX_EXEC_PROC_INST_ID on ACT_RU_EXECUTION(PROC_INST_ID_);
+create index ACT_IDX_TASK_PROC_DEF_ID on ACT_RU_TASK(PROC_DEF_ID_);
+create index ACT_IDX_EVENT_SUBSCR_EXEC_ID on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_);
+create index ACT_IDX_JOB_EXCEPTION_STACK_ID on ACT_RU_JOB(EXCEPTION_STACK_ID_);
+create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_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_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCINST 
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT 
+    foreign key (PARENT_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER 
+    foreign key (SUPER_EXEC_) 
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);    
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK 
+    foreign key (TASK_ID_) 
+    references ACT_RU_TASK (ID_);
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);       
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+  	add constraint ACT_FK_TASK_PROCDEF
+  	foreign key (PROC_DEF_ID_)
+  	references ACT_RE_PROCDEF (ID_);
+  
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_EXE 
+    foreign key (EXECUTION_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_BYTEARRAY 
+    foreign key (BYTEARRAY_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_JOB 
+    add constraint ACT_FK_JOB_EXCEPTION 
+    foreign key (EXCEPTION_STACK_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+    
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION(ID_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);    
+
+alter table ACT_PROCDEF_INFO 
+    add constraint ACT_FK_INFO_JSON_BA 
+    foreign key (INFO_JSON_ID_) 
+    references ACT_GE_BYTEARRAY (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 - 0
jeecg-boot-module-activiti/db/create/activiti.db2.create.history.sql

@@ -0,0 +1,156 @@
+create table ACT_HI_PROCINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    START_TIME_ timestamp not null,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    START_USER_ID_ varchar(255),
+    START_ACT_ID_ varchar(255),
+    END_ACT_ID_ varchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    DELETE_REASON_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    primary key (ID_)
+);
+
+alter table ACT_HI_PROCINST add constraint PROC_INST_ID_ unique(PROC_INST_ID_);
+
+create table ACT_HI_ACTINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    EXECUTION_ID_ varchar(64) not null,
+    ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    ACT_NAME_ varchar(255),
+    ACT_TYPE_ varchar(255) not null,
+    OWNER_ varchar(64),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ timestamp not null,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_TASKINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64),
+    TASK_DEF_KEY_ varchar(255),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ timestamp not null,
+    CLAIM_TIME_ timestamp,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    DELETE_REASON_ varchar(4000),
+    PRIORITY_ integer,
+    DUE_DATE_ timestamp,
+    FORM_KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATED_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_HI_DETAIL (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(255),
+    REV_ integer,
+    TIME_ timestamp not null,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_HI_COMMENT (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TIME_ timestamp not null,
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTION_ varchar(255),
+    MESSAGE_ varchar(4000),
+    FULL_MSG_ BLOB,
+    primary key (ID_)
+);
+
+create table ACT_HI_ATTACHMENT (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(255),
+    NAME_ varchar(255),
+    DESCRIPTION_ varchar(4000),
+    TYPE_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    URL_ varchar(4000),
+    CONTENT_ID_ varchar(64),
+    TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64) not null,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(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_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_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_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 46 - 0
jeecg-boot-module-activiti/db/create/activiti.db2.create.identity.sql

@@ -0,0 +1,46 @@
+create table ACT_ID_GROUP (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    TYPE_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_ID_MEMBERSHIP (
+    USER_ID_ varchar(64) not null,
+    GROUP_ID_ varchar(64) not null,
+    primary key (USER_ID_, GROUP_ID_)
+);
+
+create table ACT_ID_USER (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    FIRST_ varchar(255),
+    LAST_ varchar(255),
+    EMAIL_ varchar(255),
+    PWD_ varchar(255),
+    PICTURE_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create table ACT_ID_INFO (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(64),
+    TYPE_ varchar(64),
+    KEY_ varchar(255),
+    VALUE_ varchar(255),
+    PASSWORD_ BLOB,
+    PARENT_ID_ varchar(255),
+    primary key (ID_)
+);
+
+alter table ACT_ID_MEMBERSHIP 
+    add constraint ACT_FK_MEMB_GROUP 
+    foreign key (GROUP_ID_) 
+    references ACT_ID_GROUP (ID_);
+
+alter table ACT_ID_MEMBERSHIP 
+    add constraint ACT_FK_MEMB_USER 
+    foreign key (USER_ID_) 
+    references ACT_ID_USER (ID_);

+ 322 - 0
jeecg-boot-module-activiti/db/create/activiti.h2.create.engine.sql

@@ -0,0 +1,322 @@
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64),
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ longvarbinary,
+    GENERATED_ bit,
+    primary key (ID_)
+);
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64),
+    NAME_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    DEPLOY_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATE_TIME_ timestamp,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64),
+    REV_ integer,
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    ACT_ID_ varchar(255),
+    IS_ACTIVE_ bit,
+    IS_CONCURRENT_ bit,
+    IS_SCOPE_ bit,
+    IS_EVENT_SCOPE_ bit,
+    SUSPENSION_STATE_ integer,
+    CACHED_ENT_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    LOCK_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    TYPE_ varchar(255) NOT NULL,
+    LOCK_EXP_TIME_ timestamp,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ boolean,
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) NOT NULL,
+    VERSION_ integer NOT NULL,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DESCRIPTION_ varchar(4000),
+    HAS_START_FORM_KEY_ bit,
+    HAS_GRAPHICAL_NOTATION_ bit,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_TASK (
+    ID_ varchar(64),
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp,
+    DUE_DATE_ timestamp,
+    CATEGORY_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    FORM_KEY_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64),
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64) null,
+    PROC_DEF_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(64),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp not null,
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_EVT_LOG (
+    LOG_NR_ identity,
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp not null,
+    USER_ID_ varchar(255),
+    DATA_ longvarbinary,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp,
+    IS_PROCESSED_ bit default 0
+);
+
+create table ACT_PROCDEF_INFO (
+	ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    REV_ integer,
+    INFO_JSON_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_ID_);
+
+alter table ACT_GE_BYTEARRAY
+    add constraint ACT_FK_BYTEARR_DEPL
+    foreign key (DEPLOYMENT_ID_)
+    references ACT_RE_DEPLOYMENT;
+
+alter table ACT_RE_PROCDEF
+    add constraint ACT_UNIQ_PROCDEF
+    unique (KEY_,VERSION_, TENANT_ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT
+    foreign key (PARENT_ID_)
+    references ACT_RU_EXECUTION;
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER 
+    foreign key (SUPER_EXEC_) 
+    references ACT_RU_EXECUTION;
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);    
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK
+    foreign key (TASK_ID_)
+    references ACT_RU_TASK;
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF
+    foreign key (PROC_DEF_ID_)
+    references ACT_RE_PROCDEF;
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);       
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_TASK
+  add constraint ACT_FK_TASK_PROCDEF
+  foreign key (PROC_DEF_ID_)
+  references ACT_RE_PROCDEF;
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_BYTEARRAY
+    foreign key (BYTEARRAY_ID_)
+    references ACT_GE_BYTEARRAY;
+
+alter table ACT_RU_JOB
+    add constraint ACT_FK_JOB_EXCEPTION
+    foreign key (EXCEPTION_STACK_ID_)
+    references ACT_GE_BYTEARRAY;
+
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);
+    
+alter table ACT_PROCDEF_INFO 
+    add constraint ACT_FK_INFO_JSON_BA 
+    foreign key (INFO_JSON_ID_) 
+    references ACT_GE_BYTEARRAY (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_);

+ 154 - 0
jeecg-boot-module-activiti/db/create/activiti.h2.create.history.sql

@@ -0,0 +1,154 @@
+create table ACT_HI_PROCINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    START_TIME_ timestamp not null,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    START_USER_ID_ varchar(255),
+    START_ACT_ID_ varchar(255),
+    END_ACT_ID_ varchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    DELETE_REASON_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    primary key (ID_),
+    unique (PROC_INST_ID_)
+);
+
+create table ACT_HI_ACTINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    EXECUTION_ID_ varchar(64) not null,
+    ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    ACT_NAME_ varchar(255),
+    ACT_TYPE_ varchar(255) not null,
+    ASSIGNEE_ varchar(255),
+    START_TIME_ timestamp not null,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_TASKINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64),
+    TASK_DEF_KEY_ varchar(255),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ timestamp not null,
+    CLAIM_TIME_ timestamp,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    DELETE_REASON_ varchar(4000),
+    PRIORITY_ integer,
+    DUE_DATE_ timestamp,
+    FORM_KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATED_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_HI_DETAIL (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255) not null,
+    TIME_ timestamp not null,
+    NAME_ varchar(255),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    VAR_TYPE_ varchar(255),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_HI_COMMENT (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TIME_ timestamp not null,
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTION_ varchar(255),
+    MESSAGE_ varchar(4000),
+    FULL_MSG_ longvarbinary,
+    primary key (ID_)
+);
+
+create table ACT_HI_ATTACHMENT (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(255),
+    NAME_ varchar(255),
+    DESCRIPTION_ varchar(4000),
+    TYPE_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    URL_ varchar(4000),
+    CONTENT_ID_ varchar(64),
+    TIME_ timestamp,
+    primary key (ID_)
+);
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64),
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64) null,
+    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_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_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_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_);    
+create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 46 - 0
jeecg-boot-module-activiti/db/create/activiti.h2.create.identity.sql

@@ -0,0 +1,46 @@
+create table ACT_ID_GROUP (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    TYPE_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_ID_MEMBERSHIP (
+    USER_ID_ varchar(64),
+    GROUP_ID_ varchar(64),
+    primary key (USER_ID_, GROUP_ID_)
+);
+
+create table ACT_ID_USER (
+    ID_ varchar(64),
+    REV_ integer,
+    FIRST_ varchar(255),
+    LAST_ varchar(255),
+    EMAIL_ varchar(255),
+    PWD_ varchar(255),
+    PICTURE_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create table ACT_ID_INFO (
+    ID_ varchar(64),
+    REV_ integer,
+    USER_ID_ varchar(64),
+    TYPE_ varchar(64),
+    KEY_ varchar(255),
+    VALUE_ varchar(255),
+    PASSWORD_ longvarbinary,
+    PARENT_ID_ varchar(255),
+    primary key (ID_)
+);
+
+alter table ACT_ID_MEMBERSHIP
+    add constraint ACT_FK_MEMB_GROUP
+    foreign key (GROUP_ID_)
+    references ACT_ID_GROUP;
+
+alter table ACT_ID_MEMBERSHIP
+    add constraint ACT_FK_MEMB_USER
+    foreign key (USER_ID_)
+    references ACT_ID_USER;

+ 322 - 0
jeecg-boot-module-activiti/db/create/activiti.hsql.create.engine.sql

@@ -0,0 +1,322 @@
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64),
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ longvarbinary,
+    GENERATED_ bit,
+    primary key (ID_)
+);
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64),
+    NAME_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    DEPLOY_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATE_TIME_ timestamp,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64),
+    REV_ integer,
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    ACT_ID_ varchar(255),
+    IS_ACTIVE_ bit,
+    IS_CONCURRENT_ bit,
+    IS_SCOPE_ bit,
+    IS_EVENT_SCOPE_ bit,
+    SUSPENSION_STATE_ integer,
+    CACHED_ENT_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    LOCK_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    TYPE_ varchar(255) NOT NULL,
+    LOCK_EXP_TIME_ timestamp,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ boolean,
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) NOT NULL,
+    VERSION_ integer NOT NULL,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DESCRIPTION_ varchar(4000),
+    HAS_START_FORM_KEY_ bit,
+    HAS_GRAPHICAL_NOTATION_ bit,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_TASK (
+    ID_ varchar(64),
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp,
+    DUE_DATE_ timestamp,
+    CATEGORY_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    FORM_KEY_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64),
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64) null,
+    PROC_DEF_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(64),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp not null,
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_EVT_LOG (
+    LOG_NR_ identity,
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp not null,
+    USER_ID_ varchar(255),
+    DATA_ longvarbinary,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp,
+    IS_PROCESSED_ bit default 0
+);
+
+create table ACT_PROCDEF_INFO (
+	ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    REV_ integer,
+    INFO_JSON_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_ID_);
+
+alter table ACT_GE_BYTEARRAY
+    add constraint ACT_FK_BYTEARR_DEPL
+    foreign key (DEPLOYMENT_ID_)
+    references ACT_RE_DEPLOYMENT;
+
+alter table ACT_RE_PROCDEF
+    add constraint ACT_UNIQ_PROCDEF
+    unique (KEY_,VERSION_, TENANT_ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT
+    foreign key (PARENT_ID_)
+    references ACT_RU_EXECUTION;
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER 
+    foreign key (SUPER_EXEC_) 
+    references ACT_RU_EXECUTION;
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);    
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK
+    foreign key (TASK_ID_)
+    references ACT_RU_TASK;
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF
+    foreign key (PROC_DEF_ID_)
+    references ACT_RE_PROCDEF;
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);       
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_TASK
+  add constraint ACT_FK_TASK_PROCDEF
+  foreign key (PROC_DEF_ID_)
+  references ACT_RE_PROCDEF;
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_BYTEARRAY
+    foreign key (BYTEARRAY_ID_)
+    references ACT_GE_BYTEARRAY;
+
+alter table ACT_RU_JOB
+    add constraint ACT_FK_JOB_EXCEPTION
+    foreign key (EXCEPTION_STACK_ID_)
+    references ACT_GE_BYTEARRAY;
+
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION;
+
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);        
+
+alter table ACT_PROCDEF_INFO 
+    add constraint ACT_FK_INFO_JSON_BA 
+    foreign key (INFO_JSON_ID_) 
+    references ACT_GE_BYTEARRAY (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_);

+ 154 - 0
jeecg-boot-module-activiti/db/create/activiti.hsql.create.history.sql

@@ -0,0 +1,154 @@
+create table ACT_HI_PROCINST (
+  ID_ varchar(64) not null,
+  PROC_INST_ID_ varchar(64) not null,
+  BUSINESS_KEY_ varchar(255),
+  PROC_DEF_ID_ varchar(64) not null,
+  START_TIME_ timestamp not null,
+  END_TIME_ timestamp,
+  DURATION_ bigint,
+  START_USER_ID_ varchar(255),
+  START_ACT_ID_ varchar(255),
+  END_ACT_ID_ varchar(255),
+  SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+  DELETE_REASON_ varchar(4000),
+  TENANT_ID_ varchar(255) default '',
+  NAME_ varchar(255),
+  primary key (ID_),
+  unique (PROC_INST_ID_)
+);
+
+create table ACT_HI_ACTINST (
+  ID_ varchar(64) not null,
+  PROC_DEF_ID_ varchar(64) not null,
+  PROC_INST_ID_ varchar(64) not null,
+  EXECUTION_ID_ varchar(64) not null,
+  ACT_ID_ varchar(255) not null,
+  TASK_ID_ varchar(64),
+  CALL_PROC_INST_ID_ varchar(64),
+  ACT_NAME_ varchar(255),
+  ACT_TYPE_ varchar(255) not null,
+  ASSIGNEE_ varchar(255),
+  START_TIME_ timestamp not null,
+  END_TIME_ timestamp,
+  DURATION_ bigint,
+  TENANT_ID_ varchar(255) default '',
+  primary key (ID_)
+);
+
+create table ACT_HI_TASKINST (
+  ID_ varchar(64) not null,
+  PROC_DEF_ID_ varchar(64),
+  TASK_DEF_KEY_ varchar(255),
+  PROC_INST_ID_ varchar(64),
+  EXECUTION_ID_ varchar(64),
+  NAME_ varchar(255),
+  PARENT_TASK_ID_ varchar(64),
+  DESCRIPTION_ varchar(4000),
+  OWNER_ varchar(255),
+  ASSIGNEE_ varchar(255),
+  START_TIME_ timestamp not null,
+  CLAIM_TIME_ timestamp,
+  END_TIME_ timestamp,
+  DURATION_ bigint,
+  DELETE_REASON_ varchar(4000),
+  PRIORITY_ integer,
+  DUE_DATE_ timestamp,
+  FORM_KEY_ varchar(255),
+  CATEGORY_ varchar(255),
+  TENANT_ID_ varchar(255) default '',
+  primary key (ID_)
+);
+
+create table ACT_HI_VARINST (
+  ID_ varchar(64) not null,
+  PROC_INST_ID_ varchar(64),
+  EXECUTION_ID_ varchar(64),
+  TASK_ID_ varchar(64),
+  NAME_ varchar(255) not null,
+  VAR_TYPE_ varchar(100),
+  REV_ integer,
+  BYTEARRAY_ID_ varchar(64),
+  DOUBLE_ double,
+  LONG_ bigint,
+  TEXT_ varchar(4000),
+  TEXT2_ varchar(4000),
+  CREATE_TIME_ timestamp,
+  LAST_UPDATED_TIME_ timestamp,
+  primary key (ID_)
+);
+
+create table ACT_HI_DETAIL (
+  ID_ varchar(64) not null,
+  TYPE_ varchar(255) not null,
+  TIME_ timestamp not null,
+  NAME_ varchar(255),
+  PROC_INST_ID_ varchar(64),
+  EXECUTION_ID_ varchar(64),
+  TASK_ID_ varchar(64),
+  ACT_INST_ID_ varchar(64),
+  VAR_TYPE_ varchar(255),
+  REV_ integer,
+  BYTEARRAY_ID_ varchar(64),
+  DOUBLE_ double,
+  LONG_ bigint,
+  TEXT_ varchar(4000),
+  TEXT2_ varchar(4000),
+  primary key (ID_)
+);
+
+create table ACT_HI_COMMENT (
+  ID_ varchar(64) not null,
+  TYPE_ varchar(255),
+  TIME_ timestamp not null,
+  USER_ID_ varchar(255),
+  TASK_ID_ varchar(64),
+  PROC_INST_ID_ varchar(64),
+  ACTION_ varchar(255),
+  MESSAGE_ varchar(4000),
+  FULL_MSG_ longvarbinary,
+  primary key (ID_)
+);
+
+create table ACT_HI_ATTACHMENT (
+  ID_ varchar(64) not null,
+  REV_ integer,
+  USER_ID_ varchar(255),
+  NAME_ varchar(255),
+  DESCRIPTION_ varchar(4000),
+  TYPE_ varchar(255),
+  TASK_ID_ varchar(64),
+  PROC_INST_ID_ varchar(64),
+  URL_ varchar(4000),
+  CONTENT_ID_ varchar(64),
+  TIME_ timestamp,
+  primary key (ID_)
+);
+create table ACT_HI_IDENTITYLINK (
+  ID_ varchar(64),
+  GROUP_ID_ varchar(255),
+  TYPE_ varchar(255),
+  USER_ID_ varchar(255),
+  TASK_ID_ varchar(64),
+  PROC_INST_ID_ varchar(64) null,
+  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_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_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_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_);    
+create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 46 - 0
jeecg-boot-module-activiti/db/create/activiti.hsql.create.identity.sql

@@ -0,0 +1,46 @@
+create table ACT_ID_GROUP (
+  ID_ varchar(64),
+  REV_ integer,
+  NAME_ varchar(255),
+  TYPE_ varchar(255),
+  primary key (ID_)
+);
+
+create table ACT_ID_MEMBERSHIP (
+  USER_ID_ varchar(64),
+  GROUP_ID_ varchar(64),
+  primary key (USER_ID_, GROUP_ID_)
+);
+
+create table ACT_ID_USER (
+  ID_ varchar(64),
+  REV_ integer,
+  FIRST_ varchar(255),
+  LAST_ varchar(255),
+  EMAIL_ varchar(255),
+  PWD_ varchar(255),
+  PICTURE_ID_ varchar(64),
+  primary key (ID_)
+);
+
+create table ACT_ID_INFO (
+  ID_ varchar(64),
+  REV_ integer,
+  USER_ID_ varchar(64),
+  TYPE_ varchar(64),
+  KEY_ varchar(255),
+  VALUE_ varchar(255),
+  PASSWORD_ longvarbinary,
+  PARENT_ID_ varchar(255),
+  primary key (ID_)
+);
+
+alter table ACT_ID_MEMBERSHIP
+add constraint ACT_FK_MEMB_GROUP
+foreign key (GROUP_ID_)
+references ACT_ID_GROUP;
+
+alter table ACT_ID_MEMBERSHIP
+add constraint ACT_FK_MEMB_USER
+foreign key (USER_ID_)
+references ACT_ID_USER;

+ 333 - 0
jeecg-boot-module-activiti/db/create/activiti.mssql.create.engine.sql

@@ -0,0 +1,333 @@
+create table ACT_GE_PROPERTY (
+    NAME_ nvarchar(64),
+    VALUE_ nvarchar(300),
+    REV_ int,
+    primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ nvarchar(64),
+    REV_ int,
+    NAME_ nvarchar(255),
+    DEPLOYMENT_ID_ nvarchar(64),
+    BYTES_  varbinary(max),
+    GENERATED_ tinyint,
+    primary key (ID_)
+);
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ nvarchar(64),
+    NAME_ nvarchar(255),
+    CATEGORY_ nvarchar(255),
+    TENANT_ID_ nvarchar(255) default '',
+    DEPLOY_TIME_ datetime,
+    primary key (ID_)
+);
+
+create table ACT_RE_MODEL (
+    ID_ nvarchar(64) not null,
+    REV_ int,
+    NAME_ nvarchar(255),
+    KEY_ nvarchar(255),
+    CATEGORY_ nvarchar(255),
+    CREATE_TIME_ datetime,
+    LAST_UPDATE_TIME_ datetime,
+    VERSION_ int,
+    META_INFO_ nvarchar(4000),
+    DEPLOYMENT_ID_ nvarchar(64),
+    EDITOR_SOURCE_VALUE_ID_ nvarchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ nvarchar(64),
+    TENANT_ID_ nvarchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_EXECUTION (
+    ID_ nvarchar(64),
+    REV_ int,
+    PROC_INST_ID_ nvarchar(64),
+    BUSINESS_KEY_ nvarchar(255),
+    PARENT_ID_ nvarchar(64),
+    PROC_DEF_ID_ nvarchar(64),
+    SUPER_EXEC_ nvarchar(64),
+    ACT_ID_ nvarchar(255),
+    IS_ACTIVE_ tinyint,
+    IS_CONCURRENT_ tinyint,
+    IS_SCOPE_ tinyint,
+    IS_EVENT_SCOPE_ tinyint,
+    SUSPENSION_STATE_ tinyint,
+    CACHED_ENT_STATE_ int,
+    TENANT_ID_ nvarchar(255) default '',
+    NAME_ nvarchar(255),
+    LOCK_TIME_ datetime,
+    primary key (ID_)
+);
+
+create table ACT_RU_JOB (
+    ID_ nvarchar(64) NOT NULL,
+  	REV_ int,
+    TYPE_ nvarchar(255) NOT NULL,
+    LOCK_EXP_TIME_ datetime,
+    LOCK_OWNER_ nvarchar(255),
+    EXCLUSIVE_ bit,
+    EXECUTION_ID_ nvarchar(64),
+    PROCESS_INSTANCE_ID_ nvarchar(64),
+    PROC_DEF_ID_ nvarchar(64),
+    RETRIES_ int,
+    EXCEPTION_STACK_ID_ nvarchar(64),
+    EXCEPTION_MSG_ nvarchar(4000),
+    DUEDATE_ datetime NULL,
+    REPEAT_ nvarchar(255),
+    HANDLER_TYPE_ nvarchar(255),
+    HANDLER_CFG_ nvarchar(4000),
+    TENANT_ID_ nvarchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RE_PROCDEF (
+    ID_ nvarchar(64) not null,
+    REV_ int,
+    CATEGORY_ nvarchar(255),
+    NAME_ nvarchar(255),
+    KEY_ nvarchar(255) not null,
+    VERSION_ int not null,
+    DEPLOYMENT_ID_ nvarchar(64),
+    RESOURCE_NAME_ nvarchar(4000),
+    DGRM_RESOURCE_NAME_ nvarchar(4000),
+    DESCRIPTION_ nvarchar(4000),
+    HAS_START_FORM_KEY_ tinyint,
+    HAS_GRAPHICAL_NOTATION_ tinyint,
+    SUSPENSION_STATE_ tinyint,
+    TENANT_ID_ nvarchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_TASK (
+    ID_ nvarchar(64),
+    REV_ int,
+    EXECUTION_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    PROC_DEF_ID_ nvarchar(64),
+    NAME_ nvarchar(255),
+    PARENT_TASK_ID_ nvarchar(64),
+    DESCRIPTION_ nvarchar(4000),
+    TASK_DEF_KEY_ nvarchar(255),
+    OWNER_ nvarchar(255),
+    ASSIGNEE_ nvarchar(255),
+    DELEGATION_ nvarchar(64),
+    PRIORITY_ int,
+    CREATE_TIME_ datetime,
+    DUE_DATE_ datetime,
+    CATEGORY_ nvarchar(255),
+    SUSPENSION_STATE_ int,
+    TENANT_ID_ nvarchar(255) default '',
+    FORM_KEY_ nvarchar(255),
+    primary key (ID_)
+);
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ nvarchar(64),
+    REV_ int,
+    GROUP_ID_ nvarchar(255),
+    TYPE_ nvarchar(255),
+    USER_ID_ nvarchar(255),
+    TASK_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    PROC_DEF_ID_ nvarchar(64),
+    primary key (ID_)
+);
+
+create table ACT_RU_VARIABLE (
+    ID_ nvarchar(64) not null,
+    REV_ int,
+    TYPE_ nvarchar(255) not null,
+    NAME_ nvarchar(255) not null,
+    EXECUTION_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    TASK_ID_ nvarchar(64),
+    BYTEARRAY_ID_ nvarchar(64),
+    DOUBLE_ double precision,
+    LONG_ numeric(19,0),
+    TEXT_ nvarchar(4000),
+    TEXT2_ nvarchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ nvarchar(64) not null,
+    REV_ int,
+    EVENT_TYPE_ nvarchar(255) not null,
+    EVENT_NAME_ nvarchar(255),
+    EXECUTION_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    ACTIVITY_ID_ nvarchar(64),
+    CONFIGURATION_ nvarchar(255),
+    CREATED_ datetime not null,
+    PROC_DEF_ID_ nvarchar(64),
+    TENANT_ID_ nvarchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_EVT_LOG (
+    LOG_NR_ numeric(19,0) IDENTITY(1,1),
+    TYPE_ nvarchar(64),
+    PROC_DEF_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    EXECUTION_ID_ nvarchar(64),
+    TASK_ID_ nvarchar(64),
+    TIME_STAMP_ datetime not null,
+    USER_ID_ nvarchar(255),
+    DATA_ varbinary(max),
+    LOCK_OWNER_ nvarchar(255),
+    LOCK_TIME_ datetime null,
+    IS_PROCESSED_ tinyint default 0,
+    primary key (LOG_NR_)
+);
+
+create table ACT_PROCDEF_INFO (
+	ID_ nvarchar(64) not null,
+    PROC_DEF_ID_ nvarchar(64) not null,
+    REV_ int,
+    INFO_JSON_ID_ nvarchar(64),
+    primary key (ID_)
+);
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_EXECUTION_PROC on ACT_RU_EXECUTION(PROC_DEF_ID_);
+create index ACT_IDX_EXECUTION_PARENT on ACT_RU_EXECUTION(PARENT_ID_);
+create index ACT_IDX_EXECUTION_SUPER on ACT_RU_EXECUTION(SUPER_EXEC_);
+create index ACT_IDX_EXECUTION_IDANDREV on ACT_RU_EXECUTION(ID_, REV_);
+create index ACT_IDX_VARIABLE_BA on ACT_RU_VARIABLE(BYTEARRAY_ID_);
+create index ACT_IDX_VARIABLE_EXEC on ACT_RU_VARIABLE(EXECUTION_ID_);
+create index ACT_IDX_VARIABLE_PROCINST on ACT_RU_VARIABLE(PROC_INST_ID_);
+create index ACT_IDX_IDENT_LNK_TASK on ACT_RU_IDENTITYLINK(TASK_ID_);
+create index ACT_IDX_IDENT_LNK_PROCINST on ACT_RU_IDENTITYLINK(PROC_INST_ID_);
+create index ACT_IDX_TASK_EXEC on ACT_RU_TASK(EXECUTION_ID_);
+create index ACT_IDX_TASK_PROCINST on ACT_RU_TASK(PROC_INST_ID_);
+create index ACT_IDX_EXEC_PROC_INST_ID on ACT_RU_EXECUTION(PROC_INST_ID_);
+create index ACT_IDX_TASK_PROC_DEF_ID on ACT_RU_TASK(PROC_DEF_ID_);
+create index ACT_IDX_EVENT_SUBSCR_EXEC_ID on ACT_RU_EVENT_SUBSCR(EXECUTION_ID_);
+create index ACT_IDX_JOB_EXCEPTION_STACK_ID on ACT_RU_JOB(EXCEPTION_STACK_ID_);
+create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_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_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT 
+    foreign key (PARENT_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER 
+    foreign key (SUPER_EXEC_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK 
+    foreign key (TASK_ID_) 
+    references ACT_RU_TASK (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);       
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+  	add constraint ACT_FK_TASK_PROCDEF
+  	foreign key (PROC_DEF_ID_)
+  	references ACT_RE_PROCDEF (ID_);
+  
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_EXE 
+    foreign key (EXECUTION_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_BYTEARRAY 
+    foreign key (BYTEARRAY_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+  
+alter table ACT_RU_JOB 
+    add constraint ACT_FK_JOB_EXCEPTION 
+    foreign key (EXCEPTION_STACK_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+    
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION(ID_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);    
+
+alter table ACT_PROCDEF_INFO 
+    add constraint ACT_FK_INFO_JSON_BA 
+    foreign key (INFO_JSON_ID_) 
+    references ACT_GE_BYTEARRAY (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_);

+ 155 - 0
jeecg-boot-module-activiti/db/create/activiti.mssql.create.history.sql

@@ -0,0 +1,155 @@
+create table ACT_HI_PROCINST (
+    ID_ nvarchar(64) not null,
+    PROC_INST_ID_ nvarchar(64) not null,
+    BUSINESS_KEY_ nvarchar(255),
+    PROC_DEF_ID_ nvarchar(64) not null,
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ numeric(19,0),
+    START_USER_ID_ nvarchar(255),
+    START_ACT_ID_ nvarchar(255),
+    END_ACT_ID_ nvarchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ nvarchar(64),
+    DELETE_REASON_ nvarchar(4000),
+    TENANT_ID_ nvarchar(255) default '',
+    NAME_ nvarchar(255),
+    primary key (ID_),
+    unique (PROC_INST_ID_)
+);
+
+create table ACT_HI_ACTINST (
+    ID_ nvarchar(64) not null,
+    PROC_DEF_ID_ nvarchar(64) not null,
+    PROC_INST_ID_ nvarchar(64) not null,
+    EXECUTION_ID_ nvarchar(64) not null,
+    ACT_ID_ nvarchar(255) not null,
+    TASK_ID_ nvarchar(64),
+    CALL_PROC_INST_ID_ nvarchar(64),
+    ACT_NAME_ nvarchar(255),
+    ACT_TYPE_ nvarchar(255) not null,
+    ASSIGNEE_ nvarchar(255),
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ numeric(19,0),
+    TENANT_ID_ nvarchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_TASKINST (
+    ID_ nvarchar(64) not null,
+    PROC_DEF_ID_ nvarchar(64),
+    TASK_DEF_KEY_ nvarchar(255),
+    PROC_INST_ID_ nvarchar(64),
+    EXECUTION_ID_ nvarchar(64),
+    NAME_ nvarchar(255),
+    PARENT_TASK_ID_ nvarchar(64),
+    DESCRIPTION_ nvarchar(4000),
+    OWNER_ nvarchar(255),
+    ASSIGNEE_ nvarchar(255),
+    START_TIME_ datetime not null,
+    CLAIM_TIME_ datetime,
+    END_TIME_ datetime,
+    DURATION_ numeric(19,0),
+    DELETE_REASON_ nvarchar(4000),
+    PRIORITY_ int,
+    DUE_DATE_ datetime,
+    FORM_KEY_ nvarchar(255),
+    CATEGORY_ nvarchar(255),
+    TENANT_ID_ nvarchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_VARINST (
+    ID_ nvarchar(64) not null,
+    PROC_INST_ID_ nvarchar(64),
+    EXECUTION_ID_ nvarchar(64),
+    TASK_ID_ nvarchar(64),
+    NAME_ nvarchar(255) not null,
+    VAR_TYPE_ nvarchar(100),
+    REV_ int,
+    BYTEARRAY_ID_ nvarchar(64),
+    DOUBLE_ double precision,
+    LONG_ numeric(19,0),
+    TEXT_ nvarchar(4000),
+    TEXT2_ nvarchar(4000),
+    CREATE_TIME_ datetime,
+    LAST_UPDATED_TIME_ datetime,
+    primary key (ID_)
+);
+
+create table ACT_HI_DETAIL (
+    ID_ nvarchar(64) not null,
+    TYPE_ nvarchar(255) not null,
+    PROC_INST_ID_ nvarchar(64),
+    EXECUTION_ID_ nvarchar(64),
+    TASK_ID_ nvarchar(64),
+    ACT_INST_ID_ nvarchar(64),
+    NAME_ nvarchar(255) not null,
+    VAR_TYPE_ nvarchar(255),
+    REV_ int,
+    TIME_ datetime not null,
+    BYTEARRAY_ID_ nvarchar(64),
+    DOUBLE_ double precision,
+    LONG_ numeric(19,0),
+    TEXT_ nvarchar(4000),
+    TEXT2_ nvarchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_HI_COMMENT (
+    ID_ nvarchar(64) not null,
+    TYPE_ nvarchar(255),
+    TIME_ datetime not null,
+    USER_ID_ nvarchar(255),
+    TASK_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    ACTION_ nvarchar(255),
+    MESSAGE_ nvarchar(4000),
+    FULL_MSG_ varbinary(max),
+    primary key (ID_)
+);
+
+create table ACT_HI_ATTACHMENT (
+    ID_ nvarchar(64) not null,
+    REV_ integer,
+    USER_ID_ nvarchar(255),
+    NAME_ nvarchar(255),
+    DESCRIPTION_ nvarchar(4000),
+    TYPE_ nvarchar(255),
+    TASK_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(64),
+    URL_ nvarchar(4000),
+    CONTENT_ID_ nvarchar(64),
+    TIME_ datetime,
+    primary key (ID_)
+);
+
+create table ACT_HI_IDENTITYLINK (
+    ID_ nvarchar(64),
+    GROUP_ID_ nvarchar(255),
+    TYPE_ nvarchar(255),
+    USER_ID_ nvarchar(255),
+    TASK_ID_ nvarchar(64),
+    PROC_INST_ID_ nvarchar(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_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_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_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 46 - 0
jeecg-boot-module-activiti/db/create/activiti.mssql.create.identity.sql

@@ -0,0 +1,46 @@
+create table ACT_ID_GROUP (
+    ID_ nvarchar(64),
+    REV_ int,
+    NAME_ nvarchar(255),
+    TYPE_ nvarchar(255),
+    primary key (ID_)
+);
+
+create table ACT_ID_MEMBERSHIP (
+    USER_ID_ nvarchar(64),
+    GROUP_ID_ nvarchar(64),
+    primary key (USER_ID_, GROUP_ID_)
+);
+
+create table ACT_ID_USER (
+    ID_ nvarchar(64),
+    REV_ int,
+    FIRST_ nvarchar(255),
+    LAST_ nvarchar(255),
+    EMAIL_ nvarchar(255),
+    PWD_ nvarchar(255),
+    PICTURE_ID_ nvarchar(64),
+    primary key (ID_)
+);
+
+create table ACT_ID_INFO (
+    ID_ nvarchar(64),
+    REV_ int,
+    USER_ID_ nvarchar(64),
+    TYPE_ nvarchar(64),
+    KEY_ nvarchar(255),
+    VALUE_ nvarchar(255),
+    PASSWORD_ varbinary(max),
+    PARENT_ID_ nvarchar(255),
+    primary key (ID_)
+);
+
+alter table ACT_ID_MEMBERSHIP 
+    add constraint ACT_FK_MEMB_GROUP 
+    foreign key (GROUP_ID_) 
+    references ACT_ID_GROUP (ID_);
+
+alter table ACT_ID_MEMBERSHIP 
+    add constraint ACT_FK_MEMB_USER 
+    foreign key (USER_ID_) 
+    references ACT_ID_USER (ID_);

+ 324 - 0
jeecg-boot-module-activiti/db/create/activiti.mysql.create.engine.sql

@@ -0,0 +1,324 @@
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64),
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ LONGBLOB,
+    GENERATED_ TINYINT,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64),
+    NAME_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    DEPLOY_TIME_ timestamp(3) NULL,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp(3) null,
+    LAST_UPDATE_TIME_ timestamp(3) null,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64),
+    REV_ integer,
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    ACT_ID_ varchar(255),
+    IS_ACTIVE_ TINYINT,
+    IS_CONCURRENT_ TINYINT,
+    IS_SCOPE_ TINYINT,
+    IS_EVENT_SCOPE_ TINYINT,
+    SUSPENSION_STATE_ integer,
+    CACHED_ENT_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    LOCK_TIME_ timestamp(3) NULL,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    TYPE_ varchar(255) NOT NULL,
+    LOCK_EXP_TIME_ timestamp(3) NULL,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ boolean,
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp(3) NULL,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) not null,
+    VERSION_ integer not null,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DESCRIPTION_ varchar(4000),
+    HAS_START_FORM_KEY_ TINYINT,
+    HAS_GRAPHICAL_NOTATION_ TINYINT,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_TASK (
+    ID_ varchar(64),
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp(3) NULL,
+    DUE_DATE_ datetime(3),
+    CATEGORY_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    FORM_KEY_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64),
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),    
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(64),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp(3) not null DEFAULT CURRENT_TIMESTAMP(3),
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_EVT_LOG (
+    LOG_NR_ bigint auto_increment,
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp(3) not null,
+    USER_ID_ varchar(255),
+    DATA_ LONGBLOB,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp(3) null,
+    IS_PROCESSED_ tinyint default 0,
+    primary key (LOG_NR_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_PROCDEF_INFO (
+	ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    REV_ integer,
+    INFO_JSON_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_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_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCINST 
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade;
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT 
+    foreign key (PARENT_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER 
+    foreign key (SUPER_EXEC_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK 
+    foreign key (TASK_ID_) 
+    references ACT_RU_TASK (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF(ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);       
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+  	add constraint ACT_FK_TASK_PROCDEF
+  	foreign key (PROC_DEF_ID_)
+  	references ACT_RE_PROCDEF (ID_);
+  
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_EXE 
+    foreign key (EXECUTION_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_BYTEARRAY 
+    foreign key (BYTEARRAY_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_JOB 
+    add constraint ACT_FK_JOB_EXCEPTION 
+    foreign key (EXCEPTION_STACK_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION(ID_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);        
+
+alter table ACT_PROCDEF_INFO 
+    add constraint ACT_FK_INFO_JSON_BA 
+    foreign key (INFO_JSON_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    

+ 155 - 0
jeecg-boot-module-activiti/db/create/activiti.mysql.create.history.sql

@@ -0,0 +1,155 @@
+create table ACT_HI_PROCINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    START_TIME_ datetime(3) not null,
+    END_TIME_ datetime(3),
+    DURATION_ bigint,
+    START_USER_ID_ varchar(255),
+    START_ACT_ID_ varchar(255),
+    END_ACT_ID_ varchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    DELETE_REASON_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    primary key (ID_),
+    unique (PROC_INST_ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_ACTINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    EXECUTION_ID_ varchar(64) not null,
+    ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    ACT_NAME_ varchar(255),
+    ACT_TYPE_ varchar(255) not null,
+    ASSIGNEE_ varchar(255),
+    START_TIME_ datetime(3) not null,
+    END_TIME_ datetime(3),
+    DURATION_ bigint,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_TASKINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64),
+    TASK_DEF_KEY_ varchar(255),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ datetime(3) not null,
+    CLAIM_TIME_ datetime(3),
+    END_TIME_ datetime(3),
+    DURATION_ bigint,
+    DELETE_REASON_ varchar(4000),
+    PRIORITY_ integer,
+    DUE_DATE_ datetime(3),
+    FORM_KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    CREATE_TIME_ datetime(3),
+    LAST_UPDATED_TIME_ datetime(3),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_DETAIL (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(255),
+    REV_ integer,
+    TIME_ datetime(3) not null,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_COMMENT (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TIME_ datetime(3) not null,
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTION_ varchar(255),
+    MESSAGE_ varchar(4000),
+    FULL_MSG_ LONGBLOB,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_ATTACHMENT (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(255),
+    NAME_ varchar(255),
+    DESCRIPTION_ varchar(4000),
+    TYPE_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    URL_ varchar(4000),
+    CONTENT_ID_ varchar(64),
+    TIME_ datetime(3),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64),
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+
+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_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_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_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 46 - 0
jeecg-boot-module-activiti/db/create/activiti.mysql.create.identity.sql

@@ -0,0 +1,46 @@
+create table ACT_ID_GROUP (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    TYPE_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_MEMBERSHIP (
+    USER_ID_ varchar(64),
+    GROUP_ID_ varchar(64),
+    primary key (USER_ID_, GROUP_ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_USER (
+    ID_ varchar(64),
+    REV_ integer,
+    FIRST_ varchar(255),
+    LAST_ varchar(255),
+    EMAIL_ varchar(255),
+    PWD_ varchar(255),
+    PICTURE_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_ID_INFO (
+    ID_ varchar(64),
+    REV_ integer,
+    USER_ID_ varchar(64),
+    TYPE_ varchar(64),
+    KEY_ varchar(255),
+    VALUE_ varchar(255),
+    PASSWORD_ LONGBLOB,
+    PARENT_ID_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+alter table ACT_ID_MEMBERSHIP 
+    add constraint ACT_FK_MEMB_GROUP 
+    foreign key (GROUP_ID_) 
+    references ACT_ID_GROUP (ID_);
+
+alter table ACT_ID_MEMBERSHIP 
+    add constraint ACT_FK_MEMB_USER 
+    foreign key (USER_ID_) 
+    references ACT_ID_USER (ID_);

+ 324 - 0
jeecg-boot-module-activiti/db/create/activiti.mysql55.create.engine.sql

@@ -0,0 +1,324 @@
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64),
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ LONGBLOB,
+    GENERATED_ TINYINT,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64),
+    NAME_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    DEPLOY_TIME_ timestamp NULL,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp null,
+    LAST_UPDATE_TIME_ timestamp null,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64),
+    REV_ integer,
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    ACT_ID_ varchar(255),
+    IS_ACTIVE_ TINYINT,
+    IS_CONCURRENT_ TINYINT,
+    IS_SCOPE_ TINYINT,
+    IS_EVENT_SCOPE_ TINYINT,
+    SUSPENSION_STATE_ integer,
+    CACHED_ENT_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    LOCK_TIME_ timestamp NULL,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    TYPE_ varchar(255) NOT NULL,
+    LOCK_EXP_TIME_ timestamp NULL,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ boolean,
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp NULL,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) not null,
+    VERSION_ integer not null,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DESCRIPTION_ varchar(4000),
+    HAS_START_FORM_KEY_ TINYINT,
+    HAS_GRAPHICAL_NOTATION_ TINYINT,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_TASK (
+    ID_ varchar(64),
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp NULL,
+    DUE_DATE_ datetime,
+    CATEGORY_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    FORM_KEY_ varchar(255),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64),
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),    
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(64),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp not null DEFAULT CURRENT_TIMESTAMP,
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_EVT_LOG (
+    LOG_NR_ bigint auto_increment,
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp not null,
+    USER_ID_ varchar(255),
+    DATA_ LONGBLOB,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp null,
+    IS_PROCESSED_ tinyint default 0,
+    primary key (LOG_NR_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_PROCDEF_INFO (
+	ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    REV_ integer,
+    INFO_JSON_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
+create index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO(PROC_DEF_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_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCINST 
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade;
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PARENT 
+    foreign key (PARENT_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_SUPER 
+    foreign key (SUPER_EXEC_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_TSKASS_TASK 
+    foreign key (TASK_ID_) 
+    references ACT_RU_TASK (ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_ATHRZ_PROCEDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF(ID_);
+    
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_);       
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_EXE
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+    add constraint ACT_FK_TASK_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION (ID_);
+    
+alter table ACT_RU_TASK
+  add constraint ACT_FK_TASK_PROCDEF
+  foreign key (PROC_DEF_ID_)
+  references ACT_RE_PROCDEF (ID_);
+  
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_EXE 
+    foreign key (EXECUTION_ID_) 
+    references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_VARIABLE
+    add constraint ACT_FK_VAR_PROCINST
+    foreign key (PROC_INST_ID_)
+    references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE 
+    add constraint ACT_FK_VAR_BYTEARRAY 
+    foreign key (BYTEARRAY_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_JOB 
+    add constraint ACT_FK_JOB_EXCEPTION 
+    foreign key (EXCEPTION_STACK_ID_) 
+    references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_EVENT_SUBSCR
+    add constraint ACT_FK_EVENT_EXEC
+    foreign key (EXECUTION_ID_)
+    references ACT_RU_EXECUTION(ID_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);        
+
+alter table ACT_PROCDEF_INFO 
+    add constraint ACT_FK_INFO_JSON_BA 
+    foreign key (INFO_JSON_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    

+ 155 - 0
jeecg-boot-module-activiti/db/create/activiti.mysql55.create.history.sql

@@ -0,0 +1,155 @@
+create table ACT_HI_PROCINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ bigint,
+    START_USER_ID_ varchar(255),
+    START_ACT_ID_ varchar(255),
+    END_ACT_ID_ varchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    DELETE_REASON_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    primary key (ID_),
+    unique (PROC_INST_ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_ACTINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    EXECUTION_ID_ varchar(64) not null,
+    ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    ACT_NAME_ varchar(255),
+    ACT_TYPE_ varchar(255) not null,
+    ASSIGNEE_ varchar(255),
+    START_TIME_ datetime not null,
+    END_TIME_ datetime,
+    DURATION_ bigint,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_TASKINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64),
+    TASK_DEF_KEY_ varchar(255),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ datetime not null,
+    CLAIM_TIME_ datetime,
+    END_TIME_ datetime,
+    DURATION_ bigint,
+    DELETE_REASON_ varchar(4000),
+    PRIORITY_ integer,
+    DUE_DATE_ datetime,
+    FORM_KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    CREATE_TIME_ datetime,
+    LAST_UPDATED_TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_DETAIL (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(255),
+    REV_ integer,
+    TIME_ datetime not null,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_COMMENT (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TIME_ datetime not null,
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTION_ varchar(255),
+    MESSAGE_ varchar(4000),
+    FULL_MSG_ LONGBLOB,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_ATTACHMENT (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(255),
+    NAME_ varchar(255),
+    DESCRIPTION_ varchar(4000),
+    TYPE_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    URL_ varchar(4000),
+    CONTENT_ID_ varchar(64),
+    TIME_ datetime,
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64),
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+
+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_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_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_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 344 - 0
jeecg-boot-module-activiti/db/create/activiti.oracle.create.engine.sql

@@ -0,0 +1,344 @@
+create table ACT_GE_PROPERTY (
+    NAME_ NVARCHAR2(64),
+    VALUE_ NVARCHAR2(300),
+    REV_ INTEGER,
+    primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 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),
+    TENANT_ID_ NVARCHAR2(255) DEFAULT '',
+    DEPLOY_TIME_ TIMESTAMP(6),
+    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),
+    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)),
+    SUSPENSION_STATE_ INTEGER,
+    CACHED_ENT_STATE_ INTEGER,
+    TENANT_ID_ NVARCHAR2(255) DEFAULT '',
+    NAME_ NVARCHAR2(255),
+    LOCK_TIME_ TIMESTAMP(6),
+    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_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 '',
+    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),
+    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_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_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_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_);

+ 155 - 0
jeecg-boot-module-activiti/db/create/activiti.oracle.create.history.sql

@@ -0,0 +1,155 @@
+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),
+    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 - 0
jeecg-boot-module-activiti/db/create/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_);

+ 342 - 0
jeecg-boot-module-activiti/db/create/activiti.postgres.create.engine.sql

@@ -0,0 +1,342 @@
+create table ACT_GE_PROPERTY (
+    NAME_ varchar(64),
+    VALUE_ varchar(300),
+    REV_ integer,
+    primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.22.0.0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.22.0.0)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    DEPLOYMENT_ID_ varchar(64),
+    BYTES_ bytea,
+    GENERATED_ boolean,
+    primary key (ID_)
+);
+
+create table ACT_RE_DEPLOYMENT (
+    ID_ varchar(64),
+    NAME_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    DEPLOY_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATE_TIME_ timestamp,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_EXECUTION (
+    ID_ varchar(64),
+    REV_ integer,
+    PROC_INST_ID_ varchar(64),
+    BUSINESS_KEY_ varchar(255),
+    PARENT_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    SUPER_EXEC_ varchar(64),
+    ACT_ID_ varchar(255),
+    IS_ACTIVE_ boolean,
+    IS_CONCURRENT_ boolean,
+    IS_SCOPE_ boolean,
+    IS_EVENT_SCOPE_ boolean,
+    SUSPENSION_STATE_ integer,
+    CACHED_ENT_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    LOCK_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_RU_JOB (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    TYPE_ varchar(255) NOT NULL,
+    LOCK_EXP_TIME_ timestamp,
+    LOCK_OWNER_ varchar(255),
+    EXCLUSIVE_ boolean,
+    EXECUTION_ID_ varchar(64),
+    PROCESS_INSTANCE_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    RETRIES_ integer,
+    EXCEPTION_STACK_ID_ varchar(64),
+    EXCEPTION_MSG_ varchar(4000),
+    DUEDATE_ timestamp,
+    REPEAT_ varchar(255),
+    HANDLER_TYPE_ varchar(255),
+    HANDLER_CFG_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RE_PROCDEF (
+    ID_ varchar(64) NOT NULL,
+    REV_ integer,
+    CATEGORY_ varchar(255),
+    NAME_ varchar(255),
+    KEY_ varchar(255) NOT NULL,
+    VERSION_ integer NOT NULL,
+    DEPLOYMENT_ID_ varchar(64),
+    RESOURCE_NAME_ varchar(4000),
+    DGRM_RESOURCE_NAME_ varchar(4000),
+    DESCRIPTION_ varchar(4000),
+    HAS_START_FORM_KEY_ boolean,
+    HAS_GRAPHICAL_NOTATION_ boolean,
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_RU_TASK (
+    ID_ varchar(64),
+    REV_ integer,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    TASK_DEF_KEY_ varchar(255),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    DELEGATION_ varchar(64),
+    PRIORITY_ integer,
+    CREATE_TIME_ timestamp,
+    DUE_DATE_ timestamp,
+    CATEGORY_ varchar(255),
+    SUSPENSION_STATE_ integer,
+    TENANT_ID_ varchar(255) default '',
+    FORM_KEY_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_RU_IDENTITYLINK (
+    ID_ varchar(64),
+    REV_ integer,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    PROC_DEF_ID_ varchar (64),
+    primary key (ID_)
+);
+
+create table ACT_RU_VARIABLE (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    TYPE_ varchar(255) not null,
+    NAME_ varchar(255) not null,
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_RU_EVENT_SUBSCR (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    EVENT_TYPE_ varchar(255) not null,
+    EVENT_NAME_ varchar(255),
+    EXECUTION_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTIVITY_ID_ varchar(64),
+    CONFIGURATION_ varchar(255),
+    CREATED_ timestamp not null,
+    PROC_DEF_ID_ varchar(64),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_EVT_LOG (
+    LOG_NR_ SERIAL PRIMARY KEY,
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp not null,
+    USER_ID_ varchar(255),
+    DATA_ bytea,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp null,
+    IS_PROCESSED_ smallint default 0
+);
+
+create table ACT_PROCDEF_INFO (
+	ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    REV_ integer,
+    INFO_JSON_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+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_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_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_);
+    

+ 155 - 0
jeecg-boot-module-activiti/db/create/activiti.postgres.create.history.sql

@@ -0,0 +1,155 @@
+create table ACT_HI_PROCINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    BUSINESS_KEY_ varchar(255),
+    PROC_DEF_ID_ varchar(64) not null,
+    START_TIME_ timestamp not null,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    START_USER_ID_ varchar(255),
+    START_ACT_ID_ varchar(255),
+    END_ACT_ID_ varchar(255),
+    SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+    DELETE_REASON_ varchar(4000),
+    TENANT_ID_ varchar(255) default '',
+    NAME_ varchar(255),
+    primary key (ID_),
+    unique (PROC_INST_ID_)
+);
+
+create table ACT_HI_ACTINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64) not null,
+    EXECUTION_ID_ varchar(64) not null,
+    ACT_ID_ varchar(255) not null,
+    TASK_ID_ varchar(64),
+    CALL_PROC_INST_ID_ varchar(64),
+    ACT_NAME_ varchar(255),
+    ACT_TYPE_ varchar(255) not null,
+    ASSIGNEE_ varchar(255),
+    START_TIME_ timestamp not null,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_TASKINST (
+    ID_ varchar(64) not null,
+    PROC_DEF_ID_ varchar(64),
+    TASK_DEF_KEY_ varchar(255),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    NAME_ varchar(255),
+    PARENT_TASK_ID_ varchar(64),
+    DESCRIPTION_ varchar(4000),
+    OWNER_ varchar(255),
+    ASSIGNEE_ varchar(255),
+    START_TIME_ timestamp not null,
+    CLAIM_TIME_ timestamp,
+    END_TIME_ timestamp,
+    DURATION_ bigint,
+    DELETE_REASON_ varchar(4000),
+    PRIORITY_ integer,
+    DUE_DATE_ timestamp,
+    FORM_KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    TENANT_ID_ varchar(255) default '',
+    primary key (ID_)
+);
+
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATED_TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_HI_DETAIL (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    ACT_INST_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(64),
+    REV_ integer,
+    TIME_ timestamp not null,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (ID_)
+);
+
+create table ACT_HI_COMMENT (
+    ID_ varchar(64) not null,
+    TYPE_ varchar(255),
+    TIME_ timestamp not null,
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    ACTION_ varchar(255),
+    MESSAGE_ varchar(4000),
+    FULL_MSG_ bytea,
+    primary key (ID_)
+);
+
+create table ACT_HI_ATTACHMENT (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    USER_ID_ varchar(255),
+    NAME_ varchar(255),
+    DESCRIPTION_ varchar(4000),
+    TYPE_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    URL_ varchar(4000),
+    CONTENT_ID_ varchar(64),
+    TIME_ timestamp,
+    primary key (ID_)
+);
+
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64),
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(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_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_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_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 48 - 0
jeecg-boot-module-activiti/db/create/activiti.postgres.create.identity.sql

@@ -0,0 +1,48 @@
+create table ACT_ID_GROUP (
+    ID_ varchar(64),
+    REV_ integer,
+    NAME_ varchar(255),
+    TYPE_ varchar(255),
+    primary key (ID_)
+);
+
+create table ACT_ID_MEMBERSHIP (
+    USER_ID_ varchar(64),
+    GROUP_ID_ varchar(64),
+    primary key (USER_ID_, GROUP_ID_)
+);
+
+create table ACT_ID_USER (
+    ID_ varchar(64),
+    REV_ integer,
+    FIRST_ varchar(255),
+    LAST_ varchar(255),
+    EMAIL_ varchar(255),
+    PWD_ varchar(255),
+    PICTURE_ID_ varchar(64),
+    primary key (ID_)
+);
+
+create table ACT_ID_INFO (
+    ID_ varchar(64),
+    REV_ integer,
+    USER_ID_ varchar(64),
+    TYPE_ varchar(64),
+    KEY_ varchar(255),
+    VALUE_ varchar(255),
+    PASSWORD_ bytea,
+    PARENT_ID_ varchar(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_);

+ 82 - 0
jeecg-boot-module-activiti/db/drop/activiti.db2.drop.engine.sql

@@ -0,0 +1,82 @@
+drop index ACT_IDX_EXEC_BUSKEY;
+drop index ACT_IDX_TASK_CREATE;
+drop index ACT_IDX_IDENT_LNK_USER;
+drop index ACT_IDX_IDENT_LNK_GROUP;
+drop index ACT_IDX_VARIABLE_TASK_ID;
+
+alter table ACT_GE_BYTEARRAY 
+    drop foreign key ACT_FK_BYTEARR_DEPL;
+
+alter table ACT_RU_EXECUTION
+    drop foreign key ACT_FK_EXE_PROCINST;
+
+alter table ACT_RU_EXECUTION 
+    drop foreign key ACT_FK_EXE_PARENT;
+
+alter table ACT_RU_EXECUTION 
+    drop foreign key ACT_FK_EXE_SUPER;
+    
+alter table ACT_RU_EXECUTION 
+    drop foreign key ACT_FK_EXE_PROCDEF;
+
+alter table ACT_RU_IDENTITYLINK
+    drop foreign key ACT_FK_TSKASS_TASK;
+
+alter table ACT_RU_IDENTITYLINK
+    drop foreign key ACT_FK_ATHRZ_PROCEDEF;
+
+alter table ACT_RU_TASK
+	drop foreign key ACT_FK_TASK_EXE;
+
+alter table ACT_RU_TASK
+	drop foreign key ACT_FK_TASK_PROCINST;
+	
+alter table ACT_RU_TASK
+	drop foreign key ACT_FK_TASK_PROCDEF;
+    
+alter table ACT_RU_VARIABLE
+    drop foreign key ACT_FK_VAR_EXE;
+    
+alter table ACT_RU_VARIABLE
+	drop foreign key ACT_FK_VAR_PROCINST;    
+
+alter table ACT_RU_VARIABLE
+    drop foreign key ACT_FK_VAR_BYTEARRAY;
+
+alter table ACT_RU_JOB
+    drop foreign key ACT_FK_JOB_EXCEPTION;
+    
+alter table ACT_RU_EVENT_SUBSCR
+    drop foreign key ACT_FK_EVENT_EXEC;
+
+alter table ACT_RE_MODEL 
+    drop foreign key ACT_FK_MODEL_SOURCE;
+
+alter table ACT_RE_MODEL 
+    drop foreign key ACT_FK_MODEL_SOURCE_EXTRA; 
+    
+alter table ACT_RE_MODEL 
+    drop foreign key ACT_FK_MODEL_DEPLOYMENT; 
+
+alter table ACT_PROCDEF_INFO 
+    drop foreign key ACT_FK_INFO_JSON_BA;
+
+alter table ACT_PROCDEF_INFO 
+    drop foreign key ACT_FK_INFO_PROCDEF;
+
+drop index ACT_IDX_EVENT_SUBSCR_CONFIG_;
+drop index ACT_IDX_ATHRZ_PROCEDEF;
+    
+drop table ACT_GE_PROPERTY;
+drop table ACT_GE_BYTEARRAY;
+drop table ACT_RE_DEPLOYMENT;
+drop table ACT_RE_MODEL;
+drop table ACT_RE_PROCDEF;
+drop table ACT_RU_VARIABLE;
+drop table ACT_RU_IDENTITYLINK;
+drop table ACT_RU_TASK;
+drop table ACT_RU_EXECUTION;
+drop table ACT_RU_JOB;
+drop table ACT_RU_EVENT_SUBSCR;
+drop table ACT_EVT_LOG;
+drop table ACT_PROCDEF_INFO;

+ 25 - 0
jeecg-boot-module-activiti/db/drop/activiti.db2.drop.history.sql

@@ -0,0 +1,25 @@
+drop index ACT_IDX_HI_PRO_INST_END;
+drop index ACT_IDX_HI_PRO_I_BUSKEY;
+drop index ACT_IDX_HI_ACT_INST_START;
+drop index ACT_IDX_HI_ACT_INST_END;
+drop index ACT_IDX_HI_DETAIL_PROC_INST;
+drop index ACT_IDX_HI_DETAIL_ACT_INST;
+drop index ACT_IDX_HI_DETAIL_TIME;
+drop index ACT_IDX_HI_DETAIL_NAME;
+drop index ACT_IDX_HI_DETAIL_TASK_ID;
+drop index ACT_IDX_HI_PROCVAR_PROC_INST;
+drop index ACT_IDX_HI_PROCVAR_NAME_TYPE;
+drop index ACT_IDX_HI_ACT_INST_PROCINST;
+drop index ACT_IDX_HI_IDENT_LNK_USER;
+drop index ACT_IDX_HI_IDENT_LNK_TASK;
+drop index ACT_IDX_HI_IDENT_LNK_PROCINST;
+drop index ACT_IDX_HI_TASK_INST_PROCINST;
+
+drop table ACT_HI_PROCINST;
+drop table ACT_HI_ACTINST;
+drop table ACT_HI_VARINST;
+drop table ACT_HI_TASKINST;
+drop table ACT_HI_DETAIL;
+drop table ACT_HI_COMMENT;
+drop table ACT_HI_ATTACHMENT;
+drop table ACT_HI_IDENTITYLINK;

+ 10 - 0
jeecg-boot-module-activiti/db/drop/activiti.db2.drop.identity.sql

@@ -0,0 +1,10 @@
+alter table ACT_ID_MEMBERSHIP 
+    drop foreign key ACT_FK_MEMB_GROUP;
+    
+alter table ACT_ID_MEMBERSHIP 
+    drop foreign key ACT_FK_MEMB_USER;
+    
+drop table ACT_ID_INFO;
+drop table ACT_ID_MEMBERSHIP;
+drop table ACT_ID_GROUP;
+drop table ACT_ID_USER;

+ 22 - 0
jeecg-boot-module-activiti/db/drop/activiti.h2.drop.engine.sql

@@ -0,0 +1,22 @@
+drop table if exists ACT_GE_PROPERTY cascade constraints;
+drop table if exists ACT_GE_BYTEARRAY cascade constraints;
+drop table if exists ACT_RE_DEPLOYMENT cascade constraints;
+drop table if exists ACT_RE_MODEL cascade constraints;
+drop table if exists ACT_RU_EXECUTION cascade constraints;
+drop table if exists ACT_RU_JOB cascade constraints;
+drop table if exists ACT_RE_PROCDEF cascade constraints;
+drop table if exists ACT_RU_TASK cascade constraints;
+drop table if exists ACT_RU_IDENTITYLINK cascade constraints;
+drop table if exists ACT_RU_VARIABLE cascade constraints;
+drop table if exists ACT_RU_EVENT_SUBSCR cascade constraints;
+drop table if exists ACT_EVT_LOG cascade constraints;
+drop table if exists ACT_PROCDEF_INFO cascade constraints;
+
+drop index if exists ACT_IDX_EXEC_BUSKEY;
+drop index if exists ACT_IDX_TASK_CREATE;
+drop index if exists ACT_IDX_IDENT_LNK_USER;
+drop index if exists ACT_IDX_IDENT_LNK_GROUP;
+drop index if exists ACT_IDX_VARIABLE_TASK_ID;
+drop index if exists ACT_IDX_EVENT_SUBSCR_CONFIG_;
+drop index if exists ACT_IDX_ATHRZ_PROCEDEF;
+drop index if exists ACT_IDX_INFO_PROCDEF;

+ 26 - 0
jeecg-boot-module-activiti/db/drop/activiti.h2.drop.history.sql

@@ -0,0 +1,26 @@
+drop table if exists ACT_HI_PROCINST cascade constraints;
+drop table if exists ACT_HI_ACTINST cascade constraints;
+drop table if exists ACT_HI_VARINST cascade constraints;
+drop table if exists ACT_HI_TASKINST cascade constraints;
+drop table if exists ACT_HI_DETAIL cascade constraints;
+drop table if exists ACT_HI_COMMENT cascade constraints;
+drop table if exists ACT_HI_ATTACHMENT cascade constraints;
+drop table if exists ACT_HI_IDENTITYLINK cascade constraints;
+
+
+drop index if exists ACT_IDX_HI_PRO_INST_END;
+drop index if exists ACT_IDX_HI_PRO_I_BUSKEY;
+drop index if exists ACT_IDX_HI_ACT_INST_START;
+drop index if exists ACT_IDX_HI_ACT_INST_END;
+drop index if exists ACT_IDX_HI_DETAIL_PROC_INST;
+drop index if exists ACT_IDX_HI_DETAIL_ACT_INST;
+drop index if exists ACT_IDX_HI_DETAIL_TIME;
+drop index if exists ACT_IDX_HI_DETAIL_NAME;
+drop index if exists ACT_IDX_HI_DETAIL_TASK_ID;
+drop index if exists ACT_IDX_HI_PROCVAR_PROC_INST;
+drop index if exists ACT_IDX_HI_PROCVAR_NAME_TYPE;
+drop index if exists ACT_IDX_HI_ACT_INST_PROCINST;
+drop index if exists ACT_IDX_HI_IDENT_LNK_USER;
+drop index if exists ACT_IDX_HI_IDENT_LNK_TASK;
+drop index if exists ACT_IDX_HI_IDENT_LNK_PROCINST;
+drop index if exists ACT_IDX_HI_TASK_INST_PROCINST;

+ 4 - 0
jeecg-boot-module-activiti/db/drop/activiti.h2.drop.identity.sql

@@ -0,0 +1,4 @@
+drop table if exists ACT_ID_INFO cascade constraints;
+drop table if exists ACT_ID_GROUP cascade constraints;
+drop table if exists ACT_ID_MEMBERSHIP cascade constraints;
+drop table if exists ACT_ID_USER cascade constraints;

+ 22 - 0
jeecg-boot-module-activiti/db/drop/activiti.hsql.drop.engine.sql

@@ -0,0 +1,22 @@
+drop table if exists ACT_GE_PROPERTY cascade;
+drop table if exists ACT_GE_BYTEARRAY cascade;
+drop table if exists ACT_RE_DEPLOYMENT cascade;
+drop table if exists ACT_RE_MODEL cascade;
+drop table if exists ACT_RU_EXECUTION cascade;
+drop table if exists ACT_RU_JOB cascade;
+drop table if exists ACT_RE_PROCDEF cascade;
+drop table if exists ACT_RU_TASK cascade;
+drop table if exists ACT_RU_IDENTITYLINK cascade;
+drop table if exists ACT_RU_VARIABLE cascade;
+drop table if exists ACT_RU_EVENT_SUBSCR cascade;
+drop table if exists ACT_EVT_LOG cascade;
+drop table if exists ACT_PROCDEF_INFO cascade;
+
+drop index if exists ACT_IDX_EXEC_BUSKEY;
+drop index if exists ACT_IDX_TASK_CREATE;
+drop index if exists ACT_IDX_IDENT_LNK_USER;
+drop index if exists ACT_IDX_IDENT_LNK_GROUP;
+drop index if exists ACT_IDX_VARIABLE_TASK_ID;
+drop index if exists ACT_IDX_EVENT_SUBSCR_CONFIG_;
+drop index if exists ACT_IDX_ATHRZ_PROCEDEF;
+drop index if exists ACT_IDX_INFO_PROCDEF;

+ 24 - 0
jeecg-boot-module-activiti/db/drop/activiti.hsql.drop.history.sql

@@ -0,0 +1,24 @@
+drop table if exists ACT_HI_PROCINST cascade;
+drop table if exists ACT_HI_ACTINST cascade;
+drop table if exists ACT_HI_VARINST cascade;
+drop table if exists ACT_HI_TASKINST cascade;
+drop table if exists ACT_HI_DETAIL cascade;
+drop table if exists ACT_HI_COMMENT cascade;
+drop table if exists ACT_HI_ATTACHMENT cascade;
+drop table if exists ACT_HI_IDENTITYLINK cascade;
+
+drop index if exists ACT_IDX_HI_PRO_INST_END;
+drop index if exists ACT_IDX_HI_PRO_I_BUSKEY;
+drop index if exists ACT_IDX_HI_ACT_INST_START;
+drop index if exists ACT_IDX_HI_ACT_INST_END;
+drop index if exists ACT_IDX_HI_DETAIL_PROC_INST;
+drop index if exists ACT_IDX_HI_DETAIL_ACT_INST;
+drop index if exists ACT_IDX_HI_DETAIL_TIME;
+drop index if exists ACT_IDX_HI_DETAIL_NAME;
+drop index if exists ACT_IDX_HI_DETAIL_TASK_ID;
+drop index if exists ACT_IDX_HI_PROCVAR_PROC_INST;
+drop index if exists ACT_IDX_HI_PROCVAR_NAME_TYPE;
+drop index if exists ACT_IDX_HI_ACT_INST_PROCINST;
+drop index if exists ACT_IDX_HI_IDENT_LNK_USER;
+drop index if exists ACT_IDX_HI_IDENT_LNK_TASK;
+drop index if exists ACT_IDX_HI_IDENT_LNK_PROCINST;

+ 4 - 0
jeecg-boot-module-activiti/db/drop/activiti.hsql.drop.identity.sql

@@ -0,0 +1,4 @@
+drop table if exists ACT_ID_INFO cascade;
+drop table if exists ACT_ID_GROUP cascade;
+drop table if exists ACT_ID_MEMBERSHIP cascade;
+drop table if exists ACT_ID_USER cascade;

+ 44 - 0
jeecg-boot-module-activiti/db/drop/activiti.mssql.drop.engine.sql

@@ -0,0 +1,44 @@
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_EXEC_BUSKEY') drop index ACT_RU_EXECUTION.ACT_IDX_EXEC_BUSKEY;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_TASK_CREATE') drop index ACT_RU_TASK.ACT_IDX_TASK_CREATE;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_IDENT_LNK_USER') drop index ACT_RU_IDENTITYLINK.ACT_IDX_IDENT_LNK_USER;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_IDENT_LNK_GROUP') drop index ACT_RU_IDENTITYLINK.ACT_IDX_IDENT_LNK_GROUP;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_VARIABLE_TASK_ID') drop index ACT_RU_VARIABLE.ACT_IDX_VARIABLE_TASK_ID;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_EVENT_SUBSCR_CONFIG_') drop index ACT_RU_EVENT_SUBSCR.ACT_IDX_EVENT_SUBSCR_CONFIG_;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_INFO_PROCDEF') drop index ACT_PROCDEF_INFO.ACT_IDX_INFO_PROCDEF;
+
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_GE_BYTEARRAY') alter table ACT_GE_BYTEARRAY drop constraint ACT_FK_BYTEARR_DEPL;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_PROCDEF') alter table ACT_RE_PROCDEF drop constraint ACT_UNIQ_PROCDEF;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EXECUTION') alter table ACT_RU_EXECUTION drop constraint ACT_FK_EXE_PROCDEF;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EXECUTION') alter table ACT_RU_EXECUTION drop constraint ACT_FK_EXE_PARENT;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EXECUTION') alter table ACT_RU_EXECUTION drop constraint ACT_FK_EXE_SUPER;  
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_IDENTITYLINK') alter table ACT_RU_IDENTITYLINK drop constraint ACT_FK_TSKASS_TASK;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_IDENTITYLINK') alter table ACT_RU_IDENTITYLINK drop constraint ACT_FK_ATHRZ_PROCEDEF;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_TASK') alter table ACT_RU_TASK drop constraint ACT_FK_TASK_EXE;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_TASK') alter table ACT_RU_TASK drop constraint ACT_FK_TASK_PROCINST;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_TASK') alter table ACT_RU_TASK drop constraint ACT_FK_TASK_PROCDEF;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_VARIABLE') alter table ACT_RU_VARIABLE drop constraint ACT_FK_VAR_EXE;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_VARIABLE') alter table ACT_RU_VARIABLE drop constraint ACT_FK_VAR_PROCINST;    
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_VARIABLE') alter table ACT_RU_VARIABLE drop constraint ACT_FK_VAR_BYTEARRAY;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_JOB') alter table ACT_RU_JOB drop constraint ACT_FK_JOB_EXCEPTION;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EVENT_SUBSCR') alter table ACT_RU_EVENT_SUBSCR drop constraint ACT_FK_EVENT_EXEC;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_MODEL') alter table ACT_RE_MODEL drop constraint ACT_FK_MODEL_SOURCE;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_MODEL') alter table ACT_RE_MODEL drop constraint ACT_FK_MODEL_SOURCE_EXTRA;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_MODEL') alter table ACT_RE_MODEL drop constraint ACT_FK_MODEL_DEPLOYMENT;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_PROCDEF_INFO') alter table ACT_PROCDEF_INFO drop constraint ACT_FK_INFO_JSON_BA;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_PROCDEF_INFO') alter table ACT_PROCDEF_INFO drop constraint ACT_FK_INFO_PROCDEF;
+
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_ATHRZ_PROCEDEF') drop index ACT_RU_IDENTITYLINK.ACT_IDX_ATHRZ_PROCEDEF;
+    
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_GE_PROPERTY') drop table ACT_GE_PROPERTY;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_GE_BYTEARRAY') drop table ACT_GE_BYTEARRAY;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_PROCDEF') drop table ACT_RE_PROCDEF;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_DEPLOYMENT') drop table ACT_RE_DEPLOYMENT;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_MODEL') drop table ACT_RE_MODEL;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_IDENTITYLINK') drop table ACT_RU_IDENTITYLINK;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_TASK') drop table ACT_RU_TASK;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_VARIABLE') drop table ACT_RU_VARIABLE;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EXECUTION') drop table ACT_RU_EXECUTION;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EVENT_SUBSCR') drop table ACT_RU_EVENT_SUBSCR;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_JOB') drop table ACT_RU_JOB;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_EVT_LOG') drop table ACT_EVT_LOG;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_PROCDEF_INFO') drop table ACT_PROCDEF_INFO;

+ 25 - 0
jeecg-boot-module-activiti/db/drop/activiti.mssql.drop.history.sql

@@ -0,0 +1,25 @@
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_PRO_INST_END') drop index ACT_HI_PROCINST.ACT_IDX_HI_PRO_INST_END;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_PRO_I_BUSKEY') drop index ACT_HI_PROCINST.ACT_IDX_HI_PRO_I_BUSKEY;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_ACT_INST_START') drop index ACT_HI_ACTINST.ACT_IDX_HI_ACT_INST_START;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_ACT_INST_END') drop index ACT_HI_ACTINST.ACT_IDX_HI_ACT_INST_END;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_DETAIL_PROC_INST') drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_PROC_INST;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_DETAIL_ACT_INST') drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_ACT_INST;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_DETAIL_TIME') drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_TIME;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_DETAIL_NAME') drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_NAME;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_DETAIL_TASK_ID') drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_TASK_ID;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_PROCVAR_PROC_INST') drop index ACT_HI_VARINST.ACT_IDX_HI_PROCVAR_PROC_INST;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_PROCVAR_NAME_TYPE') drop index ACT_HI_VARINST.ACT_IDX_HI_PROCVAR_NAME_TYPE;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_ACT_INST_PROCINST') drop index ACT_HI_ACTINST.ACT_IDX_HI_ACT_INST_PROCINST;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_USER') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_USER;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_TASK') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_TASK;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_IDENT_LNK_PROCINST') drop index ACT_HI_IDENTITYLINK.ACT_IDX_HI_IDENT_LNK_PROCINST;
+IF EXISTS (SELECT name FROM sysindexes WHERE name = 'ACT_IDX_HI_TASK_INST_PROCINST') drop index ACT_HI_TASKINST.ACT_IDX_HI_TASK_INST_PROCINST;
+
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_PROCINST') drop table ACT_HI_PROCINST;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_ACTINST') drop table ACT_HI_ACTINST;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_VARINST') drop table ACT_HI_VARINST;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_TASKINST') drop table ACT_HI_TASKINST;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_DETAIL') drop table ACT_HI_DETAIL;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_COMMENT') drop table ACT_HI_COMMENT;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_ATTACHMENT') drop table ACT_HI_ATTACHMENT;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_IDENTITYLINK') drop table ACT_HI_IDENTITYLINK;

+ 7 - 0
jeecg-boot-module-activiti/db/drop/activiti.mssql.drop.identity.sql

@@ -0,0 +1,7 @@
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_MEMBERSHIP') alter table ACT_ID_MEMBERSHIP drop constraint ACT_FK_MEMB_GROUP;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_MEMBERSHIP') alter table ACT_ID_MEMBERSHIP drop constraint ACT_FK_MEMB_USER;
+    
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_INFO') drop table ACT_ID_INFO;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_MEMBERSHIP') drop table ACT_ID_MEMBERSHIP;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_GROUP') drop table ACT_ID_GROUP;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_USER') drop table ACT_ID_USER;

+ 83 - 0
jeecg-boot-module-activiti/db/drop/activiti.mysql.drop.engine.sql

@@ -0,0 +1,83 @@
+drop index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION;
+drop index ACT_IDX_TASK_CREATE on ACT_RU_TASK;
+drop index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK;
+drop index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK;
+drop index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE;
+drop index ACT_IDX_INFO_PROCDEF on ACT_PROCDEF_INFO;
+
+alter table ACT_GE_BYTEARRAY 
+    drop FOREIGN KEY ACT_FK_BYTEARR_DEPL;
+
+alter table ACT_RU_EXECUTION
+    drop FOREIGN KEY ACT_FK_EXE_PROCINST;
+
+alter table ACT_RU_EXECUTION 
+    drop FOREIGN KEY ACT_FK_EXE_PARENT;
+
+alter table ACT_RU_EXECUTION 
+    drop FOREIGN KEY ACT_FK_EXE_SUPER;
+    
+alter table ACT_RU_EXECUTION 
+    drop FOREIGN KEY ACT_FK_EXE_PROCDEF;
+
+alter table ACT_RU_IDENTITYLINK
+    drop FOREIGN KEY ACT_FK_TSKASS_TASK;
+
+alter table ACT_RU_IDENTITYLINK
+    drop FOREIGN KEY ACT_FK_ATHRZ_PROCEDEF;
+    
+alter table ACT_RU_TASK
+	drop FOREIGN KEY ACT_FK_TASK_EXE;
+
+alter table ACT_RU_TASK
+	drop FOREIGN KEY ACT_FK_TASK_PROCINST;
+	
+alter table ACT_RU_TASK
+	drop FOREIGN KEY ACT_FK_TASK_PROCDEF;
+    
+alter table ACT_RU_VARIABLE
+    drop FOREIGN KEY ACT_FK_VAR_EXE;
+    
+alter table ACT_RU_VARIABLE
+	drop FOREIGN KEY ACT_FK_VAR_PROCINST;    
+
+alter table ACT_RU_VARIABLE
+    drop FOREIGN KEY ACT_FK_VAR_BYTEARRAY;
+
+alter table ACT_RU_JOB
+    drop FOREIGN KEY ACT_FK_JOB_EXCEPTION;
+    
+alter table ACT_RU_EVENT_SUBSCR
+    drop FOREIGN KEY ACT_FK_EVENT_EXEC;
+
+alter table ACT_RE_MODEL 
+    drop FOREIGN KEY ACT_FK_MODEL_SOURCE;
+
+alter table ACT_RE_MODEL 
+    drop FOREIGN KEY ACT_FK_MODEL_SOURCE_EXTRA;
+    
+alter table ACT_RE_MODEL 
+    drop FOREIGN KEY ACT_FK_MODEL_DEPLOYMENT;    
+
+alter table ACT_PROCDEF_INFO 
+    drop FOREIGN KEY ACT_FK_INFO_JSON_BA;
+    
+alter table ACT_PROCDEF_INFO 
+    drop FOREIGN KEY ACT_FK_INFO_PROCDEF;
+    
+drop index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK;
+drop index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR;
+    
+drop table if exists ACT_GE_PROPERTY;
+drop table if exists ACT_RU_VARIABLE;
+drop table if exists ACT_GE_BYTEARRAY;
+drop table if exists ACT_RE_DEPLOYMENT;
+drop table if exists ACT_RE_MODEL;
+drop table if exists ACT_RU_IDENTITYLINK;
+drop table if exists ACT_RU_TASK;
+drop table if exists ACT_RE_PROCDEF;
+drop table if exists ACT_RU_EXECUTION;
+drop table if exists ACT_RU_JOB; 
+drop table if exists ACT_RU_EVENT_SUBSCR;
+drop table if exists ACT_EVT_LOG;
+drop table if exists ACT_PROCDEF_INFO;

+ 25 - 0
jeecg-boot-module-activiti/db/drop/activiti.mysql.drop.history.sql

@@ -0,0 +1,25 @@
+drop index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST;
+drop index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST;
+drop index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST;
+drop index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST;
+drop index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL;
+drop index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL;
+drop index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL;
+drop index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL;
+drop index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL;
+drop index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST;
+drop index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST;
+drop index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST;
+drop index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK;
+drop index ACT_IDX_HI_IDENT_LNK_TASK on ACT_HI_IDENTITYLINK;
+drop index ACT_IDX_HI_IDENT_LNK_PROCINST on ACT_HI_IDENTITYLINK;
+drop index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST;
+
+drop table if exists ACT_HI_PROCINST;
+drop table if exists ACT_HI_ACTINST;
+drop table if exists ACT_HI_VARINST;
+drop table if exists ACT_HI_TASKINST;
+drop table if exists ACT_HI_DETAIL;
+drop table if exists ACT_HI_COMMENT;
+drop table if exists ACT_HI_ATTACHMENT;
+drop table if exists ACT_HI_IDENTITYLINK;

+ 10 - 0
jeecg-boot-module-activiti/db/drop/activiti.mysql.drop.identity.sql

@@ -0,0 +1,10 @@
+alter table ACT_ID_MEMBERSHIP 
+    drop FOREIGN KEY ACT_FK_MEMB_GROUP;
+    
+alter table ACT_ID_MEMBERSHIP 
+    drop FOREIGN KEY ACT_FK_MEMB_USER;
+
+drop table if exists ACT_ID_INFO;
+drop table if exists ACT_ID_MEMBERSHIP;
+drop table if exists ACT_ID_GROUP;
+drop table if exists ACT_ID_USER;

+ 109 - 0
jeecg-boot-module-activiti/db/drop/activiti.oracle.drop.engine.sql

@@ -0,0 +1,109 @@
+drop index ACT_IDX_BYTEAR_DEPL;
+drop index ACT_IDX_EXE_PROCINST;
+drop index ACT_IDX_EXE_PARENT;
+drop index ACT_IDX_EXE_SUPER;
+drop index ACT_IDX_TSKASS_TASK;
+drop index ACT_IDX_TASK_EXEC;
+drop index ACT_IDX_TASK_PROCINST;
+drop index ACT_IDX_TASK_PROCDEF;
+drop index ACT_IDX_VAR_EXE;
+drop index ACT_IDX_VAR_PROCINST;
+drop index ACT_IDX_VAR_BYTEARRAY;
+drop index ACT_IDX_JOB_EXCEPTION;
+drop index ACT_IDX_MODEL_SOURCE;
+drop index ACT_IDX_MODEL_SOURCE_EXTRA;
+drop index ACT_IDX_MODEL_DEPLOYMENT;
+drop index ACT_IDX_PROCDEF_INFO_JSON;
+
+drop index ACT_IDX_EXEC_BUSKEY;
+drop index ACT_IDX_TASK_CREATE;
+drop index ACT_IDX_IDENT_LNK_USER;
+drop index ACT_IDX_IDENT_LNK_GROUP;
+drop index ACT_IDX_VARIABLE_TASK_ID;
+
+alter table ACT_GE_BYTEARRAY 
+    drop CONSTRAINT ACT_FK_BYTEARR_DEPL;
+
+alter table ACT_RU_EXECUTION
+    drop CONSTRAINT ACT_FK_EXE_PROCINST;
+
+alter table ACT_RU_EXECUTION 
+    drop CONSTRAINT ACT_FK_EXE_PARENT;
+
+alter table ACT_RU_EXECUTION 
+    drop CONSTRAINT ACT_FK_EXE_SUPER;
+	
+alter table ACT_RU_EXECUTION 
+    drop CONSTRAINT ACT_FK_EXE_PROCDEF;
+    
+alter table ACT_RU_IDENTITYLINK
+    drop CONSTRAINT ACT_FK_TSKASS_TASK;
+
+alter table ACT_RU_IDENTITYLINK
+    drop CONSTRAINT ACT_FK_ATHRZ_PROCEDEF;
+
+alter table ACT_RU_TASK
+	drop CONSTRAINT ACT_FK_TASK_EXE;
+
+alter table ACT_RU_TASK
+	drop CONSTRAINT ACT_FK_TASK_PROCINST;
+	
+alter table ACT_RU_TASK
+	drop CONSTRAINT ACT_FK_TASK_PROCDEF;
+    
+alter table ACT_RU_VARIABLE
+    drop CONSTRAINT ACT_FK_VAR_EXE;
+    
+alter table ACT_RU_VARIABLE
+	drop CONSTRAINT ACT_FK_VAR_PROCINST;
+
+alter table ACT_RU_VARIABLE
+    drop CONSTRAINT ACT_FK_VAR_BYTEARRAY;
+
+alter table ACT_RU_JOB
+    drop CONSTRAINT ACT_FK_JOB_EXCEPTION;
+    
+alter table ACT_RU_EVENT_SUBSCR
+    drop CONSTRAINT ACT_FK_EVENT_EXEC;
+
+alter table ACT_RE_PROCDEF
+    drop CONSTRAINT ACT_UNIQ_PROCDEF;
+
+alter table ACT_RE_MODEL
+    drop CONSTRAINT ACT_FK_MODEL_SOURCE;
+
+alter table ACT_RE_MODEL
+    drop CONSTRAINT ACT_FK_MODEL_SOURCE_EXTRA;
+    
+alter table ACT_RE_MODEL
+    drop CONSTRAINT ACT_FK_MODEL_DEPLOYMENT;
+    
+alter table ACT_PROCDEF_INFO
+    drop CONSTRAINT ACT_UNIQ_INFO_PROCDEF;
+    
+alter table ACT_PROCDEF_INFO
+    drop CONSTRAINT ACT_FK_INFO_JSON_BA;
+    
+alter table ACT_PROCDEF_INFO
+    drop CONSTRAINT ACT_FK_INFO_PROCDEF;    
+    
+drop index ACT_IDX_EVENT_SUBSCR_CONFIG_;
+drop index ACT_IDX_EVENT_SUBSCR;
+drop index ACT_IDX_ATHRZ_PROCEDEF;
+drop index ACT_IDX_PROCDEF_INFO_PROC;
+
+drop table  ACT_GE_PROPERTY;
+drop table  ACT_GE_BYTEARRAY;
+drop table  ACT_RE_DEPLOYMENT;
+drop table  ACT_RE_MODEL;
+drop table  ACT_RE_PROCDEF;
+drop table  ACT_RU_IDENTITYLINK;
+drop table  ACT_RU_VARIABLE;
+drop table  ACT_RU_TASK;
+drop table  ACT_RU_EXECUTION;
+drop table  ACT_RU_JOB;
+drop table  ACT_RU_EVENT_SUBSCR;
+
+drop sequence act_evt_log_seq;
+drop table ACT_EVT_LOG;
+drop table ACT_PROCDEF_INFO;

+ 25 - 0
jeecg-boot-module-activiti/db/drop/activiti.oracle.drop.history.sql

@@ -0,0 +1,25 @@
+drop index ACT_IDX_HI_PRO_INST_END;
+drop index ACT_IDX_HI_PRO_I_BUSKEY;
+drop index ACT_IDX_HI_ACT_INST_START;
+drop index ACT_IDX_HI_ACT_INST_END;
+drop index ACT_IDX_HI_DETAIL_PROC_INST;
+drop index ACT_IDX_HI_DETAIL_ACT_INST;
+drop index ACT_IDX_HI_DETAIL_TIME;
+drop index ACT_IDX_HI_DETAIL_NAME;
+drop index ACT_IDX_HI_DETAIL_TASK_ID;
+drop index ACT_IDX_HI_PROCVAR_PROC_INST;
+drop index ACT_IDX_HI_PROCVAR_NAME_TYPE;
+drop index ACT_IDX_HI_ACT_INST_PROCINST;
+drop index ACT_IDX_HI_IDENT_LNK_USER;
+drop index ACT_IDX_HI_IDENT_LNK_TASK;
+drop index ACT_IDX_HI_IDENT_LNK_PROCINST;
+drop index ACT_IDX_HI_TASK_INST_PROCINST;
+
+drop table ACT_HI_PROCINST;
+drop table ACT_HI_ACTINST;
+drop table ACT_HI_VARINST;
+drop table ACT_HI_TASKINST;
+drop table ACT_HI_DETAIL;
+drop table ACT_HI_COMMENT;
+drop table ACT_HI_ATTACHMENT;
+drop table ACT_HI_IDENTITYLINK;

+ 13 - 0
jeecg-boot-module-activiti/db/drop/activiti.oracle.drop.identity.sql

@@ -0,0 +1,13 @@
+alter table ACT_ID_MEMBERSHIP 
+    drop CONSTRAINT ACT_FK_MEMB_GROUP;
+    
+alter table ACT_ID_MEMBERSHIP 
+    drop CONSTRAINT ACT_FK_MEMB_USER;
+
+drop index ACT_IDX_MEMB_GROUP;
+drop index ACT_IDX_MEMB_USER;
+
+drop table  ACT_ID_INFO;
+drop table  ACT_ID_MEMBERSHIP;
+drop table  ACT_ID_GROUP;
+drop table  ACT_ID_USER;

+ 13 - 0
jeecg-boot-module-activiti/db/drop/activiti.postgres.drop.engine.sql

@@ -0,0 +1,13 @@
+drop table if exists ACT_GE_PROPERTY cascade;
+drop table if exists ACT_GE_BYTEARRAY cascade;
+drop table if exists ACT_RE_DEPLOYMENT cascade;
+drop table if exists ACT_RE_MODEL cascade;
+drop table if exists ACT_RE_PROCDEF cascade;
+drop table if exists ACT_RU_EXECUTION cascade;
+drop table if exists ACT_RU_JOB cascade;
+drop table if exists ACT_RU_TASK cascade;
+drop table if exists ACT_RU_IDENTITYLINK cascade;
+drop table if exists ACT_RU_VARIABLE cascade;
+drop table if exists ACT_RU_EVENT_SUBSCR cascade;
+drop table if exists ACT_EVT_LOG cascade;
+drop table if exists ACT_PROCDEF_INFO cascade;

+ 8 - 0
jeecg-boot-module-activiti/db/drop/activiti.postgres.drop.history.sql

@@ -0,0 +1,8 @@
+drop table if exists ACT_HI_PROCINST cascade;
+drop table if exists ACT_HI_ACTINST cascade;
+drop table if exists ACT_HI_VARINST cascade;
+drop table if exists ACT_HI_TASKINST cascade;
+drop table if exists ACT_HI_DETAIL cascade;
+drop table if exists ACT_HI_COMMENT cascade;
+drop table if exists ACT_HI_ATTACHMENT cascade;
+drop table if exists ACT_HI_IDENTITYLINK cascade;

+ 4 - 0
jeecg-boot-module-activiti/db/drop/activiti.postgres.drop.identity.sql

@@ -0,0 +1,4 @@
+drop table if exists ACT_ID_INFO cascade;
+drop table if exists ACT_ID_GROUP cascade;
+drop table if exists ACT_ID_MEMBERSHIP cascade;
+drop table if exists ACT_ID_USER cascade;

+ 81 - 0
jeecg-boot-module-activiti/db/update.sql

@@ -0,0 +1,81 @@
+/*扩展表*/
+-- 流程定义扩展表
+-- auto-generated definition
+create table act_z_process
+(
+    id             varchar(255) not null
+        primary key,
+    create_by      varchar(255) null,
+    create_time    datetime     null,
+    del_flag       int          null,
+    update_by      varchar(255) null,
+    update_time    datetime     null,
+    category_id    varchar(255) null comment '所属分类',
+    deployment_id  varchar(255) null comment '部署id',
+    description    varchar(255) null comment '描述/备注',
+    diagram_name   varchar(255) null comment '流程图片名',
+    latest         bit          null comment '最新版本',
+    name           varchar(255) null comment '流程名称',
+    process_key    varchar(255) null comment '流程标识名称',
+    status         int          null comment '流程状态 部署后默认1激活',
+    version        int          null comment '版本',
+    business_table varchar(255) null comment '关联业务表名',
+    route_name     varchar(255) null comment '关联前端表单路由名',
+    roles          varchar(225) null comment '授权的角色'
+)
+    CHARSET=utf8 comment '流程定义扩展表';
+create table act_z_business
+(
+    id           varchar(255)  not null
+        primary key,
+    create_by    varchar(255)  null,
+    create_time  datetime      null,
+    del_flag     int           null,
+    update_by    varchar(255)  null,
+    update_time  datetime      null,
+    proc_def_id  varchar(255)  null comment '流程定义id',
+    proc_inst_id varchar(255)  null comment '流程实例id',
+    result       int default 0 null comment '结果状态 0未提交默认 1处理中 2通过 3驳回',
+    status       int default 0 null comment '状态 0草稿默认 1处理中 2结束',
+    table_id     varchar(255)  null comment '关联表id',
+    title        varchar(255)  null comment '申请标题',
+    user_id      varchar(255)  null comment '创建用户id',
+    apply_time   datetime      null comment '提交申请时间',
+    is_history   bit           null comment '历史标记',
+    table_name   varchar(255)  null comment '数据表名'
+) CHARSET=utf8 comment '流程业务扩展表';
+create table act_z_node
+(
+    id          varchar(255) not null
+        primary key,
+    create_by   varchar(255) null,
+    create_time datetime     null,
+    del_flag    int          null,
+    update_by   varchar(255) null,
+    update_time datetime     null,
+    node_id     varchar(255) null comment '节点id',
+    type        varchar(255) null comment '节点关联类型 0角色 1用户 2部门',
+    relate_id   varchar(255) null comment '关联其他表id'
+) CHARSET=utf8 comment '流程节点扩展表';
+
+
+
+
+
+/*菜单  添加完菜单后需配置菜单权限*/
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('1238331160370012162', null, '工作流', '/activiti', 'layouts/RouteView', null, null, 0, null, '1', 1.1, 0, 'cluster', 1, 0, 0, 0, null, 'admin', '2020-03-13 13:08:50', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958913', '1238331160370012162', '流程模型', '/activiti/ModelList', 'activiti/ModelList', null, null, 1, null, '1', 2, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958914', '1238331160370012162', '已发布模型', '/activiti/ProcessModelList', 'activiti/ProcessModelList', null, null, 1, null, '1', 3, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958915', '1238331160370012162', '我的申请', '/activiti/applyList', 'activiti/applyList', null, null, 1, null, '1', 4, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958916', '1238331160370012162', '我的待办', '/activiti/todoManage', 'activiti/todoManage', null, null, 1, null, '1', 5, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958917', '1238331160370012162', '我的已办', '/activiti/doneManage', 'activiti/doneManage', null, null, 1, null, '1', 6, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958918', '1238331160370012162', '进行中的流程', '/activiti/processInsManage', 'activiti/processInsManage', null, null, 1, null, '1', 7, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);
+INSERT INTO sys_permission (id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+ VALUES ('1238331682929958919', '1238331160370012162', '已结束流程', '/activiti/processFinishManage', 'activiti/processFinishManage', null, null, 1, null, '1', 8, 0, 'bars', 1, 1, 0, 0, null, 'admin', '2020-03-13 13:10:55', null, null, 0, 0, '1', 0);

+ 55 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.510.to.511.engine.sql

@@ -0,0 +1,55 @@
+alter table ACT_RE_DEPLOYMENT 
+    add CATEGORY_ varchar(255);
+    
+alter table ACT_RE_PROCDEF
+    add DESCRIPTION_ varchar(4000);
+
+alter table ACT_RU_TASK
+    add SUSPENSION_STATE_ integer;
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_TASK');
+
+update ACT_RU_TASK set SUSPENSION_STATE_ = 1; 
+
+alter table ACT_RU_EXECUTION
+    add constraint ACT_FK_EXE_PROCDEF 
+    foreign key (PROC_DEF_ID_) 
+    references ACT_RE_PROCDEF (ID_);
+
+create table ACT_RE_MODEL (
+    ID_ varchar(64) not null,
+    REV_ integer,
+    NAME_ varchar(255),
+    KEY_ varchar(255),
+    CATEGORY_ varchar(255),
+    CREATE_TIME_ timestamp,
+    LAST_UPDATE_TIME_ timestamp,
+    VERSION_ integer,
+    META_INFO_ varchar(4000),
+    DEPLOYMENT_ID_ varchar(64),
+    EDITOR_SOURCE_VALUE_ID_ varchar(64),
+    EDITOR_SOURCE_EXTRA_VALUE_ID_ varchar(64),
+    primary key (ID_)
+);
+
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_SOURCE 
+    foreign key (EDITOR_SOURCE_VALUE_ID_) 
+    references ACT_GE_BYTEARRAY (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_);
+    
+alter table ACT_RE_MODEL 
+    add constraint ACT_FK_MODEL_DEPLOYMENT 
+    foreign key (DEPLOYMENT_ID_) 
+    references ACT_RE_DEPLOYMENT (ID_);    
+
+delete from ACT_GE_PROPERTY where NAME_ = 'historyLevel';
+
+alter table ACT_RU_JOB
+    add PROC_DEF_ID_ varchar(64);
+
+update ACT_GE_PROPERTY set VALUE_ = '5.11' where NAME_ = 'schema.version';

+ 36 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.510.to.511.history.sql

@@ -0,0 +1,36 @@
+create table ACT_HI_VARINST (
+    ID_ varchar(64) not null,
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    NAME_ varchar(255) not null,
+    VAR_TYPE_ varchar(100),
+    REV_ integer,
+    BYTEARRAY_ID_ varchar(64),
+    DOUBLE_ double precision,
+    LONG_ bigint,
+    TEXT_ varchar(4000),
+    TEXT2_ varchar(4000),
+    primary key (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_);
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_VARINST');
+
+alter table ACT_HI_ACTINST
+	add TASK_ID_ varchar(64);
+	
+alter table ACT_HI_ACTINST
+	add CALL_PROC_INST_ID_ varchar(64);
+
+alter table ACT_HI_DETAIL
+	alter column PROC_INST_ID_ DROP NOT NULL;
+
+alter table ACT_HI_DETAIL
+	alter column EXECUTION_ID_ DROP NOT NULL;
+	
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_DETAIL');
+
+create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_);

+ 20 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.511.to.512.history.sql

@@ -0,0 +1,20 @@
+alter table ACT_HI_TASKINST
+	add CLAIM_TIME_ timestamp;
+
+alter table ACT_HI_TASKINST
+  add FORM_KEY_ varchar(255);
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_TASKINST');
+
+alter table ACT_RU_IDENTITYLINK
+  add PROC_INST_ID_ varchar(64);
+
+alter table ACT_RU_IDENTITYLINK
+    add constraint ACT_FK_IDL_PROCINST
+    foreign key (PROC_INST_ID_) 
+    references ACT_RU_EXECUTION (ID_); 
+    
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_IDENTITYLINK');    
+
+create index ACT_IDX_HI_ACT_INST_EXEC on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_);

+ 13 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.512.to.513.history.sql

@@ -0,0 +1,13 @@
+create table ACT_HI_IDENTITYLINK (
+    ID_ varchar(64) not null,
+    GROUP_ID_ varchar(255),
+    TYPE_ varchar(255),
+    USER_ID_ varchar(255),
+    TASK_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    primary key (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_);

+ 62 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.514.to.515.engine.sql

@@ -0,0 +1,62 @@
+alter table ACT_RU_TASK 
+    add CATEGORY_ varchar(255);
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_TASK');
+        
+drop index ACT_UNIQ_RU_BUS_KEY;
+
+-- DB2 *cannot* drop columns. Yes, this is 2013.
+-- This means that for DB2 the columns will remain as they are (they won't be used)
+-- alter table ACT_RU_EXECUTION drop colum UNI_BUSINESS_KEY;
+-- alter table ACT_RU_EXECUTION drop colum UNI_PROC_DEF_ID;
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_EXECUTION');
+
+alter table ACT_RE_DEPLOYMENT 
+    add TENANT_ID_ varchar(255) default '';
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RE_DEPLOYMENT');
+
+alter table ACT_RE_PROCDEF 
+    add TENANT_ID_ varchar(255) not null default '';
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RE_PROCDEF');
+
+alter table ACT_RU_EXECUTION
+    add TENANT_ID_ varchar(255) default '';
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_EXECUTION');  
+
+alter table ACT_RU_TASK
+    add TENANT_ID_ varchar(255) default '';
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_TASK');   
+
+alter table ACT_RU_JOB
+    add TENANT_ID_ varchar(255) default '';
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_JOB');  
+
+alter table ACT_RE_MODEL
+    add TENANT_ID_ varchar(255) default '';
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RE_MODEL');  
+
+alter table ACT_RU_EVENT_SUBSCR
+   add TENANT_ID_ varchar(255) default '';  
+   
+alter table ACT_RU_EVENT_SUBSCR
+   add PROC_DEF_ID_ varchar(64);      
+   
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_EVENT_SUBSCR');     
+
+alter table ACT_RE_PROCDEF
+    drop unique ACT_UNIQ_PROCDEF;
+    
+alter table ACT_RE_PROCDEF
+    add constraint ACT_UNIQ_PROCDEF
+    unique (KEY_,VERSION_, TENANT_ID_);  
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RE_PROCDEF');
+
+update ACT_GE_PROPERTY set VALUE_ = '5.15' where NAME_ = 'schema.version';

+ 38 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.514.to.515.history.sql

@@ -0,0 +1,38 @@
+alter table ACT_HI_TASKINST
+    add CATEGORY_ varchar(255);
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_TASKINST');    
+    
+drop index ACT_UNIQ_HI_BUS_KEY;
+
+alter table ACT_HI_VARINST
+    add CREATE_TIME_ timestamp; 
+    
+alter table ACT_HI_VARINST
+    add LAST_UPDATED_TIME_ timestamp; 
+
+-- DB2 *cannot* drop columns. Yes, this is 2013.
+-- This means that for DB2 the columns will remain as they are (they won't be used)
+-- alter table ACT_HI_PROCINST drop colum UNI_BUSINESS_KEY;
+-- alter table ACT_HI_PROCINST drop colum UNI_PROC_DEF_ID;
+-- Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_PROCINST'); 
+
+
+alter table ACT_HI_PROCINST
+    add TENANT_ID_ varchar(255) default ''; 
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_PROCINST');
+       
+alter table ACT_HI_ACTINST
+    add TENANT_ID_ varchar(255) default ''; 
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_ACTINST');    
+    
+alter table ACT_HI_TASKINST
+    add TENANT_ID_ varchar(255) default '';  
+    
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_TASKINST');      
+
+alter table ACT_HI_ACTINST alter column ASSIGNEE_ SET DATA TYPE varchar(255);
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_ACTINST');

+ 2 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.515.to.5151.engine.sql

@@ -0,0 +1,2 @@
+
+update ACT_GE_PROPERTY set VALUE_ = '5.15.1' where NAME_ = 'schema.version';

+ 28 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.5151.to.516.engine.sql

@@ -0,0 +1,28 @@
+alter table ACT_RU_TASK
+	add FORM_KEY_ varchar(255);
+	
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_TASK');
+	
+alter table ACT_RU_EXECUTION
+	add NAME_ varchar(255);
+
+Call Sysproc.admin_cmd ('REORG TABLE ACT_RU_EXECUTION');
+	
+create table ACT_EVT_LOG (
+    LOG_NR_ bigint not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
+    TYPE_ varchar(64),
+    PROC_DEF_ID_ varchar(64),
+    PROC_INST_ID_ varchar(64),
+    EXECUTION_ID_ varchar(64),
+    TASK_ID_ varchar(64),
+    TIME_STAMP_ timestamp not null,
+    USER_ID_ varchar(255),
+    DATA_ BLOB,
+    LOCK_OWNER_ varchar(255),
+    LOCK_TIME_ timestamp,
+    IS_PROCESSED_ integer default 0,
+    primary key (LOG_NR_)
+);
+    	
+	
+update ACT_GE_PROPERTY set VALUE_ = '5.16' where NAME_ = 'schema.version';

+ 4 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.5151.to.516.history.sql

@@ -0,0 +1,4 @@
+alter table ACT_HI_PROCINST
+	add NAME_ varchar(255);
+	
+Call Sysproc.admin_cmd ('REORG TABLE ACT_HI_PROCINST');

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.516.to.5161.engine.sql

@@ -0,0 +1 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.16.1' where NAME_ = 'schema.version';

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.5161.to.5162.engine.sql

@@ -0,0 +1 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.16.2' where NAME_ = 'schema.version';

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51630.to.51640.engine.sql

@@ -0,0 +1 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.16.4.0' where NAME_ = 'schema.version';

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51630.to.51640.history.sql

@@ -0,0 +1 @@
+create index ACT_IDX_HI_PROCVAR_TASK_ID on ACT_HI_VARINST(TASK_ID_);

+ 3 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51640.to.51700.engine.sql

@@ -0,0 +1,3 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.17.0.0' where NAME_ = 'schema.version';
+
+alter table ACT_RE_PROCDEF add HAS_GRAPHICAL_NOTATION_ smallint check(HAS_GRAPHICAL_NOTATION_ in (1,0));

+ 3 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51700.to.51701.engine.sql

@@ -0,0 +1,3 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.17.0.1' where NAME_ = 'schema.version';
+
+alter table ACT_RU_EXECUTION add LOCK_TIME_ timestamp;

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51701.to.51702.engine.sql

@@ -0,0 +1 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.17.0.2' where NAME_ = 'schema.version';

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51701.to.51702.history.sql

@@ -0,0 +1 @@
+alter table ACT_HI_ATTACHMENT add TIME_ timestamp;

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51702.to.51800.engine.sql

@@ -0,0 +1 @@
+update ACT_GE_PROPERTY set VALUE_ = '5.18.0.0' where NAME_ = 'schema.version';

+ 1 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51702.to.51800.history.sql

@@ -0,0 +1 @@
+create index ACT_IDX_HI_TASK_INST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);

+ 0 - 0
jeecg-boot-module-activiti/db/upgrade/activiti.db2.upgradestep.51800.to.51801.engine.sql


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini