Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
a36df18f
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,发现更多精彩内容 >>
提交
a36df18f
编写于
1月 09, 2014
作者:
F
frederikheremans
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #174 from smirzai/act-1082
fix act-1839
上级
41108dbb
1721715d
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
122 addition
and
3 deletion
+122
-3
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
...c/main/java/org/activiti/engine/impl/db/DbSqlSession.java
+17
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/VariableInstanceEntity.java
...ngine/impl/persistence/entity/VariableInstanceEntity.java
+7
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/VariableScopeImpl.java
...iti/engine/impl/persistence/entity/VariableScopeImpl.java
+4
-2
modules/activiti-engine/src/test/java/org/activiti/examples/variables/ChangeVariableType.java
...a/org/activiti/examples/variables/ChangeVariableType.java
+16
-0
modules/activiti-engine/src/test/java/org/activiti/examples/variables/SomeSerializable.java
...ava/org/activiti/examples/variables/SomeSerializable.java
+19
-0
modules/activiti-engine/src/test/java/org/activiti/examples/variables/VariablesTest.java
...t/java/org/activiti/examples/variables/VariablesTest.java
+21
-0
modules/activiti-engine/src/test/resources/org/activiti/examples/variables/ChangeVariableType.java
...s/org/activiti/examples/variables/ChangeVariableType.java
+16
-0
modules/activiti-engine/src/test/resources/org/activiti/examples/variables/VariablesTest.testChangeTypeSerializable.bpmn20.xml
...ables/VariablesTest.testChangeTypeSerializable.bpmn20.xml
+22
-0
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java
浏览文件 @
a36df18f
...
...
@@ -103,9 +103,23 @@ public class DbSqlSession implements Session {
this
.
connectionMetadataDefaultCatalog
=
catalog
;
this
.
connectionMetadataDefaultSchema
=
schema
;
}
// Touch ///////////////////////////////////////////////////////////////////
// brings the given persistenObject to the top if it already exists
public
void
touch
(
PersistentObject
persistentObject
)
{
if
(
persistentObject
.
getId
()==
null
)
{
throw
new
ActivitiException
(
"Cannot touch "
+
persistentObject
.
getClass
()
+
" with no id"
);
}
if
(
insertedObjects
.
contains
(
persistentObject
))
{
insertedObjects
.
remove
(
persistentObject
);
insertedObjects
.
add
(
persistentObject
);
cachePut
(
persistentObject
,
false
);
}
}
// insert ///////////////////////////////////////////////////////////////////
public
void
insert
(
PersistentObject
persistentObject
)
{
if
(
persistentObject
.
getId
()==
null
)
{
String
id
=
dbSqlSessionFactory
.
getIdGenerator
().
getNextId
();
...
...
@@ -1125,4 +1139,6 @@ public class DbSqlSession implements Session {
public
DbSqlSessionFactory
getDbSqlSessionFactory
()
{
return
dbSqlSessionFactory
;
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/VariableInstanceEntity.java
浏览文件 @
a36df18f
...
...
@@ -55,6 +55,13 @@ public class VariableInstanceEntity implements ValueFields, PersistentObject, Ha
protected
VariableInstanceEntity
()
{
}
public
static
void
touch
(
VariableInstanceEntity
variableInstance
)
{
Context
.
getCommandContext
()
.
getDbSqlSession
()
.
touch
(
variableInstance
);
}
public
static
VariableInstanceEntity
createAndInsert
(
String
name
,
VariableType
type
,
Object
value
)
{
VariableInstanceEntity
variableInstance
=
create
(
name
,
type
,
value
);
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/VariableScopeImpl.java
浏览文件 @
a36df18f
...
...
@@ -349,8 +349,10 @@ public abstract class VariableScopeImpl implements Serializable, VariableScope {
variableInstance
.
setValue
(
null
);
variableInstance
.
setType
(
newType
);
variableInstance
.
forceUpdate
();
}
variableInstance
.
setValue
(
value
);
variableInstance
.
setValue
(
value
);
VariableInstanceEntity
.
touch
(
variableInstance
);
}
else
variableInstance
.
setValue
(
value
);
Context
.
getCommandContext
().
getHistoryManager
()
.
recordHistoricDetailVariableCreate
(
variableInstance
,
sourceActivityExecution
,
isActivityIdUsedForDetails
());
...
...
modules/activiti-engine/src/test/java/org/activiti/examples/variables/ChangeVariableType.java
0 → 100755
浏览文件 @
a36df18f
package
org.activiti.examples.variables
;
import
org.activiti.engine.delegate.DelegateExecution
;
import
org.activiti.engine.delegate.JavaDelegate
;
public
class
ChangeVariableType
implements
JavaDelegate
{
public
void
execute
(
DelegateExecution
execution
)
throws
Exception
{
// Initially set to null, stored as NullType
execution
.
setVariable
(
"myVar"
,
null
);
// Now set to something stored as SerializableType. This could happen much later on than this.
execution
.
setVariable
(
"myVar"
,
new
SomeSerializable
(
"someValue"
));
}
}
modules/activiti-engine/src/test/java/org/activiti/examples/variables/SomeSerializable.java
0 → 100755
浏览文件 @
a36df18f
package
org.activiti.examples.variables
;
import
java.io.Serializable
;
public
class
SomeSerializable
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
final
String
value
;
public
SomeSerializable
(
String
value
){
this
.
value
=
value
;
}
public
String
getValue
()
{
return
value
;
}
}
modules/activiti-engine/src/test/java/org/activiti/examples/variables/VariablesTest.java
浏览文件 @
a36df18f
...
...
@@ -28,9 +28,12 @@ import org.activiti.engine.impl.variable.ValueFields;
import
org.activiti.engine.impl.variable.VariableType
;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.activiti.engine.task.Task
;
import
org.activiti.engine.test.ActivitiRule
;
import
org.activiti.engine.test.Deployment
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.junit.Rule
;
import
org.junit.Test
;
/**
* @author Tom Baeyens
...
...
@@ -144,8 +147,26 @@ public class VariablesTest extends PluggableActivitiTestCase {
Task
task
=
taskService
.
createTaskQuery
().
executionId
(
processInstance
.
getId
()).
singleResult
();
taskService
.
complete
(
task
.
getId
());
}
// Test case for ACT-1839
@Test
@Deployment
(
resources
=
{
"org/activiti/examples/variables/VariablesTest.testChangeTypeSerializable.bpmn20.xml"
})
public
void
testChangeTypeSerializable
()
{
ProcessInstance
processInstance
=
runtimeService
.
startProcessInstanceByKey
(
"variable-type-change-test"
);
assertNotNull
(
processInstance
);
Task
task
=
taskService
.
createTaskQuery
().
singleResult
();
assertEquals
(
"Activiti is awesome!"
,
task
.
getName
());
SomeSerializable
myVar
=
(
SomeSerializable
)
runtimeService
.
getVariable
(
processInstance
.
getId
(),
"myVar"
);
assertEquals
(
"someValue"
,
myVar
.
getValue
());
}
public
String
getVariableInstanceId
(
String
executionId
,
String
name
)
{
HistoricVariableInstance
variable
=
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
executionId
).
variableName
(
name
).
singleResult
();
...
...
modules/activiti-engine/src/test/resources/org/activiti/examples/variables/ChangeVariableType.java
0 → 100755
浏览文件 @
a36df18f
package
org.activiti.examples.variables
import
org.activiti.engine.delegate.DelegateExecution
;
import
org.activiti.engine.delegate.JavaDelegate
;
public
class
ChangeVariableType
implements
JavaDelegate
{
public
void
execute
(
DelegateExecution
execution
)
throws
Exception
{
// Initially set to null, stored as NullType
execution
.
setVariable
(
"myVar"
,
null
);
// Now set to something stored as SerializableType. This could happen much later on than this.
execution
.
setVariable
(
"myVar"
,
new
SomeSerializable
(
"someValue"
));
}
}
modules/activiti-engine/src/test/resources/org/activiti/examples/variables/VariablesTest.testChangeTypeSerializable.bpmn20.xml
0 → 100755
浏览文件 @
a36df18f
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
expressionLanguage=
"http://www.w3.org/1999/XPath"
targetNamespace=
"http://www.activiti.org/test"
>
<process
id=
"variable-type-change-test"
>
<startEvent
id=
"start"
/>
<sequenceFlow
id=
"flow1"
sourceRef=
"start"
targetRef=
"changeVariableType"
/>
<serviceTask
id=
"changeVariableType"
activiti:class=
"org.activiti.examples.variables.ChangeVariableType"
/>
<sequenceFlow
id=
"flow2"
sourceRef=
"changeVariableType"
targetRef=
"someTask"
/>
<userTask
id=
"someTask"
name=
"Activiti is awesome!"
/>
<sequenceFlow
id=
"flow3"
sourceRef=
"someTask"
targetRef=
"end"
/>
<endEvent
id=
"end"
/>
</process>
</definitions>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录