Резюме
Компонент 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