Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
byit-myth-job
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyuan
byit-myth-job
Commits
b4ac3ecd
Commit
b4ac3ecd
authored
Dec 26, 2019
by
guominglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工作流的保存和创建
parent
136a6485
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
132 additions
and
11 deletions
+132
-11
FlowController.java
...min/src/main/java/com/byit/controller/FlowController.java
+3
-3
NodeDependencyMapper.java
...e/src/main/java/com/byit/mapper/NodeDependencyMapper.java
+10
-1
NodeMapper.java
...-admin-core/src/main/java/com/byit/mapper/NodeMapper.java
+22
-0
NodeVo.java
...th-admin-core/src/main/java/com/byit/model/vo/NodeVo.java
+6
-0
FlowService.java
...dmin-core/src/main/java/com/byit/service/FlowService.java
+1
-2
FlowServiceImpl.java
.../src/main/java/com/byit/service/impl/FlowServiceImpl.java
+55
-3
NodeDependencyMapper.xml
...n-core/src/main/resources/mapper/NodeDependencyMapper.xml
+8
-2
NodeMapper.xml
.../myth-admin-core/src/main/resources/mapper/NodeMapper.xml
+27
-0
No files found.
byit-myth-admin/src/main/java/com/byit/controller/FlowController.java
View file @
b4ac3ecd
...
...
@@ -49,9 +49,9 @@ public class FlowController {
@PostMapping
(
"get"
)
@ApiOperation
(
"查询工作流"
)
public
Node
Vo
getFlow
(
@RequestBody
Integer
flowId
){
Node
Vo
flow
=
flowService
.
getFlowId
(
flowId
);
return
null
;
public
Flow
Vo
getFlow
(
@RequestBody
Integer
flowId
){
Flow
Vo
flow
=
flowService
.
getFlowId
(
flowId
);
return
flow
;
}
@PostMapping
(
"start"
)
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/mapper/NodeDependencyMapper.java
View file @
b4ac3ecd
package
com
.
byit
.
mapper
;
import
com.byit.model.NodeDependencyKey
;
import
org.apache.ibatis.annotations.Param
;
public
interface
NodeDependencyMapper
{
int
deleteById
(
NodeDependencyKey
key
);
int
insert
(
NodeDependencyKey
recor
d
);
int
insert
(
@Param
(
"nodeId"
)
Integer
nodeId
,
@Param
(
"dependNodeId"
)
Integer
dependNodeI
d
);
int
insertSelective
(
NodeDependencyKey
record
);
/**
* 根据节点id删除依赖关系
* @param nodeId
* @return
*/
int
deleteByNodeId
(
Integer
nodeId
);
}
\ No newline at end of file
byit-myth-core/myth-admin-core/src/main/java/com/byit/mapper/NodeMapper.java
View file @
b4ac3ecd
...
...
@@ -2,6 +2,8 @@ package com.byit.mapper;
import
com.byit.model.Node
;
import
java.util.List
;
public
interface
NodeMapper
{
int
deleteById
(
Integer
nodeId
);
...
...
@@ -25,4 +27,23 @@ public interface NodeMapper {
*/
int
updateOnforkDown
(
Integer
flowId
);
/**
* 查找在工作流调度上的节点
* @param flowId
* @return
*/
List
<
Node
>
findOnforkByFlowId
(
Integer
flowId
);
/**
* 查找工作流下的虚拟节点
* @param flowId
* @return
*/
List
<
Node
>
findVirtualByFlowId
(
Integer
flowId
);
/**
* 删除工作流下的虚拟节点
* @param flowId
*/
void
deleteVirtualNode
(
Integer
flowId
);
}
\ No newline at end of file
byit-myth-core/myth-admin-core/src/main/java/com/byit/model/vo/NodeVo.java
View file @
b4ac3ecd
...
...
@@ -205,6 +205,12 @@ public class NodeVo implements Serializable {
@ApiModelProperty
(
"源码"
)
private
String
runSource
;
/**
* 依赖节点
*/
@ApiModelProperty
(
"依赖节点"
)
private
String
dependNodeIds
;
/**
*/
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/service/FlowService.java
View file @
b4ac3ecd
...
...
@@ -2,7 +2,6 @@ package com.byit.service;
import
com.byit.model.Flow
;
import
com.byit.model.vo.FlowVo
;
import
com.byit.model.vo.NodeVo
;
/**
* @description: 工作流业务逻辑接口
...
...
@@ -41,7 +40,7 @@ public interface FlowService {
* @param flowId
* @return
*/
Node
Vo
getFlowId
(
Integer
flowId
);
Flow
Vo
getFlowId
(
Integer
flowId
);
/**
* 启动工作流
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/service/impl/FlowServiceImpl.java
View file @
b4ac3ecd
...
...
@@ -3,6 +3,7 @@ package com.byit.service.impl;
import
com.byit.job.utils.CronExpression
;
import
com.byit.mapper.FlowDependentMapper
;
import
com.byit.mapper.FlowMapper
;
import
com.byit.mapper.NodeDependencyMapper
;
import
com.byit.mapper.NodeMapper
;
import
com.byit.model.Flow
;
import
com.byit.model.FlowDependentKey
;
...
...
@@ -11,6 +12,7 @@ import com.byit.model.vo.FlowVo;
import
com.byit.model.vo.NodeVo
;
import
com.byit.service.FlowService
;
import
com.byit.util.FlowInitUtil
;
import
com.byit.utils.ValidationUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -38,6 +40,8 @@ public class FlowServiceImpl implements FlowService {
private
NodeMapper
nodeMapper
;
@Resource
private
FlowDependentMapper
flowDependentMapper
;
@Resource
private
NodeDependencyMapper
nodeDependencyMapper
;
@Override
public
Flow
saveJobFlow
(
FlowVo
flowVo
)
{
...
...
@@ -55,12 +59,57 @@ public class FlowServiceImpl implements FlowService {
int
nodeCount
=
nodeVoList
.
size
();
log
.
info
(
"将【{}】个节点在工作流【{}】调度流程中"
,
nodeCount
,
flow
.
getFlowName
());
flow
.
setFlowNodeCount
(
nodeCount
);
//将工作流下的所有节点设为不在工作流调度上
log
.
info
(
"将工作流【{}】所有的节点移下调度"
,
flow
.
getFlowName
());
log
.
info
(
"将工作流【{}】所有的节点移下调度,并删除相关的依赖关系"
,
flow
.
getFlowName
());
//查询当前工作流下所有在调度上的节点
List
<
Node
>
nodeList
=
nodeMapper
.
findOnforkByFlowId
(
flow
.
getFlowId
());
//删除在调度上的节点的相关依赖
nodeList
.
forEach
(
node
->
nodeDependencyMapper
.
deleteByNodeId
(
node
.
getNodeId
()));
nodeMapper
.
updateOnforkDown
(
flow
.
getFlowId
());
//查找并删除工作流下的虚节点
List
<
Node
>
virtualNodeList
=
nodeMapper
.
findVirtualByFlowId
(
flow
.
getFlowId
());
if
(
null
!=
virtualNodeList
&&
virtualNodeList
.
size
()
>
0
){
for
(
Node
node
:
virtualNodeList
)
{
Flow
virtualFlow
=
new
Flow
();
virtualFlow
.
setFlowId
(
node
.
getMapFlowId
());
virtualFlow
.
setIsInner
(
"0"
);
//将内嵌的工作流设置为不是内嵌
flowMapper
.
updateByIdSelective
(
virtualFlow
);
}
}
//删除工作流下虚拟的节点
nodeMapper
.
deleteVirtualNode
(
flow
.
getFlowId
());
//将对应的节点更改为在调度上
log
.
info
(
"给工作流【{}】添加节点调度调度"
,
flow
.
getFlowName
());
nodeVoList
.
forEach
(
nodeVo
->
nodeMapper
.
updateOnforkUp
(
nodeVo
.
getNodeId
()));
for
(
NodeVo
nodeVo
:
nodeVoList
)
{
if
(
StringUtils
.
isNotEmpty
(
nodeVo
.
getIsVirtual
())
&&
"1"
.
equals
(
nodeVo
.
getIsVirtual
())){
//如果是虚拟节点就根据节点的id查找工作流的id
Flow
virtualFlow
=
flowMapper
.
getById
(
nodeVo
.
getNodeId
());
Node
virtualNode
=
new
Node
();
virtualNode
.
setMapFlowId
(
nodeVo
.
getNodeId
());
virtualNode
.
setIsVirtual
(
"0"
);
virtualNode
.
setAuthor
(
virtualFlow
.
getAuthor
());
virtualNode
.
setAddTime
(
new
Date
());
virtualNode
.
setOnFork
(
"0"
);
virtualNode
.
setVersionName
(
virtualFlow
.
getVersionName
());
Integer
virtualNodeId
=
nodeMapper
.
insertSelective
(
virtualNode
);
//将虚拟节点真实节点改为nodeid
nodeVo
.
setNodeId
(
virtualNode
.
getNodeId
());
//将映射的工作流改为是内嵌工作流
virtualFlow
.
setIsInner
(
"1"
);
flowMapper
.
updateByIdSelective
(
virtualFlow
);
}
else
{
nodeMapper
.
updateOnforkUp
(
nodeVo
.
getNodeId
());
}
//重新组建节点的依赖关系
if
(
StringUtils
.
isNotEmpty
(
nodeVo
.
getDependNodeIds
())){
List
<
String
>
dependNodeList
=
Arrays
.
asList
(
nodeVo
.
getDependNodeIds
());
dependNodeList
.
forEach
(
dependNodeId
->
nodeDependencyMapper
.
insert
(
nodeVo
.
getNodeId
(),
Integer
.
valueOf
(
dependNodeId
)));
}
}
}
//重组工作流依赖
...
...
@@ -146,7 +195,10 @@ public class FlowServiceImpl implements FlowService {
}
@Override
public
NodeVo
getFlowId
(
Integer
flowId
)
{
public
FlowVo
getFlowId
(
Integer
flowId
)
{
ValidationUtil
.
dataNotNull
(
flowId
,
"工作流Id不允许为空!"
);
Flow
flow
=
flowMapper
.
getById
(
flowId
);
List
<
Node
>
nodeList
=
nodeMapper
.
findOnforkByFlowId
(
flowId
);
return
null
;
}
...
...
byit-myth-core/myth-admin-core/src/main/resources/mapper/NodeDependencyMapper.xml
View file @
b4ac3ecd
...
...
@@ -12,10 +12,16 @@
where node_id = #{nodeId,jdbcType=INTEGER}
and dependency_id = #{dependencyId,jdbcType=INTEGER}
</delete>
<insert
id=
"insert"
parameterType=
"com.byit.model.NodeDependencyKey"
>
<delete
id=
"deleteByNodeId"
parameterType=
"integer"
>
delete from node_dependency
where node_id = #{nodeId,jdbcType=INTEGER}
</delete>
<insert
id=
"insert"
parameterType=
"integer"
>
<!-- generated @mbg.generated date: 2019-12-25 -->
insert into node_dependency (node_id, dependency_id)
values (#{nodeId,jdbcType=INTEGER}, #{depend
ency
Id,jdbcType=INTEGER})
values (#{nodeId,jdbcType=INTEGER}, #{depend
Node
Id,jdbcType=INTEGER})
</insert>
<insert
id=
"insertSelective"
parameterType=
"com.byit.model.NodeDependencyKey"
>
<!-- generated @mbg.generated date: 2019-12-25 -->
...
...
byit-myth-core/myth-admin-core/src/main/resources/mapper/NodeMapper.xml
View file @
b4ac3ecd
...
...
@@ -60,12 +60,39 @@
from node
where node_id = #{nodeId,jdbcType=INTEGER}
</select>
<select
id=
"findOnforkByFlowId"
parameterType=
"integer"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
,
<include
refid=
"Blob_Column_List"
/>
from node
where flow_id = #{flowId,jdbcType=INTEGER}
and on_fork = '0';
</select>
<select
id=
"findVirtualByFlowId"
parameterType=
"integer"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
,
<include
refid=
"Blob_Column_List"
/>
from node
where flow_id = #{flowId,jdbcType=INTEGER}
and is_virtual = '0';
</select>
<delete
id=
"deleteById"
parameterType=
"java.lang.Integer"
>
<!-- generated @mbg.generated date: 2019-12-25 -->
delete from node
where node_id = #{nodeId,jdbcType=INTEGER}
</delete>
<delete
id=
"deleteVirtualNode"
>
delete from node
where flow_id = #{flowId,jdbcType=INTEGER}
and is_virtual = '0';
</delete>
<insert
id=
"insertSelective"
parameterType=
"com.byit.model.Node"
>
<!-- generated @mbg.generated date: 2019-12-25 -->
insert into node
...
...
Write
Preview
Markdown
is supported
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