Jira

Поддерживаются как производитель, так и потребитель

Компонент JIRA взаимодействует с API JIRA, используя REST Java Client для JIRA от Atlassian. В настоящее время он предоставляет возможность опроса новых задач и комментариев. Также он может создавать новые задачи, добавлять комментарии, изменять задачи, добавлять/удалять наблюдателей, добавлять вложения и изменять состояние задачи.

Вместо использования вебхуков этот метод полагается на простое опрашивание (polling). Причины включают:

  1. Забота о надёжности и стабильности

  2. Типы данных, которые мы опрашиваем, обычно невелики (кроме того, в API доступно разбиение на страницы)

  3. Необходимость поддержки приложений, работающих в средах, не доступных публично, где вебхуки не сработают

Обратите внимание, что API JIRA довольно обширен. Поэтому этот компонент может быть легко расширен для поддержки дополнительных взаимодействий.

Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jira</artifactId>
    <version>${camel-version}</version>
</dependency>

Note

Atlassian не публикует свой JIRA Java-клиент в Maven Central. Поэтому при использовании camel-jira в pom.xml включён репозиторий Maven по следующему URL: https://packages.atlassian.com/maven-external (opens in a new tab).

Имейте это в виду, так как Maven будет использовать этот репозиторий для загрузки клиента JIRA (и, возможно, других JAR-файлов). Это позволяет Atlassian отслеживать эти загрузки через свои серверы.

URI format

jira://type[?options]

Тип Jira поддерживает следующие операции:

Для потребителей (consumers):

  • newIssues: извлекать только новые задачи после запуска маршрута

  • newComments: извлекать только новые комментарии после запуска маршрута

  • watchUpdates: извлекать только обновлённые поля/задачи на основе предоставленного jql

Для производителей (producers):

  • addIssue: добавить задачу

  • addComment: добавить комментарий к задаче

  • attach: добавить вложение к задаче

  • deleteIssue: удалить задачу

  • updateIssue: обновить поля задачи

  • transitionIssue: изменить статус задачи

  • watchers: добавить/удалить наблюдателей задачи

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

Configuring Options

Компоненты настраиваются на двух отдельных уровнях:

  • component level

  • edpoint level

Configuring Component Options

На уровне компонента задаются основные и общие настройки, которые впоследствии наследуются endpoints. Это самый высокий уровень конфигурации.

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

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

Компоненты можно настроить с использованием:

  • Component DSL.

  • Конфигурационного файла (application.properties, *.yaml files, etc).

  • Напрямую в Java code.

Configuring Endpoint Options

Обычно больше времени уходит на настройку endpoints, так как они обладают множеством параметров. Эти параметры позволяют настроить поведение endpoint в соответствии с вашими потребностями. Кроме того, параметры делятся на категории в зависимости от того, используется ли endpoint как потребитель (from), как производитель (to) или в обеих ролях.

Настройка endpoints чаще всего выполняется непосредственно в URI endpoint в виде параметров пути и запроса. Также вы можете использовать Endpoint DSL и DataFormat DSL как типобезопасный способ настройки endpoints и форматов данных в Java.

Хорошей практикой при настройке параметров является использование Property Placeholders.

Property placeholders предоставляют несколько преимуществ:

  • Помогают избежать использования жестко закодированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.

  • Позволяют вынести конфигурацию за пределы кода.

  • Делают код более гибким и удобным для повторного использования.

Component properties

Delay

  • Время в миллисекундах до следующего опроса.

  • По умолчанию: 6000

  • Тип: Integer

Jira Url

  • Обязательное поле - URL сервера Jira, например, http://my_jira.com:8081.

  • По умолчанию:

  • Тип: String

Jql

  • JQL -- это язык запросов JIRA, который позволяет извлекать нужные данные. Например, jql=project=MyProject, где MyProject -- это ключ продукта в Jira. Важно использовать RAW() и помещать JQL внутрь него, чтобы предотвратить его обработку Camel, например: RAW(project in (MYP, COM) AND resolution = Unresolved).

  • По умолчанию:

  • Тип: String

Max Results

  • Тип: Максимальное количество задач для поиска.

  • По умолчанию: 50

  • Тип: Integer

Send Only Updated Field

  • Индикатор для отправки только изменённых полей в теле обмена (exchange body) или объекта задачи. По умолчанию потребитель отправляет только изменённые поля.

  • По умолчанию: true

  • Тип: boolean

Type

  • Обязательное поле - Операция для выполнения.

    Потребители: NewIssues, NewComments.

    Производители: AddIssue, AttachFile, DeleteIssue, TransitionIssue, UpdateIssue, Watchers.

    Возможные значения:

    • ADDCOMMENT

    • ADDISSUE

    • ATTACH

    • DELETEISSUE

    • NEWISSUES

    • NEWCOMMENTS

    • WATCHUPDATES

    • UPDATEISSUE

    • TRANSITIONISSUE

    • WATCHERS

    • ADDISSUELINK

    • ADDWORKLOG

    • FETCHISSUE

    • FETCHCOMMENTS

  • По умолчанию:

  • Тип: JiraType

Watched Fields

  • Список полей, разделённых запятыми, за изменениями которых нужно следить. По умолчанию: Status, Priority.

  • По умолчанию: Status,Priority

  • Тип: String

Component security properties

Access Token

  • (Аутентификация OAuth или Personal Access Token) Токен доступа, сгенерированный сервером Jira.

  • По умолчанию:

  • Тип: String

Consumer Key

  • (Только для OAuth) Ключ потребителя из настроек Jira.

  • По умолчанию:

  • Тип: String

Password

  • Тип: (Только для базовой аутентификации) Пароль или API-токен для аутентификации на сервере Jira. Используйте только при использовании базовой аутентификации по имени пользователя.

  • По умолчанию:

  • Тип: String

Private Key

  • (Только для OAuth) Закрытый ключ, сгенерированный клиентом для шифрования обмена с сервером.

  • По умолчанию:

  • Тип: String

Username

  • Тип: (Только для базовой аутентификации) Имя пользователя для аутентификации на сервере Jira. Используйте только если OAuth не включён на сервере Jira. Не устанавливайте имя пользователя и параметр OAuth-токена одновременно, если они оба установлены, базовая аутентификация по имени пользователя имеет приоритет.

  • По умолчанию:

  • Тип: String

Verification Code

  • (Только для OAuth) Код подтверждения от Jira, сгенерированный на первом шаге процесса авторизации.

  • По умолчанию:

  • Тип: String

Component advanced properties

Bridge Error Handler

  • Тип: Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.

    Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию: false

  • Тип: boolean

Exception Handler

  • Позволяет потребителю использовать собственный ExceptionHandler.

    Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию:

  • Тип: ExceptionHandler

Exchange Pattern

  • Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).

    Возможные значения:

    • InOnly

    • InOut

  • По умолчанию:

  • Тип: ExchangePattern