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
b0d45cea
Commit
b0d45cea
authored
Aug 17, 2020
by
guominglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
重跑时根据版本表信息查询依赖关系
parent
14b49e56
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
25 deletions
+35
-25
ApiFlowServiceImpl.java
...c/main/java/com/byit/service/impl/ApiFlowServiceImpl.java
+24
-24
NodeVersionMapper.java
...core/src/main/java/com/byit/mapper/NodeVersionMapper.java
+3
-0
NodeVersionMapper.xml
...dmin-core/src/main/resources/mapper/NodeVersionMapper.xml
+8
-1
No files found.
byit-myth-admin/src/main/java/com/byit/service/impl/ApiFlowServiceImpl.java
View file @
b0d45cea
...
...
@@ -483,7 +483,7 @@ public class ApiFlowServiceImpl implements ApiFlowService {
RunRecording
runRecording
=
runRecordingMapper
.
findRunRecordingByFlowIdAndRunId
(
flow
.
getFlowId
(),
runInfo
.
getRunId
());
ValidationUtil
.
dataNotNull
(
runRecording
,
"查无此运行记录"
);
//TODO 这里应该查询的是版本表 与版本号挂钩
// NodeVersion node
= nodeVersionMapper.findNodeByNodeNameAndVersionNameAndFlowId(runInfo.getNodeName(),runRecording.getFlowVersionName(),runRecording.getFlowId());
NodeVersion
nodeVersion
=
nodeVersionMapper
.
findNodeByNodeNameAndVersionNameAndFlowId
(
runInfo
.
getNodeName
(),
runRecording
.
getFlowVersionName
(),
runRecording
.
getFlowId
());
// //Node node = nodeMapper.getByNameAndFlow(runInfo.getNodeName(), flow.getFlowId());
// ValidationUtil.dataNotNull(node, runInfo.getNodeName() + "节点不存在");
...
...
@@ -525,28 +525,28 @@ public class ApiFlowServiceImpl implements ApiFlowService {
//判断重跑机制(单节点重跑,节点及下游重跑
if
(!
"1"
.
equals
(
runInfo
.
getRunState
()))
{
//如果不是只重跑当前节点
//查询依赖本节点的节点,并添加到集合中
List
<
Integer
>
subNodeIdList
=
nodeVersionDependencyMapper
.
findSubNodeList
(
jobTaskRunLog
.
getNode
Id
());
List
<
NodeVersion
>
subNodeList
=
nodeVersionMapper
.
findSubNodeList
(
nodeVersion
.
getNodeVersion
Id
());
Set
<
Integer
>
nodeIdSet
=
new
HashSet
<>();
Set
<
Integer
>
runNodeIdSet
=
new
HashSet
<>();
runNodeIdSet
.
add
(
jobTaskRunLog
.
getNodeId
());
nodeIdSet
.
add
(
jobTaskRunLog
.
getNodeId
());
//获取全部的需要重跑的节点
if
(
subNode
IdList
!=
null
&&
subNodeId
List
.
size
()
>
0
){
if
(
subNode
List
!=
null
&&
subNode
List
.
size
()
>
0
){
Queue
<
Integer
>
queue
=
new
LinkedList
<>();
subNode
IdList
.
forEach
(
nodeId
->
{
queue
.
offer
(
nodeId
);
runNodeIdSet
.
add
(
nodeId
);
subNode
List
.
forEach
(
subNode
->
{
queue
.
offer
(
subNode
.
getNodeVersionId
()
);
runNodeIdSet
.
add
(
subNode
.
getNodeId
()
);
});
while
(!
queue
.
isEmpty
()){
List
<
Integer
>
innerSubNodeIdList
=
nodeVersionDependency
Mapper
.
findSubNodeList
(
queue
.
poll
());
if
(
innerSubNode
IdList
!=
null
&&
innerSubNodeId
List
.
size
()
>
0
){
innerSubNode
IdList
.
forEach
(
nodeId
->{
queue
.
offer
(
nodeId
);
runNodeIdSet
.
add
(
nodeId
);
List
<
NodeVersion
>
innerSubNodeList
=
nodeVersion
Mapper
.
findSubNodeList
(
queue
.
poll
());
if
(
innerSubNode
List
!=
null
&&
innerSubNode
List
.
size
()
>
0
){
innerSubNode
List
.
forEach
(
innerSubNode
->{
queue
.
offer
(
innerSubNode
.
getNodeVersionId
()
);
runNodeIdSet
.
add
(
innerSubNode
.
getNodeId
()
);
});
}
}
addDependNode
(
runInfo
.
getRunId
(),
triggerTime
,
waitingTaskList
,
subNode
Id
List
,
userName
,
nodeIdSet
,
runNodeIdSet
);
addDependNode
(
runInfo
.
getRunId
(),
triggerTime
,
waitingTaskList
,
subNodeList
,
userName
,
nodeIdSet
,
runNodeIdSet
);
}
}
...
...
@@ -672,9 +672,9 @@ public class ApiFlowServiceImpl implements ApiFlowService {
}
}
private
void
addDependNode
(
String
runId
,
Long
triggerTime
,
List
<
WaitingTask
>
waitingTaskList
,
List
<
Integer
>
subNodeId
List
,
String
userName
,
Set
<
Integer
>
nodeIdSet
,
Set
<
Integer
>
runNodeIdSet
)
{
subNode
IdList
.
forEach
(
childNodeId
->
{
JobTaskRunLog
jobTaskRunLog
=
jobTaskRunLogMapper
.
findByRunIdAndNodeId
(
runId
,
childNode
Id
);
private
void
addDependNode
(
String
runId
,
Long
triggerTime
,
List
<
WaitingTask
>
waitingTaskList
,
List
<
NodeVersion
>
subNode
List
,
String
userName
,
Set
<
Integer
>
nodeIdSet
,
Set
<
Integer
>
runNodeIdSet
)
{
subNode
List
.
forEach
(
childNode
->
{
JobTaskRunLog
jobTaskRunLog
=
jobTaskRunLogMapper
.
findByRunIdAndNodeId
(
runId
,
childNode
.
getNodeId
()
);
WaitingTask
waitingTask
=
new
WaitingTask
();
BeanUtils
.
copyProperties
(
jobTaskRunLog
,
waitingTask
);
waitingTask
.
setTriggerTime
(
triggerTime
);
...
...
@@ -685,23 +685,23 @@ public class ApiFlowServiceImpl implements ApiFlowService {
waitingTask
.
setRunParam
(
jobTaskRunLog
.
getRunParams
());
//查询当前节点的依赖节点
List
<
Integer
>
dependNodeIdList
=
nodeVersionDependencyMapper
.
findDependIdByNodeId
(
jobTaskRunLog
.
getNodeId
());
if
(
dependNodeIdList
!=
null
&&
dependNodeIdList
.
size
()
>
0
){
if
(
StringUtils
.
isNotEmpty
(
jobTaskRunLog
.
getNodeDepend
())){
List
<
String
>
dependNodeIdList
=
Arrays
.
asList
(
jobTaskRunLog
.
getNodeDepend
().
split
(
","
));
List
<
Integer
>
realDependNodeIdList
=
new
ArrayList
<>();
for
(
Integer
dependNodeId
:
dependNodeIdList
)
{
if
(!
runNodeIdSet
.
add
(
dependNodeId
)){
realDependNodeIdList
.
add
(
dependNodeId
);
for
(
String
dependNodeId
:
dependNodeIdList
)
{
if
(!
runNodeIdSet
.
add
(
Integer
.
valueOf
(
dependNodeId
)
)){
realDependNodeIdList
.
add
(
Integer
.
valueOf
(
dependNodeId
)
);
}
}
waitingTask
.
setNodeDepend
(
Joiner
.
on
(
","
).
join
(
realDependNodeIdList
));
}
if
(
nodeIdSet
.
add
(
childNode
Id
)){
if
(
nodeIdSet
.
add
(
childNode
.
getNodeId
()
)){
waitingTaskList
.
add
(
waitingTask
);
}
//查询依赖于当前节点的下级节点
List
<
Integer
>
childNodeIdList
=
nodeVersionDependencyMapper
.
findSubNodeList
(
childNodeId
);
if
(
childNode
IdList
!=
null
&&
childNodeId
List
.
size
()
>
0
){
addDependNode
(
runId
,
triggerTime
,
waitingTaskList
,
childNode
Id
List
,
userName
,
nodeIdSet
,
runNodeIdSet
);
List
<
NodeVersion
>
childNodeList
=
nodeVersionMapper
.
findSubNodeList
(
childNode
.
getNodeId
()
);
if
(
childNode
List
!=
null
&&
childNode
List
.
size
()
>
0
){
addDependNode
(
runId
,
triggerTime
,
waitingTaskList
,
childNodeList
,
userName
,
nodeIdSet
,
runNodeIdSet
);
}
});
}
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/mapper/NodeVersionMapper.java
View file @
b0d45cea
...
...
@@ -43,4 +43,6 @@ public interface NodeVersionMapper {
* @return
*/
int
removeByFlowId
(
Integer
flowId
);
List
<
NodeVersion
>
findSubNodeList
(
Integer
nodeId
);
}
\ No newline at end of file
byit-myth-core/myth-admin-core/src/main/resources/mapper/NodeVersionMapper.xml
View file @
b0d45cea
...
...
@@ -88,8 +88,15 @@
where flow_id = #{flowId} and version_name = #{versionName} and node_name = #{nodeName}
</select>
<select
id=
"findSubNodeList"
resultMap=
"BaseResultMap"
>
select node.node_version_id, node.node_id
from node_version node
left join node_version_dependency dependency on node.node_version_id = dependency.node_version_id
where dependency.dependency_id = #{nodeId,jdbcType=INTEGER}
</select>
<delete
id=
"deleteById"
parameterType=
"java.lang.Integer"
>
<delete
id=
"deleteById"
parameterType=
"java.lang.Integer"
>
<!-- generated @mbg.generated date: 2019-12-31 -->
delete from node_version
where node_version_id = #{nodeVersionId,jdbcType=INTEGER}
...
...
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