Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
a4d70f5a
F
Flowable Engine
项目概览
开发团队
/
Flowable Engine
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Flowable Engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4d70f5a
编写于
6月 08, 2013
作者:
T
tijsrademakers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactored mssql and db2 query
上级
52195df8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
40 addition
and
13 deletion
+40
-13
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java
...iviti/engine/impl/cfg/ProcessEngineConfigurationImpl.java
+1
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSessionFactory.java
...java/org/activiti/engine/impl/db/DbSqlSessionFactory.java
+12
-4
modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml
...rc/main/resources/org/activiti/db/mapping/entity/Task.xml
+27
-9
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java
浏览文件 @
a4d70f5a
...
...
@@ -647,6 +647,7 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig
properties
.
put
(
"limitBefore"
,
DbSqlSessionFactory
.
databaseSpecificLimitBeforeStatements
.
get
(
databaseType
));
properties
.
put
(
"limitAfter"
,
DbSqlSessionFactory
.
databaseSpecificLimitAfterStatements
.
get
(
databaseType
));
properties
.
put
(
"limitBetween"
,
DbSqlSessionFactory
.
databaseSpecificLimitBetweenStatements
.
get
(
databaseType
));
properties
.
put
(
"limitOuterJoinBetween"
,
DbSqlSessionFactory
.
databaseOuterJoinLimitBetweenStatements
.
get
(
databaseType
));
properties
.
put
(
"orderBy"
,
DbSqlSessionFactory
.
databaseSpecificOrderByStatements
.
get
(
databaseType
));
properties
.
put
(
"limitBeforeNativeQuery"
,
ObjectUtils
.
toString
(
DbSqlSessionFactory
.
databaseSpecificLimitBeforeNativeQueryStatements
.
get
(
databaseType
)));
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSessionFactory.java
浏览文件 @
a4d70f5a
...
...
@@ -34,6 +34,7 @@ public class DbSqlSessionFactory implements SessionFactory {
public
static
final
Map
<
String
,
String
>
databaseSpecificLimitAfterStatements
=
new
HashMap
<
String
,
String
>();
public
static
final
Map
<
String
,
String
>
databaseSpecificLimitBetweenStatements
=
new
HashMap
<
String
,
String
>();
public
static
final
Map
<
String
,
String
>
databaseSpecificOrderByStatements
=
new
HashMap
<
String
,
String
>();
public
static
final
Map
<
String
,
String
>
databaseOuterJoinLimitBetweenStatements
=
new
HashMap
<
String
,
String
>();
public
static
final
Map
<
String
,
String
>
databaseSpecificLimitBeforeNativeQueryStatements
=
new
HashMap
<
String
,
String
>();
static
{
...
...
@@ -44,12 +45,14 @@ public class DbSqlSessionFactory implements SessionFactory {
databaseSpecificLimitBeforeStatements
.
put
(
"h2"
,
""
);
databaseSpecificLimitAfterStatements
.
put
(
"h2"
,
"LIMIT #{maxResults} OFFSET #{firstResult}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"h2"
,
""
);
databaseOuterJoinLimitBetweenStatements
.
put
(
"h2"
,
""
);
databaseSpecificOrderByStatements
.
put
(
"h2"
,
defaultOrderBy
);
//mysql specific
databaseSpecificLimitBeforeStatements
.
put
(
"mysql"
,
""
);
databaseSpecificLimitAfterStatements
.
put
(
"mysql"
,
"LIMIT #{maxResults} OFFSET #{firstResult}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"mysql"
,
""
);
databaseOuterJoinLimitBetweenStatements
.
put
(
"mysql"
,
""
);
databaseSpecificOrderByStatements
.
put
(
"mysql"
,
defaultOrderBy
);
addDatabaseSpecificStatement
(
"mysql"
,
"selectNextJobsToExecute"
,
"selectNextJobsToExecute_mysql"
);
addDatabaseSpecificStatement
(
"mysql"
,
"selectExclusiveJobsToExecute"
,
"selectExclusiveJobsToExecute_mysql"
);
...
...
@@ -63,6 +66,7 @@ public class DbSqlSessionFactory implements SessionFactory {
databaseSpecificLimitBeforeStatements
.
put
(
"postgres"
,
""
);
databaseSpecificLimitAfterStatements
.
put
(
"postgres"
,
"LIMIT #{maxResults} OFFSET #{firstResult}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"postgres"
,
""
);
databaseOuterJoinLimitBetweenStatements
.
put
(
"postgres"
,
""
);
databaseSpecificOrderByStatements
.
put
(
"postgres"
,
defaultOrderBy
);
addDatabaseSpecificStatement
(
"postgres"
,
"insertByteArray"
,
"insertByteArray_postgres"
);
addDatabaseSpecificStatement
(
"postgres"
,
"updateByteArray"
,
"updateByteArray_postgres"
);
...
...
@@ -84,6 +88,7 @@ public class DbSqlSessionFactory implements SessionFactory {
databaseSpecificLimitBeforeStatements
.
put
(
"oracle"
,
"select * from ( select a.*, ROWNUM rnum from ("
);
databaseSpecificLimitAfterStatements
.
put
(
"oracle"
,
" ) a where ROWNUM < #{lastRow}) where rnum >= #{firstRow}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"oracle"
,
""
);
databaseOuterJoinLimitBetweenStatements
.
put
(
"oracle"
,
""
);
databaseSpecificOrderByStatements
.
put
(
"oracle"
,
defaultOrderBy
);
addDatabaseSpecificStatement
(
"oracle"
,
"selectExclusiveJobsToExecute"
,
"selectExclusiveJobsToExecute_integerBoolean"
);
...
...
@@ -91,6 +96,7 @@ public class DbSqlSessionFactory implements SessionFactory {
databaseSpecificLimitBeforeStatements
.
put
(
"db2"
,
"SELECT SUB.* FROM ("
);
databaseSpecificLimitAfterStatements
.
put
(
"db2"
,
")RES ) SUB WHERE SUB.rnk >= #{firstRow} AND SUB.rnk < #{lastRow}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"db2"
,
", row_number() over (ORDER BY ${orderBy}) rnk FROM ( select distinct RES.* "
);
databaseOuterJoinLimitBetweenStatements
.
put
(
"db2"
,
", row_number() over (ORDER BY ${orderBy}) rnk FROM ( select distinct "
);
databaseSpecificOrderByStatements
.
put
(
"db2"
,
""
);
databaseSpecificLimitBeforeNativeQueryStatements
.
put
(
"db2"
,
"SELECT SUB.* FROM ( select RES.* , row_number() over (ORDER BY ${orderBy}) rnk FROM ("
);
addDatabaseSpecificStatement
(
"db2"
,
"selectExclusiveJobsToExecute"
,
"selectExclusiveJobsToExecute_integerBoolean"
);
...
...
@@ -106,11 +112,13 @@ public class DbSqlSessionFactory implements SessionFactory {
addDatabaseSpecificStatement
(
"db2"
,
"selectModelByNativeQuery"
,
"selectModelByNativeQuery_mssql_or_db2"
);
addDatabaseSpecificStatement
(
"db2"
,
"selectHistoricDetailByNativeQuery"
,
"selectHistoricDetailByNativeQuery_mssql_or_db2"
);
addDatabaseSpecificStatement
(
"db2"
,
"selectHistoricVariableInstanceByNativeQuery"
,
"selectHistoricVariableInstanceByNativeQuery_mssql_or_db2"
);
addDatabaseSpecificStatement
(
"db2"
,
"selectTaskWithVariablesByQueryCriteria"
,
"selectTaskWithVariablesByQueryCriteria_mssql_or_db2"
);
// mssql
databaseSpecificLimitBeforeStatements
.
put
(
"mssql"
,
"SELECT DISTINCT SUB.* FROM ("
);
databaseSpecificLimitAfterStatements
.
put
(
"mssql"
,
") as SUB WHERE rnk >= #{firstRow} AND rnk < #{lastRow}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"mssql"
,
", row_number() over (ORDER BY ${orderBy}) as rnk "
);
databaseSpecificLimitBeforeStatements
.
put
(
"mssql"
,
"SELECT SUB.* FROM ("
);
databaseSpecificLimitAfterStatements
.
put
(
"mssql"
,
")RES ) SUB WHERE SUB.rnk >= #{firstRow} AND SUB.rnk < #{lastRow}"
);
databaseSpecificLimitBetweenStatements
.
put
(
"mssql"
,
", row_number() over (ORDER BY ${orderBy}) rnk FROM ( select distinct RES.* "
);
databaseOuterJoinLimitBetweenStatements
.
put
(
"mssql"
,
", row_number() over (ORDER BY ${orderBy}) rnk FROM ( select distinct "
);
databaseSpecificOrderByStatements
.
put
(
"mssql"
,
""
);
databaseSpecificLimitBeforeNativeQueryStatements
.
put
(
"mssql"
,
"SELECT SUB.* FROM ( select RES.* , row_number() over (ORDER BY ${orderBy}) rnk FROM ("
);
addDatabaseSpecificStatement
(
"mssql"
,
"selectExclusiveJobsToExecute"
,
"selectExclusiveJobsToExecute_integerBoolean"
);
...
...
@@ -126,7 +134,7 @@ public class DbSqlSessionFactory implements SessionFactory {
addDatabaseSpecificStatement
(
"mssql"
,
"selectModelByNativeQuery"
,
"selectModelByNativeQuery_mssql_or_db2"
);
addDatabaseSpecificStatement
(
"mssql"
,
"selectHistoricDetailByNativeQuery"
,
"selectHistoricDetailByNativeQuery_mssql_or_db2"
);
addDatabaseSpecificStatement
(
"mssql"
,
"selectHistoricVariableInstanceByNativeQuery"
,
"selectHistoricVariableInstanceByNativeQuery_mssql_or_db2"
);
//addDatabaseSpecificStatement("mssql", "selectTaskWithVariablesByQueryCriteria", "selectTaskWithVariablesByQueryCriteriaMSSQL
");
addDatabaseSpecificStatement
(
"mssql"
,
"selectTaskWithVariablesByQueryCriteria"
,
"selectTaskWithVariablesByQueryCriteria_mssql_or_db2
"
);
}
protected
String
databaseType
;
...
...
modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml
浏览文件 @
a4d70f5a
...
...
@@ -152,7 +152,6 @@
</sql>
<select
id=
"selectTaskWithVariablesByQueryCriteria"
parameterType=
"org.activiti.engine.impl.TaskQueryImpl"
resultMap=
"taskAndVariablesResultMap"
>
${limitBefore}
select distinct RES.*,
VAR.ID_ as VAR_ID_, VAR.NAME_ as VAR_NAME_, VAR.TYPE_ as VAR_TYPE_, VAR.REV_ as VAR_REV_,
VAR.PROC_INST_ID_ as VAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as VAR_EXECUTION_ID_, VAR.TASK_ID_ as VAR_TASK_ID_,
...
...
@@ -164,15 +163,34 @@
${limitAfter}
</select>
<select
id=
"selectTaskWithVariablesByQueryCriteriaMSSQL"
parameterType=
"org.activiti.engine.impl.TaskQueryImpl"
resultMap=
"taskAndVariablesResultMap"
>
SELECT * FROM (
select RES.*, VAR.ID_ as VAR_ID_, VAR.NAME_ as VAR_NAME_, VAR.TYPE_ as VAR_TYPE_, VAR.REV_ as VAR_REV_,
VAR.PROC_INST_ID_ as VAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as VAR_EXECUTION_ID_, VAR.TASK_ID_ as VAR_TASK_ID_,
VAR.BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, VAR.DOUBLE_ as VAR_DOUBLE_,
VAR.TEXT_ as VAR_TEXT_, VAR.TEXT2_ as VAR_TEXT2_, VAR.LONG_ as VAR_LONG_,
row_number() over (ORDER BY ${orderBy}) as rnk
<select
id=
"selectTaskWithVariablesByQueryCriteria_mssql_or_db2"
parameterType=
"org.activiti.engine.impl.TaskQueryImpl"
resultMap=
"taskAndVariablesResultMap"
>
${limitBefore}
select distinct TEMPRES_ID_ as ID_, TEMPRES_REV_ as REV_, TEMPRES_NAME_ as NAME_,
TEMPRES_PARENT_TASK_ID_ as PARENT_TASK_ID_, TEMPRES_DESCRIPTION_ as DESCRIPTION_,
TEMPRES_PRIORITY_ as PRIORITY_, TEMPRES_CREATE_TIME_ as CREATE_TIME_,
TEMPRES_OWNER_ as OWNER_, TEMPRES_ASSIGNEE_ as ASSIGNEE_, TEMPRES_DELEGATION_ as DELEGATION_,
TEMPRES_EXECUTION_ID_ as EXECUTION_ID_, TEMPRES_PROC_INST_ID_ as PROC_INST_ID_,
TEMPRES_PROC_DEF_ID_ as PROC_DEF_ID_, TEMPRES_TASK_DEF_KEY_ as TASK_DEF_KEY_,
TEMPRES_DUE_DATE_ as DUE_DATE_, TEMPRES_SUSPENSION_STATE_ as SUSPENSION_STATE_,
TEMPVAR_ID_ as VAR_ID_, TEMPVAR_NAME_ as VAR_NAME_, TEMPVAR_TYPE_ as VAR_TYPE_, TEMPVAR_REV_ as VAR_REV_,
TEMPVAR_PROC_INST_ID_ as VAR_PROC_INST_ID_, TEMPVAR_EXECUTION_ID_ as VAR_EXECUTION_ID_, TEMPVAR_TASK_ID_ as VAR_TASK_ID_,
TEMPVAR_BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, TEMPVAR_DOUBLE_ as VAR_DOUBLE_,
TEMPVAR_TEXT_ as VAR_TEXT_, TEMPVAR_TEXT2_ as VAR_TEXT2_, TEMPVAR_LONG_ as VAR_LONG_
${limitOuterJoinBetween}
RES.ID_ as TEMPRES_ID_, RES.REV_ as TEMPRES_REV_, RES.NAME_ as TEMPRES_NAME_,
RES.PARENT_TASK_ID_ as TEMPRES_PARENT_TASK_ID_, RES.DESCRIPTION_ as TEMPRES_DESCRIPTION_,
RES.PRIORITY_ as TEMPRES_PRIORITY_, RES.CREATE_TIME_ as TEMPRES_CREATE_TIME_,
RES.OWNER_ as TEMPRES_OWNER_, RES.ASSIGNEE_ as TEMPRES_ASSIGNEE_, RES.DELEGATION_ as TEMPRES_DELEGATION_,
RES.EXECUTION_ID_ as TEMPRES_EXECUTION_ID_, RES.PROC_INST_ID_ as TEMPRES_PROC_INST_ID_,
RES.PROC_DEF_ID_ as TEMPRES_PROC_DEF_ID_, RES.TASK_DEF_KEY_ as TEMPRES_TASK_DEF_KEY_,
RES.DUE_DATE_ as TEMPRES_DUE_DATE_, RES.SUSPENSION_STATE_ as TEMPRES_SUSPENSION_STATE_,
VAR.ID_ as TEMPVAR_ID_, VAR.NAME_ as TEMPVAR_NAME_, VAR.TYPE_ as TEMPVAR_TYPE_, VAR.REV_ as TEMPVAR_REV_,
VAR.PROC_INST_ID_ as TEMPVAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as TEMPVAR_EXECUTION_ID_, VAR.TASK_ID_ as TEMPVAR_TASK_ID_,
VAR.BYTEARRAY_ID_ as TEMPVAR_BYTEARRAY_ID_, VAR.DOUBLE_ as TEMPVAR_DOUBLE_,
VAR.TEXT_ as TEMPVAR_TEXT_, VAR.TEXT2_ as TEMPVAR_TEXT2_, VAR.LONG_ as TEMPVAR_LONG_
<include
refid=
"selectTaskWithVariablesByQueryCriteriaSql"
/>
) as RES WHERE rnk
>
= #{firstRow} AND rnk
<
#{lastRow}
${orderBy}
${limitAfter}
</select>
<sql
id=
"selectTaskWithVariablesByQueryCriteriaSql"
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录