!359 [需求认领] 对接 powerjob 实现分布式任务调度 集成方式参考框架内 xxl-job
* 对接powerjob替换xxl-job实现分布式任务调度
已添加21个文件
已删除174个文件
已修改14个文件
40432 ■■■■■ 文件已修改
README.md 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-dev.yml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-prod.yml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-job/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-job/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/PowerJobConfig.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/XxlJobConfig.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/properties/XxlJobProperties.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/pom.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/java/org/dromara/powerjob/server/RuoyiPowerJobServerApplication.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application-daily.properties 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application-pre.properties 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application-product.properties 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application.properties 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/banner.txt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/logback-config/powerjob_monitor.xml 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/logback-dev.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/logback-product.xml 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/Dockerfile 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/pom.xml 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/UserController.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/complete/XxlJobCompleter.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java 1679 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java 413 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/MisfireStrategyEnum.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/ScheduleTypeEnum.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobCompleteHelper.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/LoginService.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-dev.yml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-prod.yml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application.yml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/banner.txt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/i18n/message_en.properties 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/i18n/message_zh_CN.properties 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/i18n/message_zh_TC.properties 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/logback-plus.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg 2230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js 1653 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js 841 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg 2671 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/common.1.js 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/index.js 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/jobcode.index.1.js 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/jobgroup.index.1.js 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js 739 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/joblog.detail.1.js 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/joblog.index.1.js 396 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/login.1.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/user.index.1.js 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js 434 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js 9698 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js 879 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js 899 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/cronGen/cronGen.js 1106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js 1106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/layer.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/layer.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/common/common.exception.ftl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/common/common.macro.ftl 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/help.ftl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/index.ftl 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/jobcode/jobcode.index.ftl 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl 540 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/joblog/joblog.detail.ftl 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/joblog/joblog.index.ftl 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/login.ftl 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/user/user.index.ftl 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/package-info.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/BroadcastProcessorDemo.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/LogTestProcessor.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapProcessorDemo.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapReduceProcessorDemo.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/SimpleProcessor.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/StandaloneProcessorDemo.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/TimeoutProcessor.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/SampleService.java 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/workflow/WorkflowStandaloneProcessor.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/docker/docker-compose.yml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/docker/nginx/conf/nginx.conf 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/oracle/oracle_ry_vue_5.X.sql 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/postgres/postgres_ry_vue_5.X.sql 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/powerjob_demo.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/ry_vue_5.X.sql 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/sqlserver/sqlserver_ry_vue_5.X.sql 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
script/sql/tables_xxl_job.sql 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -54,7 +54,7 @@
| åºåˆ—化         | é‡‡ç”¨ Jackson Spring官方内置序列化 é è°±!!!                                                                                    | é‡‡ç”¨ fastjson bugjson è¿œè¿‘闻名                                                           | 
| åˆ†å¸ƒå¼å¹‚ç­‰       | å‚考美团GTIS防重系统简化实现(细节可看文档)                                                                                          | æ‰‹åŠ¨ç¼–å†™æ³¨è§£åŸºäºŽaop实现                                                                      |
| åˆ†å¸ƒå¼é”        | é‡‡ç”¨ Lock4j åº•层基于 Redisson                                                                                           | æ—                                                                                   |
| åˆ†å¸ƒå¼ä»»åŠ¡è°ƒåº¦     | é‡‡ç”¨ Xxl-Job å¤©ç”Ÿæ”¯æŒåˆ†å¸ƒå¼ ç»Ÿä¸€çš„管理中心                                                                                        | é‡‡ç”¨ Quartz åŸºäºŽæ•°æ®åº“锁性能差 é›†ç¾¤éœ€è¦åšå¾ˆå¤šé…ç½®ä¸Žæ”¹é€                                                    |
| åˆ†å¸ƒå¼ä»»åŠ¡è°ƒåº¦     | é‡‡ç”¨ PowerJob å¤©ç”Ÿæ”¯æŒåˆ†å¸ƒå¼ ç»Ÿä¸€çš„管理中心                                                                                       | é‡‡ç”¨ Quartz åŸºäºŽæ•°æ®åº“锁性能差 é›†ç¾¤éœ€è¦åšå¾ˆå¤šé…ç½®ä¸Žæ”¹é€                                                    |
| æ–‡ä»¶å­˜å‚¨        | é‡‡ç”¨ Minio åˆ†å¸ƒå¼æ–‡ä»¶å­˜å‚¨ å¤©ç”Ÿæ”¯æŒå¤šæœºã€å¤šç¡¬ç›˜ã€å¤šåˆ†ç‰‡ã€å¤šå‰¯æœ¬å­˜å‚¨<br/>支持权限管理 å®‰å…¨å¯é  æ–‡ä»¶å¯åŠ å¯†å­˜å‚¨                                                     | é‡‡ç”¨ æœ¬æœºæ–‡ä»¶å­˜å‚¨ æ–‡ä»¶è£¸æ¼ æ˜“丢失泄漏 ä¸æ”¯æŒé›†ç¾¤æœ‰å•点效应                                                    |
| äº‘存储         | é‡‡ç”¨ AWS S3 åè®®å®¢æˆ·ç«¯ æ”¯æŒ ä¸ƒç‰›ã€é˜¿é‡Œã€è…¾è®¯ ç­‰ä¸€åˆ‡æ”¯æŒS3协议的厂家                                                                          | ä¸æ”¯æŒ                                                                                |
| çŸ­ä¿¡          | é‡‡ç”¨ sms4j çŸ­ä¿¡èžåˆåŒ… æ”¯æŒæ•°åç§çŸ­ä¿¡åނ家 åªéœ€åœ¨yml配置好厂家密钥即可使用 å¯å¤šåŽ‚å®¶å…±ç”¨                                                                 | ä¸æ”¯æŒ                                                                                |
pom.xml
@@ -34,7 +34,7 @@
        <lock4j.version>2.2.4</lock4j.version>
        <dynamic-ds.version>3.6.1</dynamic-ds.version>
        <alibaba-ttl.version>2.14.2</alibaba-ttl.version>
        <xxl-job.version>2.4.0</xxl-job.version>
        <powerjob.version>4.3.3</powerjob.version>
        <mapstruct-plus.version>1.2.3</mapstruct-plus.version>
        <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
        <lombok.version>1.18.26</lombok.version>
@@ -264,12 +264,6 @@
                <version>${lock4j.version}</version>
            </dependency>
            <!-- xxl-job-core -->
            <dependency>
                <groupId>com.xuxueli</groupId>
                <artifactId>xxl-job-core</artifactId>
                <version>${xxl-job.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
@@ -328,6 +322,18 @@
                <version>${revision}</version>
            </dependency>
            <!-- PowerJob -->
            <dependency>
                <groupId>tech.powerjob</groupId>
                <artifactId>powerjob-worker-spring-boot-starter</artifactId>
                <version>${powerjob.version}</version>
            </dependency>
            <dependency>
                <groupId>tech.powerjob</groupId>
                <artifactId>powerjob-official-processors</artifactId>
                <version>${powerjob.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
ruoyi-admin/src/main/resources/application-dev.yml
@@ -8,27 +8,19 @@
  username: ruoyi
  password: 123456
--- # xxl-job é…ç½®
xxl.job:
  # æ‰§è¡Œå™¨å¼€å…³
  enabled: true
  # è°ƒåº¦ä¸­å¿ƒåœ°å€ï¼šå¦‚调度中心集群部署存在多个地址则用逗号分隔。
  admin-addresses: http://localhost:9100/xxl-job-admin
  # æ‰§è¡Œå™¨é€šè®¯TOKEN:非空时启用
  access-token: xxl-job
  executor:
    # æ‰§è¡Œå™¨AppName:执行器心跳注册分组依据;为空则关闭自动注册
    appname: xxl-job-executor
    # æ‰§è¡Œå™¨ç«¯å£å· æ‰§è¡Œå™¨ä»Ž9101开始往后写
    port: 9101
    # æ‰§è¡Œå™¨æ³¨å†Œï¼šé»˜è®¤IP:PORT
    address:
    # æ‰§è¡Œå™¨IP:默认自动获取IP
    ip:
    # æ‰§è¡Œå™¨è¿è¡Œæ—¥å¿—文件存储磁盘路径
    logpath: ./logs/xxl-job
    # æ‰§è¡Œå™¨æ—¥å¿—文件保存天数:大于3生效
    logretentiondays: 30
--- # powerjob é…ç½®
powerjob:
  worker:
    enabled: true
    # éœ€è¦çŽ°åœ¨powerjob登录页执行应用注册后才能使用
    app-name: ruoyi-worker
    enable-test-mode: false
    max-appended-wf-context-length: 4096
    max-result-length: 4096
    port: 27777
    protocol: http
    server-address: 127.0.0.1:7700,127.0.0.1:7701
    store-strategy: disk
--- # æ•°æ®æºé…ç½®
spring:
ruoyi-admin/src/main/resources/application-prod.yml
@@ -11,27 +11,19 @@
  username: ruoyi
  password: 123456
--- # xxl-job é…ç½®
xxl.job:
  # æ‰§è¡Œå™¨å¼€å…³
  enabled: true
  # è°ƒåº¦ä¸­å¿ƒåœ°å€ï¼šå¦‚调度中心集群部署存在多个地址则用逗号分隔。
  admin-addresses: http://localhost:9100/xxl-job-admin
  # æ‰§è¡Œå™¨é€šè®¯TOKEN:非空时启用
  access-token: xxl-job
  executor:
    # æ‰§è¡Œå™¨AppName:执行器心跳注册分组依据;为空则关闭自动注册
    appname: xxl-job-executor
    # æ‰§è¡Œå™¨ç«¯å£å· æ‰§è¡Œå™¨ä»Ž9101开始往后写
    port: 9101
    # æ‰§è¡Œå™¨æ³¨å†Œï¼šé»˜è®¤IP:PORT
    address:
    # æ‰§è¡Œå™¨IP:默认自动获取IP
    ip:
    # æ‰§è¡Œå™¨è¿è¡Œæ—¥å¿—文件存储磁盘路径
    logpath: ./logs/xxl-job
    # æ‰§è¡Œå™¨æ—¥å¿—文件保存天数:大于3生效
    logretentiondays: 30
--- # powerjob é…ç½®
powerjob:
  worker:
    enabled: true
    # éœ€è¦çŽ°åœ¨powerjob登录页执行应用注册后才能使用
    app-name: ruoyi-worker
    enable-test-mode: false
    max-appended-wf-context-length: 4096
    max-result-length: 4096
    port: 27777
    protocol: http
    server-address: 127.0.0.1:7700,127.0.0.1:7701
    store-strategy: disk
--- # æ•°æ®æºé…ç½®
spring:
ruoyi-common/ruoyi-common-job/pom.xml
@@ -15,17 +15,21 @@
        ruoyi-common-job å®šæ—¶ä»»åŠ¡
    </description>
    <dependencies>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <!-- xxl-job-core -->
        <!--PowerJob-->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <groupId>tech.powerjob</groupId>
            <artifactId>powerjob-worker-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>tech.powerjob</groupId>
            <artifactId>powerjob-official-processors</artifactId>
        </dependency>
        <dependency>
ruoyi-common/ruoyi-common-job/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java
ÎļþÒÑɾ³ý
ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/PowerJobConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package org.dromara.common.job.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import tech.powerjob.worker.PowerJobWorker;
/**
 * å¯åŠ¨å®šæ—¶ä»»åŠ¡
 * @author yhan219
 * @since 2023/6/2
 */
@Configuration
@ConditionalOnBean(PowerJobWorker.class)
@ConditionalOnProperty(prefix = "powerjob.worker", name = "enabled", havingValue = "true")
@EnableScheduling
public class PowerJobConfig {
}
ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/XxlJobConfig.java
ÎļþÒÑɾ³ý
ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/properties/XxlJobProperties.java
ÎļþÒÑɾ³ý
ruoyi-common/ruoyi-common-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
ÎļþÒÑɾ³ý
ruoyi-extend/pom.xml
@@ -13,7 +13,7 @@
    <modules>
        <module>ruoyi-monitor-admin</module>
        <module>ruoyi-xxl-job-admin</module>
        <module>ruoyi-powerjob-server</module>
    </modules>
</project>
ruoyi-extend/ruoyi-powerjob-server/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.dromara</groupId>
        <artifactId>ruoyi-extend</artifactId>
        <version>${revision}</version>
    </parent>
    <groupId>org.dromara</groupId>
    <artifactId>ruoyi-powerjob-server</artifactId>
    <version>${revision}</version>
    <packaging>jar</packaging>
    <properties>
        <spring-boot.version>2.7.4</spring-boot.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- PowerJob server-->
        <dependency>
            <groupId>tech.powerjob</groupId>
            <artifactId>powerjob-server-starter</artifactId>
            <version>${powerjob.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
ruoyi-extend/ruoyi-powerjob-server/src/main/java/org/dromara/powerjob/server/RuoyiPowerJobServerApplication.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package org.dromara.powerjob.server;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import tech.powerjob.server.PowerJobServerApplication;
import tech.powerjob.server.common.utils.PropertyUtils;
/**
 * Admin ç›‘控启动程序
 *
 * @author yhan219
 */
@Slf4j
@EnableScheduling
@SpringBootApplication(scanBasePackages = "tech.powerjob.server")
public class RuoyiPowerJobServerApplication {
    private static final String TIPS = "\n\n" +
        "******************* PowerJob Tips *******************\n" +
        "如果应用无法启动,我们建议您仔细阅读以下文档来解决:\n" +
        "if server can't startup, we recommend that you read the documentation to find a solution:\n" +
        "https://www.yuque.com/powerjob/guidence/problem\n" +
        "******************* PowerJob Tips *******************\n\n";
    public static void main(String[] args) {
        pre();
        // Start SpringBoot application.
        try {
            SpringApplication.run(PowerJobServerApplication.class, args);
        } catch (Throwable t) {
            log.error(TIPS);
            throw t;
        }
    }
    private static void pre() {
        log.info(TIPS);
        PropertyUtils.init();
    }
}
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application-daily.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
oms.env=DAILY
logging.config=classpath:logback-dev.xml
####### Database properties(Configure according to the the environment) #######
spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.core.username=root
spring.datasource.core.password=root
spring.datasource.core.maximum-pool-size=20
spring.datasource.core.minimum-idle=5
####### MongoDB properties(Non-core configuration properties)  #######
####### delete mongodb config to disable mongodb #######
#oms.mongodb.enable=true
#spring.data.mongodb.uri=mongodb+srv://zqq:No1Bug2Please3!@cluster0.wie54.gcp.mongodb.net/powerjob_daily?retryWrites=true&w=majority
####### Email properties(Non-core configuration properties) #######
####### Delete the following code to disable the mail #######
#spring.mail.host=smtp.163.com
#spring.mail.username=zqq@163.com
#spring.mail.password=GOFZPNARMVKCGONV
#spring.mail.properties.mail.smtp.auth=true
#spring.mail.properties.mail.smtp.starttls.enable=true
#spring.mail.properties.mail.smtp.starttls.required=true
####### DingTalk properties(Non-core configuration properties) #######
####### Delete the following code to disable the DingTalk #######
#oms.alarm.ding.app-key=dingauqwkvxxnqskknfv
#oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl
#oms.alarm.ding.agent-id=847044348
####### Resource cleaning properties #######
oms.instanceinfo.retention=1
oms.container.retention.local=1
oms.container.retention.remote=-1
####### Cache properties #######
oms.instance.metadata.cache.size=1024
####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which #######
####### split-brain could be avoided while performance overhead would increase. #######
oms.accurate.select.server.percentage = 50
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application-pre.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
oms.env=PRE
logging.config=classpath:logback-product.xml
####### Database properties(Configure according to the the environment) #######
spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.core.jdbc-url=jdbc:mysql://remotehost:3306/powerjob-pre?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.core.username=root
spring.datasource.core.password=No1Bug2Please3!
spring.datasource.core.maximum-pool-size=20
spring.datasource.core.minimum-idle=5
####### MongoDB properties(Non-core configuration properties)  #######
####### delete mongodb config to disable mongodb #######
oms.mongodb.enable=true
spring.data.mongodb.uri=mongodb://remotehost:27017/powerjob-pre
####### Email properties(Non-core configuration properties) #######
####### Delete the following code to disable the mail #######
spring.mail.host=smtp.qq.com
spring.mail.username=zqq
spring.mail.password=qqz
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
####### DingTalk properties(Non-core configuration properties) #######
####### Delete the following code to disable the DingTalk #######
oms.alarm.ding.app-key=dingauqwkvxxnqskknfv
oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl
oms.alarm.ding.agent-id=847044348
####### Resource cleaning properties #######
oms.instanceinfo.retention=3
oms.container.retention.local=3
oms.container.retention.remote=-1
####### Cache properties #######
oms.instance.metadata.cache.size=1024
####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which #######
####### split-brain could be avoided while performance overhead would increase. #######
oms.accurate.select.server.percentage = 50
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application-product.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
oms.env=PRODUCT
logging.config=classpath:logback-product.xml
####### Database properties(Configure according to the the environment) #######
spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/powerjob-product?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.core.username=root
spring.datasource.core.password=No1Bug2Please3!
spring.datasource.core.maximum-pool-size=20
spring.datasource.core.minimum-idle=5
####### MongoDB properties(Non-core configuration properties)  #######
####### delete mongodb config to disable mongodb #######
oms.mongodb.enable=true
spring.data.mongodb.uri=mongodb://localhost:27017/powerjob-product
####### Email properties(Non-core configuration properties) #######
####### Delete the following code to disable the mail #######
spring.mail.host=smtp.qq.com
spring.mail.username=zqq
spring.mail.password=qqz
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
####### DingTalk properties(Non-core configuration properties) #######
####### Delete the following code to disable the DingTalk #######
oms.alarm.ding.app-key=
oms.alarm.ding.app-secret=
oms.alarm.ding.agent-id=
####### Resource cleaning properties #######
oms.instanceinfo.retention=7
oms.container.retention.local=7
oms.container.retention.remote=-1
####### Cache properties #######
oms.instance.metadata.cache.size=2048
####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which #######
####### split-brain could be avoided while performance overhead would increase. #######
oms.accurate.select.server.percentage = 50
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/application.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
# Http server port
server.port=7700
spring.profiles.active=daily
spring.main.banner-mode=log
spring.jpa.open-in-view=false
spring.data.mongodb.repositories.type=none
logging.level.org.mongodb=warn
# Configuration for uploading files.
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=0
spring.servlet.multipart.max-file-size=209715200
spring.servlet.multipart.max-request-size=209715200
###### PowerJob transporter configuration  ######
oms.transporter.active.protocols=AKKA,HTTP
oms.transporter.main.protocol=HTTP
oms.akka.port=10086
oms.http.port=10010
# Prefix for all tables. Default empty string. Config if you have needs, i.e. pj_
oms.table-prefix=pj_
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/banner.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
${AnsiColor.GREEN}
 â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ                                          â–ˆâ–ˆ          â–ˆâ–ˆ
░██░░░░██                                        â–‘██         â–‘██
░██   â–‘██  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ  â–ˆâ–ˆâ–ˆ     â–ˆâ–ˆ  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆ  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ     â–‘██  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ â–‘██
░███████  â–ˆâ–ˆâ–‘░░░██░░██  â–ˆ â–‘██ â–ˆâ–ˆâ–‘░░██░░██░░█     â–‘██ â–ˆâ–ˆâ–‘░░░██░██████
░██░░░░  â–‘██   â–‘██ â–‘██ â–ˆâ–ˆâ–ˆâ–‘██░███████ â–‘██ â–‘      â–‘██░██   â–‘██░██░░░██
░██      â–‘██   â–‘██ â–‘████░████░██░░░░  â–‘██    â–ˆâ–ˆ  â–‘██░██   â–‘██░██  â–‘██
░██      â–‘░██████  â–ˆâ–ˆâ–ˆâ–‘ â–‘░░██░░██████░███   â–‘░█████ â–‘░██████ â–‘██████
░░        â–‘â–‘â–‘â–‘â–‘â–‘  â–‘â–‘â–‘    â–‘â–‘â–‘  â–‘â–‘â–‘â–‘â–‘â–‘ â–‘â–‘â–‘     â–‘â–‘â–‘â–‘â–‘   â–‘â–‘â–‘â–‘â–‘â–‘  â–‘â–‘â–‘â–‘â–‘
${AnsiColor.BRIGHT_RED}
* Maintainer: tengjiqi@gmail.com & Team PowerJob
* OfficialWebsite: http://www.powerjob.tech/
* SourceCode: https://github.com/PowerJob/PowerJob
* PoweredBy:  SpringBoot${spring-boot.formatted-version}
${AnsiColor.DEFAULT}
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/logback-config/powerjob_monitor.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
<?xml version="1.0"?>
<included>
    <property name="MONITOR_LOG_PATH" value="${LOG_PATH}/monitors"/>
    <property name="ROTATE_PATTERN" value="%d{yyyy-MM-dd}.%i"/>
    <property name="MONITOR_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS}|%thread|%X{serverId}|%msg%n"/>
    <!-- database -->
    <appender name="MONITOR_LOGGER_DB_OPERATION_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MONITOR_LOG_PATH}/database.log</file>
        <encoder>
            <pattern>${MONITOR_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${MONITOR_LOG_PATH}/database.log.${ROTATE_PATTERN}</fileNamePattern>
            <maxHistory>3</maxHistory>
            <maxFileSize>200MB</maxFileSize>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
    </appender>
    <appender name="ASYNC_MONITOR_LOGGER_DB_OPERATION_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <neverBlock>true</neverBlock>
        <appender-ref ref="MONITOR_LOGGER_DB_OPERATION_APPENDER"/>
    </appender>
    <logger name="MONITOR_LOGGER_DB_OPERATION" level="INFO" additivity="false">
        <appender-ref ref="ASYNC_MONITOR_LOGGER_DB_OPERATION_APPENDER"/>
    </logger>
    <!-- TtReportInstanceStatusEvent -->
    <appender name="MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MONITOR_LOG_PATH}/tt_status_report.log</file>
        <encoder>
            <pattern>${MONITOR_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${MONITOR_LOG_PATH}/tt_status_report.log.${ROTATE_PATTERN}</fileNamePattern>
            <maxHistory>3</maxHistory>
            <maxFileSize>200MB</maxFileSize>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
    </appender>
    <appender name="ASYNC_MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <neverBlock>true</neverBlock>
        <appender-ref ref="MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER"/>
    </appender>
    <logger name="MONITOR_LOGGER_TT_REPORT_STATUS" level="INFO" additivity="false">
        <appender-ref ref="ASYNC_MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER"/>
    </logger>
    <!-- WorkerHeartbeatEvent -->
    <appender name="MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MONITOR_LOG_PATH}/worker_heartbeat.log</file>
        <encoder>
            <pattern>${MONITOR_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${MONITOR_LOG_PATH}/worker_heartbeat.log.${ROTATE_PATTERN}</fileNamePattern>
            <maxHistory>3</maxHistory>
            <maxFileSize>200MB</maxFileSize>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
    </appender>
    <appender name="ASYNC_MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <neverBlock>true</neverBlock>
        <appender-ref ref="MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER"/>
    </appender>
    <logger name="MONITOR_LOGGER_WORKER_HEART_BEAT" level="INFO" additivity="false">
        <appender-ref ref="ASYNC_MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER"/>
    </logger>
    <!-- WorkerLogReportEvent -->
    <appender name="MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MONITOR_LOG_PATH}/worker_log_report.log</file>
        <encoder>
            <pattern>${MONITOR_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${MONITOR_LOG_PATH}/worker_log_report.log.${ROTATE_PATTERN}</fileNamePattern>
            <maxHistory>3</maxHistory>
            <maxFileSize>200MB</maxFileSize>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
    </appender>
    <appender name="ASYNC_MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <neverBlock>true</neverBlock>
        <appender-ref ref="MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER"/>
    </appender>
    <logger name="MONITOR_LOGGER_WORKER_LOG_REPORT" level="INFO" additivity="false">
        <appender-ref ref="ASYNC_MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER"/>
    </logger>
    <!-- SlowLockEvent -->
    <appender name="MONITOR_LOGGER_SLOW_LOCK_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MONITOR_LOG_PATH}/lock.log</file>
        <encoder>
            <pattern>${MONITOR_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${MONITOR_LOG_PATH}/lock.log.${ROTATE_PATTERN}</fileNamePattern>
            <maxHistory>3</maxHistory>
            <maxFileSize>200MB</maxFileSize>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
    </appender>
    <appender name="ASYNC_MONITOR_LOGGER_SLOW_LOCK_APPENDER" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <neverBlock>true</neverBlock>
        <appender-ref ref="MONITOR_LOGGER_SLOW_LOCK_APPENDER"/>
    </appender>
    <logger name="MONITOR_LOGGER_SLOW_LOCK" level="INFO" additivity="false">
        <appender-ref ref="ASYNC_MONITOR_LOGGER_SLOW_LOCK_APPENDER"/>
    </logger>
</included>
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/logback-dev.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
<?xml version="1.0"?>
<!-- Configuration for local environment, all logs would print in console. -->
<configuration>
    <!-- Configure color for logs. -->
    <!-- Classes for rendering color. -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- Color log pattern. -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{20}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <logger name="MONITOR_LOGGER_DB_OPERATION" level="OFF"/>
    <!-- Configuration for console output. -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <!-- Quit timing logs, which seems disordered. -->
    <logger name="tech.powerjob.server.service.timing" level="WARN" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
    <logger name="tech.powerjob" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>
ruoyi-extend/ruoyi-powerjob-server/src/main/resources/logback-product.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
<?xml version="1.0"?>
<!-- Configuration for production environment. -->
<configuration>
    <!-- Default configuration. -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!-- Configuration for console. -->
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <!--
        Log path, pay attention to permission, logs may be unable to generate.
        Bug recording: Setting `~/logs`, is unable to create folder in user home directory,
        a folder with the name ~ is created in project folder.
    -->
    <property name="LOG_PATH" value="${user.home}/powerjob/server/logs"/>
    <!-- include other logback configs -->
    <include resource="logback-config/powerjob_monitor.xml"/>
    <!-- Configuration for ERROR logs. All error logs will write twice. -->
    <appender name="ERROR_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/powerjob-server-error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_PATH}/powerjob-server-error.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>7</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- End of configuration for ERROR logs. -->
    <!-- Configuration for Web services. -->
    <appender name="WEB_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/powerjob-server-web.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_PATH}/powerjob-server-web.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>7</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <append>true</append>
    </appender>
    <logger name="WEB_LOG" level="INFO" additivity="false">
        <appender-ref ref="WEB_LOG_APPENDER"/>
    </logger>
    <!-- End of configuration for Web services. -->
    <!-- Configuration for system logs. -->
    <appender name="DEFAULT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/powerjob-server-application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_PATH}/powerjob-server-application.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>7</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <append>true</append>
    </appender>
    <!-- End of configuration for system logs. -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="DEFAULT_APPENDER"/>
        <appender-ref ref="ERROR_APPENDER"/>
    </root>
</configuration>
ruoyi-extend/ruoyi-xxl-job-admin/Dockerfile
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/pom.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/UserController.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/complete/XxlJobCompleter.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/MisfireStrategyEnum.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/ScheduleTypeEnum.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobCompleteHelper.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobRegistryHelper.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/LoginService.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/XxlJobService.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-dev.yml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application-prod.yml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/application.yml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/banner.txt
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/i18n/message_en.properties
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/i18n/message_zh_CN.properties
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/i18n/message_zh_TC.properties
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/logback-plus.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css.map
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/bower_components/moment/moment.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/dist/js/adminlte.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/favicon.ico
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/common.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/index.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/jobcode.index.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/jobgroup.index.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/joblog.detail.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/joblog.index.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/login.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/js/user.index.1.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/lib/codemirror.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/clike/clike.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/php/php.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/python/python.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/codemirror/mode/shell/shell.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/cronGen/cronGen.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/cronGen/cronGen_en.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/echarts/echarts.common.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/jquery/jquery.cookie.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/jquery/jquery.validate.min.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/layer.js
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/icon-ext.png
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/icon.png
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/layer.css
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/loading-0.gif
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/loading-1.gif
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/static/plugins/layer/theme/default/loading-2.gif
Binary files differ
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/common/common.exception.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/common/common.macro.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/help.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/index.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/jobcode/jobcode.index.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/jobgroup/jobgroup.index.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/jobinfo/jobinfo.index.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/joblog/joblog.detail.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/joblog/joblog.index.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/login.ftl
ÎļþÒÑɾ³ý
ruoyi-extend/ruoyi-xxl-job-admin/src/main/resources/templates/user/user.index.ftl
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -19,7 +19,7 @@
            select table_name, table_comment, create_time, update_time
            from information_schema.tables
            where table_schema = (select database())
            AND table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%'
            AND table_name NOT LIKE 'pj_%' AND table_name NOT LIKE 'gen_%'
            <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0">
                AND table_name NOT IN
                <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item">
@@ -40,7 +40,7 @@
            where dt.table_name = dtc.table_name
            and dt.table_name = uo.object_name
            and uo.object_type = 'TABLE'
            AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%'
            AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%'
            <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0">
                AND lower(dt.table_name) NOT IN
                <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item">
@@ -69,7 +69,7 @@
                    AND n.nspname = 'public'::name
                    AND n.nspname <![CDATA[ <> ]]> ''::name
            ) list_table
            where table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%'
            where table_name NOT LIKE 'pj_%' AND table_name NOT LIKE 'gen_%'
            <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0">
                AND table_name NOT IN
                <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item">
@@ -92,7 +92,7 @@
            FROM SYSOBJECTS D
                INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID
                    AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES'
                    AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%'
                    AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%'
            <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0">
                AND D.NAME NOT IN
                <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item">
@@ -112,7 +112,7 @@
    <select id="selectDbTableListByNames" resultMap="GenTableResult">
        <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isMySql()">
            select table_name, table_comment, create_time, update_time from information_schema.tables
            where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
            where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
            and table_name in
            <foreach collection="array" item="name" open="(" separator="," close=")">
                 #{name}
@@ -124,7 +124,7 @@
            where dt.table_name = dtc.table_name
            and dt.table_name = uo.object_name
            and uo.object_type = 'TABLE'
            AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%'
            AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%'
            and lower(dt.table_name) in
            <foreach collection="array" item="name" open="(" separator="," close=")">
                #{name}
@@ -144,7 +144,7 @@
                    AND n.nspname = 'public'::name
                    AND n.nspname <![CDATA[ <> ]]> ''::name
            ) list_table
            where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%'
            where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%'
            and table_name in
            <foreach collection="array" item="name" open="(" separator="," close=")">
                #{name}
@@ -158,7 +158,7 @@
            FROM SYSOBJECTS D
                INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID
                    AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES'
                    AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%'
                    AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%'
                    AND D.NAME in
                    <foreach collection="array" item="name" open="(" separator="," close=")">
                        #{name}
@@ -169,7 +169,7 @@
    <select id="selectTableByName" parameterType="String" resultMap="GenTableResult">
        <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isMySql()">
            select table_name, table_comment, create_time, update_time from information_schema.tables
            where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
            where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database())
            and table_name = #{tableName}
        </if>
        <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isOracle()">
@@ -178,7 +178,7 @@
            where dt.table_name = dtc.table_name
            and dt.table_name = uo.object_name
            and uo.object_type = 'TABLE'
            AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%'
            AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%'
            AND dt.table_name NOT IN (select table_name from gen_table)
            and lower(dt.table_name) = #{tableName}
        </if>
@@ -196,7 +196,7 @@
                    AND n.nspname = 'public'::name
                    AND n.nspname <![CDATA[ <> ]]> ''::name
            ) list_table
            where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%'
            where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%'
            and table_name = #{tableName}
        </if>
        <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isSqlServer()">
@@ -207,7 +207,7 @@
            FROM SYSOBJECTS D
                INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID
                    AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES'
                    AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%'
                    AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%'
                    AND D.NAME = #{tableName}
        </if>
    </select>
ruoyi-modules/ruoyi-job/pom.xml
@@ -23,12 +23,12 @@
            <artifactId>ruoyi-common-core</artifactId>
        </dependency>
        <!-- è°ƒåº¦æ¨¡å— -->
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>ruoyi-common-job</artifactId>
        </dependency>
    </dependencies>
</project>
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/package-info.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
/**
 * æ¼”示用例
 * copy from https://github.com/PowerJob/PowerJob/tree/master/powerjob-worker-samples/src/main/java/tech/powerjob/samples
 */
package org.dromara.job;
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/BroadcastProcessorDemo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package org.dromara.job.processors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import tech.powerjob.common.utils.NetUtils;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.TaskResult;
import tech.powerjob.worker.core.processor.sdk.BroadcastProcessor;
import tech.powerjob.worker.log.OmsLogger;
import java.util.List;
/**
 * å¹¿æ’­å¤„理器 ç¤ºä¾‹
 *
 * @author tjq
 * @since 2020/4/17
 */
@Slf4j
@Component
public class BroadcastProcessorDemo implements BroadcastProcessor {
    @Override
    public ProcessResult preProcess(TaskContext context) {
        System.out.println("===== BroadcastProcessorDemo#preProcess ======");
        context.getOmsLogger().info("BroadcastProcessorDemo#preProcess, current host: {}", NetUtils.getLocalHost());
        if ("rootFailed".equals(context.getJobParams())) {
            return new ProcessResult(false, "console need failed");
        } else {
            return new ProcessResult(true);
        }
    }
    @Override
    public ProcessResult process(TaskContext taskContext) throws Exception {
        OmsLogger logger = taskContext.getOmsLogger();
        System.out.println("===== BroadcastProcessorDemo#process ======");
        logger.info("BroadcastProcessorDemo#process, current host: {}", NetUtils.getLocalHost());
        long sleepTime = 1000;
        try {
            sleepTime = Long.parseLong(taskContext.getJobParams());
        } catch (Exception e) {
            logger.warn("[BroadcastProcessor] parse sleep time failed!", e);
        }
        Thread.sleep(Math.max(sleepTime, 1000));
        return new ProcessResult(true);
    }
    @Override
    public ProcessResult postProcess(TaskContext context, List<TaskResult> taskResults) {
        System.out.println("===== BroadcastProcessorDemo#postProcess ======");
        context.getOmsLogger().info("BroadcastProcessorDemo#postProcess, current host: {}, taskResult: {}", NetUtils.getLocalHost(), taskResults);
        return new ProcessResult(true, "success");
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/LogTestProcessor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package org.dromara.job.processors;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
import tech.powerjob.official.processors.util.CommonUtils;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import tech.powerjob.worker.log.OmsLogger;
import java.util.Date;
import java.util.Optional;
/**
 * LogTestProcessor
 *
 * @author tjq
 * @since 2022/9/18
 */
@Component
public class LogTestProcessor implements BasicProcessor {
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        final OmsLogger omsLogger = context.getOmsLogger();
        final String parseParams = CommonUtils.parseParams(context);
        final JSONObject config = Optional.ofNullable(JSONObject.parseObject(parseParams)).orElse(new JSONObject());
        final long loopTimes = Optional.ofNullable(config.getLong("loopTimes")).orElse(1000L);
        for (int i = 0; i < loopTimes; i++) {
            omsLogger.debug("[DEBUG] one DEBUG log in {}", new Date());
            omsLogger.info("[INFO] one INFO log in {}", new Date());
            omsLogger.warn("[WARN] one WARN log in {}", new Date());
            omsLogger.error("[ERROR] one ERROR log in {}", new Date());
        }
        return new ProcessResult(true);
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapProcessorDemo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package org.dromara.job.processors;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
import tech.powerjob.common.serialize.JsonUtils;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.MapProcessor;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
/**
 * Map处理器 ç¤ºä¾‹
 *
 * @author tjq
 * @since 2020/4/18
 */
@Component
public class MapProcessorDemo implements MapProcessor {
    /**
     * æ¯ä¸€æ‰¹å‘送任务大小
     */
    private static final int BATCH_SIZE = 100;
    /**
     * å‘送的批次
     */
    private static final int BATCH_NUM = 5;
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        log.info("============== MapProcessorDemo#process ==============");
        log.info("isRootTask:{}", isRootTask());
        log.info("taskContext:{}", JsonUtils.toJSONString(context));
        if (isRootTask()) {
            log.info("==== MAP ====");
            List<SubTask> subTasks = Lists.newLinkedList();
            for (int j = 0; j < BATCH_NUM; j++) {
                SubTask subTask = new SubTask();
                subTask.siteId = j;
                subTask.itemIds = Lists.newLinkedList();
                subTasks.add(subTask);
                for (int i = 0; i < BATCH_SIZE; i++) {
                    subTask.itemIds.add(i + j * 100);
                }
            }
            map(subTasks, "MAP_TEST_TASK");
            return new ProcessResult(true, "map successfully");
        } else {
            log.info("==== PROCESS ====");
            SubTask subTask = (SubTask) context.getSubTask();
            for (Integer itemId : subTask.getItemIds()) {
                if (Thread.interrupted()) {
                    // ä»»åŠ¡è¢«ä¸­æ–­
                    log.info("job has been stop! so stop to process subTask: {} => {}", subTask.getSiteId(), itemId);
                    break;
                }
                log.info("processing subTask: {} => {}", subTask.getSiteId(), itemId);
                int max = Integer.MAX_VALUE >> 7;
                for (int i = 0; ; i++) {
                    // æ¨¡æ‹Ÿè€—时操作
                    if (i > max) {
                        break;
                    }
                }
            }
            // æµ‹è¯•在 Map ä»»åŠ¡ä¸­è¿½åŠ ä¸Šä¸‹æ–‡
            context.getWorkflowContext().appendData2WfContext("Yasuo", "A sword's poor company for a long road.");
            boolean b = ThreadLocalRandom.current().nextBoolean();
            if (context.getCurrentRetryTimes() >= 1) {
                // é‡è¯•的话一定会成功
                b = true;
            }
            return new ProcessResult(b, "RESULT:" + b);
        }
    }
    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    public static class SubTask {
        private Integer siteId;
        private List<Integer> itemIds;
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapReduceProcessorDemo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
package org.dromara.job.processors;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import tech.powerjob.common.serialize.JsonUtils;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.TaskResult;
import tech.powerjob.worker.core.processor.sdk.MapReduceProcessor;
import tech.powerjob.worker.log.OmsLogger;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
/**
 * MapReduce å¤„理器示例
 * æŽ§åˆ¶å°å‚数:{"batchSize": 100, "batchNum": 2}
 *
 * @author tjq
 * @since 2020/4/17
 */
@Slf4j
@Component
public class MapReduceProcessorDemo implements MapReduceProcessor {
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        OmsLogger omsLogger = context.getOmsLogger();
        log.info("============== TestMapReduceProcessor#process ==============");
        log.info("isRootTask:{}", isRootTask());
        log.info("taskContext:{}", JsonUtils.toJSONString(context));
        // æ ¹æ®æŽ§åˆ¶å°å‚数获取MR批次及子任务大小
        final JSONObject jobParams = JSONObject.parseObject(context.getJobParams());
        Integer batchSize = (Integer) jobParams.getOrDefault("batchSize", 100);
        Integer batchNum = (Integer) jobParams.getOrDefault("batchNum", 10);
        if (isRootTask()) {
            log.info("==== MAP ====");
            omsLogger.info("[DemoMRProcessor] start root task~");
            List<TestSubTask> subTasks = Lists.newLinkedList();
            for (int j = 0; j < batchNum; j++) {
                for (int i = 0; i < batchSize; i++) {
                    int x = j * batchSize + i;
                    subTasks.add(new TestSubTask("name" + x, x));
                }
                map(subTasks, "MAP_TEST_TASK");
                subTasks.clear();
            }
            omsLogger.info("[DemoMRProcessor] map success~");
            return new ProcessResult(true, "MAP_SUCCESS");
        } else {
            log.info("==== NORMAL_PROCESS ====");
            omsLogger.info("[DemoMRProcessor] process subTask: {}.", JSON.toJSONString(context.getSubTask()));
            log.info("subTask: {}", JsonUtils.toJSONString(context.getSubTask()));
            Thread.sleep(1000);
            if (context.getCurrentRetryTimes() == 0) {
                return new ProcessResult(false, "FIRST_FAILED");
            } else {
                return new ProcessResult(true, "PROCESS_SUCCESS");
            }
        }
    }
    @Override
    public ProcessResult reduce(TaskContext context, List<TaskResult> taskResults) {
        log.info("================ MapReduceProcessorDemo#reduce ================");
        log.info("TaskContext: {}", JSONObject.toJSONString(context));
        log.info("List<TaskResult>: {}", JSONObject.toJSONString(taskResults));
        context.getOmsLogger().info("MapReduce job finished, result is {}.", taskResults);
        boolean success = ThreadLocalRandom.current().nextBoolean();
        return new ProcessResult(success, context + ": " + success);
    }
    @Getter
    @ToString
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TestSubTask {
        private String name;
        private int age;
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/SimpleProcessor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package org.dromara.job.processors;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import tech.powerjob.worker.log.OmsLogger;
import java.util.Optional;
/**
 * @author Echo009
 * @since 2022/4/27
 */
@Component
public class SimpleProcessor implements BasicProcessor {
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        OmsLogger logger = context.getOmsLogger();
        String jobParams = Optional.ofNullable(context.getJobParams()).orElse("S");
        logger.info("Current context:{}", context.getWorkflowContext());
        logger.info("Current job params:{}", jobParams);
        // æµ‹è¯•中文问题 #581
        if (jobParams.contains("CN")) {
            return new ProcessResult(true, "任务成功啦!!!");
        }
        return jobParams.contains("F") ? new ProcessResult(false) : new ProcessResult(true, "yeah!");
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/StandaloneProcessorDemo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package org.dromara.job.processors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import tech.powerjob.worker.log.OmsLogger;
import java.util.Collections;
/**
 * å•机处理器 ç¤ºä¾‹
 *
 * @author tjq
 * @since 2020/4/17
 */
@Slf4j
@Component
public class StandaloneProcessorDemo implements BasicProcessor {
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        OmsLogger omsLogger = context.getOmsLogger();
        omsLogger.info("StandaloneProcessorDemo start process,context is {}.", context);
        omsLogger.info("Notice! If you want this job process failed, your jobParams need to be 'failed'");
        omsLogger.info("Let's test the exception~");
        // æµ‹è¯•异常日志
        try {
            Collections.emptyList().add("277");
        } catch (Exception e) {
            omsLogger.error("oh~it seems that we have an exception~", e);
        }
        log.info("================ StandaloneProcessorDemo#process ================");
        log.info("jobParam:{}", context.getJobParams());
        log.info("instanceParams:{}", context.getInstanceParams());
        String param;
        // è§£æžå‚数,非处于工作流中时,优先取实例参数(允许动态[instanceParams]覆盖静态参数[jobParams])
        if (context.getWorkflowContext() == null) {
            param = StringUtils.isBlank(context.getInstanceParams()) ? context.getJobParams() : context.getInstanceParams();
        } else {
            param = context.getJobParams();
        }
        // æ ¹æ®å‚数判断是否成功
        boolean success = !"failed".equals(param);
        omsLogger.info("StandaloneProcessorDemo finished process,success: {}", success);
        omsLogger.info("anyway, we finished the job successfully~Congratulations!");
        return new ProcessResult(success, context + ": " + success);
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/TimeoutProcessor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.dromara.job.processors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
/**
 * æµ‹è¯•超时任务(可中断)
 *
 * @author tjq
 * @since 2020/4/20
 */
@Component
@Slf4j
public class TimeoutProcessor implements BasicProcessor {
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        long sleepTime = Long.parseLong(context.getJobParams());
        log.info("TaskInstance({}) will sleep {} ms", context.getInstanceId(), sleepTime);
        Thread.sleep(Long.parseLong(context.getJobParams()));
        return new ProcessResult(true, "impossible~~~~QAQ~");
    }
}
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/SampleService.java
ÎļþÒÑɾ³ý
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/workflow/WorkflowStandaloneProcessor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package org.dromara.job.workflow;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import tech.powerjob.worker.log.OmsLogger;
import java.util.Map;
/**
 * å·¥ä½œæµæµ‹è¯•
 *
 * @author tjq
 * @since 2020/6/2
 */
@Component
@Slf4j
public class WorkflowStandaloneProcessor implements BasicProcessor {
    @Override
    public ProcessResult process(TaskContext context) throws Exception {
        OmsLogger logger = context.getOmsLogger();
        logger.info("current jobParams: {}", context.getJobParams());
        logger.info("current context: {}", context.getWorkflowContext());
        log.info("jobParams:{}", context.getJobParams());
        log.info("currentContext:{}", JSON.toJSONString(context));
        // å°è¯•获取上游任务
        Map<String, String> workflowContext = context.getWorkflowContext().fetchWorkflowContext();
        log.info("工作流上下文数据:{}", workflowContext);
        return new ProcessResult(true, context.getJobId() + " process successfully.");
    }
}
script/docker/docker-compose.yml
@@ -141,14 +141,20 @@
    privileged: true
    network_mode: "host"
  ruoyi-xxl-job-admin:
    image: ruoyi/ruoyi-xxl-job-admin:5.0.0
    container_name: ruoyi-xxl-job-admin
  ruoyi-powerjob-server:
    image: powerjob/powerjob-server:latest
    restart: always
    depends_on:
      - mysql
    environment:
      # æ—¶åŒºä¸Šæµ·
      TZ: Asia/Shanghai
      JVMOPTIONS: "-Xmx512m"
      PARAMS: "--oms.mongodb.enable=false --spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai --spring.datasource.core.username=root --spring.datasource.core.password=root --oms.table-prefix=pj_"
    ports:
      - "7700:7700"
      - "10086:10086"
      - "10010:10010"
    volumes:
      # é…ç½®æ–‡ä»¶
      - /docker/xxljob/logs/:/ruoyi/xxljob/logs
      - /docker/powerjob-data/powerjob-server:/root/powerjob/server/
    privileged: true
    network_mode: "host"
script/docker/nginx/conf/nginx.conf
@@ -31,8 +31,8 @@
        server 127.0.0.1:9090;
    }
    upstream xxljob-admin {
        server 127.0.0.1:9100;
    upstream powerjob {
        server 127.0.0.1:7700;
    }
    server {
@@ -93,14 +93,14 @@
        }
        # https ä¼šæ‹¦æˆªå†…链所有的 http è¯·æ±‚ é€ æˆåŠŸèƒ½æ— æ³•ä½¿ç”¨
        # è§£å†³æ–¹æ¡ˆ1 å°† xxljob æœåŠ¡ ä¹Ÿé…ç½®æˆ https
        # è§£å†³æ–¹æ¡ˆ1 å°† powerjob æœåŠ¡ ä¹Ÿé…ç½®æˆ https
        # è§£å†³æ–¹æ¡ˆ2 å°†èœå•配置为外链访问 èµ°ç‹¬ç«‹é¡µé¢ http è®¿é—®
        location /xxl-job-admin/ {
        location /powerjob/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://xxljob-admin/xxl-job-admin/;
            proxy_pass http://powerjob/;
        }
        error_page   500 502 503 504  /50x.html;
script/sql/oracle/oracle_ry_vue_5.X.sql
@@ -374,8 +374,8 @@
insert into sys_menu values('117',  'Admin监控',   '2',    '5', 'Admin',            'monitor/admin/index',         '', 1, 0, 'C', '0', '0', 'monitor:admin:list',          'dashboard',     103, 1, sysdate, null, null, 'Admin监控菜单');
-- oss菜单
insert into sys_menu values('118',  '文件管理',     '1',    '10', 'oss',             'system/oss/index',            '', 1, 0, 'C', '0', '0', 'system:oss:list',             'upload',        103, 1, sysdate, null, null, '文件管理菜单');
-- xxl-job-admin控制台
insert into sys_menu values('120',  '任务调度中心',  '2',    '5', 'XxlJob',           'monitor/xxljob/index',        '', 1, 0, 'C', '0', '0', 'monitor:xxljob:list',         'job',           103, 1, sysdate, null, null, 'Xxl-Job控制台菜单');
-- powerjob server控制台
insert into sys_menu values('120',  '任务调度中心',  '2',    '5', 'powerjob',           'monitor/powerjob/index',        '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list',         'job',           103, 1, sysdate, null, null, 'PowerJob控制台菜单');
-- ä¸‰çº§èœå•
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'monitor/operlog/index',    '', 1, 0, 'C', '0', '0', 'monitor:operlog:list',    'form',          103, 1, sysdate, null, null, '操作日志菜单');
script/sql/postgres/postgres_ry_vue_5.X.sql
@@ -385,8 +385,8 @@
insert into sys_menu values('117',  'Admin监控',   '2',   '5',  'Admin',            'monitor/admin/index',         '', '1', '0', 'C', '0', '0', 'monitor:admin:list',          'dashboard',     103, 1, now(), null, null, 'Admin监控菜单');
-- oss菜单
insert into sys_menu values('118',  '文件管理',     '1',   '10', 'oss',              'system/oss/index',            '', '1', '0', 'C', '0', '0', 'system:oss:list',             'upload',        103, 1, now(), null, null, '文件管理菜单');
-- xxl-job-admin控制台
insert into sys_menu values('120',  '任务调度中心',  '2',   '5',  'XxlJob',           'monitor/xxljob/index',        '', '1', '0', 'C', '0', '0', 'monitor:xxljob:list',         'job',           103, 1, now(), null, null, 'Xxl-Job控制台菜单');
-- powerjob server控制台
insert into sys_menu values('120',  '任务调度中心',  '2',   '5',  'powerjob',           'monitor/powerjob/index',        '', '1', '0', 'C', '0', '0', 'monitor:powerjob:list',         'job',           103, 1, now(), null, null, 'PowerJob控制台菜单');
-- ä¸‰çº§èœå•
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'monitor/operlog/index',    '', '1', '0', 'C', '0', '0', 'monitor:operlog:list',    'form',          103, 1, now(), null, null, '操作日志菜单');
script/sql/powerjob_demo.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `pj_app_info` (`id`, `app_name`, `current_server`, `gmt_create`, `gmt_modified`, `password`) VALUES (1, 'ruoyi-worker', '192.168.31.80:10010', '2023-06-13 16:32:59.263000', '2023-06-13 16:33:29.898000', 'ruoyi-worker');
INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (1, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 2, 1, NULL, '2023-06-02 15:01:27.717000', '2023-06-02 16:03:19.462000', 1, 0, '', '单机处理器执行测试', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.StandaloneProcessorDemo', 1, 1, NULL, 1, '30000', 3);
INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (2, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 2, NULL, '2023-06-02 15:04:45.342000', '2023-06-02 16:04:09.736000', 0, 0, NULL, '广播处理器测试', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.BroadcastProcessorDemo', 1, 1, NULL, 1, '30000', 3);
INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (3, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 4, NULL, '2023-06-02 15:13:23.519000', '2023-06-02 16:03:22.421000', 0, 0, NULL, 'Map处理器测试', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.MapProcessorDemo', 1, 2, NULL, 1, '1000', 3);
INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (4, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 3, NULL, '2023-06-02 15:45:25.896000', '2023-06-02 16:03:23.125000', 0, 0, NULL, 'MapReduce处理器测试', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.MapReduceProcessorDemo', 1, 2, NULL, 1, '1000', 3);
script/sql/ry_vue_5.X.sql
@@ -252,8 +252,8 @@
insert into sys_menu values('117',  'Admin监控',   '2',   '5',  'Admin',            'monitor/admin/index',         '', 1, 0, 'C', '0', '0', 'monitor:admin:list',           'dashboard',     103, 1, sysdate(), null, null, 'Admin监控菜单');
-- oss菜单
insert into sys_menu values('118',  '文件管理',     '1',   '10', 'oss',              'system/oss/index',            '', 1, 0, 'C', '0', '0', 'system:oss:list',              'upload',        103, 1, sysdate(), null, null, '文件管理菜单');
-- xxl-job-admin控制台
insert into sys_menu values('120',  '任务调度中心',  '2',   '5',  'XxlJob',           'monitor/xxljob/index',        '', 1, 0, 'C', '0', '0', 'monitor:xxljob:list',          'job',           103, 1, sysdate(), null, null, 'Xxl-Job控制台菜单');
-- powerjob server控制台
insert into sys_menu values('120',  '任务调度中心',  '2',   '5',  'powerjob',           'monitor/powerjob/index',        '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list',          'job',           103, 1, sysdate(), null, null, 'PowerJob控制台菜单');
-- ä¸‰çº§èœå•
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'monitor/operlog/index',    '', 1, 0, 'C', '0', '0', 'monitor:operlog:list',    'form',          103, 1, sysdate(), null, null, '操作日志菜单');
script/sql/sqlserver/sqlserver_ry_vue_5.X.sql
@@ -1445,7 +1445,7 @@
GO
INSERT sys_menu VALUES (118, N'文件管理', 1, 10, N'oss', N'system/oss/index', N'', 1, 0, N'C', '0', N'0', N'system:oss:list', N'upload', 103, 1, getdate(), NULL, NULL, N'文件管理菜单');
GO
INSERT sys_menu VALUES (120, N'任务调度中心', 2, 5, N'XxlJob', N'monitor/xxljob/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:xxljob:list', N'job', 103, 1, getdate(), NULL, NULL, N'Xxl-Job控制台菜单');
INSERT sys_menu VALUES (120, N'任务调度中心', 2, 5, N'powerjob', N'monitor/powerjob/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:powerjob:list', N'job', 103, 1, getdate(), NULL, NULL, N'PowerJob控制台菜单');
GO
INSERT sys_menu VALUES (500, N'操作日志', 108, 1, N'operlog', N'monitor/operlog/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:operlog:list', N'form', 103, 1, getdate(), NULL, NULL, N'操作日志菜单')
GO
script/sql/tables_xxl_job.sql
ÎļþÒÑɾ³ý