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

Обзор Проекта: Адд-он для глобального управления шаблонами Scaffolding

О проекте

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

Компания также использует сторонние адд-оны для Confluence.Одним из наиболее широко используемых является Scaffolding плагин, разрабатываемый компанией Service Rocket. Плагин позволяет вам создавать формы и шаблоны с различными типами полей и заполнять их необходимыми значениями. Дополнительно, все структурные изменения в шаблонах автоматически применяются на всех страницах, созданных на базе этих шаблонов.

Единственным недостатком этого адд-она является необходимость всё время переключать страницу в режим редактирования содержания. Так как если редактировать страницу напрямую, то вы сможете лишь изменить параметры добавленных полей и макросов. Поэтому клиенту требовался быстрый способ для ввода данных в формы на базе шаблонов Scaffolding без постоянного ручного переключения страницы в режим редактирования содержания.

Обзор проекта

Нашей задачей являлось создание лёгкого в использовании решения, которое сочетало бы динамическую работы с данными и быстрый доступ к Scaffolding шаблонам. Мы также решили создать раздел для администрирования, поиска и быстрого конфигурирования шаблонов со Scaffolding макросами. Здесь у пользователя должна была быть возможность включать или отключать переключение страниц со Scaffolding макросами в режим редактирования содержания с одновременным сохранением страницы при её создании.

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

Функциональность адд-она

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

Администрирование шаблонов

Адд-он добавил раздел для быстрой конфигурации шаблонов со Scaffolding макросами и лёгкой навигации среди них. Здесь администратор может просмотреть список глобальных и привязанных к спейсу шаблонов и сразу применить необходимые изменения.

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

admin_page

Диалоговое окно создания контента

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

image2014-2-18 11-44-3

Мастер создания шаблонов

В мастере шаблонов пользователи могут просматривать полный путь для сохранения страницы или указать другое расположение с поддержкой автодополнения названий страниц. Дополнительно, пользователь может изменить название страницы, добавить лейблы или изменить префикс и постфикс, если соответствующая возможность не была запрещена в разделе администрирования. Два параметра (%date и %index) автоматически конвертируются в дату создания страницы и счётчик дочерних страниц относительно родительской страницы и спейса.

live_template_wizard

Вывод страниц

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

page_in_edit_contents_mode

Индексная страница

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

index_page

Результаты проекта

Использование этого адд-она позволило компании ускорить работу с формами и шаблонами страниц, содержащими Scaffolding макросы, и упростить, в целом, работу с Confluence. Автоматическое переключение страницы в режим редактирования содержания позволяет сохранять достаточно много времени для других работ каждый месяц. Автоматическая генерация индексной страницы для каждого отдельного шаблона позволяет хранить записи о шаблонах в одном месте с быстрым доступом к ним, когда это требуется.

Обзор проекта: категории для прикреплённых файлов в JIRA

Некоторое время назад мы завершили интересный проект для одной российской компании – Технологии Процессинга. Эта компания является одним из лидеров среди российских компаний, специализирующихся на технологиях беспроводной высокочастотной связи (NFC). Они разрабатывают комплексные системы для осуществления бесконтактных платежей в общественном транспорте, решения для автоматизации бизнес-процессов в транспортной системе, автоматические системы обработки платежей для органов государственной власти, а также предоставляет сервисы проведения безналичных платежей для розничной торговли.

Широкий выбор решений и ряд эффективных технологий позволяют этой компании развивать уникальные и комплексные системы по автоматизации бизнес-процессов. Для каждого клиента отдельно выбирается наиболее подходящее и оптимальное решение для эффективной обработки данных и работы с заявками.

Ни для кого не секрет что JIRA это более чем система отслеживания ошибок программного обеспечения. Любой человек может найти ей сферу применения для создания комплексных аналитических систем по обработке заявок клиентов. Эта компания использовала JIRA, в качестве платформы для глобальной транспортной системы по обработке заявлений от граждан, поступающих в Транспортный Департамент Москвы и Московской области.

Обзор проекта

Транспортный департамент Москвы имеет разветвлённую иерархию подразделений, которые также отражены в схемах работы с заявками в системе JIRA. Каждое подразделение работает с десятками документов, заявок и фотографиями для каждого запроса. Обмен и работа с прикреплёнными файлами осуществляется на постоянной основе среди многочисленных отделов Департамента Транспорта. И для них стало, по-настоящему, серьёзной проблемой – работа с документооборотом и переводом прикреплённых файлов между разными отделами, особенно когда число документов превышает несколько десятков файлов для входящей заявки.

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

Обработка прикреплённых файлов

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

Адд-он позволяет добавить два специальных поля для прикрепления файлов через стандартные формы JIRA при переводе заявки из одного статуса в другой. Во время перевода заявки согласно установленной схемы, эти поля позволяют пользователю  выбрать какие прикреплённые файлы должны быть доступны в выбранной категории при переходе на следующий уровень. На следующем уровне, уже другой пользователь работает только со списком прикреплённых файлов, выбранных при переходе.

Request Resolution form

Таким образом, на разных переходах пользователи будут видеть только те прикреплённые файлы, которые выбирались при переводе на другой уровень.

image2014-4-16 10-48-17

Если вам уже не требуется какой-то прикреплённый файл в категории, вы можете легко изменить набор прикреплённых файлов в этой категории.

image2014-4-16 11-0-21

Адд-он также поддерживает стандартный функционал JIRA по работе с прикреплёнными файлами, поэтому если даже какой-то пользователь забыл прикрепить файл или документ к нужной категории, вы всегда сможете найти его в списке файлов, прикреплённых к заявке.

Конфигурация

Адд-он может быть легко установлен на JIRA версий 5 и 6. После установки становятся доступными два специальных поля.

image2014-4-14 13-5-18

Вы можете выбрать эти поля из списка пользовательских полей JIRA. Эти поля не требуют сложной конфигурации, администратору лишь требуется указать категорий прикреплённых файлов. Категория прикреплённых файлов позволяет пользователям быстро и легко находить требуемые файлы без долгого просмотра списка документов и файлов, относящихся к текущей заявке. Затем администратор должен лишь добавить эти поля в нужные формы перехода и на этом всё.

image2014-4-14 13-10-26

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

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

Результаты

Этот адд-он позволил упростить жизненный цикл прикреплённых файлов и, в целом, ускорить процедуры электронного документооборота. Теперь каждый отдел или уровень поддержки просматривают только файлы, необходимые для их работы. Адд-он также позволил навести порядок в прикреплённых файлах, поэтому пользователям не нужно листать десятки файлов, а они сразу могут найти необходимый файл в одной из категорий. Данный плагин упростил процесс обработки заявок клиентов и сделал этот процесс чуточку приятнее.

Приобретённый опыт мы использовали для создания модифицированного плагина по управления прикреплёнными файлами в JIRA - Smart Attachments.

Эффективное общение в Confluence

Общение было всегда естественной потребностью человека. Главным результатом или продуктом общения является обмен информацией. Информация это один из главных факторов, который стимулирует эволюцию человека и ведёт человечество в будущее. Информация одна из ценнейших вещей в нашем цифровом мире, потому что обладая информацией — ты можешь завоевать мир.

communication in confluence

Общение в Confluence

В этом блог-посте мы рассмотрим существующие решения, которые помогут вам обмениваться сообщениями с вашими коллегами в режиме реального времени. Сегодня мы познакомимся с удобными средствами для общения в мире Confluence от компании Atlassian. Confluence стал очень популярной платформой для документации и быстрого командного взаимодействия и общения, например, между командами разработчиков и технических писателей. Confluence поставляется со встроенной системой комментирования, которая становится достаточно неэффективной, когда вам требуется общение со своими коллегами в режиме реальном времени. Вы можете использовать сторонние приложения для общения, такие как Skype, ICQ, P2P агенты и т.д. Но вам постоянно придётся переключаться между Confluence и этими приложениями, что будет только отвлекать вас от работы.

Вы также можете использовать «родной» чат-сервис от Atlassian – HipChat, который позволяет вам общаться со своей командой в групповом чате и видео-чате. Но возможно ли общение в Confluence через какие-то сторонние плагины?

Confluence Chat

Confluence Chat - это удобное решение, которое позволяет вам с лёгкостью общаться с пользователями Confluence в специальных чат-панелях. Главная панель отображает список пользователей, вошедших в Confluence и с которыми вы можете начать общение. Как только вы выбираете пользователя для общения – открывается отдельная панель в нижней части страницы. Вы можете открыть несколько панелей для общения с разными людьми в данный момент времени. Как только приходит новое сообщение от вашего коллеги, вы услышите соответствующее звуковое уведомление, которое может быть отключено.

confluence chat - chat dashboards

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

confluence chat - chat configuration

Вы можете выбрать свой статус или свернуть чат-панель, если она вам пока не нужна. Этот адд-он позволяет ограничить использование чата для определённых групп пользователей или выставить ограничение для нужных спейсов. Если вы не работаете с Confluence в течение некоторого времени, ваш статус в чате автоматически меняется на ‘Недоступен’.

confluence chat - chat settings

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

ЗА:

  • Бесплатный
  • Общение в режиме реального времени
  • Интуитивный интерфейс
  • История сообщений
  • Звуковые уведомления
  • Опции для конфигурации
  • Чат-панель в режимах просмотра и редактирования

ПРОТИВ:

  • Невозможно создать групповой чат
  • Невозможно делиться файлами через чат

Wikistrat Private Messaging

Wikistrat Private Messaging - это улучшенная версия встроенный системы обмена сообщениями, которая доступна в Confluence. Она устанавливает своего рода систему обмена сообщениями, которая напоминает привычную технологию электронных писем. У каждого пользователя появляется ящик для входящих сообщений с визуальными уведомлениями о недавно полученных сообщениях.

wikistrat private messaging

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

wikistrat private messaging - contacts

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

wikistrat private messaging - dialogs

ЗА:

  • Интуитивный интерфейс
  • Общение в режиме реального времени и обмен индивидуальными сообщениями
  • История обмена сообщениями
  • Визуальные нотификации

ПРОТИВ:

  • Невозможность отправки сообщений нескольким пользователям
  • Невозможность отправлять файлы пользователям
  • Платный

Talk — Inline Comments for Confluence

Talk — Inline Comments for Confluence - это не столько чат-агент по своей сути, сколько многофункциональный инструмент для быстрого взаимодействия с командой. Вместо общения в режиме реального времени, он предоставляет вам несколько иной способ общения с вашими коллегами. Talk даёт вам свободу при комментировании любого куска текста на страницах Confluence для его обсуждения и согласования с вашими партнёрами.

talk inline comments

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

talk inline comments - discussions

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

talk inline comments - macro parameters

Адд-он также позволяет вам ограничить доступ к некоторым дискуссиям для определённых пользователей. Таким образом, вы можете обсуждать необходимые вещи на странице с узким кругом лиц или даже добавлять личные заметки или пометки для себя. Даже администратор спейса не сможет увидеть такие дискуссии.

talk inline comments - settings

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

ЗА:

  • Отличное средство для комментирования
  • Интуитивный интерфейс
  • История дискуссий
  • Добавление дискуссий в режиме просмотра и редактирования
  • Нотификации на панели управления и электронные письма
  • Ограничения на просмотр
  • Поддержка wiki-разметки и упоминания пользователей
  • Обновление дискуссий в режиме реального времени
  • Возможность прикрепить файлы

ПРОТИВ:

  • Платный

Топ-5 Интеграция для JIRA

JIRA широко известна как высокоэффективная и многофункциональная система отслеживания ошибок с гибкой конфигурацией и дружелюбным интерфейсом. Она стала по истине популярной среди инженеров по контролю качества программного обеспечения и команд разработчиков. Такая популярность объясняется широкой функциональностью системы, которая в дальнейшем может быть адаптирована или сконфигурирована под личные требования пользователей. Также она может быть быстро и легко интегрирована с многочисленными системами. В этом блог-посте мы рассмотрим наиболее полезные плагины для интеграции JIRA со сторонними внешними системами.

JIRA Bamboo Plugin

JIRA Bamboo плагин разрабатывается самой компанией Atlassian. Этот плагин используется для интеграции между системой отслеживания ошибок и сервером непрерывной интеграции - Bamboo. Он устанавливает соединение между двумя системами для получения информации о сборках и их статусах, пользователе, который запустил сборку, ревизии, длительности выполнения сборки, дате и времени завершения процедуры. Дополнительно вы можете просматривать артефакты после завершения сборки. В интерфейсе для каждой задачи появляется отдельная вкладка с информацией о сборках, к которым относится текущая задача.

jira-bamboo plugin

Главным отличием этого плагина и его главным преимуществом в сравнении с другими адд-онами является возможность удалённого запуска сборки напрямую из JIRA без необходимости перехода в Bamboo для её выполнения. Вам не требуется прерывать свои текущие дела для запуска сборки проекта. Поэтому если вы планируете использовать комбинацию JIRA и Bamboo для разработки программного обеспечения, то этот плагин станет для вас надёжным помощником.

Jenkins Plugin for JIRA

Jenkins Plugin for JIRA разрабатывается компанией Marvelution. Этот адд-он предлагает пользователям удобный способ для интеграции JIRA и сервера непрерывной интеграции Jenkins. Соединение между платформами устанавливается на базе связки приложений (application link), которая конфигурируется перед началом использования плагина. Главной целью этого плагина является визуализация сборок на сервере Jenkins в JIRA. Пользователь может легко определить какие данные следует синхронизировать, а какие можно пропустить. Это позволяет ускорить процедуру синхронизации и пропускать ненужные данные из обработки.

jira-jenkins plugin

Адд-он встраивается в интерфейс проектов и отдельных задач, поэтому пользователь может быстро получить доступ к необходимой информации: статус сборки, кто и когда запустил сборку, сколько времени ушло на её выполнение и какие задачи относятся к сборке. Aдд-он также отображает дашборд с информацией об активности по проекту и выполненных сборках.

TeamCity Integration for JIRA

TeamCity Integration for JIRA разрабатывается компанией StiltSoft. Этот адд-он является ещё одним дополнением, которое позволяет установить интеграцию между системой отслеживания ошибок и сервером непрерывной интеграции. По умолчанию, TeamCity предоставляет одностороннюю интеграцию, а этот адд-он позволяет вам установить двустороннюю интеграцию между TeamCity и JIRA. Плагин может быть легко установлен и настроен в течение короткого периода времени. Этот плагин добавляет вкладку в интерфейс проектов, версий продуктов и отдельных задач. Адд-он связывает задачи в JIRA со сборками из TeamCity и позволяет вам следить за выполненными задачами и статусом сборок. При необходимости вы можете сразу перейти из JIRA для просмотра деталей сборки прямо в нужный раздел в TeamCity.

jira-teamcity plugin

Адд-он отображает достаточно информации о каждом билде. Например, вы можете узнать количество закомиченных файлов в сборке, пользователя, внёсшего изменения в программный код, описание коммита, статус тестов после завершения сборки. Дополнительно вы можете получить статистику о дате и времени, когда сборка была запущена и, непосредственно, длительность выполнения сборки.

Вы можете найти детальную информацию о плагине на Atlassian Marketplace.

Enterprise Mail Handler

Enterprise Mail Handler разрабатывается компанией The Plugin People. Этот адд-он позволяет вам трансформировать JIRA в мощную и мультифункциональную систему поддержки пользователей. По умолчанию, JIRA требует создание отдельного пользовательского аккаунта для каждого клиента, что становится достаточно иррациональным и дорогостоящим способом для создания многочисленных аккаунтов для имеющихся клиентов, кто в перспективе может сообщать о возможных проблемах или отправлять заявки на поддержку. Даже являясь ярым фанатом JIRA, финансовый вопрос заставит вас задуматься о рентабельности такого подхода. Это дополнение позволяет вам продолжить культивировать свою любовь к JIRA как системе поддержки клиентов.

jira enterprise message handler

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

nFeed

nFeed разрабатывается компанией Valiantys. У вас когда-нибудь возникала необходимость загрузки массива данных из стороннего ресурса в JIRA? Если да, то этот адд-он как раз для вас. Когда вы создаёте пользовательские поля в JIRA, вам необходимо вручную заполнять их значениями. Когда количество значений не превышает 10, то это не является проблемой. Но что, если у вас идут десятки или сотни значений, отличающихся от ранее выбранного параметра? Для таких ситуаций плагин nFeed для JIRA станем вам лучшим помощником.

nfeed

Он позволяет вам загружать данные из различных источников, включая базы данных SQL, LDAP, файлы на удалённых ресурсах, REST веб-сервисы или даже базы данных из JIRA. Как только вы загрузили данные, вы можете создать различные пользовательские поля с данными на базе значений из выбранных источников. Это дополнение позволяет вам отображать текстовые поля с автодополнением введённых запросов, выпадающие списки значений, радио кнопки, или поля выбора результатов запроса. Помимо обычной вставки отдельных полей, вы можете создавать взаимозависимости между кастомными полями и организовывать их в виде каскадных меню. Он также поддерживает автодополнение значений по умолчанию и выбор нескольких значений из выпадающих полей.

Команда StiltSoft надеется, что эти адд-оны позволят вам упростить работу с JIRA и сделать её ещё более эффективной.

Три способа работы с длинными страницами в Atlassian Confluence

Редактировать страницы в Confluence — в общем-то несложное занятие благодаря удобному встроенному редактору. Однако, как можно судить по количеству голосов за эту заявку, многим пользователям крайне неудобно редактировать очень длинные страницы.

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

Общий подход к решению этой проблемы — разделить страницу на несколько частей, с тем чтобы редактировать их по отдельности. В этом посте мы рассмотрим несколько инструментов, которые добавляют такую функциональность.

Макрос Include

Этот инструмент прост в использовании и не требует установки сторонних продуктов. Все, что вам нужно сделать, — это скомпоновать страницу из нескольких дочерних страниц покороче, которые можно редактировать по одиночке. Это можно сделать с помощью стандартного макроса Include Page. На основной странице, войдите в режим редактирования и найдите этот макрос в списке всех макросов, установленных на вашем Confluence:

include_page

Добавьте макрос для каждой дочерней страницы, которую вы хотите включить в основную. В итоге ваша основная страница в редакторе будет выглядеть примерно так:

edit_mode

Теперь нам нужно сделать ссылки на редакторы дочерних страниц, чтобы мы могли быстро их менять. Для этого перейдите на каждую из дочерних страниц и скопируйте их адреса из адресной панели браузера. Вернитесь на основную страницу, создайте веб-ссылки с этими адресами. Ссылки можно разместить до самих страниц и назвать, например, Edit.

Обратите внимание, что важно создавать именно веб-ссылки через меню Insert, так как иначе Confluence автоматически превратит ссылки на редктирование страницы в ссылки на просмотр страницы, а это нам не нужно. После того, как вы добавите ссылки ко всем дочерним страницам, основная будет выглядеть так:

edit_links

Теперь вы можете нажимать на ссылки Edit в режиме просмотра, чтобы перейти в редакторы каждой из дочерних страниц.

view_mode

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

Тема Zen Foundation

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

zen_theme

Но опять-таки разделы придется создавать вручную, и расценки на продукт могут показаться довольно высокими, если у вас, конечно, не совсем маленькая команда.

InPlace Editor

Мы предлагаем решение подешевле и намного более удобное — аддон InPlace Editor. Если страница уже содержит заголовки, он добавляет небольшие иконки редактирования к каждому из них.

cipe icon

Нажимая на иконки, вы открываете родной редактор Confluence только для конкретного раздела, что очень удобно при работе с длинными страницами. Кроме того, если несколько человек работают на одной и той же странице, вы снижаете риск конфликтов редактирования, так как изменения внесенные в разные разделы затем объединяются. В редких случаях, когда несколько человек редактируют один и тот же раздел, вы сможете разрешать конфликты с помощью стандартного механизма слияния.

InPlace Editor готов к работе сразу после установки и не требует сложной настройки. Тем не менее, некоторые настройки в нем есть, и если вы захотите активировать иконки редактирования только для определенных уровней заголовков или определенных спейсов, вы легко сможете это сделать.

std-res confluence 3

Для еще более эффективной работы можно использовать этот аддон со стандартным макросом Table of Contents. Первый позволяет вам редактировать только один раздел страницы, а второй предоставляет быстрый способ перейти к этому разделу.

TOC_and_Inplace

Попробуйте поработать с аддоном на нашем Live Demo без инсталляции или сгенерируйте бесплатную тридцатидневную лицензию, чтобы посмотреть, как он будет работать на вашем Confluence.

Меняем внешний вид Confluence: отключение сортировки в таблицах

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

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

table_sorting

Впрочем, можно вообще отключить стандартный плагин Confluence, отвечающий за сортировку. Хотя это — как стрелять из пушки по воробьям, так как зачастую сортировка все-таки нужна.

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

fake_row

Однако если вам по каким-то причинам нужен стандартный заголовок в таблице, вы можете вставить пустой ряд сразу после него и объединить в этом ряду все ячейки. Это предотвратит сортировку таблицы.

На самом деле, если ваша таблица содержит любые объединенные ячейки, она не может быть отсортирована. Но такой ряд-болванка не портит внешний вид таблицы, и представленные данные не теряют смысл.

dummy_row

Еще один способ — добавить пустую колонку где-нибудь в таблице и объединить все ее ячейки с ячейками предыдущей колонки. Таблица внешне не изменится, и у в ней не будет лишних рядов. Хотя если таблица очень длинная, вам придется вручную объединять все ячейки, что может занять какое-то время.

dummy_column

Чтобы быть в курсе наших новостей и полезных советов, читайте наш Twitter и Facebook (на английском).

Меняем внешний вид Confluence: создание кнопок

Если вы читали наши предыдущие посты о секретах Confluence, вы знаете, что его внешний вид на самом деле намного легче настроить, чем это кажется на первый взгляд. В этом посте мы посмотрим, как библиотека Atlassian User Interface (AUI) может пригодиться для улучшения юзабилити Confluence.

С помощью AUI можно делать много вещей, но в этот раз мы остановимся поподробнее на кнопках. Кнопки — это симпатичный способ сделать ссылки более заметными. Вообще-то, Atlassian не рекомендует использовать кнопки в качестве ссылок, но как мы увидим чуть позже, есть исключения из этого правила. Давайте посмотрим на примере, как можно использовать кнопки.

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

button

Так как же собственно сделать кнопку? Мы создали пользовательский макрос в меню Confluence Admin — User Macros и назвали его aui-button. Код для макроса представлен ниже:

## Macro title: AUI Button
## Macro has a body: N
## @param Title:title=Title|type=string|required=true
## @param URL:title=URL|type=string|required=true
<a href="$paramURL">
    <button class="aui-button aui-button-primary">
        $paramTitle
    </button>
</a>

Мы сохранили макрос и убедились, что он появился в списке макросов.

macro

Теперь наш макрос доступен в макро-браузере (Insert More Content — Other Macros), и мы можем вставить его на любой странице, при этом указывая название ссылки и URL, как показано ниже:

link

Если вы хотите протестировать ваши идеи, не трогая рабочую систему, зайдите на AUI Sandbox. Там вы можете посмотреть примеры кода для других типов кнопок (например, для выпадающего списка) и посмотреть, как это все работает на практике. Например, чтобы добавить вопросительный знак к нашей кнопке Get Help, достаточно взять дефолтный код для icon button и заменить его следующим кодом:


    <button class="aui-button">
        <span class="aui-icon aui-icon-small aui-iconfont-help">
            Help
        </span>
        <span>
            Icon button
        </span>
    </button>

Результат ваших экспериментов сразу же отражается на панели Preview:

aui

Не пропустите наши новости и полезные советы в твиттере и фейсбуке (на английском).

Меняем внешний вид Confluence: добавляем полезную информацию в колонтитулы

Если вы когда-либо задавались вопросом, как поделиться важной информацией с пользователями Confluence, вот ответ — попробуйте использовать колонтитулы. Без всякого сомнения информация, добавленная в верхний колонтитул, будет замечена каждым, кто заходит в Confluence. А использование ссылок на полезные ресурсы в нижнем колонтитуле — намного эффективнее, чем искать их в закладках.

Ниже мы подробно расскажем, как это сделать. Обратите внимание, что преполагается, что вы используете стандартную тему на Confluence 5.4. У других тем есть свои инструменты для кастомизации колонтитулов. Код, который мы здесь приводим, может немного отличаться для других версий Confluence.

Итак, допустим, мы хотим разместить какое-то заметное предупреждение для всех наших пользователей. Для этого в Confluence Admin — Look&Feel — Custom HTML добавьте такой вот код в раздел At beginning of the BODY:

<div>
    <p>
        <span></span>
        <strong>Hey guys!</strong>
    </p>
    <p>Confluence is going to be down from 4pm.</p>
</div>

Сохраните изменения и посмотрите, как это выглядит в Confluence:

header

Если вам нужны другие стили сообщения, можете посмотреть, что предлагает библиотека Atlassian AUI.

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

Надо сказать, Atlassian предоставляет некоторые рекомендации по изменению нижнего колонтитула, однако в этом случае нужно менять файлы Confluence и перезапускать всю систему. Мы же предлагаем более простой способ.

Как и выше, в Confluence Admin — Look&Feel — Custom HTML добавьте код для ваших ссылок на Privacy Policy и Support (строки 4 and 5) в раздел At end of the BODY:

<script type="text/javascript">
AJS.toInit(function ($) {
    AJS.$("div#footer .footer-body").prepend("<ul id='footer-custom-links'/>");
    AJS.$("ul#footer-custom-links").append("<li class='noprint'><a href='http://stiltsoft.com'>Privacy Policy</a></li>",
                                           "<li class='noprint'><a href='http://stiltsoft.desk.com/customer/portal/emails/new'>Support</a></li>");
});
</script>

И вот какой колонтитул у вас должен получиться:

footer

Обратите внимание, в соответствии с Atlassian EULA вы не имеете права удалять строчку Powered by Atlassian Confluence. Так что будьте внимательны, когда будете экспериментировать.

Не пропустите наши новости и полезные советы в твиттере и фейсбуке (на английском).

 

Использование сабмодулей в Git

В этой статье мы расскажем о том, как мы решали две проблемы хранения исходных кодов для наших проектов. Изначально репозитории хранились в Subversion. Мы думали о переходе на Git и разделении одного из репозиториев на две отдельных части с целью ограничить доступ к одной из них. Ниже будет рассказано, как мигрировать репозиторий в Git из Subversion и разделить его на две части так, чтобы структура файлов в репозитории не пострадала для пользователя, который имеет права на доступ к обеим частям репозитория.

Шаг 1: Получаем данные из Subversion

Первое, что нам потребуется — это файл со сведениями о разработчиках проекта. Он выглядит следующим образом:

mkuzmich = Maxim Kuzmich <mkuzmich@stiltsoft.com>
alexkuznetsov = Alexander Kuznetsov <alexkuznetsov@stiltsoft.com>
rkirilenko = Roman Kirilenko <rkirilenko@stiltsoft.com>

Сохраним его под именем users.txt

Делаем чекаут репозитория во временную папку (если что-то пойдет не так — ее можно будет использовать для того, чтобы повторить процесс без повторного чекаута из Subversion):

git svn clone --stdlayout --no-metadata -A users.txt --username svn_username https://some_svn_url dest_dir-tmp

Обновим репозиторий на случай возможных коммитов в то время, когда мы делали чекаут:

cd dest_dir-tmp
git svn fetch

Шаг 2: Миграция данных в Git и разделение репозитория на части

Для начала, нам потребуется чистая копия данных, полученных из Subversion:

git clone dest_dir-tmp dest_dir

Отвязываем наш репозиторий от Subversion:

cd ./dest_dir
cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes

Выделяем секретную часть в отдельный репозиторий

Чтобы это сделать, переместим секретную часть в другую директорию и создадим из не репозиторий:

git init
git add .
git commit -m "initial commit"

Поместим секретные данные на сервер:

git remote add stash http://192.168.0.234:7990/scm/proj/secure.git
git push --all stash

Самое время настроить права доступа к секретной часть (для этого мы используем Stash):

stash_access_rights

 

Удаляем секретную часть из основного репозитория

Чтобы предотвратить доступ к секретным данным, удаляем их из-под контроля Git, затем загружаем наш репозиторий на сервер:

git rm secure -r
git commit -m "removed secure part"
git remote add stash http://192.168.0.234:7990/scm/proj/repo.git
git remote rm origin
git push --all stash

Добавляем секретную часть в основной репозиторий в виде сабмодуля

Добавим секретную часть в виде сабмодуля способом, описанным в документации Git:

git submodule add http://192.168.0.234:7990/scm/proj/secure.git
git commit -m "added secure part as submodule"
git push stash

Шаг 3: Получаем репозиторий целиком (вместе с секретной частью).

Клонируем репозиторий:

git clone http://192.168.0.234:7990/scm/proj/repo.git

В полученном репозитории у нас содержится пустая папка secure. Без прав доступа к сабмодулю ее содержимое получить нельзя. С этим репозиторием можно работать всем. Если нужно получить доступ к секретной части, нужно просто инициализировать сабмодуль и получить его содержимое:

git submodule init
git submodule update

На этом этапе будут проверены права доступа. Если пользователь имеет доступ к секретной части репозитория — ее содержимое будет загружено.

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

git submodule foreach git pull origin master
git add .
git commit -m "updated submodule"
git push origin

Послесловие

С виду задача миграции даже небольшого репозитория из Subversion в Git выглядит сложной. Однако, на практике она требует всего 15 минут. Еще за 15 минут можно разделить репозиторий на части и настроить права доступа к «публичной» и «секретной» частям. А если использовать при этом Atlassian Stash, то работа с Git становится еще более дружелюбной и интуитивной.

Автоматизация рутинных действий с JIRA Automation Plugin

История происхождения

Иногда классные продукты появляются неожиданно. Очень часто они появляются в последовательности «искал продукт для решения своих ежедневных задач» — «не нашел удовлетворяющих всем требованиям готовых решений» — «решил сделать такой продукт сам» — «получилось классно и решил поделиться». Так и появился JIRA Automation Plugin. Ни для кого не секрет, что у большой компании в багтрекере или helpdesk-системе некоторые заявки могут оставаться без внимания и «теряться» в потоке других, а потом всплывать через длительное время. Или просто оставлять негатив у пользователя, на обращение которого никто не отреагировал.
Именно этот посыл двигал командой разработчиков Atlassian. Как быть, к примеру, если в течение двух недель никто не оставлял комментарий к «плавающему» багу, который трудно так просто поймать? Как понять, попал он в новую версию или был все-таки исправлен? Как не забыть получить обратную связь от пользователя? Эти и другие проблемы и призван был решить JIRA Automation Plugin. Немного забегая вперед — похоже, решил. Поскольку был выложен в свободный доступ для того, чтобы помочь и другим командам решить аналогичные проблемы.

Функциональность плагина

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

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

Это позволяет автоматизировать как самые простые вещи (например, просто закрывать очень старые баги, которые уже два года не воспроизводятся и уже не актуальны), так и более сложные (например, по факту логирования трудозатрат для очень критичного бага автоматически в комментариях спрашивать, все ли готово, а по факту закрытия такого удалять из него метку «суперважно», которой активно пользуются разработчики при багфиксинге для того, чтобы в первую очередь чинить самые нужные фичи). Области применения автоматизации определяются только flow, который работает в JIRA, и фантазией пользователей.

Нефункциональные требования

По-настоящему мощное и востребованное решение должно быть еще и удобным и безопасным в использовании. Поэтому к списку требований добавились:

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

Как это работает

Для того, чтобы автоматизация заработала, нужно создать и включить как минимум одно правило. Правило создается в 4 этапа:

Задаем имя правила и пользователя, от имени которого оно сработает
Можно сразу включить правило.

automation_add_rule

Задаем тип триггера
Их может быть всего два — JQL выражение и событие заявки.

automation_set_trigger_type

Работа с JQL фильтрами требует указания JQL выражения и задания в крон-формате времени срабатывания этого выражения. Можно ограничить количество результатов, выдаваемых JQL-выражением.
В случае, если нужно производить какие-либо действия по событию для заявки — нужно выбрать, по каким событиям будет срабатывать триггер (их можно выбрать несколько). По желанию можно с помощью JQL-выражения ограничить заявки, подверженные действию триггера (уменьшить их количество). Можно также добавить ограничение по пользователю, действия которого могут вызывать срабатывание триггера.

automation_select_trigger

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

automation_add_actions

Почти закончили
Остается только проверить, все ли указано правильно, и автоматизация начнет работать.

automation_confirm

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

Заключение

У Atlassian получилось достаточно удобное решение по автоматизации простых задач при работе с JIRA. Несмотря на молодость продукта, он уже имеет достаточно гибкие и, что немаловажно, интуитивно понятные настройки и достаточно хорош с первой версии, хотя еще есть над чем поработать. Использовать его особенно целесообразно на крупных инстансах JIRA, с которыми работают сотни и тысячи пользователей. Впрочем, и на небольших инсталляциях он тоже может быть полезен.
Однако, плагину было бы здорово обзавестись возможностью оценки последствий создания правила автоматизации. Например, при создании правила на последнем шаге было бы здорово увидеть что-нибудь вроде «это действие затронет большое количество заявок (2985). Хотите продолжить?» и две кнопки — «сохранить» и «сохранить выключенным». В случае, если администратор ошибется с созданием правила автоматизации — это позволит не доводить до Армагеддона и для спасения JIRA не потребуется вызывать Брюса Уиллиса. :)

Вживую же плагин выглядит так: