#sdk #genexus
Вопрос:
Я искал способы получить информацию и методы раздела командной разработки Genexus с помощью SDK, такие как:
- Получите имя КБ, размещенного на сервере Genexus (не то имя, которое я поставил, когда КБ было загружено с сервера)
- Получить информацию о наборе изменений
- Триггерная фиксация наборов изменений
- Запустите полное обновление текущего КБ
Я узнал о некоторых занятиях внутри «Артеха.Упаковка.TeamDevClient…» Библиотеки DLL, но они не прилагались к установке SDK, я нашел эти библиотеки DLL в своей папке установки Genexus 16 (внутри ./Пакеты), поэтому я не уверен, следует ли мне ее использовать. Поэтому мои вопросы таковы:
- В среде SDK я могу получить информацию о разделе Team Dev в Genexus? для таких вещей, как наборы изменений, имя КБ сервера Genexus…
- Могу ли я запускать события сервера Genexus, такие как фиксации, обновления и блокировки?
Редактировать:
Для выполнения этих операций нам, очевидно, необходимо подключиться к экземпляру сервера GX, поэтому, если учетные данные сервера Genexus не были заданы, он не будет работать.
Тем не менее, как мне правильно установить (и получить) эти конфигурации программно? Я немного покопался в классах и нашел это TeamDevelopmentData
, у Artech.Architecture.Common.Services.TeamDevData.Client
него есть и перегрузка, чтобы принять рабочую модель, поэтому я попробовал следующее (с моими учетными данными сервера genexus, уже настроенными в разделе командной разработки):
TeamDevelopmentData teamDevData = new TeamDevelopmentData(UIServices.KB.CurrentModel); foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(teamDevData)) { string name = descriptor.Name; object value = descriptor.GetValue(teamDevData); CommonServices.Output.AddLine(name " = " value); }
В результате teamDevData
свойства являются null
. Как мне правильно его использовать?
Ответ №1:
Двоичные файлы в папке «Пакеты» представляют собой сведения о реализации служб, определенных в SDK. Не рекомендуется ссылаться ни на один из них, так как они подвержены изменениям, и ваше расширение сломается, если это произойдет. Наша приверженность совместимости относится к SDK GeneXus.
В SDK вы можете найти интерфейсы, определенные для служб командной разработки, которые позволят вам выполнить большинство вариантов использования, о которых вы упомянули. Имейте в виду, что некоторые операции будут выполняться локально в клиентской базе данных, а для других может потребоваться запросить некоторую информацию в удаленной базе данных. Для этих последующих операций открытые операции требуют отправки учетных данных пользователя. Если ваше расширение будет работать как расширение пользовательского интерфейса, вы можете использовать службы, определенные в пакете пользовательского интерфейса, который запрашивает учетные данные и отправляет их на сервер при необходимости.
- Чтобы получить имя удаленного КБ, вы можете запросить соответствующее свойство КБ:
KnolwedgeBase kb = UIServices.KB.CurrentKB; string remoteKBName = (string) kb.Properties.GetPropertyValue(Artech.Genexus.Common.Properties.KB.RemoteKb);
- Чтобы получить списки изменений, определенные в диалоговом окне фиксации, вы можете использовать следующее:
var changeLists = BLServices.TeamDevClient.GetChangelists(UIServices.KB.CurrentModel);
Эта операция возвращает последовательность всех определенных списков изменений и для каждого из них набор ключей всех ожидающих фиксации элементов, назначенных этому списку изменений.
- В настоящее время нет способа зафиксировать объекты списка изменений напрямую, но можно отфильтровать ожидающие фиксации объекты в соответствии с ключами необходимого списка изменений.
var localChanges = BLServices.TeamDevClient.GetLocalChanges(UIServices.KB.CurrentModel); Listlt;KBObjectHistorygt; objectList = ….. var data = new SendChangesData { Comment = “Commit comment”, Options = ExportOptions.Default, ObjectList = objectList }; bool result = UIServices.TeamDevelopment.SendChanges(data);
localChanges
Переменная содержит последовательность исторических сведений о текущих ожидающих фиксациях. Каждая запись истории имеет свойство ключа, которое можно использовать для сравнения с ключами данного списка изменений, чтобы создать набор ключей, которые находятся как в локальном списке изменений, так и в определенном списке изменений.
- Запустите полное обновление текущего КБ
var data = new ReceiveChangesData(); var pendingUpdate = UIServices.TeamDevClient.JustReceiveChanges(ref data);
Я надеюсь, что это позволит вам начать. Если у вас есть какие-либо вопросы, не стесняйтесь задавать их.
Комментарии:
1. Это потрясающе @Антонелла Гутьеррес ! спасибо за подробное объяснение, я продолжу расспрашивать о SDK и, надеюсь, облегчу новым разработчикам понимание того, на что способна платформа.
2. Я отредактировал с помощью дополнительного вопроса, касающегося управления учетными данными Team Dev в SDK!
3. Как я уже сказал, пакет пользовательского интерфейса управляет учетными данными пользователей для тех операций, которые требуют их отправки на сервер. Мы переходим от аутентификации служб с помощью учетных данных к использованию уже аутентифицированных токенов, чтобы службам BL не нужно было также получать учетные данные в качестве аргументов. Эта часть еще не завершена для использования расширениями.