Внедрение дизайнера рабочих процессов JIRA

 

Резюме

Компонент JavaScript рабочего процесса дизайнера JIRA визуализирует редактируемое визуальное представление рабочего процесса в браузере. Пользователи могут добавлять, редактировать и удалять статусы и переходы, проверять рабочий процесс путем панорамирования и масштабирования и позиционировать элементы на холсте. Изменения периодически сохраняются на сервере без запроса пользователя.

 

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

РИСУНОК

Доступность

Компонент конструктора рабочих процессов доступен в JIRA 6.1 и выше, он работает во всех поддерживаемых браузерах, за исключением Internet Explorer 8 и на мобильных устройствах.

Ограничения

Компонент конструктора рабочего процесса имеет следующие ограничения:

  • он не будет отображать редактируемый дизайнер рабочего процесса в диалоговом окне, поскольку JIRA не поддерживает стек диалога и
  • до JIRA 6.2 он не поддерживает создание общих переходов (хотя они отображаются правильно).

Применение

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

Ключ веб-ресурсов

Описание

com.atlassian.jira.plugins.jira-workflow-designer:workflow-designer

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

com.atlassian.jira.plugins.jira-workflow-designer:workflow-designer-read-only

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

 

 

Методы

Метод

Описание

destroy()

Уничтожьте конструктор рабочего процесса, удалив его со страницы. Вы должны вызвать этот метод, когда вам больше не нужен дизайнер рабочего процесса; он периодически останавливает выполнение работ, отвязывает обработчики событий и т. д.

 

 

Опции

Опция

Описание

actions

Показывать панель действий (добавить / создать статус и т. д.)

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

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

currentStepId

Идентификатор шага статуса, который должен быть выделен как «текущий».

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

По умолчанию: undefined.

draft

Должен ли загружаться проект версии рабочего процесса.

 

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

 

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

element

Элемент для отображения конструктора рабочего процесса.

 

Возможные значения: элемент.

 

По умолчанию: undefined.

 

 

fullScreenButton

Должна быть показана кнопка полного экрана (при условии, что действия верны actions являются true).

 

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

 

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

immutable

Должен ли конструктор рабочего процесса быть доступен только для чтения.

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

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

workflowId

ID загружаемого рабочего процесса (его имя показано на странице глобальных рабочих процессов).

 

Возможные значения: строка.

 

По умолчанию: undefined.

* Элемент и параметры workdlowId требуются.

Примеры

Создание конструктора рабочего процесса только для чтения


new JIRA.WorkflowDesigner.Application({
  element: AJS.$("#workflow-designer"),
  immutable: true,
  workflowId: "My Workflow"
});

Создание редактируемого конструктора рабочего процесса


new JIRA.WorkflowDesigner.Application({
  element: AJS.$("#workflow-designer"),
  workflowId: "My Workflow"
});

Отображение конструктора рабочего процесса в диалоговом окне

Поскольку невозможно отобразить редактируемый конструктор рабочего процесса в диалоговом окне (Ограничения), неизменяемая immutable опция должна быть true. Мы также должны убедиться, что дизайнер рабочего процесса разрушен, когда диалог скрыт.


function createDialogContent(callback) {
  callback([
    "<div class='aui-dialog-content'>",
      "<h2 class='dialog-title'>My Workflow</h2>",
      "<div class='form-body'></div>",
    "</div>"
  ].join(""));
}

function showWorkflowDesigner() {
  this._workflowDesigner = new JIRA.WorkflowDesigner.Application({
    actions: false,
    element: this.get$popup().find(".form-body"),
    immutable: true,
    workflowId: "My Workflow"
  });
 
  this._positionInCenter();
}
 
var dialog = new JIRA.FormDialog({
  content: createDialogContent,
  onContentRefresh: showWorkflowDesigner,
  widthClass: "large"
});

AJS.$(dialog).one("Dialog.hide", function () {
  this._workflowDesigner.destroy();
});
 
dialog.show();

По материалам Atlassian JIRA Server Developer Implementing the JIRA workflow designer