Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
74725f36
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,发现更多精彩内容 >>
提交
74725f36
编写于
8月 04, 2010
作者:
T
tombaeyens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ACT-60 worked out pvm execution model further to handle more bpmn activity types
上级
38b28460
变更
37
显示空白变更内容
内联
并排
Showing
37 changed file
with
475 addition
and
117 deletion
+475
-117
modules/activiti-engine-test-cfg/src/test/java/org/activiti/test/cfg/spring/SpringTest.java
...rc/test/java/org/activiti/test/cfg/spring/SpringTest.java
+2
-2
modules/activiti-engine/src/main/java/org/activiti/engine/RuntimeService.java
...ine/src/main/java/org/activiti/engine/RuntimeService.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/RuntimeServiceImpl.java
...ain/java/org/activiti/engine/impl/RuntimeServiceImpl.java
+3
-3
modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/BpmnActivityBehavior.java
...a/org/activiti/engine/impl/bpmn/BpmnActivityBehavior.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/NoneEndEventActivity.java
...a/org/activiti/engine/impl/bpmn/NoneEndEventActivity.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/RuntimeSession.java
...ain/java/org/activiti/engine/impl/cfg/RuntimeSession.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/EndProcessInstanceCmd.java
...a/org/activiti/engine/impl/cmd/EndProcessInstanceCmd.java
+9
-15
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/db/DbRepositorySession.java
...iviti/engine/impl/persistence/db/DbRepositorySession.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/db/DbRuntimeSession.java
...activiti/engine/impl/persistence/db/DbRuntimeSession.java
+2
-2
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/runtime/ActivityInstanceEntity.java
...gine/impl/persistence/runtime/ActivityInstanceEntity.java
+3
-11
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/runtime/ProcessInstanceEntity.java
...ngine/impl/persistence/runtime/ProcessInstanceEntity.java
+9
-3
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/ActivityContext.java
.../main/java/org/activiti/pvm/activity/ActivityContext.java
+17
-16
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/CompositeActivityBehavior.java
.../org/activiti/pvm/activity/CompositeActivityBehavior.java
+25
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/DelegateActivityInstance.java
...a/org/activiti/pvm/activity/DelegateActivityInstance.java
+26
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/SubProcessActivityBehavior.java
...org/activiti/pvm/activity/SubProcessActivityBehavior.java
+23
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ActivityImpl.java
...main/java/org/activiti/pvm/impl/process/ActivityImpl.java
+1
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ProcessDefinitionImpl.java
.../org/activiti/pvm/impl/process/ProcessDefinitionImpl.java
+4
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ProcessElementImpl.java
...ava/org/activiti/pvm/impl/process/ProcessElementImpl.java
+4
-1
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ScopeImpl.java
...rc/main/java/org/activiti/pvm/impl/process/ScopeImpl.java
+5
-2
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/TransitionImpl.java
...in/java/org/activiti/pvm/impl/process/TransitionImpl.java
+2
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ActivityInstanceImpl.java
...a/org/activiti/pvm/impl/runtime/ActivityInstanceImpl.java
+10
-1
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ExecutionContextImpl.java
...a/org/activiti/pvm/impl/runtime/ExecutionContextImpl.java
+74
-12
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ProcessInstanceImpl.java
...va/org/activiti/pvm/impl/runtime/ProcessInstanceImpl.java
+3
-1
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ScopeInstanceImpl.java
...java/org/activiti/pvm/impl/runtime/ScopeInstanceImpl.java
+32
-2
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmActivity.java
...m/src/main/java/org/activiti/pvm/process/PvmActivity.java
+7
-4
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmProcessDefinition.java
...n/java/org/activiti/pvm/process/PvmProcessDefinition.java
+2
-2
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmProcessElement.java
...main/java/org/activiti/pvm/process/PvmProcessElement.java
+30
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmScope.java
...-pvm/src/main/java/org/activiti/pvm/process/PvmScope.java
+28
-0
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmTransition.java
...src/main/java/org/activiti/pvm/process/PvmTransition.java
+5
-4
modules/activiti-pvm/src/main/java/org/activiti/pvm/runtime/PvmScopeInstance.java
.../main/java/org/activiti/pvm/runtime/PvmScopeInstance.java
+2
-1
modules/activiti-pvm/src/test/java/org/activiti/pvm/test/PvmConcurrencyTest.java
...c/test/java/org/activiti/pvm/test/PvmConcurrencyTest.java
+3
-2
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/Automatic.java
...test/java/org/activiti/test/pvm/activities/Automatic.java
+1
-1
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/EmbeddedSubProcess.java
.../org/activiti/test/pvm/activities/EmbeddedSubProcess.java
+63
-0
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/End.java
...m/src/test/java/org/activiti/test/pvm/activities/End.java
+1
-1
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/ParallelGateway.java
...ava/org/activiti/test/pvm/activities/ParallelGateway.java
+23
-25
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/ReusableSubProcess.java
.../org/activiti/test/pvm/activities/ReusableSubProcess.java
+50
-0
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/WaitState.java
...test/java/org/activiti/test/pvm/activities/WaitState.java
+1
-1
未找到文件。
modules/activiti-engine-test-cfg/src/test/java/org/activiti/test/cfg/spring/SpringTest.java
浏览文件 @
74725f36
...
@@ -84,7 +84,7 @@ public class SpringTest {
...
@@ -84,7 +84,7 @@ public class SpringTest {
List
<
Task
>
tasks
=
processEngine
.
getTaskService
().
findAssignedTasks
(
"kermit"
);
List
<
Task
>
tasks
=
processEngine
.
getTaskService
().
findAssignedTasks
(
"kermit"
);
assertEquals
(
before
+
1
,
tasks
.
size
());
assertEquals
(
before
+
1
,
tasks
.
size
());
processEngine
.
getRuntimeService
().
delete
ProcessInstance
(
processInstance
.
getId
());
processEngine
.
getRuntimeService
().
end
ProcessInstance
(
processInstance
.
getId
());
}
}
...
@@ -95,7 +95,7 @@ public class SpringTest {
...
@@ -95,7 +95,7 @@ public class SpringTest {
CollectionUtil
.
singletonMap
(
"input"
,
"Activiti BPM Engine"
));
CollectionUtil
.
singletonMap
(
"input"
,
"Activiti BPM Engine"
));
ActivityInstance
activityInstance
=
runtimeService
.
findActivityInstanceByProcessInstanceIdAndActivityId
(
pi
.
getId
(),
"waitState"
);
ActivityInstance
activityInstance
=
runtimeService
.
findActivityInstanceByProcessInstanceIdAndActivityId
(
pi
.
getId
(),
"waitState"
);
assertEquals
(
"ACTIVITI BPM ENGINE"
,
runtimeService
.
getVariable
(
activityInstance
.
getId
(),
"input"
));
assertEquals
(
"ACTIVITI BPM ENGINE"
,
runtimeService
.
getVariable
(
activityInstance
.
getId
(),
"input"
));
processEngine
.
getRuntimeService
().
delete
ProcessInstance
(
activityInstance
.
getId
());
processEngine
.
getRuntimeService
().
end
ProcessInstance
(
activityInstance
.
getId
());
}
}
@Test
@Test
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/RuntimeService.java
浏览文件 @
74725f36
...
@@ -36,7 +36,7 @@ public interface RuntimeService {
...
@@ -36,7 +36,7 @@ public interface RuntimeService {
ProcessInstance
startProcessInstanceById
(
String
processDefinitionId
,
Map
<
String
,
Object
>
variables
);
ProcessInstance
startProcessInstanceById
(
String
processDefinitionId
,
Map
<
String
,
Object
>
variables
);
/** delete an existing runtime process instance */
/** delete an existing runtime process instance */
void
deleteProcessInstance
(
String
processInstanceId
);
void
endProcessInstance
(
String
processInstanceId
,
String
nonCompletionReason
);
/** gets the details of a process instance
/** gets the details of a process instance
* @return the process instance or null if no process instance could be found with the given id. */
* @return the process instance or null if no process instance could be found with the given id. */
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/RuntimeServiceImpl.java
浏览文件 @
74725f36
...
@@ -19,7 +19,7 @@ import org.activiti.engine.ActivityInstance;
...
@@ -19,7 +19,7 @@ import org.activiti.engine.ActivityInstance;
import
org.activiti.engine.ProcessInstance
;
import
org.activiti.engine.ProcessInstance
;
import
org.activiti.engine.ProcessInstanceQuery
;
import
org.activiti.engine.ProcessInstanceQuery
;
import
org.activiti.engine.RuntimeService
;
import
org.activiti.engine.RuntimeService
;
import
org.activiti.engine.impl.cmd.
Delete
ProcessInstanceCmd
;
import
org.activiti.engine.impl.cmd.
End
ProcessInstanceCmd
;
import
org.activiti.engine.impl.cmd.FindActivitiyInstanceCmd
;
import
org.activiti.engine.impl.cmd.FindActivitiyInstanceCmd
;
import
org.activiti.engine.impl.cmd.FindActivityInstanceInActivityCmd
;
import
org.activiti.engine.impl.cmd.FindActivityInstanceInActivityCmd
;
import
org.activiti.engine.impl.cmd.FindProcessInstanceCmd
;
import
org.activiti.engine.impl.cmd.FindProcessInstanceCmd
;
...
@@ -38,8 +38,8 @@ public class RuntimeServiceImpl extends ServiceImpl implements RuntimeService {
...
@@ -38,8 +38,8 @@ public class RuntimeServiceImpl extends ServiceImpl implements RuntimeService {
return
commandExecutor
.
execute
(
new
FindActivitiyInstanceCmd
(
activityInstanceId
));
return
commandExecutor
.
execute
(
new
FindActivitiyInstanceCmd
(
activityInstanceId
));
}
}
public
void
deleteProcessInstance
(
String
processInstanceId
)
{
public
void
endProcessInstance
(
String
processInstanceId
,
String
nonCompletionReason
)
{
commandExecutor
.
execute
(
new
DeleteProcessInstanceCmd
(
processInstanceId
));
commandExecutor
.
execute
(
new
EndProcessInstanceCmd
(
processInstanceId
,
nonCompletionReason
));
}
}
public
ProcessInstance
startProcessInstanceByKey
(
String
processDefinitionKey
)
{
public
ProcessInstance
startProcessInstanceByKey
(
String
processDefinitionKey
)
{
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/BpmnActivityBehavior.java
浏览文件 @
74725f36
...
@@ -98,7 +98,7 @@ public class BpmnActivityBehavior {
...
@@ -98,7 +98,7 @@ public class BpmnActivityBehavior {
log
.
fine
(
"No outgoing sequence flow found for "
+
activityContext
.
getActivity
().
getId
()
log
.
fine
(
"No outgoing sequence flow found for "
+
activityContext
.
getActivity
().
getId
()
+
". Ending execution."
);
+
". Ending execution."
);
}
}
activityContext
.
end
();
activityContext
.
end
ActivityInstance
();
}
}
}
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/NoneEndEventActivity.java
浏览文件 @
74725f36
...
@@ -22,7 +22,7 @@ public class NoneEndEventActivity extends AbstractBpmnActivity {
...
@@ -22,7 +22,7 @@ public class NoneEndEventActivity extends AbstractBpmnActivity {
public
void
start
(
ActivityContext
activityContext
)
throws
Exception
{
public
void
start
(
ActivityContext
activityContext
)
throws
Exception
{
activityContext
.
end
();
activityContext
.
end
ActivityInstance
();
// // TODO: needs cleanup!
// // TODO: needs cleanup!
// ActivityImpl currentActivity = (ActivityImpl) activityContext.getActivity();
// ActivityImpl currentActivity = (ActivityImpl) activityContext.getActivity();
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/RuntimeSession.java
浏览文件 @
74725f36
...
@@ -34,7 +34,7 @@ import org.activiti.engine.impl.persistence.runtime.VariableInstanceEntity;
...
@@ -34,7 +34,7 @@ import org.activiti.engine.impl.persistence.runtime.VariableInstanceEntity;
*/
*/
public
interface
RuntimeSession
{
public
interface
RuntimeSession
{
void
deleteProcessInstance
(
String
processInstanceId
);
void
endProcessInstance
(
String
processInstanceId
,
String
nonCompletionReason
);
ProcessInstanceEntity
findProcessInstanceById
(
String
processInstanceId
);
ProcessInstanceEntity
findProcessInstanceById
(
String
processInstanceId
);
List
<
ProcessInstanceEntity
>
findProcessInstancesByProcessDefintionId
(
String
processDefinitionId
);
List
<
ProcessInstanceEntity
>
findProcessInstancesByProcessDefintionId
(
String
processDefinitionId
);
ProcessInstanceEntity
findSubProcessInstance
(
String
superExecutionId
);
ProcessInstanceEntity
findSubProcessInstance
(
String
superExecutionId
);
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/
Delete
ProcessInstanceCmd.java
→
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/
End
ProcessInstanceCmd.java
浏览文件 @
74725f36
...
@@ -12,32 +12,26 @@
...
@@ -12,32 +12,26 @@
*/
*/
package
org.activiti.engine.impl.cmd
;
package
org.activiti.engine.impl.cmd
;
import
org.activiti.engine.ActivitiException
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.persistence.runtime.ProcessInstanceEntity
;
/**
/**
* @author Joram Barrez
* @author Joram Barrez
*/
*/
public
class
Delete
ProcessInstanceCmd
extends
CmdVoid
{
public
class
End
ProcessInstanceCmd
extends
CmdVoid
{
protected
String
processInstanceId
;
protected
String
processInstanceId
;
protected
String
nonCompletionReason
;
public
DeleteProcessInstanceCmd
(
String
processInstanceId
)
{
public
EndProcessInstanceCmd
(
String
processInstanceId
,
String
nonCompletionReason
)
{
this
.
processInstanceId
=
processInstanceId
;
this
.
processInstanceId
=
processInstanceId
;
this
.
nonCompletionReason
=
nonCompletionReason
;
}
}
public
void
executeVoid
(
CommandContext
commandContext
)
{
public
void
executeVoid
(
CommandContext
commandContext
)
{
ProcessInstanceEntity
processInstance
=
commandContext
commandContext
.
getRuntimeSession
()
.
getRuntimeSession
()
.
findProcessInstanceById
(
processInstanceId
);
.
endProcessInstance
(
processInstanceId
,
nonCompletionReason
);
if
(
processInstance
==
null
)
{
throw
new
ActivitiException
(
"process instance "
+
processInstanceId
+
" does not exist"
);
}
processInstance
.
delete
();
}
}
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/db/DbRepositorySession.java
浏览文件 @
74725f36
...
@@ -96,7 +96,7 @@ public class DbRepositorySession implements Session, RepositorySession {
...
@@ -96,7 +96,7 @@ public class DbRepositorySession implements Session, RepositorySession {
for
(
ProcessInstance
processInstance:
processInstances
)
{
for
(
ProcessInstance
processInstance:
processInstances
)
{
commandContext
commandContext
.
getRuntimeSession
()
.
getRuntimeSession
()
.
delete
ProcessInstance
(
processInstance
.
getId
());
.
end
ProcessInstance
(
processInstance
.
getId
());
}
}
}
}
}
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/db/DbRuntimeSession.java
浏览文件 @
74725f36
...
@@ -43,8 +43,8 @@ public class DbRuntimeSession implements Session, RuntimeSession {
...
@@ -43,8 +43,8 @@ public class DbRuntimeSession implements Session, RuntimeSession {
this
.
dbSqlSession
=
CommandContext
.
getCurrentSession
(
DbSqlSession
.
class
);
this
.
dbSqlSession
=
CommandContext
.
getCurrentSession
(
DbSqlSession
.
class
);
}
}
public
void
deleteProcessInstance
(
String
processInstanceId
)
{
public
void
endProcessInstance
(
String
processInstanceId
,
String
nonCompletionReason
)
{
findProcessInstanceById
(
processInstanceId
).
delete
();
findProcessInstanceById
(
processInstanceId
).
end
();
}
}
public
ProcessInstanceEntity
findProcessInstanceById
(
String
processInstanceId
)
{
public
ProcessInstanceEntity
findProcessInstanceById
(
String
processInstanceId
)
{
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/runtime/ActivityInstanceEntity.java
浏览文件 @
74725f36
...
@@ -70,19 +70,11 @@ public class ActivityInstanceEntity extends ActivityInstanceImpl implements Acti
...
@@ -70,19 +70,11 @@ public class ActivityInstanceEntity extends ActivityInstanceImpl implements Acti
}
}
@Override
@Override
protected
ActivityInstanceEntity
createActivityInstance
(
ActivityImpl
activity
)
{
protected
ActivityInstanceEntity
newActivityInstance
(
ActivityImpl
activity
)
{
ActivityInstanceEntity
activityInstance
=
createAndInsert
(
activity
,
this
);
return
createAndInsert
(
activity
,
this
);
activityInstances
.
add
(
activityInstance
);
return
activityInstance
;
}
@Override
public
void
removeActivityInstance
(
ActivityInstanceImpl
activityInstance
)
{
super
.
removeActivityInstance
(
activityInstance
);
((
ActivityInstanceEntity
)
activityInstance
).
delete
();
}
}
public
void
de
lete
()
{
public
void
de
stroy
()
{
CommandContext
CommandContext
.
getCurrent
()
.
getCurrent
()
.
getRuntimeSession
()
.
getRuntimeSession
()
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/runtime/ProcessInstanceEntity.java
浏览文件 @
74725f36
...
@@ -71,8 +71,14 @@ public class ProcessInstanceEntity extends ProcessInstanceImpl implements Proces
...
@@ -71,8 +71,14 @@ public class ProcessInstanceEntity extends ProcessInstanceImpl implements Proces
((
ActivityInstanceEntity
)
activityInstance
).
delete
();
((
ActivityInstanceEntity
)
activityInstance
).
delete
();
}
}
/** normal end */
@Override
@Override
public
void
remove
()
{
public
void
end
()
{
end
(
null
);
}
/** abnormal end of a process instance */
public
void
end
(
String
nonCompletionReason
)
{
delete
();
delete
();
}
}
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/ActivityContext.java
浏览文件 @
74725f36
...
@@ -13,13 +13,13 @@
...
@@ -13,13 +13,13 @@
package
org.activiti.pvm.activity
;
package
org.activiti.pvm.activity
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
org.activiti.pvm.event.EventContext
;
import
org.activiti.pvm.event.EventContext
;
import
org.activiti.pvm.process.PvmActivity
;
import
org.activiti.pvm.process.PvmActivity
;
import
org.activiti.pvm.process.PvmProcessDefinition
;
import
org.activiti.pvm.process.PvmTransition
;
import
org.activiti.pvm.process.PvmTransition
;
import
org.activiti.pvm.runtime.Pvm
Activity
Instance
;
import
org.activiti.pvm.runtime.Pvm
Process
Instance
;
/**
/**
...
@@ -27,25 +27,26 @@ import org.activiti.pvm.runtime.PvmActivityInstance;
...
@@ -27,25 +27,26 @@ import org.activiti.pvm.runtime.PvmActivityInstance;
*/
*/
public
interface
ActivityContext
extends
EventContext
{
public
interface
ActivityContext
extends
EventContext
{
void
take
(
PvmTransition
transition
);
// runtime structure methods
DelegateActivityInstance
getActivityInstance
();
void
end
();
List
<
PvmTransition
>
getOutgoingTransitions
();
PvmTransition
getOutgoingTransition
(
String
signalName
);
List
<
PvmTransition
>
getIncomingTransitions
();
List
<
PvmActivity
>
getActivities
();
// execution operations
void
take
(
PvmTransition
transition
);
void
executeActivity
(
PvmActivity
startActivity
);
void
endActivityInstance
();
void
endProcessInstance
();
void
keepAlive
();
PvmProcessInstance
createSubProcessInstance
(
PvmProcessDefinition
processDefinition
);
// user variables
void
setVariable
(
String
variableName
,
Object
value
);
void
setVariable
(
String
variableName
,
Object
value
);
Object
getVariable
(
String
variableName
);
Object
getVariable
(
String
variableName
);
Map
<
String
,
Object
>
getVariables
();
Map
<
String
,
Object
>
getVariables
();
PvmActivity
getActivity
();
// scoped activity variables
Object
getSystemVariable
(
String
variableName
);
void
setSystemVariable
(
String
variableName
,
Object
value
);
PvmActivityInstance
getActivityInstance
();
// activity and whole process definition model
PvmActivity
getActivity
();
}
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/CompositeActivityBehavior.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.pvm.activity
;
/**
* @author Tom Baeyens
*/
public
interface
CompositeActivityBehavior
extends
ActivityBehavior
{
void
activityInstanceEnded
(
ActivityContext
activityContext
)
throws
Exception
;
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/DelegateActivityInstance.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.pvm.activity
;
import
java.io.Serializable
;
import
java.util.Set
;
/**
* @author Tom Baeyens
*/
public
interface
DelegateActivityInstance
extends
Serializable
{
Set
<?
extends
DelegateActivityInstance
>
getActivityInstances
();
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/activity/SubProcessActivityBehavior.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.pvm.activity
;
/**
* @author Tom Baeyens
*/
public
interface
SubProcessActivityBehavior
extends
ActivityBehavior
{
void
subProcessEnded
(
ActivityContext
activityContext
)
throws
Exception
;
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ActivityImpl.java
浏览文件 @
74725f36
...
@@ -30,6 +30,7 @@ import org.activiti.pvm.process.PvmTransition;
...
@@ -30,6 +30,7 @@ import org.activiti.pvm.process.PvmTransition;
*/
*/
public
class
ActivityImpl
extends
ScopeImpl
implements
PvmActivity
{
public
class
ActivityImpl
extends
ScopeImpl
implements
PvmActivity
{
private
static
final
long
serialVersionUID
=
1L
;
protected
List
<
TransitionImpl
>
outgoingTransitions
=
new
ArrayList
<
TransitionImpl
>();
protected
List
<
TransitionImpl
>
outgoingTransitions
=
new
ArrayList
<
TransitionImpl
>();
protected
Map
<
String
,
TransitionImpl
>
namedOutgoingTransitions
=
new
HashMap
<
String
,
TransitionImpl
>();
protected
Map
<
String
,
TransitionImpl
>
namedOutgoingTransitions
=
new
HashMap
<
String
,
TransitionImpl
>();
protected
List
<
TransitionImpl
>
incomingTransitions
=
new
ArrayList
<
TransitionImpl
>();
protected
List
<
TransitionImpl
>
incomingTransitions
=
new
ArrayList
<
TransitionImpl
>();
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ProcessDefinitionImpl.java
浏览文件 @
74725f36
...
@@ -23,6 +23,8 @@ import org.activiti.pvm.process.PvmProcessDefinition;
...
@@ -23,6 +23,8 @@ import org.activiti.pvm.process.PvmProcessDefinition;
*/
*/
public
class
ProcessDefinitionImpl
extends
ScopeImpl
implements
PvmProcessDefinition
{
public
class
ProcessDefinitionImpl
extends
ScopeImpl
implements
PvmProcessDefinition
{
private
static
final
long
serialVersionUID
=
1L
;
protected
ActivityImpl
initial
;
protected
ActivityImpl
initial
;
public
ProcessDefinitionImpl
(
String
id
)
{
public
ProcessDefinitionImpl
(
String
id
)
{
...
@@ -34,6 +36,8 @@ public class ProcessDefinitionImpl extends ScopeImpl implements PvmProcessDefini
...
@@ -34,6 +36,8 @@ public class ProcessDefinitionImpl extends ScopeImpl implements PvmProcessDefini
return
new
ProcessInstanceImpl
(
this
);
return
new
ProcessInstanceImpl
(
this
);
}
}
// getters and setters //////////////////////////////////////////////////////
public
ActivityImpl
getInitial
()
{
public
ActivityImpl
getInitial
()
{
return
initial
;
return
initial
;
}
}
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ProcessElementImpl.java
浏览文件 @
74725f36
...
@@ -20,6 +20,7 @@ import java.util.List;
...
@@ -20,6 +20,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
org.activiti.pvm.event.EventListener
;
import
org.activiti.pvm.event.EventListener
;
import
org.activiti.pvm.process.PvmProcessElement
;
/** common properties for process definition, activity and transition
/** common properties for process definition, activity and transition
...
@@ -27,7 +28,9 @@ import org.activiti.pvm.event.EventListener;
...
@@ -27,7 +28,9 @@ import org.activiti.pvm.event.EventListener;
*
*
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
class
ProcessElementImpl
{
public
class
ProcessElementImpl
implements
PvmProcessElement
{
private
static
final
long
serialVersionUID
=
1L
;
protected
String
id
;
protected
String
id
;
protected
ProcessDefinitionImpl
processDefinition
;
protected
ProcessDefinitionImpl
processDefinition
;
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/ScopeImpl.java
浏览文件 @
74725f36
...
@@ -19,12 +19,15 @@ import java.util.List;
...
@@ -19,12 +19,15 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
org.activiti.pvm.PvmException
;
import
org.activiti.pvm.PvmException
;
import
org.activiti.pvm.process.PvmScope
;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
class
ScopeImpl
extends
ProcessElementImpl
{
public
abstract
class
ScopeImpl
extends
ProcessElementImpl
implements
PvmScope
{
private
static
final
long
serialVersionUID
=
1L
;
protected
List
<
ActivityImpl
>
activities
=
new
ArrayList
<
ActivityImpl
>();
protected
List
<
ActivityImpl
>
activities
=
new
ArrayList
<
ActivityImpl
>();
protected
Map
<
String
,
ActivityImpl
>
namedActivities
=
new
HashMap
<
String
,
ActivityImpl
>();
protected
Map
<
String
,
ActivityImpl
>
namedActivities
=
new
HashMap
<
String
,
ActivityImpl
>();
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/process/TransitionImpl.java
浏览文件 @
74725f36
...
@@ -23,6 +23,8 @@ import org.activiti.pvm.process.PvmTransition;
...
@@ -23,6 +23,8 @@ import org.activiti.pvm.process.PvmTransition;
*/
*/
public
class
TransitionImpl
extends
ProcessElementImpl
implements
PvmTransition
{
public
class
TransitionImpl
extends
ProcessElementImpl
implements
PvmTransition
{
private
static
final
long
serialVersionUID
=
1L
;
protected
ActivityImpl
source
;
protected
ActivityImpl
source
;
protected
ActivityImpl
destination
;
protected
ActivityImpl
destination
;
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ActivityInstanceImpl.java
浏览文件 @
74725f36
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
package
org.activiti.pvm.impl.runtime
;
package
org.activiti.pvm.impl.runtime
;
import
org.activiti.pvm.activity.DelegateActivityInstance
;
import
org.activiti.pvm.impl.process.ActivityImpl
;
import
org.activiti.pvm.impl.process.ActivityImpl
;
import
org.activiti.pvm.runtime.PvmActivityInstance
;
import
org.activiti.pvm.runtime.PvmActivityInstance
;
...
@@ -20,7 +21,9 @@ import org.activiti.pvm.runtime.PvmActivityInstance;
...
@@ -20,7 +21,9 @@ import org.activiti.pvm.runtime.PvmActivityInstance;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
class
ActivityInstanceImpl
extends
ScopeInstanceImpl
implements
PvmActivityInstance
{
public
class
ActivityInstanceImpl
extends
ScopeInstanceImpl
implements
PvmActivityInstance
,
DelegateActivityInstance
{
private
static
final
long
serialVersionUID
=
1L
;
protected
ActivityImpl
activity
;
protected
ActivityImpl
activity
;
protected
ExecutionContextImpl
executionContext
;
protected
ExecutionContextImpl
executionContext
;
...
@@ -35,6 +38,12 @@ public class ActivityInstanceImpl extends ScopeInstanceImpl implements PvmActivi
...
@@ -35,6 +38,12 @@ public class ActivityInstanceImpl extends ScopeInstanceImpl implements PvmActivi
this
.
parent
=
parent
;
this
.
parent
=
parent
;
}
}
public
void
create
()
{
}
public
void
destroy
()
{
}
public
void
signal
(
String
signalName
,
Object
signalData
)
{
public
void
signal
(
String
signalName
,
Object
signalData
)
{
ExecutionContextImpl
.
signal
(
this
,
signalName
,
signalData
);
ExecutionContextImpl
.
signal
(
this
,
signalName
,
signalData
);
}
}
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ExecutionContextImpl.java
浏览文件 @
74725f36
...
@@ -21,6 +21,7 @@ import java.util.logging.Logger;
...
@@ -21,6 +21,7 @@ import java.util.logging.Logger;
import
org.activiti.pvm.PvmException
;
import
org.activiti.pvm.PvmException
;
import
org.activiti.pvm.activity.ActivityBehavior
;
import
org.activiti.pvm.activity.ActivityBehavior
;
import
org.activiti.pvm.activity.ActivityContext
;
import
org.activiti.pvm.activity.ActivityContext
;
import
org.activiti.pvm.activity.CompositeActivityBehavior
;
import
org.activiti.pvm.activity.SignallableActivityBehaviour
;
import
org.activiti.pvm.activity.SignallableActivityBehaviour
;
import
org.activiti.pvm.event.Event
;
import
org.activiti.pvm.event.Event
;
import
org.activiti.pvm.event.EventContext
;
import
org.activiti.pvm.event.EventContext
;
...
@@ -29,7 +30,9 @@ import org.activiti.pvm.impl.process.ActivityImpl;
...
@@ -29,7 +30,9 @@ import org.activiti.pvm.impl.process.ActivityImpl;
import
org.activiti.pvm.impl.process.ProcessElementImpl
;
import
org.activiti.pvm.impl.process.ProcessElementImpl
;
import
org.activiti.pvm.impl.process.TransitionImpl
;
import
org.activiti.pvm.impl.process.TransitionImpl
;
import
org.activiti.pvm.process.PvmActivity
;
import
org.activiti.pvm.process.PvmActivity
;
import
org.activiti.pvm.process.PvmProcessDefinition
;
import
org.activiti.pvm.process.PvmTransition
;
import
org.activiti.pvm.process.PvmTransition
;
import
org.activiti.pvm.runtime.PvmProcessInstance
;
/**
/**
...
@@ -49,6 +52,7 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -49,6 +52,7 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
private
static
final
AtomicOperation
ACTIVITY_END
=
new
ActivityEnd
();
private
static
final
AtomicOperation
ACTIVITY_END
=
new
ActivityEnd
();
private
static
final
AtomicOperation
PROCESS_END
=
new
ProcessEnd
();
private
static
final
AtomicOperation
PROCESS_END
=
new
ProcessEnd
();
protected
ActivityImpl
activity
;
protected
ProcessInstanceImpl
processInstance
;
protected
ProcessInstanceImpl
processInstance
;
protected
ActivityInstanceImpl
activityInstance
;
protected
ActivityInstanceImpl
activityInstance
;
...
@@ -62,6 +66,8 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -62,6 +66,8 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
protected
String
signalName
;
protected
String
signalName
;
protected
Object
signalData
;
protected
Object
signalData
;
protected
String
endReason
;
protected
TransitionImpl
transition
;
protected
TransitionImpl
transition
;
protected
AtomicOperation
nextAtomicOperation
=
null
;
protected
AtomicOperation
nextAtomicOperation
=
null
;
...
@@ -85,6 +91,12 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -85,6 +91,12 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
executionContext
.
perform
(
ACTIVITY_SIGNAL
);
executionContext
.
perform
(
ACTIVITY_SIGNAL
);
}
}
public
static
void
endProcessInstance
(
ProcessInstanceImpl
processInstance
,
String
endReason
)
{
log
.
fine
(
"ending "
+
processInstance
+
" because "
+
endReason
);
ExecutionContextImpl
executionContext
=
new
ExecutionContextImpl
();
executionContext
.
scopeInstance
=
processInstance
;
}
public
void
take
(
PvmTransition
transition
)
{
public
void
take
(
PvmTransition
transition
)
{
if
(
transition
==
null
)
{
if
(
transition
==
null
)
{
throw
new
PvmException
(
"transition is null"
);
throw
new
PvmException
(
"transition is null"
);
...
@@ -94,11 +106,16 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -94,11 +106,16 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
fireEvent
(
activityInstance
.
activity
,
Event
.
ACTIVITY_END
,
TRANSITION_ACTIVITY_END
);
fireEvent
(
activityInstance
.
activity
,
Event
.
ACTIVITY_END
,
TRANSITION_ACTIVITY_END
);
}
}
public
void
end
()
{
public
void
end
ActivityInstance
()
{
log
.
fine
(
"ending "
+
activityInstance
);
log
.
fine
(
"ending "
+
activityInstance
);
fireEvent
(
activityInstance
.
activity
,
Event
.
ACTIVITY_END
,
ACTIVITY_END
);
fireEvent
(
activityInstance
.
activity
,
Event
.
ACTIVITY_END
,
ACTIVITY_END
);
}
}
public
void
endProcessInstance
()
{
log
.
fine
(
"ending "
+
processInstance
);
fireEvent
(
processInstance
.
getProcessDefinition
(),
Event
.
PROCESS_END
,
PROCESS_END
);
}
public
void
executeTimerNestedActivity
(
ActivityImpl
borderEventActivity
)
{
public
void
executeTimerNestedActivity
(
ActivityImpl
borderEventActivity
)
{
throw
new
UnsupportedOperationException
(
"please implement me"
);
throw
new
UnsupportedOperationException
(
"please implement me"
);
}
}
...
@@ -245,18 +262,33 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -245,18 +262,33 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
protected
static
class
ActivityEnd
implements
AtomicOperation
{
protected
static
class
ActivityEnd
implements
AtomicOperation
{
public
void
perform
(
ExecutionContextImpl
executionContext
)
{
public
void
perform
(
ExecutionContextImpl
executionContext
)
{
executionContext
.
activityInstance
.
setEnded
(
true
);
ActivityInstanceImpl
activityInstance
=
executionContext
.
activityInstance
;
ScopeInstanceImpl
parent
=
executionContext
.
activityInstance
.
getParent
();
activityInstance
.
setEnded
(
true
);
parent
.
removeActivityInstance
(
executionContext
.
activityInstance
);
ScopeInstanceImpl
parent
=
activityInstance
.
getParent
();
activityInstance
.
destroy
();
parent
.
removeActivityInstance
(
activityInstance
);
executionContext
.
scopeInstance
=
parent
;
executionContext
.
scopeInstance
=
parent
;
if
(
parent
.
getActivityInstances
().
isEmpty
())
{
if
(
parent
instanceof
ProcessInstanceImpl
)
{
if
(
parent
instanceof
ProcessInstanceImpl
)
{
if
(
parent
.
getActivityInstances
().
isEmpty
())
{
executionContext
.
activityInstance
=
null
;
executionContext
.
activityInstance
=
null
;
executionContext
.
fireEvent
(
parent
.
getScope
(),
Event
.
PROCESS_END
,
PROCESS_END
);
executionContext
.
fireEvent
(
parent
.
getScope
(),
Event
.
PROCESS_END
,
PROCESS_END
);
}
}
else
{
}
else
{
executionContext
.
activityInstance
=
(
ActivityInstanceImpl
)
parent
;
executionContext
.
activityInstance
=
(
ActivityInstanceImpl
)
parent
;
executionContext
.
end
();
ActivityImpl
activity
=
activityInstance
.
getActivity
();
ActivityBehavior
activityBehavior
=
activity
.
getActivityBehavior
();
if
(
activityBehavior
instanceof
CompositeActivityBehavior
)
{
try
{
((
CompositeActivityBehavior
)
activityBehavior
).
activityInstanceEnded
(
executionContext
);
}
catch
(
RuntimeException
e
)
{
log
.
log
(
Level
.
SEVERE
,
getDelegationExceptionMessage
(
activity
,
"activityInstanceEnded"
,
e
),
e
);
throw
e
;
}
catch
(
Exception
e
)
{
String
delegationExceptionMessage
=
getDelegationExceptionMessage
(
activity
,
"activityInstanceEnded"
,
e
);
log
.
log
(
Level
.
SEVERE
,
delegationExceptionMessage
,
e
);
throw
new
PvmException
(
delegationExceptionMessage
,
e
);
}
}
}
}
}
}
}
...
@@ -265,12 +297,21 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -265,12 +297,21 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
protected
static
class
ProcessEnd
implements
AtomicOperation
{
protected
static
class
ProcessEnd
implements
AtomicOperation
{
public
void
perform
(
ExecutionContextImpl
executionContext
)
{
public
void
perform
(
ExecutionContextImpl
executionContext
)
{
ProcessInstanceImpl
processInstance
=
(
ProcessInstanceImpl
)
executionContext
.
scopeInstance
;
ProcessInstanceImpl
processInstance
=
(
ProcessInstanceImpl
)
executionContext
.
scopeInstance
;
for
(
ActivityInstanceImpl
activityInstance:
processInstance
.
getActivityInstances
())
{
destroyActivityInstance
(
activityInstance
);
}
processInstance
.
setEnded
(
true
);
processInstance
.
setEnded
(
true
);
processInstance
.
remove
();
processInstance
.
destroy
();
}
private
void
destroyActivityInstance
(
ActivityInstanceImpl
activityInstance
)
{
for
(
ActivityInstanceImpl
nestedActivityInstance:
activityInstance
.
getActivityInstances
())
{
destroyActivityInstance
(
nestedActivityInstance
);
}
activityInstance
.
destroy
();
}
}
}
}
//
event context methods
////////////////////////////////////////////////////
//
user variables ///////
////////////////////////////////////////////////////
public
void
setVariable
(
String
variableName
,
Object
value
)
{
public
void
setVariable
(
String
variableName
,
Object
value
)
{
scopeInstance
.
setVariable
(
variableName
,
value
);
scopeInstance
.
setVariable
(
variableName
,
value
);
...
@@ -284,6 +325,16 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -284,6 +325,16 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
return
scopeInstance
.
getVariables
();
return
scopeInstance
.
getVariables
();
}
}
// system variables /////////////////////////////////////////////////////////
public
void
setSystemVariable
(
String
variableName
,
Object
value
)
{
scopeInstance
.
setSystemVariable
(
activity
,
variableName
,
value
);
}
public
Object
getSystemVariable
(
String
variableName
)
{
return
scopeInstance
.
getSystemVariable
(
activity
,
variableName
);
}
// activity context methods /////////////////////////////////////////////////
// activity context methods /////////////////////////////////////////////////
public
PvmActivity
getActivity
()
{
public
PvmActivity
getActivity
()
{
...
@@ -320,4 +371,15 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
...
@@ -320,4 +371,15 @@ public class ExecutionContextImpl implements EventContext, ActivityContext {
public
List
<
PvmActivity
>
getActivities
()
{
public
List
<
PvmActivity
>
getActivities
()
{
return
(
List
)
activityInstance
.
getActivity
().
getActivities
();
return
(
List
)
activityInstance
.
getActivity
().
getActivities
();
}
}
public
PvmProcessInstance
createSubProcessInstance
(
PvmProcessDefinition
processDefinition
)
{
return
null
;
}
public
void
executeActivity
(
PvmActivity
startActivity
)
{
}
public
void
keepAlive
()
{
}
}
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ProcessInstanceImpl.java
浏览文件 @
74725f36
...
@@ -25,6 +25,8 @@ import org.activiti.pvm.runtime.PvmProcessInstance;
...
@@ -25,6 +25,8 @@ import org.activiti.pvm.runtime.PvmProcessInstance;
*/
*/
public
class
ProcessInstanceImpl
extends
ScopeInstanceImpl
implements
PvmProcessInstance
{
public
class
ProcessInstanceImpl
extends
ScopeInstanceImpl
implements
PvmProcessInstance
{
private
static
final
long
serialVersionUID
=
1L
;
protected
ProcessInstanceImpl
()
{
protected
ProcessInstanceImpl
()
{
}
}
...
@@ -36,7 +38,7 @@ public class ProcessInstanceImpl extends ScopeInstanceImpl implements PvmProcess
...
@@ -36,7 +38,7 @@ public class ProcessInstanceImpl extends ScopeInstanceImpl implements PvmProcess
ExecutionContextImpl
.
startProcessInstance
(
this
);
ExecutionContextImpl
.
startProcessInstance
(
this
);
}
}
public
void
remove
()
{
public
void
destroy
()
{
}
}
public
List
<
String
>
findActivityIds
()
{
public
List
<
String
>
findActivityIds
()
{
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/impl/runtime/ScopeInstanceImpl.java
浏览文件 @
74725f36
...
@@ -32,11 +32,14 @@ import org.activiti.pvm.runtime.PvmScopeInstance;
...
@@ -32,11 +32,14 @@ import org.activiti.pvm.runtime.PvmScopeInstance;
*/
*/
public
class
ScopeInstanceImpl
implements
PvmScopeInstance
{
public
class
ScopeInstanceImpl
implements
PvmScopeInstance
{
private
static
final
long
serialVersionUID
=
1L
;
protected
ProcessDefinitionImpl
processDefinition
;
protected
ProcessDefinitionImpl
processDefinition
;
protected
ScopeImpl
scope
;
protected
ScopeImpl
scope
;
protected
ScopeInstanceImpl
parent
;
protected
ScopeInstanceImpl
parent
;
protected
Set
<
ActivityInstanceImpl
>
activityInstances
=
new
HashSet
<
ActivityInstanceImpl
>();
protected
Set
<
ActivityInstanceImpl
>
activityInstances
=
new
HashSet
<
ActivityInstanceImpl
>();
protected
Map
<
String
,
Object
>
variables
;
protected
Map
<
String
,
Object
>
variables
;
protected
Map
<
String
,
Object
>
systemVariables
;
protected
boolean
isEnded
;
protected
boolean
isEnded
;
protected
ScopeInstanceImpl
()
{
protected
ScopeInstanceImpl
()
{
...
@@ -48,12 +51,17 @@ public class ScopeInstanceImpl implements PvmScopeInstance {
...
@@ -48,12 +51,17 @@ public class ScopeInstanceImpl implements PvmScopeInstance {
}
}
protected
ActivityInstanceImpl
createActivityInstance
(
ActivityImpl
activity
)
{
protected
ActivityInstanceImpl
createActivityInstance
(
ActivityImpl
activity
)
{
ActivityInstanceImpl
activityInstance
=
new
ActivityInstanceImpl
(
activity
,
this
);
ActivityInstanceImpl
activityInstance
=
new
ActivityInstance
(
activity
);
activityInstances
.
add
(
activityInstance
);
activityInstances
.
add
(
activityInstance
);
return
activityInstance
;
return
activityInstance
;
}
}
protected
ActivityInstanceImpl
newActivityInstance
(
ActivityImpl
activity
)
{
return
new
ActivityInstanceImpl
(
activity
,
this
);
}
public
void
removeActivityInstance
(
ActivityInstanceImpl
activityInstance
)
{
public
void
removeActivityInstance
(
ActivityInstanceImpl
activityInstance
)
{
activityInstance
.
destroy
();
activityInstances
.
remove
(
activityInstance
);
activityInstances
.
remove
(
activityInstance
);
activityInstance
.
setParent
(
null
);
activityInstance
.
setParent
(
null
);
}
}
...
@@ -91,7 +99,7 @@ public class ScopeInstanceImpl implements PvmScopeInstance {
...
@@ -91,7 +99,7 @@ public class ScopeInstanceImpl implements PvmScopeInstance {
}
}
//
variables /////
///////////////////////////////////////////////////////////
//
user variables
///////////////////////////////////////////////////////////
public
boolean
hasVariable
(
String
variableName
)
{
public
boolean
hasVariable
(
String
variableName
)
{
if
(
getVariables
().
containsKey
(
variableName
))
{
if
(
getVariables
().
containsKey
(
variableName
))
{
...
@@ -157,6 +165,28 @@ public class ScopeInstanceImpl implements PvmScopeInstance {
...
@@ -157,6 +165,28 @@ public class ScopeInstanceImpl implements PvmScopeInstance {
}
}
}
}
// system variables /////////////////////////////////////////////////////////
public
void
setSystemVariable
(
ActivityImpl
activity
,
String
variableName
,
Object
value
)
{
if
(
systemVariables
==
null
)
{
systemVariables
=
new
HashMap
<
String
,
Object
>();
}
String
systemVariableKey
=
getSystemVariableKey
(
activity
,
variableName
);
systemVariables
.
put
(
systemVariableKey
,
value
);
}
public
Object
getSystemVariable
(
ActivityImpl
activity
,
String
variableName
)
{
if
(
systemVariables
==
null
)
{
return
null
;
}
String
systemVariableKey
=
getSystemVariableKey
(
activity
,
variableName
);
return
systemVariables
.
get
(
systemVariableKey
);
}
protected
String
getSystemVariableKey
(
ActivityImpl
activity
,
String
variableName
)
{
return
"["
+
activity
.
getId
()+
"|"
+
variableName
+
"]"
;
}
// end //////////////////////////////////////////////////////////////////////
// end //////////////////////////////////////////////////////////////////////
public
void
end
()
{
public
void
end
()
{
...
...
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmActivity.java
浏览文件 @
74725f36
...
@@ -13,14 +13,17 @@
...
@@ -13,14 +13,17 @@
package
org.activiti.pvm.process
;
package
org.activiti.pvm.process
;
import
java.util.List
;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
interface
PvmActivity
{
public
interface
PvmActivity
extends
PvmScope
{
public
String
getId
();
PvmScope
getParent
();
Object
getProperty
(
String
name
);
List
<?
extends
PvmTransition
>
getIncomingTransitions
(
);
List
<?
extends
PvmTransition
>
getOutgoingTransitions
();
}
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmProcessDefinition.java
浏览文件 @
74725f36
...
@@ -19,10 +19,10 @@ import org.activiti.pvm.runtime.PvmProcessInstance;
...
@@ -19,10 +19,10 @@ import org.activiti.pvm.runtime.PvmProcessInstance;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
interface
PvmProcessDefinition
{
public
interface
PvmProcessDefinition
extends
PvmScope
{
PvmProcessInstance
createProcessInstance
();
PvmProcessInstance
createProcessInstance
();
Object
getProperty
(
String
name
);
PvmActivity
getInitial
(
);
}
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmProcessElement.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.pvm.process
;
import
java.io.Serializable
;
/**
* @author Tom Baeyens
*/
public
interface
PvmProcessElement
extends
Serializable
{
String
getId
();
PvmProcessDefinition
getProcessDefinition
();
Object
getProperty
(
String
name
);
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmScope.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.pvm.process
;
import
java.util.List
;
/**
* @author Tom Baeyens
*/
public
interface
PvmScope
extends
PvmProcessElement
{
List
<?
extends
PvmActivity
>
getActivities
();
PvmActivity
findActivity
(
String
activityId
);
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/process/PvmTransition.java
浏览文件 @
74725f36
...
@@ -14,12 +14,13 @@
...
@@ -14,12 +14,13 @@
package
org.activiti.pvm.process
;
package
org.activiti.pvm.process
;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
interface
PvmTransition
{
public
interface
PvmTransition
extends
PvmProcessElement
{
public
String
getId
();
PvmActivity
getSource
();
Object
getProperty
(
String
name
);
PvmActivity
getDestination
(
);
}
}
modules/activiti-pvm/src/main/java/org/activiti/pvm/runtime/PvmScopeInstance.java
浏览文件 @
74725f36
...
@@ -13,13 +13,14 @@
...
@@ -13,13 +13,14 @@
package
org.activiti.pvm.runtime
;
package
org.activiti.pvm.runtime
;
import
java.io.Serializable
;
import
java.util.Map
;
import
java.util.Map
;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
interface
PvmScopeInstance
{
public
interface
PvmScopeInstance
extends
Serializable
{
boolean
hasVariable
(
String
variableName
);
boolean
hasVariable
(
String
variableName
);
...
...
modules/activiti-pvm/src/test/java/org/activiti/pvm/test/PvmConcurrencyTest.java
浏览文件 @
74725f36
...
@@ -20,6 +20,7 @@ import org.activiti.pvm.process.PvmProcessDefinition;
...
@@ -20,6 +20,7 @@ import org.activiti.pvm.process.PvmProcessDefinition;
import
org.activiti.pvm.runtime.PvmActivityInstance
;
import
org.activiti.pvm.runtime.PvmActivityInstance
;
import
org.activiti.pvm.runtime.PvmProcessInstance
;
import
org.activiti.pvm.runtime.PvmProcessInstance
;
import
org.activiti.test.pvm.activities.Automatic
;
import
org.activiti.test.pvm.activities.Automatic
;
import
org.activiti.test.pvm.activities.End
;
import
org.activiti.test.pvm.activities.ParallelGateway
;
import
org.activiti.test.pvm.activities.ParallelGateway
;
import
org.activiti.test.pvm.activities.WaitState
;
import
org.activiti.test.pvm.activities.WaitState
;
import
org.junit.Test
;
import
org.junit.Test
;
...
@@ -56,14 +57,14 @@ public class PvmConcurrencyTest extends PvmTestCase {
...
@@ -56,14 +57,14 @@ public class PvmConcurrencyTest extends PvmTestCase {
.
transition
(
"end"
)
.
transition
(
"end"
)
.
endActivity
()
.
endActivity
()
.
createActivity
(
"end"
)
.
createActivity
(
"end"
)
.
behavior
(
new
WaitState
())
.
behavior
(
new
End
())
.
endActivity
()
.
endActivity
()
.
buildProcessDefinition
();
.
buildProcessDefinition
();
PvmProcessInstance
processInstance
=
processDefinition
.
createProcessInstance
();
PvmProcessInstance
processInstance
=
processDefinition
.
createProcessInstance
();
processInstance
.
start
();
processInstance
.
start
();
assert
NotNull
(
processInstance
.
findActivityInstance
(
"end"
));
assert
True
(
processInstance
.
isEnded
(
));
}
}
@Test
@Test
...
...
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/Automatic.java
浏览文件 @
74725f36
...
@@ -24,7 +24,7 @@ import org.activiti.pvm.process.PvmTransition;
...
@@ -24,7 +24,7 @@ import org.activiti.pvm.process.PvmTransition;
public
class
Automatic
implements
ActivityBehavior
{
public
class
Automatic
implements
ActivityBehavior
{
public
void
start
(
ActivityContext
activityExecutionContext
)
{
public
void
start
(
ActivityContext
activityExecutionContext
)
{
PvmTransition
transition
=
activityExecutionContext
.
getOutgoingTransitions
().
get
(
0
);
PvmTransition
transition
=
activityExecutionContext
.
get
Activity
().
get
OutgoingTransitions
().
get
(
0
);
activityExecutionContext
.
take
(
transition
);
activityExecutionContext
.
take
(
transition
);
}
}
...
...
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/EmbeddedSubProcess.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.test.pvm.activities
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.activiti.pvm.activity.ActivityContext
;
import
org.activiti.pvm.activity.CompositeActivityBehavior
;
import
org.activiti.pvm.activity.SignallableActivityBehaviour
;
import
org.activiti.pvm.process.PvmActivity
;
import
org.activiti.pvm.process.PvmTransition
;
/**
* @author Tom Baeyens
*/
public
class
EmbeddedSubProcess
implements
CompositeActivityBehavior
,
SignallableActivityBehaviour
{
public
void
start
(
ActivityContext
activityContext
)
throws
Exception
{
List
<
PvmActivity
>
startActivities
=
new
ArrayList
<
PvmActivity
>();
for
(
PvmActivity
activity:
activityContext
.
getActivity
().
getActivities
())
{
if
(
activity
.
getIncomingTransitions
().
isEmpty
())
{
startActivities
.
add
(
activity
);
}
}
for
(
PvmActivity
startActivity:
startActivities
)
{
activityContext
.
executeActivity
(
startActivity
);
}
}
public
void
activityInstanceEnded
(
ActivityContext
activityContext
)
throws
Exception
{
if
(
activityContext
.
getActivityInstance
().
getActivityInstances
().
isEmpty
())
{
for
(
PvmTransition
transition:
activityContext
.
getActivity
().
getOutgoingTransitions
())
{
activityContext
.
take
(
transition
);
}
}
}
// used by timers
public
void
signal
(
ActivityContext
activityContext
,
String
signalName
,
Object
signalData
)
throws
Exception
{
PvmActivity
timerActivity
=
activityContext
.
getActivity
().
findActivity
(
signalName
);
boolean
isInterrupting
=
(
Boolean
)
timerActivity
.
getProperty
(
"isInterrupting"
);
if
(!
isInterrupting
)
{
activityContext
.
keepAlive
();
}
for
(
PvmTransition
transition:
timerActivity
.
getOutgoingTransitions
())
{
activityContext
.
take
(
transition
);
}
}
}
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/End.java
浏览文件 @
74725f36
...
@@ -23,7 +23,7 @@ import org.activiti.pvm.activity.ActivityContext;
...
@@ -23,7 +23,7 @@ import org.activiti.pvm.activity.ActivityContext;
public
class
End
implements
ActivityBehavior
{
public
class
End
implements
ActivityBehavior
{
public
void
start
(
ActivityContext
activityContext
)
throws
Exception
{
public
void
start
(
ActivityContext
activityContext
)
throws
Exception
{
activityContext
.
end
();
activityContext
.
end
ActivityInstance
();
}
}
}
}
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/ParallelGateway.java
浏览文件 @
74725f36
...
@@ -12,39 +12,37 @@
...
@@ -12,39 +12,37 @@
*/
*/
package
org.activiti.test.pvm.activities
;
package
org.activiti.test.pvm.activities
;
import
java.util.List
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
org.activiti.pvm.activity.ActivityBehavior
;
import
org.activiti.pvm.activity.ActivityBehavior
;
import
org.activiti.pvm.activity.ActivityContext
;
import
org.activiti.pvm.activity.ActivityContext
;
import
org.activiti.pvm.process.PvmTransition
;
/**
/**
* @author Tom Baeyens
* @author Tom Baeyens
*/
*/
public
class
ParallelGateway
implements
ActivityBehavior
{
public
class
ParallelGateway
implements
ActivityBehavior
{
private
static
Logger
log
=
Logger
.
getLogger
(
ParallelGateway
.
class
.
getName
());
public
void
start
(
ActivityContext
activityContext
)
{
int
incomingTransitionsSize
=
activityContext
.
getActivity
().
getIncomingTransitions
().
size
();
if
(
incomingTransitionsSize
==
1
)
{
activate
(
activityContext
);
}
else
{
//incomingTransitionsSize > 1
Integer
joinCount
=
(
Integer
)
activityContext
.
getSystemVariable
(
"joinCount"
);
if
(
joinCount
==
null
)
{
activityContext
.
setSystemVariable
(
"joinCount"
,
new
Integer
(
1
));
}
else
{
joinCount
=
joinCount
+
1
;
if
(
joinCount
==
incomingTransitionsSize
)
{
activate
(
activityContext
);
}
}
}
}
public
void
start
(
ActivityContext
activityExecutionContext
)
{
protected
void
activate
(
ActivityContext
activityContext
)
{
// Activity activity = execution.getActivity();
for
(
PvmTransition
transition:
activityContext
.
getActivity
().
getOutgoingTransitions
())
{
//
activityContext
.
take
(
transition
);
// List<Transition> outgoingTransitions = execution.getOutgoingTransitions();
}
//
// ConcurrencyController concurrencyController = new ConcurrencyController(execution);
// concurrencyController.inactivate();
//
// List<ActivityExecution> joinedExecutions = concurrencyController.findInactiveConcurrentExecutions(activity);
//
// int nbrOfExecutionsToJoin = execution.getIncomingTransitions().size();
// int nbrOfExecutionsJoined = joinedExecutions.size();
//
// if (nbrOfExecutionsJoined==nbrOfExecutionsToJoin) {
// log.fine("parallel gateway '"+activity.getId()+"' activates: "+nbrOfExecutionsJoined+" of "+nbrOfExecutionsToJoin+" joined");
// concurrencyController.takeAll(outgoingTransitions, joinedExecutions);
//
// } else if (log.isLoggable(Level.FINE)){
// log.fine("parallel gateway '"+activity.getId()+"' does not activate: "+nbrOfExecutionsJoined+" of "+nbrOfExecutionsToJoin+" joined");
// }
}
}
}
}
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/ReusableSubProcess.java
0 → 100644
浏览文件 @
74725f36
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.activiti.test.pvm.activities
;
import
org.activiti.pvm.activity.ActivityContext
;
import
org.activiti.pvm.activity.SubProcessActivityBehavior
;
import
org.activiti.pvm.process.PvmProcessDefinition
;
import
org.activiti.pvm.process.PvmTransition
;
import
org.activiti.pvm.runtime.PvmProcessInstance
;
/**
* @author Tom Baeyens
*/
public
class
ReusableSubProcess
implements
SubProcessActivityBehavior
{
public
void
start
(
ActivityContext
activityContext
)
throws
Exception
{
PvmProcessDefinition
processDefinition
=
null
;
PvmProcessInstance
subProcessInstance
=
activityContext
.
createSubProcessInstance
(
processDefinition
);
// inject information from the super process into the subprocess
// for (variableDeclarations) {
// subProcessInstance.setVariable(null, null);
// }
subProcessInstance
.
start
();
}
public
void
subProcessEnded
(
ActivityContext
activityContext
)
throws
Exception
{
// extract information from the subprocess and inject it into the superprocess
// for (variableDeclarations) {
// subProcessInstance.setVariable(null, null);
// }
// take default transition
PvmTransition
transition
=
activityContext
.
getActivity
().
getOutgoingTransitions
().
get
(
0
);
activityContext
.
take
(
transition
);
}
}
modules/activiti-pvm/src/test/java/org/activiti/test/pvm/activities/WaitState.java
浏览文件 @
74725f36
...
@@ -27,7 +27,7 @@ public class WaitState implements SignallableActivityBehaviour {
...
@@ -27,7 +27,7 @@ public class WaitState implements SignallableActivityBehaviour {
}
}
public
void
signal
(
ActivityContext
activityExecutionContext
,
String
signal
,
Object
signalData
)
{
public
void
signal
(
ActivityContext
activityExecutionContext
,
String
signal
,
Object
signalData
)
{
PvmTransition
transition
=
activityExecutionContext
.
getOutgoingTransitions
().
get
(
0
);
PvmTransition
transition
=
activityExecutionContext
.
get
Activity
().
get
OutgoingTransitions
().
get
(
0
);
activityExecutionContext
.
take
(
transition
);
activityExecutionContext
.
take
(
transition
);
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录