Импорт данных из JSON

Версия 4.3 или более поздняя версия плагина импортеров JIRA, которая поставляется вместе с JIRA, позволяет импортировать данные из файла описания объектов JavaScript (JSON).

Файлы JSON легко читаются и инкапсулируют больше структуры и информации, чем файлы CSV.

Функция импорта JSON позволяет импортировать задачи из внешней системы (отслеживания задач), которая:

  • JIRA не предоставляет специализированный инструмент импорта и
  • Может экспортировать свои данные в формате JSON.

Вы также можете подготовить файл JSON вручную.

 Обратите внимание, что формат импорта, используемый плагином импортеров JIRA, более прост, чем формат импорта, доступный при использовании API  REST JIRA.

Создание файла JSON для импорта

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

ПРИМЕР файла JSON


{
    "users": [
        {
            "name": "alice",
            "fullname": "Alice Foo"
        },
        {
            "name": "bob",
            "fullname": "Bob Bar"
        }
    ],
    "links": [
        {
            "name": "sub-task-link",
            "sourceId": "2",
            "destinationId": "1"
        },
        {
            "name": "Duplicate",
            "sourceId": "3",
            "destinationId": "2"
        }
    ],
    "projects": [
        {
            "name": "A Sample Project",
            "key": "ASM",
            "description": "JSON file description",
            "versions": [
                {
                    "name": "1.0",
                    "released": true,
                    "releaseDate": "2012-08-31T15:59:02.161+0100"
                },
                {
                    "name": "2.0"
                }
            ],
            "components": [
                "Component",
                "AnotherComponent"
            ],
            "issues": [
                {
                    "priority" : "Major",
                    "description" : "Some nice description here\nMaybe _italics_ or *bold*?",
                    "status" : "Closed",
                    "reporter" : "alice",
                    "labels" : [ "impossible", "to", "test" ],
                    "watchers" : [ "bob" ],
                    "issueType" : "Bug",
                    "resolution" : "Resolved",
                    "created" : "2012-08-31T17:59:02.161+0100",
                    "updated" : "P-1D",
                    "affectedVersions" : [ "1.0" ],
                    "summary" : "My chore for today",
                    "assignee" : "bob",
                    "fixedVersions" : [ "1.0", "2.0" ],
                    "components" : ["Component", "AnotherComponent"],
                    "externalId" : "1",
                    "history" : [
                        {
                            "author" : "alice",
                            "created": "2012-08-31T15:59:02.161+0100",
                            "items": [
                                {
                                    "fieldType" : "jira",
                                    "field" : "status",
                                    "from" : "1",
                                    "fromString" : "Open",
                                    "to" : "5",
                                    "toString" : "Resolved"
                                }
                            ]
                        }
                    ],
                    "customFieldValues": [
                        {
                            "fieldName": "Story Points",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float",
                            "value": "15"
                        },
                        {
                            "fieldName": "Business Value",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float",
                            "value": "34"
                        }
                    ],
                    "attachments" : [
                        {
                            "name" : "battarang.jpg",
                            "attacher" : "admin", 
                            "created" : "2012-08-31T17:59:02.161+0100",
                            "uri" : "http://optimus-prime/~batman/images/battarang.jpg",
							"description" : "This is optimus prime"
                        }
                    ]                    
                },
                {
                    "status" : "Open",
                    "reporter" : "bob",
                    "issueType": "Sub-task",
                    "created" : "P-3D",
                    "updated" : "P-1D",
                    "summary" : "Sub-task",
                    "externalId": "2"
                },
                {
                    "status" : "Closed",
                    "reporter" : "alice",
                    "issueType": "Sub-task",
                    "created" : "P-3D",
                    "updated" : "P-1D",
                    "resolution" : "Duplicate",
                    "summary" : "Duplicate Sub-task",
                    "externalId": "3"
                }
            ]
        }
    ]
}

Пользовательские поля

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

Bundled Custom Fields List

Пример пользовательского поля ниже показывает некоторый синтаксис добавления пользовательских полей, включая пример каскадного пользовательского поля. Если пользовательское поле не указано выше, «fieldType» можно получить на странице конфигурации пользовательских полей, проверив исходный HTML-код. «Значение» (value) относится к каждому пользовательскому полю, и вы можете найти это, проверив исходный HTML- код «Редактировать задачу» (Edit Issue).

ПРИМЕР ПОЛЬЗОВАТЕЛЬСКОГО ПОЛЯ


 "customFieldValues": [
                    //Custom Fields which accepts single values:
                        {
                            "fieldName": "My Awesome Text Field (single line)",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield",
                            "value": "some text"
                        },
                        {
                            "fieldName": "My Awesome Select List (single choice)",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select",
                            "value": "some select"
                        },
                    //Custom Fields which accepts multiple values:
                        {
                            "fieldName": "My Awesome Checkboxes",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes",
                            "value": [ "multiple", "checkboxes" ]
                        },
                        {
                            "fieldName": "My Awesome User Picker (multiple users)",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker",
                            "value": [ "admin", "fred" ]
                        },
                    //Custom Fields which accepts Options in hierarchy. That's only cascading select from standard JIRA pool.
                         {
                            "fieldName": "My Awesome Select List (cascading)",
                            "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect",
                            "value":
                            {
                                "": "Parent Value",
                                "1": "Child Value"
                            }
                        }
]

Специфические примеры файлов JSON

Другие конкретные примеры файлов JSON включают:

Поддерживаемые поля

Заметки

Пример

Пользователи

В этом примере представлен полный пользователь. В этом примере указаны две группы. Если группа уже не существует, ее создаст плагин импортеров JIRA.

ПРИМЕР ПОЛЬЗОВАТЕЛЯ


"users": [ 
	{
        "name" : "someuser",
        "groups" : [ "jira-users", "my-custom-group" ],
        "active" : true,
        "email" : "user1@example.com",
        "fullname" : "User 1"
	}
]

Ключ проекта и ключ задачи

Вы можете назначить ключ и для проекта, и для задачи. Эти ключи могут быть разными. В этом примере будет создан проект с одной задачей «SAM-123».

ПРИМЕР КЛЮЧА  ПРОЕКТА И КЛЮЧА ЗАДАЧИ


{
    "projects": [
        {
            "name": "Sample data",
            "key": "SAM",
            "issues": [
                {
					"key" : "SAM-123",
                    "status" : "Open",
                    "reporter" : "admin",
                    "summary" : "Parent case",
                    "externalId": "123"
                }
            ]
        }
    ]
}

Комментарии

В этом примере показано, как можно импортировать несколько комментариев для задачи.

ПРИМЕР КОММЕНТАРИЯ


{
    "projects": [
        {
            "name": "Sample data",
            "key": "SAM",
            "issues": [
                {
                    "status" : "Open",
                    "reporter" : "admin",
                    "summary" : "Parent case",
                    "externalId": "1",
                    "comments": [
                        {
                            "body": "This is a comment from admin 5 days ago",
                            "author": "admin",
                            "created": "2012-08-31T17:59:02.161+0100"
                        },
                        {
                            "body": "This is a comment from admin 1 day ago",
                            "author": "admin",
                            "created": "2012-08-31T17:59:02.161+0100"
                        }
                    ]
                }
            ]
        }
    ]
}

Рабочие журналы

В этом примере показан синтаксис для импорта подробностей рабочего журнала.

ПРИМЕР РАБОЧЕГО ЖУРНАЛА


"worklogs": [
        {
            "author": "admin",
            "comment": "Worklog",
            "startDate": "2012-08-31T17:59:02.161+0100",
            "timeSpent": "PT1M"
        },
        {
            "author": "admin",
            "startDate": "2012-08-31T17:59:02.161+0100",
            "timeSpent": "PT3H"
        }
    ]

Компонент

Компоненты могут быть указаны в файле JSON двумя способами: путем предоставления имени или предоставления объекта. Этот пример показывает оба. Плагин импортеров JIRA всегда будет создавать новый компонент с «Представитель по умолчанию», который переключается на «Проект по умолчанию», поскольку вы не можете указать «Представитель по умолчанию».

ПРИМЕР КОМПОНЕНТА


"components": [
                "Component", //Component specified only by name
                { // Component specified by object
                    "name": "SomeName",
                    "lead": "admin",
                    "description": "Some description"
                }
            ],

Задачи с отслеживанием времени

Деталь отслеживания времени может быть импортирована с задачей. В этом примере показана задача с детализацией отслеживания времени. Значения «originalEstimate (оригинальная оценка)», «timeSpent ( потраченное время)» и «оценка» должны быть в формате Period (Format ISO_8601 - Durations). Значение «startDate (дата начала )» принимает формат DateTime и Period.

Убедитесь, что в JIRA включена функция отслеживания времени, прежде чем вы начнете импорт, иначе данные будут проигнорированы плагином импортеров JIRA во время импорта.

ЗАДАЧИ С ОТСЛЕЖИВАНИЕМ ВРЕМЕНИ


"issues": [
                {
                    "summary" : "My Example Time Tracking issue",
                    "externalId": "1",
                    "originalEstimate": "P1W3D",
                    "timeSpent": "PT4H",
                    "estimate": "P2D",
                    "worklogs": [
                        {
                            "author": "admin",
                            "comment": "Worklog",
                            "startDate": "P-1D", //can be a Period or DateTime
                            "timeSpent": "PT1M"
                        },
                        {
                            "author": "admin",
                            "startDate": "2014-01-14T17:00:00.000+0100",
                            "timeSpent": "PT3H"
                        }
                    ]
                }
            ]

 

Запуск мастера импорта файлов JSON

Прежде чем начать: Если ваша установка JIRA имеет существующие данные - создайте резервную копию существующих данных JIRA.

Для того чтобы произвести  запуск мастера импорта файлов JSON, выполните следующие шаги:

  1. Войдите в JIRA как пользователь с глобальными правами администратора JIRA.
  2. Выберите > «Система» (System). Выберите «Импорт и экспорт» ( Import & Export)> «Внешняя система импорта» (External System Import), чтобы открыть страницу «Импорт внешних проектов».

Комбинация клавиш: g + g + начало ввода внешнего импорта системы

  1. Выберите кнопку «Импортировать из JSON» ( Import from JSON ), связанную с опцией JSON, чтобы открыть страницу импорта файлов JSON (JSON File import).
  2. Выберите файл JSON.
  3. Нажмите кнопку «Начать импорт» (Begin Import), когда вы будете готовы начать импорт вашего JSON-файла в JIRA. Импортёр будет отображать обновления по мере продвижения импорта, а затем выдаст сообщение об успешном завершении, когда импорт будет завершен.

Примечание. Если у вас возникли проблемы с импортом (или вам просто интересно), нажмите ссылку подробного журнала (download a detailed log), чтобы просмотреть подробную информацию о процессе импорта файлов JSON. Эта информация также может быть полезна, если вы столкнулись с любыми ошибками при импорте.

Поздравляем! Вы успешно импортировали свои проекты JSON в JIRA! Если у вас возникли какие-либо вопросы или возникли какие-либо ошибки, обратитесь в службу поддержки Atlassian.

По материалам Atlassian JIRA Administrator's Guide: Importing Data from JSON