Я оцениваю размещенную Jira Studio, и она мне нравится все больше и больше, когда я ее использую. Поскольку размещенный сервис находится не у нас и содержит важную информацию о нашей работе, меня попросили выяснить, есть ли способ прочитать данные из Jira Studio и сохранить их в нашем локальном хранилище данных. В этой публикации я покажу вам простой способ прочитать проблемы из Jira Studio и сохранить их в базе данных.
Предупреждение! Код, показанный здесь, дает вам представление о том, как общаться с Джирой. Если вы хотите использовать его в реальных сценариях, то вам нужно изменить его, чтобы из веб-службы запрашивалось меньше данных. Используйте этот код в качестве рабочей основы для собственного уровня интеграции с Jira, но не забудьте оптимизировать его.
Добавление ссылки на сервис
Я пытался добавить ссылку на современный сервис в веб-сервис Jira в Visual Studio 2010, но он генерировал неправильные вызовы методов, которые было невозможно использовать. Ключ заключается в том, чтобы добавить ссылку в старом стиле на веб-сервис Jira.
Чтобы добавить ссылку на веб-сервис Jira, выполните следующие действия.
- Щелкните правой кнопкой мыши по вашему проекту и выберите Добавить ссылку на услугу…
- Оставьте поля пустыми в этом диалоговом окне и нажмите кнопку «Дополнительно»
- Оставьте значения такими, какие они есть, и нажмите кнопку Добавить веб-ссылку …
- Введите URL-адрес Jira и имя веб-ссылки (пример показан на скриншоте ниже)
- Нажмите на зеленый значок, чтобы загрузить WSDL
- Нажмите кнопку Добавить ссылку…
Если все прошло хорошо, тогда в ваш проект добавится новая веб-ссылка, и вы сможете начать общаться с Jira.
Создание базы данных и модели данных
Теперь давайте создадим простую таблицу для вопросов и добавим ее в наше приложение как модель данных сущности ADO.NET. В этой публикации у нас есть только одна таблица и один класс. Конечно, вы можете читать больше данных из Jira, а также отслеживать изменения.
Теперь наши данные готовы, и пришло время установить связь с Jira.
Подключение к Джира
Мы можем подключиться к Jira через клиент веб-службы. Перед вызовом любых других методов мы должны войти в систему и удерживать токен сессии. Этот токен используется почти всеми методами веб-службы для вашей аутентификации. Скелет простого кода выглядит так:
var client = new JiraService.JiraSoapServiceService(); var token = client.login("UserName", "Password"); // Read data from service or add new issues client.Dispose();
Если этот код работает для вас, то вы готовы общаться с Jira.
Проблемы с импортом
Импорт проблем означает, что мы читаем проблемы из сервиса, сопоставляем эти проблемы с нашими локальными проблемами и вставляем их в базу данных. Копирование значений из проблемы веб-службы в проблему нашей модели не очень хорошая идея. Мы можем использовать AutoMapper для облегчения нашей работы. Просто добавьте ссылку на пакет NuGet в проект, прежде чем добавлять следующий код.
var client = new JiraService.JiraSoapServiceService(); var token = client.login("UserName", "Password"); var model = new JiraEntities(); var issues = client.getIssuesFromJqlSearch(token, "", 2); Mapper.CreateMap<string, int>().ConvertUsing<IntTypeConverter>(); Mapper.CreateMap<JiraService.RemoteIssue, Issue>() .ForMember(p => p.ProjectKey, d => d.MapFrom(dd => dd.key.Split('-')[0]) ); foreach (var issue in issues) { var modelIssue = new Issue(); Mapper.Map(issue, modelIssue); model.Issues.AddObject(modelIssue); model.SaveChanges(); } model.Dispose(); client.Dispose();
AutoMapper не выполняет автоматические преобразования, когда один тип должен быть проанализирован с другим (например, string => int). Вот почему мы используем класс IntTypeConverter, который я нашел из потока stackoverflow AutoMapper: Как проанализировать Int из String и возможно ли создать правила на основе типа данных? Вы можете найти больше классов преобразования из этой темы. Вот IntTypeConverter.
class IntTypeConverter : TypeConverter<string, int> { protected override int ConvertCore(string source) { if (source == null) throw new MappingException("Cannot convert null to int"); return Int32.Parse(source); } }
Выполнение кода займет некоторое время, по крайней мере, на моей машине. Но это импортирует проблемы в мою таблицу базы данных.
Вывод
Jira Studio — серьезное предложение для компаний-разработчиков программного обеспечения. Помимо среды для совместной работы на профессиональном уровне, существуют также веб-сервисы, которые позволяют интегрировать Jira Studio с другими системами, которые может использовать ваша компания (планирование времени и ресурсов и т. Д.). Чтобы получить данные от Jira, мы добавили ссылку на старый веб-сервис в наш проект, и перед тем, как связываться с веб-сервисом, мы аутентифицировали себя, чтобы получить токен аутентификации для использования с вызовами методов веб-сервиса.