Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
开发团队
Flowable Engine
提交
a413b6aa
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,发现更多精彩内容 >>
提交
a413b6aa
编写于
4月 29, 2015
作者:
J
Joram Barrez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Various fixes in all kinds of places.
上级
dcb5a65a
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
179 addition
and
54 deletion
+179
-54
modules/activiti-engine/src/main/java/org/activiti/engine/impl/RuntimeServiceImpl.java
...ain/java/org/activiti/engine/impl/RuntimeServiceImpl.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/TakeOutgoingSequenceFlowsOperation.java
...ngine/impl/agenda/TakeOutgoingSequenceFlowsOperation.java
+1
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java
...rg/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java
+3
-2
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetFormKeyCmd.java
...main/java/org/activiti/engine/impl/cmd/GetFormKeyCmd.java
+2
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetRenderedStartFormCmd.java
...org/activiti/engine/impl/cmd/GetRenderedStartFormCmd.java
+2
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetStartFormCmd.java
...in/java/org/activiti/engine/impl/cmd/GetStartFormCmd.java
+13
-4
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SubmitStartFormCmd.java
...java/org/activiti/engine/impl/cmd/SubmitStartFormCmd.java
+9
-5
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/DefaultHistoryManager.java
...g/activiti/engine/impl/history/DefaultHistoryManager.java
+14
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java
...engine/impl/persistence/entity/AbstractEntityManager.java
+2
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java
...iviti/engine/impl/persistence/entity/ExecutionEntity.java
+1
-1
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManager.java
...ngine/impl/persistence/entity/ExecutionEntityManager.java
+33
-14
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ProcessDefinitionEntity.java
...gine/impl/persistence/entity/ProcessDefinitionEntity.java
+0
-9
modules/activiti-engine/src/main/java/org/activiti/engine/impl/util/FormHandlerUtil.java
...n/java/org/activiti/engine/impl/util/FormHandlerUtil.java
+52
-0
modules/activiti-engine/src/main/java/org/activiti/engine/impl/util/ProcessInstanceUtil.java
...va/org/activiti/engine/impl/util/ProcessInstanceUtil.java
+40
-7
modules/activiti-engine/src/test/java/org/activiti/engine/test/api/form/FormServiceTest.java
...va/org/activiti/engine/test/api/form/FormServiceTest.java
+1
-1
modules/activiti-engine/src/test/java/org/activiti/engine/test/api/runtime/RuntimeServiceTest.java
.../activiti/engine/test/api/runtime/RuntimeServiceTest.java
+5
-6
未找到文件。
modules/activiti-engine/src/main/java/org/activiti/engine/impl/RuntimeServiceImpl.java
浏览文件 @
a413b6aa
...
...
@@ -204,7 +204,7 @@ public class RuntimeServiceImpl extends ServiceImpl implements RuntimeService {
}
public
void
removeVariable
(
String
executionId
,
String
variableName
)
{
Collection
<
String
>
variableNames
=
new
ArrayList
<
String
>();
Collection
<
String
>
variableNames
=
new
ArrayList
<
String
>(
1
);
variableNames
.
add
(
variableName
);
commandExecutor
.
execute
(
new
RemoveExecutionVariablesCmd
(
executionId
,
variableNames
,
false
));
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/TakeOutgoingSequenceFlowsOperation.java
浏览文件 @
a413b6aa
...
...
@@ -136,6 +136,7 @@ public class TakeOutgoingSequenceFlowsOperation extends AbstractOperation {
ExecutionEntity
outgoingExecutionEntity
=
new
ExecutionEntity
();
outgoingExecutionEntity
.
setProcessDefinitionId
(
execution
.
getProcessDefinitionId
());
outgoingExecutionEntity
.
setProcessInstanceId
(
execution
.
getProcessInstanceId
());
outgoingExecutionEntity
.
setTenantId
(
execution
.
getTenantId
());
outgoingExecutionEntity
.
setScope
(
false
);
outgoingExecutionEntity
.
setActive
(
true
);
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java
浏览文件 @
a413b6aa
...
...
@@ -37,14 +37,15 @@ public class DeleteProcessInstanceCmd implements Command<Void>, Serializable {
if
(
processInstanceId
==
null
)
{
throw
new
ActivitiIllegalArgumentException
(
"processInstanceId is null"
);
}
// fill default reason if none provided
if
(
deleteReason
==
null
)
{
deleteReason
=
"ACTIVITI_DELETED"
;
}
if
(
commandContext
.
getProcessEngineConfiguration
().
getEventDispatcher
().
isEnabled
())
{
commandContext
.
getProcessEngineConfiguration
().
getEventDispatcher
().
dispatchEvent
(
ActivitiEventBuilder
.
createCancelledEvent
(
this
.
processInstanceId
,
this
.
processInstanceId
,
null
,
deleteReason
));
commandContext
.
getProcessEngineConfiguration
().
getEventDispatcher
()
.
dispatchEvent
(
ActivitiEventBuilder
.
createCancelledEvent
(
this
.
processInstanceId
,
this
.
processInstanceId
,
null
,
deleteReason
));
}
commandContext
.
getExecutionEntityManager
().
deleteProcessInstanceExecutionEntity
(
processInstanceId
,
null
,
deleteReason
);
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetFormKeyCmd.java
浏览文件 @
a413b6aa
...
...
@@ -19,6 +19,7 @@ import org.activiti.engine.impl.interceptor.Command;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
import
org.activiti.engine.impl.task.TaskDefinition
;
import
org.activiti.engine.impl.util.FormHandlerUtil
;
/**
* Command for retrieving start or task form keys.
...
...
@@ -61,7 +62,7 @@ public class GetFormKeyCmd implements Command<String> {
if
(
taskDefinitionKey
==
null
)
{
// TODO: Maybe add getFormKey() to FormHandler interface to avoid
// the following cast
formHandler
=
(
DefaultFormHandler
)
processDefinition
.
getStartFormHandler
();
formHandler
=
(
DefaultFormHandler
)
FormHandlerUtil
.
getStartFormHandler
(
commandContext
,
processDefinition
);
}
else
{
TaskDefinition
taskDefinition
=
processDefinition
.
getTaskDefinitions
().
get
(
taskDefinitionKey
);
// TODO: Maybe add getFormKey() to FormHandler interface to avoid
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetRenderedStartFormCmd.java
浏览文件 @
a413b6aa
...
...
@@ -22,6 +22,7 @@ import org.activiti.engine.impl.form.StartFormHandler;
import
org.activiti.engine.impl.interceptor.Command
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
import
org.activiti.engine.impl.util.FormHandlerUtil
;
import
org.activiti.engine.repository.ProcessDefinition
;
/**
...
...
@@ -44,7 +45,7 @@ public class GetRenderedStartFormCmd implements Command<Object>, Serializable {
if
(
processDefinition
==
null
)
{
throw
new
ActivitiObjectNotFoundException
(
"Process Definition '"
+
processDefinitionId
+
"' not found"
,
ProcessDefinition
.
class
);
}
StartFormHandler
startFormHandler
=
processDefinition
.
getStartFormHandler
();
StartFormHandler
startFormHandler
=
FormHandlerUtil
.
getStartFormHandler
(
commandContext
,
processDefinition
);
if
(
startFormHandler
==
null
)
{
return
null
;
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetStartFormCmd.java
浏览文件 @
a413b6aa
...
...
@@ -14,14 +14,22 @@
package
org.activiti.engine.impl.cmd
;
import
java.io.Serializable
;
import
java.util.List
;
import
org.activiti.bpmn.model.FlowElement
;
import
org.activiti.bpmn.model.FormProperty
;
import
org.activiti.bpmn.model.StartEvent
;
import
org.activiti.engine.ActivitiException
;
import
org.activiti.engine.ActivitiObjectNotFoundException
;
import
org.activiti.engine.form.StartFormData
;
import
org.activiti.engine.impl.form.DefaultStartFormHandler
;
import
org.activiti.engine.impl.form.StartFormHandler
;
import
org.activiti.engine.impl.interceptor.Command
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.persistence.entity.DeploymentEntity
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
import
org.activiti.engine.impl.util.FormHandlerUtil
;
import
org.activiti.engine.impl.util.ProcessDefinitionUtil
;
import
org.activiti.engine.repository.ProcessDefinition
;
/**
...
...
@@ -37,16 +45,17 @@ public class GetStartFormCmd implements Command<StartFormData>, Serializable {
}
public
StartFormData
execute
(
CommandContext
commandContext
)
{
ProcessDefinitionEntity
processDefinition
=
commandContext
.
getProcessEngineConfiguration
().
getDeploymentManager
().
findDeployedProcessDefinitionById
(
processDefinitionId
);
if
(
processDefinition
==
null
)
{
ProcessDefinitionEntity
processDefinition
Entity
=
commandContext
.
getProcessEngineConfiguration
().
getDeploymentManager
().
findDeployedProcessDefinitionById
(
processDefinitionId
);
if
(
processDefinition
Entity
==
null
)
{
throw
new
ActivitiObjectNotFoundException
(
"No process definition found for id '"
+
processDefinitionId
+
"'"
,
ProcessDefinition
.
class
);
}
StartFormHandler
startFormHandler
=
processDefinition
.
getStartFormHandler
(
);
StartFormHandler
startFormHandler
=
FormHandlerUtil
.
getStartFormHandler
(
commandContext
,
processDefinitionEntity
);
if
(
startFormHandler
==
null
)
{
throw
new
ActivitiException
(
"No startFormHandler defined in process '"
+
processDefinitionId
+
"'"
);
}
return
startFormHandler
.
createStartFormData
(
processDefinition
);
return
startFormHandler
.
createStartFormData
(
processDefinition
Entity
);
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SubmitStartFormCmd.java
浏览文件 @
a413b6aa
...
...
@@ -19,6 +19,8 @@ import org.activiti.engine.impl.form.StartFormHandler;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.persistence.entity.ExecutionEntity
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
import
org.activiti.engine.impl.util.FormHandlerUtil
;
import
org.activiti.engine.impl.util.ProcessInstanceUtil
;
import
org.activiti.engine.runtime.ProcessInstance
;
/**
...
...
@@ -40,18 +42,20 @@ public class SubmitStartFormCmd extends NeedsActiveProcessDefinitionCmd<ProcessI
protected
ProcessInstance
execute
(
CommandContext
commandContext
,
ProcessDefinitionEntity
processDefinition
)
{
ExecutionEntity
processInstance
=
null
;
// TODO: backwards compatibility? Only create the process instance and not start it? How?
if
(
businessKey
!=
null
)
{
processInstance
=
processDefinition
.
createProcessInstance
(
businessKey
);
processInstance
=
(
ExecutionEntity
)
ProcessInstanceUtil
.
createProcessInstance
(
processDefinition
,
businessKey
,
null
,
null
);
}
else
{
processInstance
=
processDefinition
.
createProcessInstance
(
);
processInstance
=
(
ExecutionEntity
)
ProcessInstanceUtil
.
createProcessInstance
(
processDefinition
,
null
,
null
,
null
);
}
commandContext
.
getHistoryManager
().
reportFormPropertiesSubmitted
(
processInstance
,
properties
,
null
);
StartFormHandler
startFormHandler
=
processDefinition
.
getStartFormHandler
();
StartFormHandler
startFormHandler
=
FormHandlerUtil
.
getStartFormHandler
(
commandContext
,
processDefinition
);
startFormHandler
.
submitFormProperties
(
properties
,
processInstance
);
processInstance
.
start
();
commandContext
.
getAgenda
().
planContinueProcessOperation
(
processInstance
.
getExecutions
().
get
(
0
));
// There will always be one child execution created
return
processInstance
;
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/history/DefaultHistoryManager.java
浏览文件 @
a413b6aa
...
...
@@ -849,8 +849,21 @@ public class DefaultHistoryManager extends AbstractManager implements HistoryMan
@Override
public
void
recordVariableRemoved
(
VariableInstanceEntity
variable
)
{
// TODO Auto-generated method stub
if
(
isHistoryLevelAtLeast
(
HistoryLevel
.
ACTIVITY
))
{
HistoricVariableInstanceEntity
historicProcessVariable
=
getDbSqlSession
()
.
findInCache
(
HistoricVariableInstanceEntity
.
class
,
variable
.
getId
());
if
(
historicProcessVariable
==
null
)
{
historicProcessVariable
=
Context
.
getCommandContext
()
.
getHistoricVariableInstanceEntityManager
()
.
findHistoricVariableInstanceByVariableInstanceId
(
variable
.
getId
());
}
if
(
historicProcessVariable
!=
null
)
{
Context
.
getCommandContext
()
.
getHistoricVariableInstanceEntityManager
()
.
delete
(
historicProcessVariable
);
}
}
}
protected
String
parseActivityType
(
FlowElement
element
)
{
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java
浏览文件 @
a413b6aa
...
...
@@ -43,7 +43,8 @@ public class AbstractEntityManager<Entity extends PersistentObject> extends Abst
getDbSqlSession
().
delete
(
entity
);
if
(
fireDeleteEvent
&&
Context
.
getProcessEngineConfiguration
().
getEventDispatcher
().
isEnabled
())
{
Context
.
getProcessEngineConfiguration
().
getEventDispatcher
().
dispatchEvent
(
ActivitiEventBuilder
.
createEntityEvent
(
ActivitiEventType
.
ENTITY_DELETED
,
entity
));
Context
.
getProcessEngineConfiguration
().
getEventDispatcher
()
.
dispatchEvent
(
ActivitiEventBuilder
.
createEntityEvent
(
ActivitiEventType
.
ENTITY_DELETED
,
entity
));
}
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java
浏览文件 @
a413b6aa
...
...
@@ -162,7 +162,7 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut
protected
boolean
deleteRoot
;
protected
String
deleteReason
;
// replaced by
// //////////////////////////////////////////////////////////////
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManager.java
浏览文件 @
a413b6aa
...
...
@@ -199,15 +199,16 @@ public class ExecutionEntityManager extends AbstractEntityManager<ExecutionEntit
processInstanceExecution
.
setTenantId
(
tenantId
);
}
String
authenticatedUserId
=
Authentication
.
getAuthenticatedUserId
();
if
(
initiatorVariableName
!=
null
)
{
processInstanceExecution
.
setVariable
(
initiatorVariableName
,
authenticatedUserId
);
}
// Store in database
Context
.
getCommandContext
().
getExecutionEntityManager
().
insert
(
processInstanceExecution
,
false
);
// Need to be after insert, cause we need the id
String
authenticatedUserId
=
Authentication
.
getAuthenticatedUserId
();
if
(
initiatorVariableName
!=
null
)
{
processInstanceExecution
.
setVariable
(
initiatorVariableName
,
authenticatedUserId
);
}
processInstanceExecution
.
setProcessInstanceId
(
processInstanceExecution
.
getId
());
if
(
authenticatedUserId
!=
null
)
{
processInstanceExecution
.
addIdentityLink
(
authenticatedUserId
,
null
,
IdentityLinkType
.
STARTER
);
...
...
@@ -280,19 +281,29 @@ public class ExecutionEntityManager extends AbstractEntityManager<ExecutionEntit
commandContext
.
getHistoricProcessInstanceEntityManager
().
deleteHistoricProcessInstanceById
(
execution
.
getId
());
}
}
public
void
deleteExecutionAndRelatedData
(
ExecutionEntity
executionEntity
)
{
deleteDataRelatedToExecution
(
executionEntity
);
delete
(
executionEntity
);
// TODO: what about delete reason?
deleteExecutionAndRelatedData
(
executionEntity
,
null
);
}
public
void
deleteExecutionAndRelatedData
(
ExecutionEntity
executionEntity
,
String
deleteReason
)
{
deleteDataRelatedToExecution
(
executionEntity
,
deleteReason
);
delete
(
executionEntity
);
}
public
void
deleteProcessInstanceExecutionEntity
(
String
processInstanceId
,
String
currentFlowElementId
,
String
deleteReason
)
{
deleteProcessInstanceExecutionEntity
(
processInstanceId
,
currentFlowElementId
,
deleteReason
,
false
);
}
public
void
deleteProcessInstanceExecutionEntity
(
String
processInstanceId
,
String
currentFlowElementId
,
String
deleteReason
,
boolean
cascade
)
{
public
void
deleteProcessInstanceExecutionEntity
(
String
processInstanceId
,
String
currentFlowElementId
,
String
deleteReason
,
boolean
cascade
)
{
ExecutionEntity
processInstanceEntity
=
findExecutionById
(
processInstanceId
);
if
(
processInstanceEntity
==
null
)
{
throw
new
ActivitiObjectNotFoundException
(
"No process instance found for id '"
+
processInstanceId
+
"'"
,
ProcessInstance
.
class
);
}
for
(
ExecutionEntity
subExecutionEntity
:
processInstanceEntity
.
getExecutions
())
{
if
(
subExecutionEntity
.
getSubProcessInstance
()
!=
null
)
{
deleteProcessInstanceCascade
(
subExecutionEntity
.
getSubProcessInstance
(),
deleteReason
,
cascade
);
...
...
@@ -305,14 +316,18 @@ public class ExecutionEntityManager extends AbstractEntityManager<ExecutionEntit
identityLinkEntityManager
.
delete
(
identityLinkEntity
);
}
deleteChildExecutions
(
processInstanceEntity
);
deleteExecutionAndRelatedData
(
processInstanceEntity
);
deleteChildExecutions
(
processInstanceEntity
,
deleteReason
);
deleteExecutionAndRelatedData
(
processInstanceEntity
,
deleteReason
);
// TODO: what about delete reason?
Context
.
getCommandContext
().
getHistoryManager
().
recordProcessInstanceEnd
(
processInstanceId
,
deleteReason
,
currentFlowElementId
);
}
public
void
deleteChildExecutions
(
ExecutionEntity
executionEntity
)
{
deleteChildExecutions
(
executionEntity
,
null
);
}
public
void
deleteChildExecutions
(
ExecutionEntity
executionEntity
,
String
deleteReason
)
{
// The children of an execution for a tree. For correct deletions
// (taking care of foreign keys between child-parent)
...
...
@@ -331,13 +346,17 @@ public class ExecutionEntityManager extends AbstractEntityManager<ExecutionEntit
for
(
int
i
=
childExecutionEntities
.
size
()
-
1
;
i
>=
0
;
i
--)
{
ExecutionEntity
childExecutionEntity
=
childExecutionEntities
.
get
(
i
);
if
(
childExecutionEntity
.
isActive
()
&&
!
childExecutionEntity
.
isEnded
())
{
deleteExecutionAndRelatedData
(
childExecutionEntity
);
deleteExecutionAndRelatedData
(
childExecutionEntity
,
deleteReason
);
}
}
}
public
void
deleteDataRelatedToExecution
(
ExecutionEntity
executionEntity
)
{
deleteDataRelatedToExecution
(
executionEntity
,
null
);
}
public
void
deleteDataRelatedToExecution
(
ExecutionEntity
executionEntity
,
String
deleteReason
)
{
// To start, deactivate the current incoming execution
executionEntity
.
setEnded
(
true
);
...
...
@@ -359,7 +378,7 @@ public class ExecutionEntityManager extends AbstractEntityManager<ExecutionEntit
TaskEntityManager
taskEntityManager
=
commandContext
.
getTaskEntityManager
();
Collection
<
TaskEntity
>
tasksForExecution
=
taskEntityManager
.
findTasksByExecutionId
(
executionEntity
.
getId
());
for
(
TaskEntity
taskEntity
:
tasksForExecution
)
{
taskEntityManager
.
deleteTask
(
taskEntity
,
null
,
false
);
taskEntityManager
.
deleteTask
(
taskEntity
,
deleteReason
,
false
);
}
// Delete jobs
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ProcessDefinitionEntity.java
浏览文件 @
a413b6aa
...
...
@@ -55,7 +55,6 @@ public class ProcessDefinitionEntity extends ProcessDefinitionImpl implements Pr
protected
String
resourceName
;
protected
String
tenantId
=
ProcessEngineConfiguration
.
NO_TENANT_ID
;
protected
Integer
historyLevel
;
protected
StartFormHandler
startFormHandler
;
protected
String
diagramResourceName
;
protected
boolean
isGraphicalNotationDefined
;
protected
Map
<
String
,
TaskDefinition
>
taskDefinitions
;
...
...
@@ -250,14 +249,6 @@ public class ProcessDefinitionEntity extends ProcessDefinitionImpl implements Pr
this
.
historyLevel
=
historyLevel
;
}
public
StartFormHandler
getStartFormHandler
()
{
return
startFormHandler
;
}
public
void
setStartFormHandler
(
StartFormHandler
startFormHandler
)
{
this
.
startFormHandler
=
startFormHandler
;
}
public
Map
<
String
,
TaskDefinition
>
getTaskDefinitions
()
{
return
taskDefinitions
;
}
...
...
modules/activiti-engine/src/main/java/org/activiti/engine/impl/util/FormHandlerUtil.java
0 → 100644
浏览文件 @
a413b6aa
/* 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.engine.impl.util
;
import
java.util.List
;
import
org.activiti.bpmn.model.FlowElement
;
import
org.activiti.bpmn.model.FormProperty
;
import
org.activiti.bpmn.model.StartEvent
;
import
org.activiti.engine.impl.form.DefaultStartFormHandler
;
import
org.activiti.engine.impl.form.StartFormHandler
;
import
org.activiti.engine.impl.interceptor.CommandContext
;
import
org.activiti.engine.impl.persistence.entity.DeploymentEntity
;
import
org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity
;
/**
* @author Joram Barrez
*/
public
class
FormHandlerUtil
{
public
static
StartFormHandler
getStartFormHandler
(
CommandContext
commandContext
,
ProcessDefinitionEntity
processDefinitionEntity
)
{
StartFormHandler
startFormHandler
=
new
DefaultStartFormHandler
();
org
.
activiti
.
bpmn
.
model
.
Process
process
=
ProcessDefinitionUtil
.
getProcess
(
processDefinitionEntity
.
getId
());
FlowElement
initialFlowElement
=
process
.
getInitialFlowElement
();
if
(
initialFlowElement
instanceof
StartEvent
)
{
StartEvent
startEvent
=
(
StartEvent
)
initialFlowElement
;
List
<
FormProperty
>
formProperties
=
startEvent
.
getFormProperties
();
String
formKey
=
startEvent
.
getFormKey
();
DeploymentEntity
deploymentEntity
=
commandContext
.
getDeploymentEntityManager
().
findDeploymentById
(
processDefinitionEntity
.
getDeploymentId
());
startFormHandler
.
parseConfiguration
(
formProperties
,
formKey
,
deploymentEntity
,
processDefinitionEntity
);
return
startFormHandler
;
}
return
null
;
}
}
modules/activiti-engine/src/main/java/org/activiti/engine/impl/util/ProcessInstanceUtil.java
浏览文件 @
a413b6aa
/* 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.engine.impl.util
;
import
java.util.Collection
;
...
...
@@ -18,9 +30,25 @@ import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.apache.commons.collections.CollectionUtils
;
/**
* @author Tijs Rademakers
* @author Joram Barrez
*/
public
class
ProcessInstanceUtil
{
public
static
ProcessInstance
createAndStartProcessInstance
(
ProcessDefinitionEntity
processDefinition
,
String
businessKey
,
String
processInstanceName
,
Map
<
String
,
Object
>
variables
)
{
public
static
ProcessInstance
createProcessInstance
(
ProcessDefinitionEntity
processDefinition
,
String
businessKey
,
String
processInstanceName
,
Map
<
String
,
Object
>
variables
)
{
return
createAndStartProcessInstance
(
processDefinition
,
businessKey
,
processInstanceName
,
variables
,
false
);
}
public
static
ProcessInstance
createAndStartProcessInstance
(
ProcessDefinitionEntity
processDefinition
,
String
businessKey
,
String
processInstanceName
,
Map
<
String
,
Object
>
variables
)
{
return
createAndStartProcessInstance
(
processDefinition
,
businessKey
,
processInstanceName
,
variables
,
true
);
}
protected
static
ProcessInstance
createAndStartProcessInstance
(
ProcessDefinitionEntity
processDefinition
,
String
businessKey
,
String
processInstanceName
,
Map
<
String
,
Object
>
variables
,
boolean
startProcessInstance
)
{
CommandContext
commandContext
=
Context
.
getCommandContext
();
if
(
processDefinition
.
getEngineVersion
()
!=
null
)
{
if
(
Activiti5CompatibilityHandler
.
ACTIVITI_5_ENGINE_TAG
.
equals
(
processDefinition
.
getEngineVersion
()))
{
...
...
@@ -52,7 +80,8 @@ public class ProcessInstanceUtil {
throw
new
ActivitiException
(
"No start element found for process definition "
+
processDefinition
.
getId
());
}
return
createAndStartProcessInstanceWithInitialFlowElement
(
processDefinition
,
businessKey
,
processInstanceName
,
initialFlowElement
,
process
,
variables
);
return
createAndStartProcessInstanceWithInitialFlowElement
(
processDefinition
,
businessKey
,
processInstanceName
,
initialFlowElement
,
process
,
variables
,
startProcessInstance
);
}
public
static
ProcessInstance
createAndStartProcessInstanceByMessage
(
ProcessDefinitionEntity
processDefinition
,
String
messageName
,
Map
<
String
,
Object
>
variables
)
{
...
...
@@ -100,11 +129,12 @@ public class ProcessInstanceUtil {
throw
new
ActivitiException
(
"No message start event found for process definition "
+
processDefinition
.
getId
()
+
" and message name "
+
messageName
);
}
return
createAndStartProcessInstanceWithInitialFlowElement
(
processDefinition
,
null
,
null
,
initialFlowElement
,
process
,
variables
);
return
createAndStartProcessInstanceWithInitialFlowElement
(
processDefinition
,
null
,
null
,
initialFlowElement
,
process
,
variables
,
true
);
}
public
static
ProcessInstance
createAndStartProcessInstanceWithInitialFlowElement
(
ProcessDefinitionEntity
processDefinition
,
String
businessKey
,
String
processInstanceName
,
FlowElement
initialFlowElement
,
Process
process
,
Map
<
String
,
Object
>
variables
)
{
protected
static
ProcessInstance
createAndStartProcessInstanceWithInitialFlowElement
(
ProcessDefinitionEntity
processDefinition
,
String
businessKey
,
String
processInstanceName
,
FlowElement
initialFlowElement
,
Process
process
,
Map
<
String
,
Object
>
variables
,
boolean
startProcessInstance
)
{
CommandContext
commandContext
=
Context
.
getCommandContext
();
...
...
@@ -137,7 +167,10 @@ public class ProcessInstanceUtil {
// Create the first execution that will visit all the process definition elements
ExecutionEntity
execution
=
processInstance
.
createExecution
();
execution
.
setCurrentFlowElement
(
initialFlowElement
);
commandContext
.
getAgenda
().
planContinueProcessOperation
(
execution
);
if
(
startProcessInstance
)
{
commandContext
.
getAgenda
().
planContinueProcessOperation
(
execution
);
}
return
processInstance
;
}
...
...
modules/activiti-engine/src/test/java/org/activiti/engine/test/api/form/FormServiceTest.java
浏览文件 @
a413b6aa
...
...
@@ -183,7 +183,7 @@ public class FormServiceTest extends PluggableActivitiTestCase {
address
.
setStreet
(
"broadway"
);
runtimeService
.
setVariable
(
processInstanceId
,
"address"
,
address
);
runtimeService
.
signal
(
runtimeService
.
createExecutionQuery
().
processInstanceId
(
processInstanceId
).
singleResult
().
getId
());
runtimeService
.
trigger
(
runtimeService
.
createExecutionQuery
().
processInstanceId
(
processInstanceId
).
onlyChildExecutions
(
).
singleResult
().
getId
());
String
taskId
=
taskService
.
createTaskQuery
().
singleResult
().
getId
();
TaskFormData
taskFormData
=
formService
.
getTaskFormData
(
taskId
);
...
...
modules/activiti-engine/src/test/java/org/activiti/engine/test/api/runtime/RuntimeServiceTest.java
浏览文件 @
a413b6aa
...
...
@@ -407,7 +407,8 @@ public class RuntimeServiceTest extends PluggableActivitiTestCase {
processVariables
.
put
(
"variable"
,
"value"
);
// signal the execution while passing in the variables
runtimeService
.
signal
(
processInstance
.
getId
(),
processVariables
);
Execution
execution
=
runtimeService
.
createExecutionQuery
().
activityId
(
"receiveMessage"
).
singleResult
();
runtimeService
.
trigger
(
execution
.
getId
(),
processVariables
);
Map
<
String
,
Object
>
variables
=
runtimeService
.
getVariables
(
processInstance
.
getId
());
assertEquals
(
variables
,
processVariables
);
...
...
@@ -764,13 +765,11 @@ public class RuntimeServiceTest extends PluggableActivitiTestCase {
"org/activiti/engine/test/api/runtime/RuntimeServiceTest.catchPanicSignal.bpmn20.xml"
})
public
void
testSignalEventReceived
()
{
// //// test signalEventReceived(String)
startSignalCatchProcesses
();
// 1
2
, because the signal catch is a scope
assertEquals
(
1
2
,
runtimeService
.
createExecutionQuery
().
count
());
// 1
5
, because the signal catch is a scope
assertEquals
(
1
5
,
runtimeService
.
createExecutionQuery
().
count
());
runtimeService
.
signalEventReceived
(
"alert"
);
assertEquals
(
6
,
runtimeService
.
createExecutionQuery
().
count
());
assertEquals
(
9
,
runtimeService
.
createExecutionQuery
().
count
());
runtimeService
.
signalEventReceived
(
"panic"
);
assertEquals
(
0
,
runtimeService
.
createExecutionQuery
().
count
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录