一个轻量级且功能强大的作业调度框架。
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格式指定执行计划。
创建Job和Task实例时,名称应唯一。但是,不同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的设置在执行BatchApplication的run方法时完成。
如果您想在batch库生命周期之外使用日志记录功能,
请务必在执行BatchApplication的run方法之后进行。
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. 更多信息
Batch由Kato Shinya设计和实现。