comru / issue-tracker

A simple issue tracker application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

issue-tracker

Приложение issue-tracker предназначено для создания задач и их назначения. The application is based on CUBA platform.

##Описание приложения

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

При создание категории из редактора сущности Project, будет открыт стандартный экран редактирования категории, и заполнены поля, название и тип сущности. Тип сущности это сущность Issue. Т.е. у сущности Issue появится дополнительный набор атрибутов.

При отображение экземпляров сущности Issue, необходимо показывать те динамические атрибуты, которые есть в наборе категории, которая содержится в проекте данной задачи. Для этого сущность Issue реализует интерфейс com.haulmont.cuba.core.entity.Categorized который содержит два метода:

  • com.company.tracker.entity.Issue.setCategory, его реализация останется пустой;
  • com.company.tracker.entity.Issue.getCategory здесь возвращается экземпляр категории, который содержится в связаном проекте этой задачи.

Все динамические атрибуты корректного экземпляра можно получить с помощью метода com.haulmont.cuba.core.entity.BaseGenericIdEntity.getDynamicAttributes

При редактирование сущности Issue используется RuntimePropertiesFrame, подробнее про него можно прочитать в документации. В дескрипторе экрана создано два источника данных:

  • runtimePropsDs - специфический источник, в который будут загружены экземпляры CategoryAttributeValue. Атрибут mainDs ссылается на главный источник данных - issueDs, содержащий редактируемую сущность Issue.
  • categoriesDs - обычный collectionDatasource для загрузки списка категорий данного типа сущности.

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

##Структура приложения

Приложение содержит две сущности:

  • Project - Проект.
    • shortName - короткое имя проекта. Необходимо для формирования уникального номера задачи. Номер задачи формируется из shortName проекта и значения последовательности для данного проекта. Подробную реализацию смотреть в com.company.tracker.listener.IssueListener.
    • name - полное имя проекта.
    • category - сущность содержащая набор дополнительных атрибутов для задачи, которая создается на основе этого проекта. Тип атрибута сущность - Category из базового проекта CUBA.
    • team - набор пользователей, которым будет доступен этот проект. Пользователи смогут создавать и просматривать задачи на основе этого проекта.
  • Issue - Проблема(Задача в рамках проекта)
    • project - проект. В зависимости от того какой проект выбран, в редакторе задачи будут отображен список дополнительных(динамических) атрибутов.
    • number - номер задачи. Необходимо для формирования уникального номера задачи. См. 'Project#shortName'.
    • summary - короткое описание задачи
    • description - полное описание задачи
    • assignee - пользователь на которого назначена задача
    • created - пользователь создавший задачу.

##Пример

  1. Запустить приложение
  2. Открыть экран Project/Project browser
  3. Создать новый проект Short Name - PL; Name - Platform;
  4. Создать новую категорию
  5. Добавить новый атрибут в категорию Название - Type; Код - PL_ISSUE_TYPE; Тип атрибута - Перечисление; Перечисление - Bug,Exception,Usability Problem,Cosmetics,Feature;
  6. Сохранить
  7. Создать новый проект Short Name - ST; Name - Studio;
  8. Создать новую категорию
  9. Добавить новый атрибут в категорию Название - Priority; Код - ST_ISSUE_PRIORITY; Тип атрибута - Перечисление; Перечисление - Major,Normal,Minor;
  10. Сохранить
  11. Открыть экран Project/Issue browser
  12. Создать новую задачу. При изменение значения поля Project будет меняться набор динамических атрибутов.

About

A simple issue tracker application


Languages

Language:Java 100.0%