Анализ исходного кода, связанный с запланированными задачами версии ruoyi-vue (7), то есть анализ модуля ruoyi-quartz.
Анализ исходного кода, связанный с запланированными задачами версии ruoyi-vue (7), то есть анализ модуля ruoyi-quartz.

Оглавление

1 требование

Открываем проект Ruoyi и видим на странице модуль запланированных задач.

Следующим шагом будет анализ всех файлов, связанных с проектом Ruoyi и запланированными задачами, а также того, как он реализует синхронизацию. Какова логика, лежащая в основе этого? Если я хочу реализовать эту логику в своем собственном проекте, что мне нужно скопировать? файл или изменить его, чтобы реализовать эту функцию синхронизации в моем собственном проекте.

2 Анализ

В этом модуле есть все, что связано с таймингом. Мы просто хотим посмотреть, как в этом модуле реализована функция тайминга.

Первый — реализовать функцию синхронизации, тогда придется использовать сторонние зависимости. Давайте сначала посмотрим, какие сторонние зависимости вводятся в pom-файл.

В этом модуле представлен только сторонний jar-пакет синхронизации. Наш код использует некоторые API в этом jar-пакете для реализации функции синхронизации. В настоящее время представлена ​​баночная упаковка для каждого.

Эта функция времени требует двух таблиц

Таблица журнала планирования запланированных задач sys_job_log Расписание запланированных задач sys_job

Правильно, проект Ruoyi опирается на эти две таблицы для реализации функции синхронизации.

Ниже приведены классы сущностей, соответствующие таблице.

Начинаем с операций на странице и анализируем логику соответствующих операций.

2.1 Отношения в классах инструментов

Что касается реализации функции синхронизации, то на самом деле она заключается в использовании отражения для выполнения конкретных методов, поскольку когда мы добавляем новую задачу, мы уже прописали абсолютный путь к методу, а затем на основе этого абсолютного будет найден соответствующий метод. путь в коде, а затем выполните этот метод, используя отражение для выполнения метода.

2.2 Добавьте новые запланированные задачи

Для вновь добавленной страницы после написания соответствующего содержимого нажмите «ОК», и запланированное задание будет сохранено.

Откроем f12 и посмотрим какой интерфейс будет вызываться при добавлении нового

В нашем коде найдите этот интерфейс

Этот интерфейс получен в виде класса сущности

Переданное значение

Давайте войдем в класс сущности и посмотрим, что представляет каждый атрибут.

Значением этого вызывающего метода является имя класса.имя метода.

Язык кода:javascript
копировать
  /** вызвать целевую строку   нет параметров ryTask.ryNoParams    Есть параметры ryTask.ryParams('ry')
     * Несколько параметров ryTask.ryMultipleParams('ry', true, 2000L, 316.50D, 100) */
    @Excel(name = "вызвать целевую строку -- Это имя исполняемого метода")
    private String invokeTarget;
Язык кода:javascript
копировать
    /** стратегия планирования cron */
    @Excel(name = «Планируйте стратегию ", readConverterExp = «0=по умолчанию, 1=запустить выполнение немедленно, 2=запустить выполнение один раз, 3=не запускать немедленное выполнение»)
    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
   /** Выполнять ли одновременно (0 позволяет 1 Запрещено) */
    @Excel(name = «Совместное исполнение», readConverterExp = «0=разрешено, 1=запрещено»)
    private String concurrent;

    /** Статус задачи (0 нормальный 1 пауза) */
    @Excel(name = «статус задачи», readConverterExp = «0=нормально, 1=пауза»)
    private String status;

Эта новая логика только сохраняет информацию о задаче в базе данных и помещает ее в объект планировщика;

2.3 Эхо запланированных задач

Просто нажмите кнопку «Изменить», и информация о задаче отобразится во всплывающем окне.

Это просто база данных запросов для отображения, никакой логики

2.4 Изменение запланированных задач

Просто нажмите кнопку «Изменить», чтобы обновить информацию базы данных в соответствии с идентификатором задачи;

В объекте планировщика также обновляется информация о задаче;

3 Резюме

Экземпляр планировщика запустится автоматически после запуска Springboot.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose