Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
yecl
wecube
Commits
e95ead65
Commit
e95ead65
authored
4 years ago
by
gavin2lee
Browse files
Options
Download
Email Patches
Plain Diff
#2154 add public workflow preview interface
parent
e330b498
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
platform-core/src/main/java/com/webank/wecube/platform/core/controller/workflow/WorkflowPublicAccessController.java
+8
-0
...e/controller/workflow/WorkflowPublicAccessController.java
platform-core/src/main/java/com/webank/wecube/platform/core/dto/workflow/GraphNodeDto.java
+13
-2
...ebank/wecube/platform/core/dto/workflow/GraphNodeDto.java
platform-core/src/main/java/com/webank/wecube/platform/core/dto/workflow/ProcessDataPreviewDto.java
+25
-25
...ube/platform/core/dto/workflow/ProcessDataPreviewDto.java
platform-core/src/main/java/com/webank/wecube/platform/core/service/dme/EntityTreeNodesOverview.java
+30
-30
...be/platform/core/service/dme/EntityTreeNodesOverview.java
platform-core/src/main/java/com/webank/wecube/platform/core/service/dme/StandardEntityQueryExecutor.java
+4
-0
...latform/core/service/dme/StandardEntityQueryExecutor.java
platform-core/src/main/java/com/webank/wecube/platform/core/service/dme/TreeNode.java
+10
-0
...com/webank/wecube/platform/core/service/dme/TreeNode.java
platform-core/src/main/java/com/webank/wecube/platform/core/service/workflow/WorkflowDataService.java
+26
-0
...e/platform/core/service/workflow/WorkflowDataService.java
platform-core/src/main/java/com/webank/wecube/platform/core/service/workflow/WorkflowPublicAccessService.java
+37
-23
...rm/core/service/workflow/WorkflowPublicAccessService.java
with
153 additions
and
80 deletions
+153
-80
platform-core/src/main/java/com/webank/wecube/platform/core/controller/workflow/WorkflowPublicAccessController.java
+
8
-
0
View file @
e95ead65
...
...
@@ -14,6 +14,7 @@ import com.webank.wecube.platform.core.dto.plugin.CommonResponseDto;
import
com.webank.wecube.platform.core.dto.workflow.DynamicWorkflowInstCreationInfoDto
;
import
com.webank.wecube.platform.core.dto.workflow.DynamicWorkflowInstInfoDto
;
import
com.webank.wecube.platform.core.dto.workflow.ProcInstTerminationRequestDto
;
import
com.webank.wecube.platform.core.dto.workflow.ProcessDataPreviewDto
;
import
com.webank.wecube.platform.core.dto.workflow.WorkflowDefInfoDto
;
import
com.webank.wecube.platform.core.dto.workflow.WorkflowNodeDefInfoDto
;
import
com.webank.wecube.platform.core.service.workflow.WorkflowPublicAccessService
;
...
...
@@ -49,4 +50,11 @@ public class WorkflowPublicAccessController {
workflowPublicAccessService
.
createWorkflowInstanceTerminationRequest
(
requestDto
);
return
CommonResponseDto
.
okay
();
}
@GetMapping
(
"/public/process/definitions/{proc-def-id}/preview/entities/{entity-data-id}"
)
public
CommonResponseDto
getProcessDataPreview
(
@PathVariable
(
"proc-def-id"
)
String
procDefId
,
@PathVariable
(
"entity-data-id"
)
String
dataId
)
{
ProcessDataPreviewDto
result
=
workflowPublicAccessService
.
generateProcessDataPreview
(
procDefId
,
dataId
);
return
CommonResponseDto
.
okayWithData
(
result
);
}
}
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/dto/workflow/GraphNodeDto.java
+
13
-
2
View file @
e95ead65
...
...
@@ -13,6 +13,8 @@ public class GraphNodeDto {
private
String
displayName
;
private
String
id
;
private
Object
entityData
;
private
List
<
String
>
previousIds
=
new
ArrayList
<>();
private
List
<
String
>
succeedingIds
=
new
ArrayList
<>();
...
...
@@ -26,10 +28,10 @@ public class GraphNodeDto {
}
public
String
getId
()
{
if
(
StringUtils
.
isBlank
(
id
)){
if
(
StringUtils
.
isBlank
(
id
))
{
this
.
id
=
buildId
();
}
return
id
;
}
...
...
@@ -108,4 +110,13 @@ public class GraphNodeDto {
public
void
setDisplayName
(
String
displayName
)
{
this
.
displayName
=
displayName
;
}
public
Object
getEntityData
()
{
return
entityData
;
}
public
void
setEntityData
(
Object
entityData
)
{
this
.
entityData
=
entityData
;
}
}
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/dto/workflow/ProcessDataPreviewDto.java
+
25
-
25
View file @
e95ead65
...
...
@@ -4,30 +4,30 @@ import java.util.ArrayList;
import
java.util.List
;
public
class
ProcessDataPreviewDto
{
private
List
<
GraphNodeDto
>
entityTreeNodes
=
new
ArrayList
<>();
private
String
processSessionId
;
public
List
<
GraphNodeDto
>
getEntityTreeNodes
()
{
return
entityTreeNodes
;
}
public
void
setEntityTreeNodes
(
List
<
GraphNodeDto
>
entityTreeNodes
)
{
this
.
entityTreeNodes
=
entityTreeNodes
;
}
public
void
addAllEntityTreeNodes
(
List
<
GraphNodeDto
>
entityTreeNodes
)
{
if
(
entityTreeNodes
==
null
)
{
return
;
}
this
.
entityTreeNodes
.
addAll
(
entityTreeNodes
);
}
public
String
getProcessSessionId
()
{
return
processSessionId
;
}
public
void
setProcessSessionId
(
String
processSessionId
)
{
this
.
processSessionId
=
processSessionId
;
}
private
List
<
GraphNodeDto
>
entityTreeNodes
=
new
ArrayList
<>();
private
String
processSessionId
;
public
List
<
GraphNodeDto
>
getEntityTreeNodes
()
{
return
entityTreeNodes
;
}
public
void
setEntityTreeNodes
(
List
<
GraphNodeDto
>
entityTreeNodes
)
{
this
.
entityTreeNodes
=
entityTreeNodes
;
}
public
void
addAllEntityTreeNodes
(
List
<
GraphNodeDto
>
entityTreeNodes
)
{
if
(
entityTreeNodes
==
null
)
{
return
;
}
this
.
entityTreeNodes
.
addAll
(
entityTreeNodes
);
}
public
String
getProcessSessionId
()
{
return
processSessionId
;
}
public
void
setProcessSessionId
(
String
processSessionId
)
{
this
.
processSessionId
=
processSessionId
;
}
}
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/service/dme/EntityTreeNodesOverview.java
+
30
-
30
View file @
e95ead65
...
...
@@ -4,34 +4,34 @@ import java.util.ArrayList;
import
java.util.List
;
public
class
EntityTreeNodesOverview
{
private
List
<
TreeNode
>
hierarchicalEntityNodes
=
new
ArrayList
<>();
private
List
<
TreeNode
>
leafNodeEntityNodes
=
new
ArrayList
<>();
public
List
<
TreeNode
>
getHierarchicalEntityNodes
()
{
return
hierarchicalEntityNodes
;
}
public
void
setHierarchicalEntityNodes
(
List
<
TreeNode
>
hierarchicalEntityNodes
)
{
this
.
hierarchicalEntityNodes
=
hierarchicalEntityNodes
;
}
public
List
<
TreeNode
>
getLeafNodeEntityNodes
()
{
return
leafNodeEntityNodes
;
}
public
void
setLeafNodeEntityNodes
(
List
<
TreeNode
>
leafNodeEntityNodes
)
{
this
.
leafNodeEntityNodes
=
leafNodeEntityNodes
;
}
public
void
addLeafNodeEntityNodes
(
TreeNode
...
leafNodeEntityNodes
)
{
for
(
TreeNode
tn
:
leafNodeEntityNodes
)
{
this
.
leafNodeEntityNodes
.
add
(
tn
);
}
}
public
void
addHierarchicalEntityNodes
(
TreeNode
...
hierarchicalEntityNodes
)
{
for
(
TreeNode
tn
:
hierarchicalEntityNodes
)
{
this
.
hierarchicalEntityNodes
.
add
(
tn
);
}
}
private
List
<
TreeNode
>
hierarchicalEntityNodes
=
new
ArrayList
<>();
private
List
<
TreeNode
>
leafNodeEntityNodes
=
new
ArrayList
<>();
public
List
<
TreeNode
>
getHierarchicalEntityNodes
()
{
return
hierarchicalEntityNodes
;
}
public
void
setHierarchicalEntityNodes
(
List
<
TreeNode
>
hierarchicalEntityNodes
)
{
this
.
hierarchicalEntityNodes
=
hierarchicalEntityNodes
;
}
public
List
<
TreeNode
>
getLeafNodeEntityNodes
()
{
return
leafNodeEntityNodes
;
}
public
void
setLeafNodeEntityNodes
(
List
<
TreeNode
>
leafNodeEntityNodes
)
{
this
.
leafNodeEntityNodes
=
leafNodeEntityNodes
;
}
public
void
addLeafNodeEntityNodes
(
TreeNode
...
leafNodeEntityNodes
)
{
for
(
TreeNode
tn
:
leafNodeEntityNodes
)
{
this
.
leafNodeEntityNodes
.
add
(
tn
);
}
}
public
void
addHierarchicalEntityNodes
(
TreeNode
...
hierarchicalEntityNodes
)
{
for
(
TreeNode
tn
:
hierarchicalEntityNodes
)
{
this
.
hierarchicalEntityNodes
.
add
(
tn
);
}
}
}
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/service/dme/StandardEntityQueryExecutor.java
+
4
-
0
View file @
e95ead65
...
...
@@ -45,6 +45,7 @@ public class StandardEntityQueryExecutor implements EntityQueryExecutor {
currTreeNode
.
setDisplayName
(
delegate
.
getDisplayName
());
currTreeNode
.
setEntityName
(
delegate
.
getEntityName
());
currTreeNode
.
setPackageName
(
delegate
.
getPackageName
());
currTreeNode
.
setEntityData
(
delegate
.
getEntityData
());
result
.
add
(
currTreeNode
);
}
...
...
@@ -59,6 +60,7 @@ public class StandardEntityQueryExecutor implements EntityQueryExecutor {
prevTreeNode
.
setDisplayName
(
prevDelegate
.
getDisplayName
());
prevTreeNode
.
setEntityName
(
prevDelegate
.
getEntityName
());
prevTreeNode
.
setPackageName
(
prevDelegate
.
getPackageName
());
prevTreeNode
.
setEntityData
(
prevDelegate
.
getEntityData
());
result
.
add
(
prevTreeNode
);
}
...
...
@@ -76,6 +78,7 @@ public class StandardEntityQueryExecutor implements EntityQueryExecutor {
succeedingTreeNode
.
setDisplayName
(
succeedingDelegate
.
getDisplayName
());
succeedingTreeNode
.
setEntityName
(
succeedingDelegate
.
getEntityName
());
succeedingTreeNode
.
setPackageName
(
succeedingDelegate
.
getPackageName
());
succeedingTreeNode
.
setEntityData
(
succeedingDelegate
.
getEntityData
());
result
.
add
(
succeedingTreeNode
);
}
...
...
@@ -611,6 +614,7 @@ public class StandardEntityQueryExecutor implements EntityQueryExecutor {
tn
.
setEntityName
(
leafLinkNode
.
getExprNodeInfo
().
getEntityName
());
tn
.
setDisplayName
(
delegate
.
getDisplayName
());
tn
.
setRootId
(
delegate
.
getId
());
tn
.
setEntityData
(
delegate
.
getEntityData
());
result
.
add
(
tn
);
}
...
...
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/service/dme/TreeNode.java
+
10
-
0
View file @
e95ead65
...
...
@@ -11,6 +11,7 @@ public class TreeNode {
private
String
entityName
;
private
Object
rootId
;
private
Object
displayName
;
private
Object
entityData
;
private
TreeNode
parent
;
private
List
<
TreeNode
>
children
=
new
ArrayList
<>();
...
...
@@ -122,4 +123,13 @@ public class TreeNode {
return
new
HashCodeBuilder
(
17
,
37
).
append
(
getPackageName
()).
append
(
getEntityName
()).
append
(
getRootId
())
.
toHashCode
();
}
public
Object
getEntityData
()
{
return
entityData
;
}
public
void
setEntityData
(
Object
entityData
)
{
this
.
entityData
=
entityData
;
}
}
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/service/workflow/WorkflowDataService.java
+
26
-
0
View file @
e95ead65
...
...
@@ -590,6 +590,31 @@ public class WorkflowDataService {
return
previewDto
;
}
/**
*
* @param procDefId
* @param dataId
* @return
*/
public
ProcessDataPreviewDto
generateProcessDataPreviewWithoutStorage
(
String
procDefId
,
String
dataId
)
{
if
(
StringUtils
.
isBlank
(
procDefId
)
||
StringUtils
.
isBlank
(
dataId
))
{
throw
new
WecubeCoreException
(
"3189"
,
"Process definition ID or entity ID is not provided."
);
}
ProcDefOutlineDto
procDefOutline
=
workflowProcDefService
.
getProcessDefinitionOutline
(
procDefId
);
if
(
procDefOutline
==
null
)
{
log
.
debug
(
"process definition with id {} does not exist."
,
procDefId
);
throw
new
WecubeCoreException
(
"3190"
,
String
.
format
(
"Such process definition {%s} does not exist."
,
procDefId
),
procDefId
);
}
ProcessDataPreviewDto
previewDto
=
doFetchProcessPreviewData
(
procDefOutline
,
dataId
,
false
);
return
previewDto
;
}
private
List
<
InterfaceParameterDto
>
prepareNodeParameters
()
{
List
<
InterfaceParameterDto
>
predefinedParams
=
new
ArrayList
<>();
...
...
@@ -790,6 +815,7 @@ public class WorkflowDataService {
currNode
.
setPackageName
(
tn
.
getPackageName
());
currNode
.
setEntityName
(
tn
.
getEntityName
());
currNode
.
setDisplayName
(
tn
.
getDisplayName
()
==
null
?
null
:
tn
.
getDisplayName
().
toString
());
currNode
.
setEntityData
(
tn
.
getEntityData
());
addToResult
(
hierarchicalEntityNodes
,
currNode
);
}
...
...
This diff is collapsed.
Click to expand it.
platform-core/src/main/java/com/webank/wecube/platform/core/service/workflow/WorkflowPublicAccessService.java
+
37
-
23
View file @
e95ead65
...
...
@@ -20,6 +20,7 @@ import com.webank.wecube.platform.core.dto.workflow.DynamicWorkflowInstCreationI
import
com.webank.wecube.platform.core.dto.workflow.DynamicWorkflowInstInfoDto
;
import
com.webank.wecube.platform.core.dto.workflow.ProcInstInfoDto
;
import
com.webank.wecube.platform.core.dto.workflow.ProcInstTerminationRequestDto
;
import
com.webank.wecube.platform.core.dto.workflow.ProcessDataPreviewDto
;
import
com.webank.wecube.platform.core.dto.workflow.RegisteredEntityAttrDefDto
;
import
com.webank.wecube.platform.core.dto.workflow.RegisteredEntityDefDto
;
import
com.webank.wecube.platform.core.dto.workflow.StartProcInstRequestDto
;
...
...
@@ -61,24 +62,35 @@ public class WorkflowPublicAccessService {
@Autowired
private
EntityQueryExpressionParser
entityQueryExpressionParser
;
@Autowired
private
WorkflowProcInstService
workflowProcInstService
;
@Autowired
private
WorkflowDataService
workflowDataService
;
public
ProcessDataPreviewDto
generateProcessDataPreview
(
String
procDefId
,
String
dataId
)
{
ProcessDataPreviewDto
previewDto
=
workflowDataService
.
generateProcessDataPreviewWithoutStorage
(
procDefId
,
dataId
);
return
previewDto
;
}
/**
*
* @param requestDto
*/
public
void
createWorkflowInstanceTerminationRequest
(
ProcInstTerminationRequestDto
requestDto
){
if
(
requestDto
==
null
){
public
void
createWorkflowInstanceTerminationRequest
(
ProcInstTerminationRequestDto
requestDto
)
{
if
(
requestDto
==
null
)
{
throw
new
WecubeCoreException
(
"3320"
,
"Unknown which process instance to terminate."
);
}
if
(
StringUtils
.
isBlank
(
requestDto
.
getProcInstId
())){
if
(
StringUtils
.
isBlank
(
requestDto
.
getProcInstId
()))
{
throw
new
WecubeCoreException
(
"3320"
,
"Unknown which process instance to terminate."
);
}
int
procInstId
=
Integer
.
parseInt
(
requestDto
.
getProcInstId
());
workflowProcInstService
.
createProcessInstanceTermination
(
procInstId
);
}
...
...
@@ -203,7 +215,7 @@ public class WorkflowPublicAccessService {
*/
public
DynamicWorkflowInstInfoDto
createNewWorkflowInstance
(
DynamicWorkflowInstCreationInfoDto
creationInfoDto
)
{
log
.
info
(
"try to create new workflow instance with data: {}"
,
creationInfoDto
);
StartProcInstRequestDto
requestDto
=
calculateStartProcInstContext
(
creationInfoDto
);
ProcInstInfoDto
createdProcInstInfoDto
=
workflowProcInstService
.
createProcessInstance
(
requestDto
);
DynamicWorkflowInstInfoDto
resultDto
=
new
DynamicWorkflowInstInfoDto
();
...
...
@@ -212,43 +224,44 @@ public class WorkflowPublicAccessService {
resultDto
.
setProcDefKey
(
createdProcInstInfoDto
.
getProcDefKey
());
resultDto
.
setProcInstKey
(
createdProcInstInfoDto
.
getProcInstKey
());
resultDto
.
setStatus
(
createdProcInstInfoDto
.
getStatus
());
return
resultDto
;
}
private
StartProcInstRequestDto
calculateStartProcInstContext
(
DynamicWorkflowInstCreationInfoDto
creationInfoDto
)
{
StartProcInstRequestDto
requestDto
=
new
StartProcInstRequestDto
();
requestDto
.
setEntityDataId
(
creationInfoDto
.
getRootEntityValue
().
getDataId
());
requestDto
.
setEntityDisplayName
(
null
);
requestDto
.
setEntityTypeId
(
creationInfoDto
.
getRootEntityValue
().
getPackageName
()+
":"
+
creationInfoDto
.
getRootEntityValue
().
getEntityName
());
requestDto
.
setEntityTypeId
(
creationInfoDto
.
getRootEntityValue
().
getPackageName
()
+
":"
+
creationInfoDto
.
getRootEntityValue
().
getEntityName
());
requestDto
.
setProcDefId
(
creationInfoDto
.
getProcDefId
());
List
<
DynamicTaskNodeBindInfoDto
>
taskNodeBindInfos
=
creationInfoDto
.
getTaskNodeBindInfos
();
if
(
taskNodeBindInfos
==
null
)
{
if
(
taskNodeBindInfos
==
null
)
{
taskNodeBindInfos
=
new
ArrayList
<>();
}
List
<
TaskNodeDefObjectBindInfoDto
>
taskNodeBinds
=
new
ArrayList
<>();
for
(
DynamicTaskNodeBindInfoDto
dynamicBindInfoDto
:
taskNodeBindInfos
)
{
for
(
DynamicTaskNodeBindInfoDto
dynamicBindInfoDto
:
taskNodeBindInfos
)
{
List
<
DynamicEntityValueDto
>
boundEntityValues
=
dynamicBindInfoDto
.
getBoundEntityValues
();
if
(
boundEntityValues
==
null
||
boundEntityValues
.
isEmpty
())
{
if
(
boundEntityValues
==
null
||
boundEntityValues
.
isEmpty
())
{
continue
;
}
for
(
DynamicEntityValueDto
entityValueDto
:
boundEntityValues
)
{
for
(
DynamicEntityValueDto
entityValueDto
:
boundEntityValues
)
{
TaskNodeDefObjectBindInfoDto
bindDto
=
new
TaskNodeDefObjectBindInfoDto
();
bindDto
.
setBound
(
"Y"
);
bindDto
.
setEntityDataId
(
entityValueDto
.
getDataId
());
bindDto
.
setEntityDisplayName
(
null
);
bindDto
.
setEntityTypeId
(
entityValueDto
.
getPackageName
()
+
":"
+
entityValueDto
.
getEntityName
());
bindDto
.
setEntityTypeId
(
entityValueDto
.
getPackageName
()
+
":"
+
entityValueDto
.
getEntityName
());
bindDto
.
setNodeDefId
(
dynamicBindInfoDto
.
getNodeDefId
());
bindDto
.
setOrderedNo
(
""
);
taskNodeBinds
.
add
(
bindDto
);
}
}
requestDto
.
setTaskNodeBinds
(
taskNodeBinds
);
return
requestDto
;
}
...
...
@@ -337,7 +350,8 @@ public class WorkflowPublicAccessService {
}
private
List
<
ProcDefAuthInfoQueryEntity
>
retrieveAllAuthorizedProcDefs
(
Set
<
String
>
roleNames
)
{
List
<
ProcDefAuthInfoQueryEntity
>
procDefInfos
=
this
.
procDefInfoRepository
.
selectAllAuthorizedProcDefs
(
roleNames
);
List
<
ProcDefAuthInfoQueryEntity
>
procDefInfos
=
this
.
procDefInfoRepository
.
selectAllAuthorizedProcDefs
(
roleNames
);
return
procDefInfos
;
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment