Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
4a979c36
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,发现更多精彩内容 >>
提交
4a979c36
编写于
9月 16, 2010
作者:
T
tombaeyens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ACT-30 second piece of the historic activity instances
上级
e7f56060
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
278 addition
and
57 deletion
+278
-57
modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricActivityInstanceQueryImpl.java
...tiviti/engine/impl/HistoricActivityInstanceQueryImpl.java
+81
-17
modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricProcessInstanceQueryImpl.java
...ctiviti/engine/impl/HistoricProcessInstanceQueryImpl.java
+0
-2
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbHistorySession.java
...in/java/org/activiti/engine/impl/db/DbHistorySession.java
+1
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
...c/main/java/org/activiti/engine/impl/db/DbSqlSession.java
+14
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/HistoricActivityInstanceEntity.java
...i/engine/impl/history/HistoricActivityInstanceEntity.java
+9
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/handler/ActivityInstanceEndHandler.java
...gine/impl/history/handler/ActivityInstanceEndHandler.java
+48
-13
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/handler/ActivityInstanceStartHandler.java
...ne/impl/history/handler/ActivityInstanceStartHandler.java
+25
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/handler/HistoryParseListener.java
...iti/engine/impl/history/handler/HistoryParseListener.java
+15
-9
modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/ExecutionEntity.java
...ava/org/activiti/engine/impl/runtime/ExecutionEntity.java
+32
-1
modules/activiti-engine/src/main/resources/org/activiti/db/ibatis/history.mapping.xml
...main/resources/org/activiti/db/ibatis/history.mapping.xml
+53
-15
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricActivityInstanceQueryImpl.java
浏览文件 @
4a979c36
...
...
@@ -21,7 +21,7 @@ import org.activiti.engine.history.HistoricActivityInstance;
import
org.activiti.engine.history.HistoricActivityInstanceQuery
;
import
org.activiti.engine.history.HistoricActivityInstanceQueryProperty
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.
runtime.ProcessInstance
;
import
org.activiti.engine.
impl.interceptor.CommandExecutor
;
/**
...
...
@@ -29,11 +29,22 @@ import org.activiti.engine.runtime.ProcessInstance;
*/
public
class
HistoricActivityInstanceQueryImpl
extends
AbstractQuery
<
HistoricActivityInstance
>
implements
HistoricActivityInstanceQuery
{
protected
String
processDefinitionId
;
protected
String
processInstanceId
;
protected
String
executionId
;
protected
String
processDefinitionId
;
protected
String
activityId
;
protected
String
activityName
;
protected
String
activityType
;
protected
boolean
onlyOpen
;
protected
HistoricActivityInstanceQueryProperty
orderProperty
;
protected
String
orderBy
;
public
HistoricActivityInstanceQueryImpl
()
{
}
public
HistoricActivityInstanceQueryImpl
(
CommandExecutor
commandExecutor
)
{
super
(
commandExecutor
);
}
@Override
public
long
executeCount
(
CommandContext
commandContext
)
{
...
...
@@ -44,33 +55,59 @@ public class HistoricActivityInstanceQueryImpl extends AbstractQuery<HistoricAct
@Override
public
List
<
HistoricActivityInstance
>
executeList
(
CommandContext
commandContext
,
Page
page
)
{
return
(
List
)
commandContext
return
commandContext
.
getHistorySession
()
.
findHistoricActivityInstancesByQueryCriteria
(
this
,
page
);
}
public
HistoricActivityInstanceQuery
processDefinitionId
(
String
processDefinitionId
)
{
public
HistoricActivityInstanceQueryImpl
processInstanceId
(
String
processInstanceId
)
{
this
.
processInstanceId
=
processInstanceId
;
return
this
;
}
public
HistoricActivityInstanceQueryImpl
executionId
(
String
executionId
)
{
this
.
executionId
=
executionId
;
return
this
;
}
public
HistoricActivityInstanceQueryImpl
processDefinitionId
(
String
processDefinitionId
)
{
this
.
processDefinitionId
=
processDefinitionId
;
return
this
;
}
public
HistoricActivityInstanceQuery
processInstanceId
(
String
processInstanceId
)
{
this
.
processInstanceId
=
processInstanceId
;
public
HistoricActivityInstanceQueryImpl
activityId
(
String
activityId
)
{
this
.
activityId
=
activityId
;
return
this
;
}
public
HistoricActivityInstanceQueryImpl
activityName
(
String
activityName
)
{
this
.
activityName
=
activityName
;
return
this
;
}
public
HistoricActivityInstanceQueryImpl
activityType
(
String
activityType
)
{
this
.
activityType
=
activityType
;
return
this
;
}
public
HistoricActivityInstanceQueryImpl
onlyOpen
()
{
this
.
onlyOpen
=
true
;
return
this
;
}
// ordering /////////////////////////////////////////////////////////////////
public
HistoricActivityInstanceQuery
asc
()
{
public
HistoricActivityInstanceQuery
Impl
asc
()
{
return
direction
(
Direction
.
ASCENDING
);
}
public
HistoricActivityInstanceQuery
desc
()
{
public
HistoricActivityInstanceQuery
Impl
desc
()
{
return
direction
(
Direction
.
DESCENDING
);
}
public
HistoricActivityInstanceQuery
direction
(
Direction
direction
)
{
public
HistoricActivityInstanceQuery
Impl
direction
(
Direction
direction
)
{
if
(
orderProperty
==
null
)
{
throw
new
ActivitiException
(
"you should call any of the orderBy methods first before specifying a direction"
);
}
...
...
@@ -79,43 +116,70 @@ public class HistoricActivityInstanceQueryImpl extends AbstractQuery<HistoricAct
return
this
;
}
public
HistoricActivityInstanceQuery
orderBy
(
HistoricActivityInstanceQueryProperty
property
)
{
public
HistoricActivityInstanceQuery
Impl
orderBy
(
HistoricActivityInstanceQueryProperty
property
)
{
this
.
orderProperty
=
property
;
return
this
;
}
public
HistoricActivityInstanceQuery
orderByDuration
()
{
public
HistoricActivityInstanceQuery
Impl
orderByDuration
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
DURATION
);
return
this
;
}
public
HistoricActivityInstanceQuery
orderByEnd
()
{
public
HistoricActivityInstanceQuery
Impl
orderByEnd
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
END
);
return
this
;
}
public
HistoricActivityInstanceQuery
orderByExecutionId
()
{
public
HistoricActivityInstanceQuery
Impl
orderByExecutionId
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
EXECUTION_ID
);
return
this
;
}
public
HistoricActivityInstanceQuery
orderById
()
{
public
HistoricActivityInstanceQuery
Impl
orderById
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
ID
);
return
this
;
}
public
HistoricActivityInstanceQuery
orderByProcessDefinitionId
()
{
public
HistoricActivityInstanceQuery
Impl
orderByProcessDefinitionId
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
PROCESS_DEFINITION_ID
);
return
this
;
}
public
HistoricActivityInstanceQuery
orderByProcessInstanceId
()
{
public
HistoricActivityInstanceQuery
Impl
orderByProcessInstanceId
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
PROCESS_INSTANCE_ID
);
return
this
;
}
public
HistoricActivityInstanceQuery
orderByStart
()
{
public
HistoricActivityInstanceQuery
Impl
orderByStart
()
{
orderBy
(
HistoricActivityInstanceQueryProperty
.
START
);
return
this
;
}
// getters and setters //////////////////////////////////////////////////////
public
String
getProcessInstanceId
()
{
return
processInstanceId
;
}
public
String
getExecutionId
()
{
return
executionId
;
}
public
String
getProcessDefinitionId
()
{
return
processDefinitionId
;
}
public
String
getActivityId
()
{
return
activityId
;
}
public
String
getOrderBy
()
{
return
orderBy
;
}
public
String
getActivityName
()
{
return
activityName
;
}
public
String
getActivityType
()
{
return
activityType
;
}
public
boolean
isOnlyOpen
()
{
return
onlyOpen
;
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricProcessInstanceQueryImpl.java
浏览文件 @
4a979c36
...
...
@@ -30,8 +30,6 @@ public class HistoricProcessInstanceQueryImpl extends AbstractQuery<HistoricProc
protected
String
processDefinitionId
;
protected
String
processDefinitionKey
;
protected
CommandExecutor
commandExecutor
;
public
HistoricProcessInstanceQueryImpl
()
{
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbHistorySession.java
浏览文件 @
4a979c36
...
...
@@ -39,6 +39,7 @@ public class DbHistorySession extends AbstractDbSession implements HistorySessio
}
public
void
deleteHistoricProcessInstance
(
String
historicProcessInstanceId
)
{
dbSqlSession
.
delete
(
"deleteHistoricActivityInstancesByProcessInstanceId"
,
historicProcessInstanceId
);
dbSqlSession
.
delete
(
HistoricProcessInstanceEntity
.
class
,
historicProcessInstanceId
);
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
浏览文件 @
4a979c36
...
...
@@ -14,6 +14,7 @@
package
org.activiti.engine.impl.db
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -234,6 +235,19 @@ public class DbSqlSession implements Session {
}
classCache
.
remove
(
persistentObjectId
);
}
@SuppressWarnings
(
"unchecked"
)
public
<
T
>
List
<
T
>
findInCache
(
Class
<
T
>
entityClass
)
{
Map
<
String
,
CachedObject
>
classCache
=
cachedObjects
.
get
(
entityClass
);
if
(
classCache
!=
null
)
{
ArrayList
<
T
>
entities
=
new
ArrayList
<
T
>(
classCache
.
size
());
for
(
CachedObject
cachedObject:
classCache
.
values
())
{
entities
.
add
((
T
)
cachedObject
.
getPersistentObject
());
}
return
entities
;
}
return
Collections
.
emptyList
();
}
public
static
class
CachedObject
{
protected
PersistentObject
persistentObject
;
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/HistoricActivityInstanceEntity.java
浏览文件 @
4a979c36
...
...
@@ -14,6 +14,8 @@
package
org.activiti.engine.impl.history
;
import
java.util.Map
;
import
org.activiti.engine.history.HistoricActivityInstance
;
/**
...
...
@@ -25,6 +27,13 @@ public class HistoricActivityInstanceEntity extends HistoricScopeInstanceEntity
protected
String
activityName
;
protected
String
activityType
;
protected
String
executionId
;
@SuppressWarnings
(
"unchecked"
)
public
Object
getPersistentState
()
{
Map
<
String
,
Object
>
persistentState
=
(
Map
<
String
,
Object
>)
super
.
getPersistentState
();
persistentState
.
put
(
"executionId"
,
executionId
);
return
persistentState
;
}
// getters and setters //////////////////////////////////////////////////////
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/handler/ActivityInstanceEndHandler.java
浏览文件 @
4a979c36
...
...
@@ -13,8 +13,18 @@
package
org.activiti.engine.impl.history.handler
;
import
java.util.Date
;
import
java.util.List
;
import
org.activiti.engine.ActivitiException
;
import
org.activiti.engine.history.HistoricActivityInstance
;
import
org.activiti.engine.impl.HistoricActivityInstanceQueryImpl
;
import
org.activiti.engine.impl.Page
;
import
org.activiti.engine.impl.db.DbSqlSession
;
import
org.activiti.engine.impl.history.HistoricActivityInstanceEntity
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.runtime.ExecutionEntity
;
import
org.activiti.engine.impl.util.ClockUtil
;
import
org.activiti.pvm.event.EventListener
;
import
org.activiti.pvm.event.EventListenerExecution
;
...
...
@@ -26,21 +36,46 @@ public class ActivityInstanceEndHandler implements EventListener {
public
void
notify
(
EventListenerExecution
execution
)
{
ExecutionEntity
executionEntity
=
(
ExecutionEntity
)
execution
;
//
HistoricActivityInstanceEntity historicActivityInstance = findActivityInstance(executionEntity);
//
//
Date endTime = ClockUtil.getCurrentTime();
//
long durationInMillis = endTime.getTime() - historicActivityInstance.getStartTime().getTime();
//
historicActivityInstance.setEndTime(endTime);
//
historicActivityInstance.setDurationInMillis(durationInMillis);
HistoricActivityInstanceEntity
historicActivityInstance
=
findActivityInstance
(
executionEntity
);
Date
endTime
=
ClockUtil
.
getCurrentTime
();
long
durationInMillis
=
endTime
.
getTime
()
-
historicActivityInstance
.
getStartTime
().
getTime
();
historicActivityInstance
.
setEndTime
(
endTime
);
historicActivityInstance
.
setDurationInMillis
(
durationInMillis
);
}
public
HistoricActivityInstanceEntity
findActivityInstance
(
ExecutionEntity
execution
)
{
// CommandContext commandContext = CommandContext.getCurrent();
// HistoricProcessInstanceEntity historicProcessInstance = new HistoricActivityInstanceQueryImpl(commandContext)
// .executionId(execution.getId())
// .activityId(execution.getActivityId())
// .listPage(0, 1);
//
return
null
;
CommandContext
commandContext
=
CommandContext
.
getCurrent
();
String
executionId
=
execution
.
getId
();
String
activityId
=
execution
.
getActivityId
();
// TODO search for the historic activity instance in the dbsqlsession cache
DbSqlSession
dbSqlSession
=
commandContext
.
getDbSqlSession
();
List
<
HistoricActivityInstanceEntity
>
cachedHistoricActivityInstances
=
dbSqlSession
.
findInCache
(
HistoricActivityInstanceEntity
.
class
);
for
(
HistoricActivityInstanceEntity
cachedHistoricActivityInstance:
cachedHistoricActivityInstances
)
{
if
(
executionId
.
equals
(
cachedHistoricActivityInstance
.
getExecutionId
())
&&
(
activityId
.
equals
(
cachedHistoricActivityInstance
.
getActivityId
()))
&&
(
cachedHistoricActivityInstance
.
getEndTime
()==
null
)
)
{
return
cachedHistoricActivityInstance
;
}
}
List
<
HistoricActivityInstance
>
historicActivityInstances
=
new
HistoricActivityInstanceQueryImpl
()
.
executionId
(
executionId
)
.
activityId
(
activityId
)
.
onlyOpen
()
.
executeList
(
commandContext
,
new
Page
(
0
,
1
));
if
(!
historicActivityInstances
.
isEmpty
())
{
return
(
HistoricActivityInstanceEntity
)
historicActivityInstances
.
get
(
0
);
}
if
(
execution
.
getParentId
()!=
null
)
{
return
findActivityInstance
((
ExecutionEntity
)
execution
.
getParent
());
}
throw
new
ActivitiException
(
"no existing history activity entity found for execution "
+
executionId
+
" in activity "
+
activityId
);
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/handler/ActivityInstanceStartHandler.java
浏览文件 @
4a979c36
...
...
@@ -13,6 +13,11 @@
package
org.activiti.engine.impl.history.handler
;
import
org.activiti.engine.impl.cfg.IdGenerator
;
import
org.activiti.engine.impl.history.HistoricActivityInstanceEntity
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.runtime.ExecutionEntity
;
import
org.activiti.engine.impl.util.ClockUtil
;
import
org.activiti.pvm.event.EventListener
;
import
org.activiti.pvm.event.EventListenerExecution
;
...
...
@@ -29,5 +34,25 @@ public class ActivityInstanceStartHandler implements EventListener {
}
public
void
notify
(
EventListenerExecution
execution
)
{
CommandContext
commandContext
=
CommandContext
.
getCurrent
();
IdGenerator
idGenerator
=
commandContext
.
getProcessEngineConfiguration
().
getIdGenerator
();
ExecutionEntity
executionEntity
=
(
ExecutionEntity
)
execution
;
String
processDefinitionId
=
executionEntity
.
getProcessDefinitionId
();
String
processInstanceId
=
executionEntity
.
getProcessInstanceId
();
String
executionId
=
execution
.
getId
();
HistoricActivityInstanceEntity
historicActivityInstance
=
new
HistoricActivityInstanceEntity
();
historicActivityInstance
.
setId
(
Long
.
toString
(
idGenerator
.
getNextId
()));
historicActivityInstance
.
setProcessDefinitionId
(
processDefinitionId
);
historicActivityInstance
.
setProcessInstanceId
(
processInstanceId
);
historicActivityInstance
.
setExecutionId
(
executionId
);
historicActivityInstance
.
setActivityId
(
executionEntity
.
getActivityId
());
historicActivityInstance
.
setActivityType
((
String
)
executionEntity
.
getActivity
().
getProperty
(
"type"
));
historicActivityInstance
.
setStartTime
(
ClockUtil
.
getCurrentTime
());
commandContext
.
getDbSqlSession
()
.
insert
(
historicActivityInstance
);
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/handler/HistoryParseListener.java
浏览文件 @
4a979c36
...
...
@@ -33,40 +33,46 @@ public class HistoryParseListener implements BpmnParseListener {
processDefinition
.
addEventListener
(
EventListener
.
EVENTNAME_END
,
new
ProcessInstanceEndHandler
());
}
public
void
parseStartEvent
(
Element
startEventElement
,
ScopeImpl
scope
,
ActivityImpl
startEventActivity
)
{
}
public
void
parseEndEvent
(
Element
endEventElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
}
public
void
parseExclusiveGateway
(
Element
exclusiveGwElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
exclusiveGwElement
,
activity
);
}
public
void
parseParallelGateway
(
Element
parallelGwElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
}
public
void
parseCallActivity
(
Element
callActivityElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
callActivityElement
,
activity
);
}
public
void
parseManualTask
(
Element
manualTaskElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
manualTaskElement
,
activity
);
}
public
void
parseScript
(
Element
scriptTaskElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
scriptTaskElement
,
activity
);
}
public
void
parseTask
(
Element
taskElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
taskElement
,
activity
);
}
public
void
parseUserTask
(
Element
userTaskElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
userTaskElement
,
activity
);
}
public
void
parseServiceTask
(
Element
serviceTaskElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
serviceTaskElement
,
activity
);
}
public
void
parseSubProcess
(
Element
subProcessElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
addActivityHandlers
(
subProcessElement
,
activity
);
}
public
void
parseStartEvent
(
Element
startEventElement
,
ScopeImpl
scope
,
ActivityImpl
startEventActivity
)
{
}
public
void
parseEndEvent
(
Element
endEventElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
}
public
void
parseParallelGateway
(
Element
parallelGwElement
,
ScopeImpl
scope
,
ActivityImpl
activity
)
{
}
public
void
parseBoundaryTimerEventDefinition
(
Element
timerEventDefinition
,
boolean
interrupting
,
ActivityImpl
timerActivity
)
{
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/ExecutionEntity.java
浏览文件 @
4a979c36
...
...
@@ -22,12 +22,16 @@ import java.util.logging.Logger;
import
javax.el.ELContext
;
import
org.activiti.engine.history.HistoricActivityInstance
;
import
org.activiti.engine.impl.HistoricActivityInstanceQueryImpl
;
import
org.activiti.engine.impl.JobQueryImpl
;
import
org.activiti.engine.impl.TaskQueryImpl
;
import
org.activiti.engine.impl.bpmn.parser.BpmnParse
;
import
org.activiti.engine.impl.calendar.BusinessCalendar
;
import
org.activiti.engine.impl.calendar.DurationBusinessCalendar
;
import
org.activiti.engine.impl.db.DbSqlSession
;
import
org.activiti.engine.impl.db.PersistentObject
;
import
org.activiti.engine.impl.history.HistoricActivityInstanceEntity
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.jobexecutor.TimerDeclarationImpl
;
import
org.activiti.engine.impl.task.TaskEntity
;
...
...
@@ -358,9 +362,36 @@ public class ExecutionEntity extends ExecutionImpl implements PersistentObject,
.
getDbSqlSession
()
.
delete
(
ExecutionEntity
.
class
,
id
);
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
void
setReplacedBy
(
ExecutionImpl
replacedBy
)
{
super
.
setReplacedBy
(
replacedBy
);
// update the cached historic activity instances that are open
CommandContext
commandContext
=
CommandContext
.
getCurrent
();
DbSqlSession
dbSqlSession
=
commandContext
.
getDbSqlSession
();
List
<
HistoricActivityInstanceEntity
>
cachedHistoricActivityInstances
=
dbSqlSession
.
findInCache
(
HistoricActivityInstanceEntity
.
class
);
for
(
HistoricActivityInstanceEntity
cachedHistoricActivityInstance:
cachedHistoricActivityInstances
)
{
if
(
(
cachedHistoricActivityInstance
.
getEndTime
()==
null
)
&&
(
id
.
equals
(
cachedHistoricActivityInstance
.
getExecutionId
()))
)
{
cachedHistoricActivityInstance
.
setExecutionId
(
replacedBy
.
getId
());
}
}
// update the persisted historic activity instances that are open
List
<
HistoricActivityInstanceEntity
>
historicActivityInstances
=
(
List
)
new
HistoricActivityInstanceQueryImpl
()
.
executionId
(
id
)
.
onlyOpen
()
.
executeList
(
commandContext
,
null
);
for
(
HistoricActivityInstanceEntity
historicActivityInstance:
historicActivityInstances
)
{
historicActivityInstance
.
setExecutionId
(
replacedBy
.
getId
());
}
}
// variables ////////////////////////////////////////////////////////////////
@Override
protected
void
ensureVariablesInitialized
()
{
if
(
variables
==
null
)
{
...
...
modules/activiti-engine/src/main/resources/org/activiti/db/ibatis/history.mapping.xml
浏览文件 @
4a979c36
...
...
@@ -85,7 +85,7 @@
</if>
</select>
<select
id=
"selectHistoricProcessInstanceCountByQueryCriteria"
parameterType=
"org.activiti.engine.impl.
Execution
QueryImpl"
resultType=
"long"
>
<select
id=
"selectHistoricProcessInstanceCountByQueryCriteria"
parameterType=
"org.activiti.engine.impl.
HistoricProcessInstance
QueryImpl"
resultType=
"long"
>
select count(*)
<include
refid=
"selectHistoricProcessInstancesByQueryCriteriaSql"
/>
</select>
...
...
@@ -104,21 +104,23 @@
<insert
id=
"insertHistoricActivityInstance"
parameterType=
"org.activiti.engine.impl.history.HistoricActivityInstanceEntity"
>
insert into ACT_HI_ACT_INST (
ID_,
PROC_DEF_ID_,
PROC_INST_ID_,
EXECUTION_ID_,
ACT_ID_,
ACT_NAME_,
ACT_TYPE_,
PROC_INST_ID_,
PROC_DEF_ID_,
START_TIME_,
END_TIME_,
DURATION_
) values (
#{id ,jdbcType=VARCHAR},
#{processDefinitionId, jdbcType=VARCHAR},
#{processInstanceId, jdbcType=VARCHAR},
#{executionId, jdbcType=VARCHAR},
#{activityId ,jdbcType=VARCHAR},
#{activityName ,jdbcType=VARCHAR},
#{activityType ,jdbcType=VARCHAR},
#{processInstanceId, jdbcType=VARCHAR},
#{processDefinitionId, jdbcType=VARCHAR},
#{startTime, jdbcType=TIMESTAMP},
#{endTime, jdbcType=TIMESTAMP},
#{durationInMillis ,jdbcType=BIGINT}
...
...
@@ -129,12 +131,7 @@
<update
id=
"updateHistoricActivityInstance"
parameterType=
"org.activiti.engine.impl.history.HistoricActivityInstanceEntity"
>
update ACT_HI_ACT_INST set
ACT_ID_ = #{activityId, jdbcType=VARCHAR},
ACT_NAME_ = #{activityName, jdbcType=VARCHAR},
ACT_TYPE_ = #{activityType, jdbcType=VARCHAR},
PROC_INST_ID_ = #{processInstanceId, jdbcType=VARCHAR},
PROC_DEF_ID_ = #{processDefinitionId, jdbcType=VARCHAR},
START_TIME_ = #{startTime, jdbcType=TIMESTAMP},
EXECUTION_ID_ = #{executionId, jdbcType=VARCHAR},
END_TIME_ = #{endTime, jdbcType=TIMESTAMP},
DURATION_ = #{durationInMillis ,jdbcType=BIGINT}
where ID_ = #{id}
...
...
@@ -142,19 +139,20 @@
<!-- HISTORIC ACTIVITY INSTANCE DELETE -->
<delete
id=
"deleteHistoricActivityInstance"
>
delete from ACT_HI_ACT_INST where
ACT_ID_ = #{activityId} and
PROC_INST_ID_ = #{processInstanceId}
<delete
id=
"deleteHistoricActivityInstance
sByProcessInstanceId
"
>
delete from ACT_HI_ACT_INST where PROC_INST_ID_ = #{processInstanceId}
</delete>
<!-- HISTORIC ACTIVITY INSTANCE RESULT MAP -->
<resultMap
id=
"historicActivityInstanceResultMap"
type=
"org.activiti.engine.impl.history.HistoricActivityInstanceEntity"
>
<id
property=
"id"
column=
"ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"processDefinitionId"
column=
"PROC_DEF_ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"processInstanceId"
column=
"PROC_INST_ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"executionId"
column=
"EXECUTION_ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"activityId"
column=
"ACT_ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"activityName"
column=
"ACT_NAME_"
jdbcType=
"VARCHAR"
/>
<result
property=
"activityType"
column=
"ACT_TYPE_"
jdbcType=
"VARCHAR"
/>
<result
property=
"processInstanceId"
column=
"PROC_INST_ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"processDefinitionId"
column=
"PROC_DEF_ID_"
jdbcType=
"VARCHAR"
/>
<result
property=
"startTime"
column=
"START_TIME_"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"endTime"
column=
"END_TIME_"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"durationInMillis"
column=
"DURATION_"
jdbcType=
"BIGINT"
/>
...
...
@@ -166,4 +164,44 @@
select * from ACT_HI_ACT_INST where ACT_ID_ = #{activityId} and PROC_INST_ID_ = #{processInstanceId}
</select>
<select
id=
"selectHistoricActivityInstancesByQueryCriteria"
parameterType=
"org.activiti.engine.impl.HistoricActivityInstanceQueryImpl"
resultMap=
"historicActivityInstanceResultMap"
>
select *
<include
refid=
"selectHistoricActivityInstancesByQueryCriteriaSql"
/>
<if
test=
"orderBy != null"
>
order by ${orderBy}
</if>
</select>
<select
id=
"selectHistoricActivityInstanceCountByQueryCriteria"
parameterType=
"org.activiti.engine.impl.HistoricActivityInstanceQueryImpl"
resultType=
"long"
>
select count(*)
<include
refid=
"selectHistoricActivityInstancesByQueryCriteriaSql"
/>
</select>
<sql
id=
"selectHistoricActivityInstancesByQueryCriteriaSql"
>
from ACT_HI_ACT_INST HAI
<where>
<if
test=
"processInstanceId != null"
>
HAI.PROC_INST_ID_ = #{processInstanceId}
</if>
<if
test=
"executionId != null"
>
and HAI.EXECUTION_ID_ = #{executionId}
</if>
<if
test=
"processDefinitionId != null"
>
and HAI.PROC_DEF_ID_ = #{processDefinitionId}
</if>
<if
test=
"activityId != null"
>
and HAI.ACT_ID_ = #{activityId}
</if>
<if
test=
"activityName != null"
>
and HAI.ACT_NAME_ = #{activityName}
</if>
<if
test=
"activityType != null"
>
and HAI.ACT_TYPE_ = #{activityType}
</if>
<if
test=
"onlyOpen"
>
and HAI.END_TIME_ is null
</if>
</where>
</sql>
</mapper>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录