Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Пакетная обработка в Java EE

В этом разделе перечислены компоненты фреймворка пакетной обработки Java EE и представлен обзор шагов, которые необходимо выполнить для создания пакетного приложения.

Здесь рассматриваются следующие темы:

Фреймворк пакетной обработки

Java EE включает фреймворк пакетной обработки, который состоит из следующих элементов:

  • Пакетная среда выполнения, которая управляет выполнением заданий

  • Язык спецификации задания на основе XML

  • Java API для взаимодействия с пакетной средой выполнения

  • Java API для реализации шагов, элементов принятия решения и других пакетных артефактов

Пакетные приложения в Java EE содержат файлы XML и классы Java. XML-файлы определяют структуру задания в терминах пакетных артефактов и отношений между ними. (Артефакт пакетной обработки является частью ориентированного на фрагменты шага, ориентированного на задачу шага, элемента принятия решения или другого компонента пакетного приложения). Классы Java реализуют прикладную логику пакетных артефактов, определённых в файлах XML. Среда выполнения пакета анализирует файлы XML и загружает артефакты пакета как классы Java для запуска заданий в пакетном приложении.

Создание пакетных приложений

Процесс создания пакетного приложения в Java EE заключается в следующем:

  1. Разработайте пакетное приложение.

  2. Определите источники ввода, формат входных данных, желаемый конечный результат и необходимые этапы обработки.

  3. Организуйте приложение как задание с шагами, ориентированными на фрагменты или задачи, и элементами принятия решения. Определите зависимости между ними.

  4. Определите порядок выполнения в терминах переходов между шагами.

  5. Определите шаги, которые могут выполняться параллельно, и шаги, которые могут выполняться в нескольких потоках (thread).

  6. Создайте пакетные артефакты как классы Java, реализуя интерфейсы, определённые фреймворком для шагов, элементов принятия решения и т. д. Эти классы Java содержат код для чтения данных из входных источников, элементов форматирования, элементов обработки и сохранения результатов. Пакетные артефакты могут обращаться к объектам контекста из пакетной среды выполнения с помощью инъецирования зависимостей.

  7. Определите задания, шаги и поток (flow) их выполнения в файлах XML с помощью языка спецификации заданий. Элементы в файлах XML ссылаются на пакетные артефакты, реализованные в классах Java. Пакетные артефакты могут обращаться к свойствам, объявленным в файлах XML, таким как имена файлов и баз данных.

  8. Используйте Java API, предоставляемый пакетной средой выполнения, для запуска пакетного приложения.

В следующих разделах подробно описывается, как использовать компоненты фреймворка пакетной обработки в Java EE для создания пакетных приложений.

Элементы пакетного задания

Пакетное задание может содержать один или несколько из следующих элементов:

  • Шаги

  • Потоки (Flow)

  • Разделители

  • Элементы принятия решения

Шаги описаны во Введении в пакетную обработку и могут быть ориентированы на фрагменты или задачи. Ориентированные на фрагменты шаги могут быть разделёнными шагами. В разделённом шаге обработка одного фрагмента не зависит от других фрагментов, поэтому эти шаги могут выполняться в нескольких потоках (thread).

Поток (flow) — это последовательность шагов, которые выполняются как единое целое. Последовательность связанных шагов может быть сгруппирована в поток (flow). Шаги в потоке (flow) не могут переходить к шагам вне потока (flow). Поток (flow) переходит к следующему элементу, когда завершается его последний шаг.

Разделитель — это набор потоков (flow), которые выполняются параллельно. Каждый поток (flow) работает в отдельном потоке (thread). Разделитель переходит к следующему элементу, когда все его потоки (flow) завершены.

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

Свойства и параметры

Задания и шаги могут иметь ряд связанных свойств. Свойства определяются в файле определения задания, и артефакты пакета получают доступ к этим свойствам с помощью объектов контекста из пакетной среды выполнения. Таким образом, использование свойств позволяет отделить статические параметры задания от бизнес-логики и повторно использовать пакетные артефакты в разных файлах определения задания.

Определение свойств описано в Использование языка спецификации задания, а доступ к свойствам в пакетных артефактах описан в Создание пакетных артефактов.

Приложения Java EE также могут передавать параметры в задание, когда они отправляют его в пакетную среду выполнения. Это позволяет указать динамические параметры, которые известны только во время выполнения. Параметры также необходимы для разделённых шагов, поскольку каждое разделение должно знать, например, какой диапазон элементов обрабатывать.

Задание параметров при отправке заданий описано в разделе Отправка заданий в пакетную среду выполнения. Задание параметров для разделённых шагов и доступ к ним в пакетных артефактах продемонстрированы в Пример phonebilling.

Задания и их выполнение

Задание может быть инстанцировано несколько раз, каждый раз с разными параметрами. Выполнение задания — это попытка запустить на выполнение его инстанцированный объект. Пакетная среда выполнения содержит информацию об объектах задания и его выполнении, как описано в Проверка статуса задания.

Статус пакета и статус завершения

Состояние заданий, шагов, разделителей и потоков (flow) представляется во время выполнения пакета в виде значений статуса пакета. Значения статуса перечислены в таблице 58-1. Они представлены в виде строк.

Таблица 58-1 Значения статуса пакета

Значение

Описание

STARTING

Задание было отправлено на выполнение.

STARTED

Задание выполняется.

STOPPING

Была запрошена остановка задания.

STOPPED

Задание остановлено.

FAILED

Выполнение задания завершено из-за ошибки.

COMPLETED

Задание успешно завершено.

ABANDONED

Задание было помечено как брошенное.

Приложения Java EE могут отправлять задания и получать доступ к состоянию пакета задания с помощью интерфейса JobOperator, как описано в Отправке заданий в пакетную среду выполнения. Файлы определения задания могут ссылаться на значения состояния пакета с использованием языка спецификации задания (JSL), как описано в Использование языка спецификации задания. Пакетные артефакты могут обращаться к значениям состояния пакета, используя объекты контекста, как описано в Использование объектов контекста из пакетной среды выполнения.

Для потоков (flow) статусом выполнения является статус последнего шага. Для разделителей статус выполнения может принимать следующие значения:

  • COMPLETED: если все его потоки (flow) имеют статус выполнения COMPLETED

  • FAILED: если какой-либо поток (flow) имеет статус выполнения FAILED

  • STOPPED: если какой-либо поток (flow) имеет статус выполнения STOPPED, и ни один из потоков (flow) не имеет статуса выполнения FAILED

Статус выполнения для заданий, шагов, разделителей и потоков (flow) задаётся во время выполнения пакета. Задания, шаги, разделители и потоки (flow) также имеют статус завершения, который определяется пользователем в зависимости от статуса обработки. Установить статус завершения можно внутри артефактов пакета или в файле определения задания. Получить доступ к статусу завершения можно так же, как и к статусу выполнения, как описано выше. Значение по умолчанию для статуса завершения совпадает со статусом выполнения.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)