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
7461ec3f
Commit
7461ec3f
authored
Aug 04, 2020
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修正重新发布节点时,删除节点不生效的BUG
parent
c303fc0a
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
114 additions
and
16 deletions
+114
-16
ApiNodeCheckService.java
...n/src/main/java/com/byit/service/ApiNodeCheckService.java
+13
-0
ApiFlowServiceImpl.java
...c/main/java/com/byit/service/impl/ApiFlowServiceImpl.java
+7
-0
ApiNodeCheckServiceImpl.java
...n/java/com/byit/service/impl/ApiNodeCheckServiceImpl.java
+61
-0
NodeMapper.java
...-admin-core/src/main/java/com/byit/mapper/NodeMapper.java
+3
-0
NodeService.java
...dmin-core/src/main/java/com/byit/service/NodeService.java
+1
-1
NodeServiceImpl.java
.../src/main/java/com/byit/service/impl/NodeServiceImpl.java
+6
-0
RunRecordingAndLogServiceImpl.java
...ervice/mapservice/impl/RunRecordingAndLogServiceImpl.java
+4
-8
TaskAndLogServerImpl.java
...om/byit/service/mapservice/impl/TaskAndLogServerImpl.java
+9
-7
NodeMapper.xml
.../myth-admin-core/src/main/resources/mapper/NodeMapper.xml
+10
-0
No files found.
byit-myth-admin/src/main/java/com/byit/service/ApiNodeCheckService.java
0 → 100644
View file @
7461ec3f
package
com
.
byit
.
service
;
/**
* 工作流节点校验
* @author huangfu
*/
public
interface
ApiNodeCheckService
{
/**
* 工作流校验
* @param mainFlowId 主工作流的id
*/
void
checkFlowNode
(
Integer
mainFlowId
);
}
byit-myth-admin/src/main/java/com/byit/service/impl/ApiFlowServiceImpl.java
View file @
7461ec3f
...
@@ -20,6 +20,7 @@ import com.byit.model.RunRecording;
...
@@ -20,6 +20,7 @@ import com.byit.model.RunRecording;
import
com.byit.model.*
;
import
com.byit.model.*
;
import
com.byit.model.vo.RunRecordingVo
;
import
com.byit.model.vo.RunRecordingVo
;
import
com.byit.service.ApiFlowService
;
import
com.byit.service.ApiFlowService
;
import
com.byit.service.ApiNodeCheckService
;
import
com.byit.util.ApiFlowDagCheck
;
import
com.byit.util.ApiFlowDagCheck
;
import
com.byit.util.IDGenerationStrategy
;
import
com.byit.util.IDGenerationStrategy
;
import
com.byit.util.lock.RedissLockUtil
;
import
com.byit.util.lock.RedissLockUtil
;
...
@@ -61,6 +62,9 @@ public class ApiFlowServiceImpl implements ApiFlowService {
...
@@ -61,6 +62,9 @@ public class ApiFlowServiceImpl implements ApiFlowService {
private
FlowMapper
flowMapper
;
private
FlowMapper
flowMapper
;
@Resource
@Resource
private
ApiNodeCheckService
apiNodeCheckService
;
@Resource
private
FlowVersionMapper
flowVersionMapper
;
private
FlowVersionMapper
flowVersionMapper
;
@Resource
@Resource
...
@@ -128,6 +132,8 @@ public class ApiFlowServiceImpl implements ApiFlowService {
...
@@ -128,6 +132,8 @@ public class ApiFlowServiceImpl implements ApiFlowService {
//生成工作流版本
//生成工作流版本
log
.
debug
(
"生成版本"
);
log
.
debug
(
"生成版本"
);
FlowVersion
flowVersion
=
saveFlowVersion
(
flow
);
FlowVersion
flowVersion
=
saveFlowVersion
(
flow
);
apiNodeCheckService
.
checkFlowNode
(
flow
.
getFlowId
());
log
.
debug
(
"插件端通过API保存成功!"
);
log
.
debug
(
"插件端通过API保存成功!"
);
}
}
...
@@ -220,6 +226,7 @@ public class ApiFlowServiceImpl implements ApiFlowService {
...
@@ -220,6 +226,7 @@ public class ApiFlowServiceImpl implements ApiFlowService {
HashMap
<
String
,
Integer
>
nameIdRel
=
new
HashMap
<>();
HashMap
<
String
,
Integer
>
nameIdRel
=
new
HashMap
<>();
//保存节点信息
//保存节点信息
for
(
PluginBaseNode
pluginNode
:
pluginNodeList
){
for
(
PluginBaseNode
pluginNode
:
pluginNodeList
){
//查询这个节点是否存在 存在就修改节点 不存在就新建节点
Node
node
=
nodeMapper
.
getByNameAndFlow
(
pluginNode
.
getName
(),
flow
.
getFlowId
());
Node
node
=
nodeMapper
.
getByNameAndFlow
(
pluginNode
.
getName
(),
flow
.
getFlowId
());
if
(
null
==
node
){
if
(
null
==
node
){
node
=
new
Node
();
node
=
new
Node
();
...
...
byit-myth-admin/src/main/java/com/byit/service/impl/ApiNodeCheckServiceImpl.java
0 → 100644
View file @
7461ec3f
package
com
.
byit
.
service
.
impl
;
import
com.byit.model.Node
;
import
com.byit.model.vo.FlowVo
;
import
com.byit.service.ApiNodeCheckService
;
import
com.byit.service.FlowService
;
import
com.byit.service.NodeService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author huangfu
*/
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Slf4j
public
class
ApiNodeCheckServiceImpl
implements
ApiNodeCheckService
{
private
final
NodeService
nodeService
;
private
final
FlowService
flowService
;
public
ApiNodeCheckServiceImpl
(
NodeService
nodeService
,
FlowService
flowService
)
{
this
.
nodeService
=
nodeService
;
this
.
flowService
=
flowService
;
}
@Override
public
void
checkFlowNode
(
Integer
mainFlowId
)
{
//查询工作流
FlowVo
mainFlow
=
flowService
.
getFlowId
(
mainFlowId
);
String
flowVersionName
=
mainFlow
.
getVersionName
();
//基于主工作流查询所有的节点
List
<
Node
>
mainNode
=
nodeService
.
findNodeByFlowIdAndVersionName
(
mainFlowId
);
//迭代获取所有的虚节点
List
<
Node
>
allNodes
=
new
ArrayList
<>();
getAllInnerNode
(
mainNode
,
allNodes
);
//筛选版本号不一致的
List
<
Node
>
errorNode
=
allNodes
.
stream
().
filter
(
node
->
{
String
nodeVersionName
=
node
.
getVersionName
();
return
!
flowVersionName
.
equals
(
nodeVersionName
);
}).
collect
(
Collectors
.
toList
());
List
<
Integer
>
collect
=
errorNode
.
stream
().
map
(
Node:
:
getNodeId
).
collect
(
Collectors
.
toList
());
log
.
warn
(
"-------删除错误节点{}个--------"
,
collect
.
size
());
nodeService
.
deleteNode
(
collect
);
}
private
void
getAllInnerNode
(
List
<
Node
>
mainNodes
,
List
<
Node
>
candidateNodes
){
for
(
Node
node
:
mainNodes
)
{
if
(
"1"
.
equals
(
node
.
getIsVirtual
()))
{
candidateNodes
.
add
(
node
);
}
else
{
List
<
Node
>
mainNode
=
nodeService
.
findNodeByFlowIdAndVersionName
(
node
.
getMapFlowId
());
getAllInnerNode
(
mainNode
,
candidateNodes
);
}
}
}
}
byit-myth-core/myth-admin-core/src/main/java/com/byit/mapper/NodeMapper.java
View file @
7461ec3f
...
@@ -95,4 +95,6 @@ public interface NodeMapper {
...
@@ -95,4 +95,6 @@ public interface NodeMapper {
List
<
Node
>
findByFlowIdAndName
(
@Param
(
"flowId"
)
Integer
flowId
,
@Param
(
"nodeNameList"
)
List
<
String
>
nodeNameList
);
List
<
Node
>
findByFlowIdAndName
(
@Param
(
"flowId"
)
Integer
flowId
,
@Param
(
"nodeNameList"
)
List
<
String
>
nodeNameList
);
List
<
Node
>
findbyFlowIds
(
@Param
(
"flowIdList"
)
List
<
Integer
>
flowIdList
);
List
<
Node
>
findbyFlowIds
(
@Param
(
"flowIdList"
)
List
<
Integer
>
flowIdList
);
int
deleteNodeByIds
(
@Param
(
"ids"
)
List
<
Integer
>
ids
);
}
}
\ No newline at end of file
byit-myth-core/myth-admin-core/src/main/java/com/byit/service/NodeService.java
View file @
7461ec3f
...
@@ -26,6 +26,6 @@ public interface NodeService {
...
@@ -26,6 +26,6 @@ public interface NodeService {
Node
findNodeById
(
Integer
id
);
Node
findNodeById
(
Integer
id
);
int
deleteNode
(
List
<
Integer
>
ids
);
}
}
byit-myth-core/myth-admin-core/src/main/java/com/byit/service/impl/NodeServiceImpl.java
View file @
7461ec3f
...
@@ -30,4 +30,10 @@ public class NodeServiceImpl implements NodeService {
...
@@ -30,4 +30,10 @@ public class NodeServiceImpl implements NodeService {
public
Node
findNodeById
(
Integer
id
)
{
public
Node
findNodeById
(
Integer
id
)
{
return
nodeMapper
.
getById
(
id
);
return
nodeMapper
.
getById
(
id
);
}
}
@Override
public
int
deleteNode
(
List
<
Integer
>
ids
)
{
return
nodeMapper
.
deleteNodeByIds
(
ids
);
}
}
}
byit-myth-core/myth-admin-core/src/main/java/com/byit/service/mapservice/impl/RunRecordingAndLogServiceImpl.java
View file @
7461ec3f
...
@@ -49,13 +49,6 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
...
@@ -49,13 +49,6 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
@Override
@Override
public
void
logAndRunRecordingFailFast
(
RunRecording
runRecording
)
{
public
void
logAndRunRecordingFailFast
(
RunRecording
runRecording
)
{
String
runId
=
runRecording
.
getRunId
();
String
runId
=
runRecording
.
getRunId
();
//Integer flowId = runRecording.getFlowId();
//查询该实例对应的所由日志节点
//List<JobTaskRunLogWithBLOBs> jobTaskRunLog = jobTaskRunLogService.findJobTaskRunLogWithBLOBsByFlowIdAndRunId(flowId, runId);
//List<Integer> logNodeId = jobTaskRunLog.stream().map(JobTaskRunLog::getNodeId).collect(Collectors.toList());
//List<NodeVersion> allByFlowId = nodeVersionService.findAllByFlowId(flowId);
//筛选没在日志里面的节点
//List<NodeVersion> notLogNode = allByFlowId.stream().filter(nodeVersion -> !(logNodeId.contains(nodeVersion.getNodeId()))).collect(Collectors.toList());
//将这些节点置为失败并将实例也置为失败
//将这些节点置为失败并将实例也置为失败
//保存错误日志节点
//保存错误日志节点
//第一将非虚节点的节点保存进日志,同时保存虚节点,同时筛选出end节点 不作处理,让他自己执行队形的end节点(为了执行结束事件)
//第一将非虚节点的节点保存进日志,同时保存虚节点,同时筛选出end节点 不作处理,让他自己执行队形的end节点(为了执行结束事件)
...
@@ -63,6 +56,7 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
...
@@ -63,6 +56,7 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
//查询task所有的对应节点 这里需要判断不是虚节点 在进行日志插入之后需要将对应的节点删除
//查询task所有的对应节点 这里需要判断不是虚节点 在进行日志插入之后需要将对应的节点删除
List
<
JobTask
>
byRunId
=
jobTaskService
.
findByRunId
(
runId
);
List
<
JobTask
>
byRunId
=
jobTaskService
.
findByRunId
(
runId
);
byRunId
.
forEach
(
task
->{
byRunId
.
forEach
(
task
->{
//保存剩余节点的日志信息
JobTaskRunLogWithBLOBs
log
=
new
JobTaskRunLogWithBLOBs
();
JobTaskRunLogWithBLOBs
log
=
new
JobTaskRunLogWithBLOBs
();
BeanUtils
.
copyProperties
(
task
,
log
);
BeanUtils
.
copyProperties
(
task
,
log
);
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_ERROR
.
getCode
());
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_ERROR
.
getCode
());
...
@@ -76,10 +70,11 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
...
@@ -76,10 +70,11 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
log
.
setFlowName
(
runRecording
.
getFlowName
());
log
.
setFlowName
(
runRecording
.
getFlowName
());
log
.
setTriggerTime
(
thisTime
);
log
.
setTriggerTime
(
thisTime
);
jobTaskRunLogService
.
saveJobTaskRunLog
(
log
);
jobTaskRunLogService
.
saveJobTaskRunLog
(
log
);
//筛选虚节点
if
(
"0"
.
equals
(
task
.
getIsVirtual
()))
{
if
(
"0"
.
equals
(
task
.
getIsVirtual
()))
{
virtualTasks
.
add
(
task
);
virtualTasks
.
add
(
task
);
}
}
//删除这些节点
jobTaskService
.
removeMythJobTaskById
(
task
.
getId
());
jobTaskService
.
removeMythJobTaskById
(
task
.
getId
());
});
});
//执行实例的快速失败
//执行实例的快速失败
...
@@ -91,6 +86,7 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
...
@@ -91,6 +86,7 @@ public class RunRecordingAndLogServiceImpl implements RunRecordingAndLogService,
runRecording
.
setFlowRunResult
(
RunRecordingEnum
.
RUN_FLOW_FAILURE
.
getCode
());
runRecording
.
setFlowRunResult
(
RunRecordingEnum
.
RUN_FLOW_FAILURE
.
getCode
());
runRecording
.
setFailFast
(
RunRecordingEnum
.
FAIL_FAST_YES
.
getCode
());
runRecording
.
setFailFast
(
RunRecordingEnum
.
FAIL_FAST_YES
.
getCode
());
runRecordingService
.
updateRunRecordingById
(
runRecording
);
runRecordingService
.
updateRunRecordingById
(
runRecording
);
//执行工作流的完成事件
applicationEventPublisher
.
publishEvent
(
new
EndFlowEvent
(
this
,
runRecording
.
getFlowId
()));
applicationEventPublisher
.
publishEvent
(
new
EndFlowEvent
(
this
,
runRecording
.
getFlowId
()));
virtualTasks
.
forEach
(
virtualTask
->
{
virtualTasks
.
forEach
(
virtualTask
->
{
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/service/mapservice/impl/TaskAndLogServerImpl.java
View file @
7461ec3f
...
@@ -90,13 +90,14 @@ public class TaskAndLogServerImpl implements TaskAndLogServer {
...
@@ -90,13 +90,14 @@ public class TaskAndLogServerImpl implements TaskAndLogServer {
jobTaskRunLog
.
setTriggerTime
(
thisDate
);
jobTaskRunLog
.
setTriggerTime
(
thisDate
);
jobTaskRunLog
.
setStartTime
(
thisDate
);
jobTaskRunLog
.
setStartTime
(
thisDate
);
jobTaskRunLog
.
setEndTime
(
thisDate
);
jobTaskRunLog
.
setEndTime
(
thisDate
);
if
(
"end"
.
equals
(
jobTask
.
getNodeName
())){
// if("end".equals(jobTask.getNodeName())){
//未完成告警
// //未完成告警
// jobTaskRunLog.setAlertEnd("0");
// }else{
// //已完成告警
// jobTaskRunLog.setAlertEnd("1");
// }
jobTaskRunLog
.
setAlertEnd
(
"0"
);
jobTaskRunLog
.
setAlertEnd
(
"0"
);
}
else
{
//已完成告警
jobTaskRunLog
.
setAlertEnd
(
"1"
);
}
//添加日志节点
//添加日志节点
jobTaskRunLogService
.
saveJobTaskRunLog
(
jobTaskRunLog
);
jobTaskRunLogService
.
saveJobTaskRunLog
(
jobTaskRunLog
);
...
@@ -124,7 +125,8 @@ public class TaskAndLogServerImpl implements TaskAndLogServer {
...
@@ -124,7 +125,8 @@ public class TaskAndLogServerImpl implements TaskAndLogServer {
.
principal
(
virFlow
.
getPrincipal
())
.
principal
(
virFlow
.
getPrincipal
())
.
startTime
(
new
Date
())
.
startTime
(
new
Date
())
.
flowNodeCount
(
virFlow
.
getFlowNodeCount
())
.
flowNodeCount
(
virFlow
.
getFlowNodeCount
())
.
isAlarm
(
mainRecording
.
getIsAlarm
())
//.isAlarm(mainRecording.getIsAlarm())
.
isAlarm
(
"1"
)
.
isInner
(
FlowPropertyEnum
.
IS_INNER
.
getCode
())
.
isInner
(
FlowPropertyEnum
.
IS_INNER
.
getCode
())
.
failFast
(
RunRecordingEnum
.
FAIL_FAST_YES
.
getCode
())
.
failFast
(
RunRecordingEnum
.
FAIL_FAST_YES
.
getCode
())
.
workspaceId
(
virFlow
.
getWorkspaceId
())
.
workspaceId
(
virFlow
.
getWorkspaceId
())
...
...
byit-myth-core/myth-admin-core/src/main/resources/mapper/NodeMapper.xml
View file @
7461ec3f
...
@@ -149,6 +149,16 @@
...
@@ -149,6 +149,16 @@
)
)
</select>
</select>
<delete
id=
"deleteNodeByIds"
>
delete from node
where node_id in(
<foreach
collection=
"ids"
item=
"id"
separator=
","
>
#{id}
</foreach>
)
</delete>
<delete
id=
"deleteVirtualNode"
>
<delete
id=
"deleteVirtualNode"
>
delete from node
delete from node
where flow_id = #{flowId,jdbcType=INTEGER}
where flow_id = #{flowId,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