一个轻量级且功能强大的作业调度框架。


1. 关于

batch库旨在简化Dart语言中作业调度批处理程序的开发。它支持使用Cron进行轻松调度,并且非常轻量级且功能强大。

注意
该框架仍处于测试阶段,因此在发布时可能包含破坏性更改。

1.1. 特性

  • 一个非常强大的Dart编写的批处理库。
  • 可轻松定义多个作业计划。
  • 直观易懂的作业定义。
  • 轻松使用Cron格式安排作业执行。
  • 无需第三方库即可提供强大且可自定义的日志记录功能!
  • 您可以使用Dart的资源进行开发!

1.2. 基本概念

batch库的处理主要通过以下元素进行。

描述
工作 Job被定义为batch库中批处理执行过程中的最大单元。Job具有唯一的名称,并管理多个Step
步骤 Step被定义为batch库中批处理执行过程中的中间单元。Step具有唯一的名称,并管理多个Task
任务 Task被定义为batch库中批处理执行过程中的最小单元。Task定义了在批处理过程中要执行的特定过程。

上表中的概念是按层次顺序排列的,顶层概念包含底层元素。然而,这种层次结构仅表示处理的层级,顶层处理不影响底层处理,反之亦然。

1.3. 简介

1.3.1. 安装库

使用 Dart

 dart pub add batch

使用 Flutter

 flutter pub add batch

1.3.2. 导入

import 'package:batch/batch.dart';

1.3.3. 使用Batch库

使用batch库最简单的方法是创建一个实现Task的类,并按照所需的执行顺序将其注册到Step和Job。

在创建Job实例时,以Cron格式指定执行计划。

创建JobTask实例时,名称应唯一。但是,不同Job中包含的Step可以使用相同的名称。

您可以在此处查看最新的示例代码!

1.4. 日志记录

batch库自0.2.0版本起支持日志记录。

batch库提供的日志记录系统是Logger的定制库,并针对batch库的规范进行了优化。此外,batch库提供的日志记录系统也从Logger中继承了许多元素。

batch库提供以下日志记录方法。

描述
trace 一个日志级别,描述了代码逐步执行的事件,在标准操作期间可以忽略,但在扩展调试会话期间可能很有用。
debug 一个日志级别,在需要更详细信息时,用于在软件调试期间被认为有用的事件。
info 发生了一个事件,该事件是纯粹的信息性的,在正常操作期间可以忽略。
warn 应用程序内部发生了意外行为,但它正在继续工作,并且关键业务功能运行正常。
error 一个或多个功能不工作,导致某些功能无法正常工作。
fatal 一个或多个关键业务功能不工作,整个系统无法满足业务功能。

batch库提供的日志记录方法可以从任何导入batch.dart的类中使用。此外,您无需自行实例化Logger。

您只需要在batch库中为日志记录指定配置,Logger将在batch库的生命周期内安全地提供。

有关最简单的用法,请参见下面的示例代码。

import 'package:batch/batch.dart';

class TestLogTask extends Task<TestLogTask> {
  @override
  void execute() {
    trace('Test trace');
    debug('Test debug');
    info('Test info');
    warn('Test warning');
    error('Test error');
    fatal('Test fatal');
  }
}

例如,如果您运行前面所述的示例代码,您将看到以下日志输出。

yyyy-MM-dd 19:12:42.860904 [info ] (_BatchApplication.run:117:11  ) - Logger instance has completed loading
yyyy-MM-dd 19:12:42.863685 [info ] (JobScheduler.run:37:9         ) - Started Job scheduling on startup
yyyy-MM-dd 19:12:42.864049 [info ] (JobScheduler.run:38:9         ) - Detected 2 Jobs on the root
yyyy-MM-dd 19:12:42.864413 [info ] (JobScheduler.run:45:11        ) - Scheduling Job [name=Job1]
yyyy-MM-dd 19:12:42.880243 [info ] (JobScheduler.run:45:11        ) - Scheduling Job [name=Job2]
yyyy-MM-dd 19:12:42.882694 [info ] (JobScheduler.run:55:9         ) - Job scheduling has been completed and the batch application is now running

笔记
Logger的设置在执行BatchApplicationrun方法时完成。
如果您想在batch库生命周期之外使用日志记录功能,
请务必在执行BatchApplicationrun方法之后进行。

1.4.1. 自定义日志配置

要更改batch库提供的Logger的配置以适应您的偏好,非常简单。
只需在实例化JobLauncher时传递LogConfiguration对象,最简单的方法如下更改日志级别。

BatchApplication(
  logConfig: LogConfiguration(
    level: LogLevel.debug,
  ),
);

此外,可以通过继承以下抽象类并在LogConfiguration中设置它们来自由定制日志记录功能。

描述
LogFilter 这是确定是否应执行日志输出的层。默认情况下,仅确定日志级别。
LogPrinter 这一层定义了日志输出的格式。
LogOutput 这是实际执行日志输出的层。默认情况下,它输出到控制台。

此外,batch库提供了几个实现这些抽象类的类,因此您可以根据情况使用它们。

1.4.2. LogOutput

描述
ConsoleLogOutput 提供将日志输出到控制台的功能。此过滤器默认使用。
FileLogOutput 提供将日志输出到指定文件的功能。

示例

BatchApplication(
  logConfig: LogConfiguration(
    output: ConsoleLogOutput(),
  ),
);

1.5. 贡献

如果您想为该库的开发做出贡献,请创建一个issue或创建一个Pull Request。

开发人员将尽快响应问题并审查Pull Request。

1.6. 许可证

Copyright (c) 2022, Kato Shinya. All rights reserved.
Use of this source code is governed by a
BSD-style license that can be found in the LICENSE file.

1.7. 更多信息

BatchKato Shinya设计和实现。

GitHub

查看 Github