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
f5fe3b57
Commit
f5fe3b57
authored
Sep 24, 2020
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 修正脚本运行命令替换
2. 添加java任务返回值携带回写参数
parent
5add5521
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
111 additions
and
82 deletions
+111
-82
JavaNodeExecutorTask.java
...ore/src/main/java/com/byit/task/JavaNodeExecutorTask.java
+45
-35
JavaTaskJobTask.java
...min-core/src/main/java/com/byit/task/JavaTaskJobTask.java
+21
-13
ScriptExecutorJobTask.java
...re/src/main/java/com/byit/task/ScriptExecutorJobTask.java
+40
-4
ScheduleThreadRunHelper.java
.../java/com/byit/thread/helper/ScheduleThreadRunHelper.java
+0
-29
CommunicationParam.java
...mmon/src/main/java/com/byit/param/CommunicationParam.java
+5
-1
No files found.
byit-myth-core/myth-admin-core/src/main/java/com/byit/task/JavaNodeExecutorTask.java
View file @
f5fe3b57
This diff is collapsed.
Click to expand it.
byit-myth-core/myth-admin-core/src/main/java/com/byit/task/JavaTaskJobTask.java
View file @
f5fe3b57
...
@@ -2,19 +2,19 @@ package com.byit.task;
...
@@ -2,19 +2,19 @@ package com.byit.task;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.byit.conf.MythJobAutoConfigure
;
import
com.byit.conf.MythJobAutoConfigure
;
import
com.byit.dto.executor.RunParamWrapped
;
import
com.byit.dto.plugin.JavaTask
;
import
com.byit.dto.plugin.JavaTask
;
import
com.byit.enums.ScheduleTypeEnum
;
import
com.byit.enums.ScheduleTypeEnum
;
import
com.byit.enums.task.RunResultEnum
;
import
com.byit.enums.task.RunResultEnum
;
import
com.byit.job.utils.DateUtil
;
import
com.byit.job.utils.DateUtil
;
import
com.byit.job.utils.MythLogUtils
;
import
com.byit.model.JobTaskRunLogWithBLOBs
;
import
com.byit.model.JobTaskRunLogWithBLOBs
;
import
com.byit.packet.request.PluginRpcRequestPacket
;
import
com.byit.packet.request.PluginRpcRequestPacket
;
import
com.byit.packet.response.PluginRpcResponsePacket
;
import
com.byit.packet.response.PluginRpcResponsePacket
;
import
com.byit.param.CommunicationParam
;
import
com.byit.param.CommunicationParam
;
import
com.byit.service.impl.JobTaskRunLogServiceImpl
;
import
com.byit.service.impl.JobTaskRunLogServiceImpl
;
import
com.byit.service.impl.RunJavaServiceImpl
;
import
com.byit.service.impl.RunJavaServiceImpl
;
import
com.byit.job.utils.MythLogUtils
;
import
com.byit.util.GetRegConfig
;
import
com.byit.util.GetRegConfig
;
import
com.byit.util.ServiceInfoUtil
;
import
com.byit.util.SpringUtil
;
import
com.byit.util.SpringUtil
;
import
io.netty.util.Timeout
;
import
io.netty.util.Timeout
;
import
io.netty.util.TimerTask
;
import
io.netty.util.TimerTask
;
...
@@ -26,6 +26,7 @@ import java.util.stream.Collectors;
...
@@ -26,6 +26,7 @@ import java.util.stream.Collectors;
/**
/**
* 立即运行 java单任务 java节点的执行器
* 立即运行 java单任务 java节点的执行器
*
* @author huangfu
* @author huangfu
*/
*/
public
class
JavaTaskJobTask
implements
TimerTask
{
public
class
JavaTaskJobTask
implements
TimerTask
{
...
@@ -44,9 +45,14 @@ public class JavaTaskJobTask implements TimerTask {
...
@@ -44,9 +45,14 @@ public class JavaTaskJobTask implements TimerTask {
}
}
private
void
runJob
(){
private
void
runJob
()
{
RunJavaServiceImpl
service
=
SpringUtil
.
getBean
(
RunJavaServiceImpl
.
class
);
RunJavaServiceImpl
service
=
SpringUtil
.
getBean
(
RunJavaServiceImpl
.
class
);
PluginRpcRequestPacket
request
=
new
PluginRpcRequestPacket
();
PluginRpcRequestPacket
request
=
new
PluginRpcRequestPacket
();
String
param
=
javaTask
.
getParam
();
RunParamWrapped
runParamWrapped
=
JSON
.
parseObject
(
param
,
RunParamWrapped
.
class
);
if
(
runParamWrapped
==
null
)
{
runParamWrapped
=
new
RunParamWrapped
();
}
//保存到日志
//保存到日志
Integer
logId
=
saveLog
(
javaTask
);
Integer
logId
=
saveLog
(
javaTask
);
GetRegConfig
getRegConfig
=
SpringUtil
.
getBean
(
GetRegConfig
.
class
);
GetRegConfig
getRegConfig
=
SpringUtil
.
getBean
(
GetRegConfig
.
class
);
...
@@ -55,41 +61,43 @@ public class JavaTaskJobTask implements TimerTask {
...
@@ -55,41 +61,43 @@ public class JavaTaskJobTask implements TimerTask {
request
.
setCallbackUrl
(
JSON
.
toJSONString
(
callUrlList
));
request
.
setCallbackUrl
(
JSON
.
toJSONString
(
callUrlList
));
CommunicationParam
communicationParam
=
new
CommunicationParam
();
CommunicationParam
communicationParam
=
new
CommunicationParam
();
communicationParam
.
setHasMakeUp
(
javaTask
.
getScheduleType
()
+
""
);
communicationParam
.
setHasMakeUp
(
javaTask
.
getScheduleType
()
+
""
);
communicationParam
.
setLogId
(
logId
+
""
);
communicationParam
.
setLogId
(
logId
+
""
);
communicationParam
.
setCallbackUrl
(
JSON
.
toJSONString
(
callUrlList
));
communicationParam
.
setCallbackUrl
(
JSON
.
toJSONString
(
callUrlList
));
communicationParam
.
setBody
(
javaTask
.
getParam
());
communicationParam
.
setBody
(
runParamWrapped
.
getPrivateParam
());
communicationParam
.
setPublicParam
(
runParamWrapped
.
getPublicParamMap
());
String
dateFormat
=
DateUtil
.
dateFormat
(
new
Date
(
javaTask
.
getTriggerTime
()),
DateUtil
.
FORMAT_DATE_TIME
);
String
dateFormat
=
DateUtil
.
dateFormat
(
new
Date
(
javaTask
.
getTriggerTime
()),
DateUtil
.
FORMAT_DATE_TIME
);
communicationParam
.
setExpand2
(
dateFormat
);
communicationParam
.
setExpand2
(
dateFormat
);
request
.
setParam
(
communicationParam
);
request
.
setParam
(
communicationParam
);
request
.
setExtension
(
logId
+
""
);
request
.
setExtension
(
logId
+
""
);
request
.
setJobName
(
javaTask
.
getTaskName
());
request
.
setJobName
(
javaTask
.
getTaskName
());
JobTaskRunLogWithBLOBs
log
=
new
JobTaskRunLogWithBLOBs
();
JobTaskRunLogWithBLOBs
log
=
new
JobTaskRunLogWithBLOBs
();
log
.
setLogId
(
logId
);
log
.
setLogId
(
logId
);
try
{
try
{
PluginRpcResponsePacket
pluginRpcResponsePacket
=
service
.
runJava
(
request
);
PluginRpcResponsePacket
pluginRpcResponsePacket
=
service
.
runJava
(
request
);
if
(
pluginRpcResponsePacket
.
isStatus
())
{
if
(
pluginRpcResponsePacket
.
isStatus
())
{
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_SUCCESS
.
getCode
());
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_SUCCESS
.
getCode
());
}
else
{
}
else
{
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_ERROR
.
getCode
());
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_ERROR
.
getCode
());
}
}
log
.
setTriggerMsg
(
pluginRpcResponsePacket
.
getMsg
());
log
.
setTriggerMsg
(
pluginRpcResponsePacket
.
getMsg
());
log
.
setJobGroupIp
(
pluginRpcResponsePacket
.
getRunIp
());
log
.
setJobGroupIp
(
pluginRpcResponsePacket
.
getRunIp
());
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_ERROR
.
getCode
());
log
.
setTriggerCode
(
RunResultEnum
.
TRIGGER_ERROR
.
getCode
());
log
.
setRunCode
(
RunResultEnum
.
RUN_ERROR
.
getCode
());
log
.
setRunCode
(
RunResultEnum
.
RUN_ERROR
.
getCode
());
log
.
setRunMsg
(
javaTask
.
getTaskName
()
+
":"
+
MythLogUtils
.
getMessage
(
e
));
log
.
setRunMsg
(
javaTask
.
getTaskName
()
+
":"
+
MythLogUtils
.
getMessage
(
e
));
log
.
setTriggerMsg
(
javaTask
.
getTaskName
()
+
":"
+
MythLogUtils
.
getMessage
(
e
));
log
.
setTriggerMsg
(
javaTask
.
getTaskName
()
+
":"
+
MythLogUtils
.
getMessage
(
e
));
}
}
JobTaskRunLogServiceImpl
jobTaskRunLogService
=
SpringUtil
.
getBean
(
JobTaskRunLogServiceImpl
.
class
);
JobTaskRunLogServiceImpl
jobTaskRunLogService
=
SpringUtil
.
getBean
(
JobTaskRunLogServiceImpl
.
class
);
jobTaskRunLogService
.
updateJobTaskRunLogWithBLOBs
(
log
);
jobTaskRunLogService
.
updateJobTaskRunLogWithBLOBs
(
log
);
}
}
private
Integer
saveLog
(
JavaTask
javaTask
){
private
Integer
saveLog
(
JavaTask
javaTask
)
{
JobTaskRunLogWithBLOBs
log
=
new
JobTaskRunLogWithBLOBs
();
JobTaskRunLogWithBLOBs
log
=
new
JobTaskRunLogWithBLOBs
();
log
.
setStartTime
(
new
Date
());
log
.
setStartTime
(
new
Date
());
log
.
setScheduleType
(
ScheduleTypeEnum
.
JAVA_SYNC
.
getCode
());
log
.
setScheduleType
(
ScheduleTypeEnum
.
JAVA_SYNC
.
getCode
());
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/task/ScriptExecutorJobTask.java
View file @
f5fe3b57
package
com
.
byit
.
task
;
package
com
.
byit
.
task
;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.byit.conf.MythJobAutoConfigure
;
import
com.byit.conf.MythJobAutoConfigure
;
import
com.byit.dto.executor.DispatchResponseDto
;
import
com.byit.dto.executor.DispatchResponseDto
;
import
com.byit.dto.executor.RunParamWrapped
;
import
com.byit.dto.executor.ScriptDto
;
import
com.byit.dto.executor.ScriptDto
;
import
com.byit.dto.executor.ScriptParamAndPlaceholderDto
;
import
com.byit.dto.plugin.RunLog
;
import
com.byit.dto.plugin.RunLog
;
import
com.byit.enums.*
;
import
com.byit.enums.*
;
import
com.byit.enums.task.RunResultEnum
;
import
com.byit.enums.task.RunResultEnum
;
import
com.byit.enums.task.RunTypeEnum
;
import
com.byit.enums.task.RunTypeEnum
;
import
com.byit.factory.PluginClientFactory
;
import
com.byit.factory.PluginClientFactory
;
import
com.byit.factory.PluginSpringClientFactory
;
import
com.byit.factory.PluginSpringClientFactory
;
import
com.byit.job.utils.PlaceholderUtils
;
import
com.byit.model.JobTaskRunLogWithBLOBs
;
import
com.byit.model.JobTaskRunLogWithBLOBs
;
import
com.byit.model.JobTaskSchedule
;
import
com.byit.model.JobTaskSchedule
;
import
com.byit.registry.PluginServiceRegistry
;
import
com.byit.registry.PluginServiceRegistry
;
...
@@ -26,10 +30,7 @@ import io.netty.util.TimerTask;
...
@@ -26,10 +30,7 @@ import io.netty.util.TimerTask;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.TreeSet
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
com
.
alibaba
.
fastjson
.
serializer
.
SerializerFeature
.
WriteClassName
;
import
static
com
.
alibaba
.
fastjson
.
serializer
.
SerializerFeature
.
WriteClassName
;
...
@@ -86,6 +87,40 @@ public class ScriptExecutorJobTask implements TimerTask {
...
@@ -86,6 +87,40 @@ public class ScriptExecutorJobTask implements TimerTask {
return
bean
.
checkFlowStatusIsKill
(
flowId
,
runId
);
return
bean
.
checkFlowStatusIsKill
(
flowId
,
runId
);
}
}
private
String
commandBuild
(
JobTaskSchedule
mythJobTaskSchedule
){
//获取运行时参数
String
runParam
=
mythJobTaskSchedule
.
getRunParam
();
//获取命令
String
command
=
mythJobTaskSchedule
.
getRunCommand
();
//转换参数对象为参数包装体
RunParamWrapped
runParamWrapped
=
JSON
.
parseObject
(
runParam
,
RunParamWrapped
.
class
);
//当参数包装体不为空时 证明存在参数 或私有或公有
if
(
runParamWrapped
!=
null
)
{
//获取到私有参数
String
privateParam
=
runParamWrapped
.
getPrivateParam
();
//获取到公有参数
Map
<
String
,
String
>
publicParam
=
runParamWrapped
.
getPublicParamMap
();
//将私有参数转换为对应的参数DTO
ScriptParamAndPlaceholderDto
scriptParamAndPlaceholderDto
=
JSON
.
parseObject
(
privateParam
,
ScriptParamAndPlaceholderDto
.
class
);
//脚本参数不为空的时候
if
(
scriptParamAndPlaceholderDto
!=
null
)
{
Map
<
String
,
String
>
param
=
scriptParamAndPlaceholderDto
.
getParam
();
if
(
CollectionUtil
.
isNotEmpty
(
param
)){
command
=
PlaceholderUtils
.
commandReplace
(
command
,
param
);
}
}
//公共参数不为空的时候
if
(
CollectionUtil
.
isNotEmpty
(
publicParam
))
{
command
=
PlaceholderUtils
.
commandReplace
(
command
,
publicParam
);
}
//替换运行参数中的时间参数
if
(
ScheduleTypeEnum
.
NORMAL
.
getCode
().
equals
(
mythJobTaskSchedule
.
getScheduleType
()))
{
mythJobTaskSchedule
.
setRunParam
(
PlaceholderUtils
.
formatParam
(
privateParam
));
}
}
return
command
;
}
/**
/**
* 运行任务
* 运行任务
* @param mythJobTaskSchedule 运行的排期表
* @param mythJobTaskSchedule 运行的排期表
...
@@ -93,6 +128,7 @@ public class ScriptExecutorJobTask implements TimerTask {
...
@@ -93,6 +128,7 @@ public class ScriptExecutorJobTask implements TimerTask {
private
void
runJob
(
JobTaskSchedule
mythJobTaskSchedule
)
{
private
void
runJob
(
JobTaskSchedule
mythJobTaskSchedule
)
{
DispatchResponseDto
dispatchResponseDto
=
new
DispatchResponseDto
();
DispatchResponseDto
dispatchResponseDto
=
new
DispatchResponseDto
();
try
{
try
{
mythJobTaskSchedule
.
setRunCommand
(
commandBuild
(
mythJobTaskSchedule
));
RunScriptService
runScriptService
=
SpringUtil
.
getBean
(
RunScriptService
.
class
);
RunScriptService
runScriptService
=
SpringUtil
.
getBean
(
RunScriptService
.
class
);
JobTaskRunLogServiceImpl
jobTaskRunLogService
=
SpringUtil
.
getBean
(
JobTaskRunLogServiceImpl
.
class
);
JobTaskRunLogServiceImpl
jobTaskRunLogService
=
SpringUtil
.
getBean
(
JobTaskRunLogServiceImpl
.
class
);
log
.
info
(
"--------------logid:{}----------"
,
mythJobTaskSchedule
.
getLogId
());
log
.
info
(
"--------------logid:{}----------"
,
mythJobTaskSchedule
.
getLogId
());
...
...
byit-myth-core/myth-admin-core/src/main/java/com/byit/thread/helper/ScheduleThreadRunHelper.java
View file @
f5fe3b57
...
@@ -62,37 +62,8 @@ public class ScheduleThreadRunHelper extends BaseThreadRunHelper {
...
@@ -62,37 +62,8 @@ public class ScheduleThreadRunHelper extends BaseThreadRunHelper {
log
.
debug
(
"------排期表查询到有需要存在的节点--------"
);
log
.
debug
(
"------排期表查询到有需要存在的节点--------"
);
//循环遍历添加任务
//循环遍历添加任务
jobTaskSchedules
.
forEach
(
mythJobTaskSchedule
->{
jobTaskSchedules
.
forEach
(
mythJobTaskSchedule
->{
//获取运行时参数
String
runParam
=
mythJobTaskSchedule
.
getRunParam
();
//获取命令
//获取命令
String
command
=
mythJobTaskSchedule
.
getRunCommand
();
String
command
=
mythJobTaskSchedule
.
getRunCommand
();
//转换参数对象为参数包装体
RunParamWrapped
runParamWrapped
=
JSON
.
parseObject
(
runParam
,
RunParamWrapped
.
class
);
//当参数包装体不为空时 证明存在参数 或私有或公有
if
(
runParamWrapped
!=
null
)
{
//获取到私有参数
String
privateParam
=
runParamWrapped
.
getPrivateParam
();
//获取到公有参数
Map
<
String
,
String
>
publicParam
=
runParamWrapped
.
getPublicParamMap
();
//将私有参数转换为对应的参数DTO
ScriptParamAndPlaceholderDto
scriptParamAndPlaceholderDto
=
JSON
.
parseObject
(
privateParam
,
ScriptParamAndPlaceholderDto
.
class
);
//脚本参数不为空的时候
if
(
scriptParamAndPlaceholderDto
!=
null
)
{
Map
<
String
,
String
>
param
=
scriptParamAndPlaceholderDto
.
getParam
();
if
(
CollectionUtil
.
isNotEmpty
(
param
)){
command
=
PlaceholderUtils
.
commandReplace
(
command
,
param
);
}
}
//公共参数不为空的时候
if
(
CollectionUtil
.
isNotEmpty
(
publicParam
))
{
command
=
PlaceholderUtils
.
commandReplace
(
command
,
publicParam
);
}
//替换运行参数中的时间参数
if
(
ScheduleTypeEnum
.
NORMAL
.
getCode
().
equals
(
mythJobTaskSchedule
.
getScheduleType
()))
{
mythJobTaskSchedule
.
setRunParam
(
PlaceholderUtils
.
formatParam
(
privateParam
));
}
}
//除去JAVA任务
//除去JAVA任务
if
(!
NodeTypeEnum
.
JAVA
.
getCode
().
equals
(
mythJobTaskSchedule
.
getJobType
())){
if
(!
NodeTypeEnum
.
JAVA
.
getCode
().
equals
(
mythJobTaskSchedule
.
getJobType
())){
assert
command
!=
null
;
assert
command
!=
null
;
...
...
byit-plugin-core/byit-plugin-rpc-common/src/main/java/com/byit/param/CommunicationParam.java
View file @
f5fe3b57
...
@@ -3,6 +3,7 @@ package com.byit.param;
...
@@ -3,6 +3,7 @@ package com.byit.param;
import
lombok.Data
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Map
;
/**
/**
* 执行参数
* 执行参数
...
@@ -39,7 +40,10 @@ public class CommunicationParam implements Serializable {
...
@@ -39,7 +40,10 @@ public class CommunicationParam implements Serializable {
*/
*/
private
String
hasMakeUp
;
private
String
hasMakeUp
;
/**
* 设置公共参数
*/
private
Map
<
String
,
String
>
publicParam
;
/**
/**
* 工作流ID
* 工作流ID
*/
*/
...
...
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