Навигатор по разделу:
- Разработка коннектора к кадровой системе
- Методы интерфейса
- Интерфейсные классы
- Разработка коннектора к управляемой системе
- Аргументы и возвращаемые значения
- Описание методов основного интерфейса
- Метод CreateSession
- Метод GetAllRights
- Метод SearchRights
- Метод GetAllProperties
- Метод GetUser
- Метод CreateUser
- Метод AddUserRights
- Метод DropUserRights
- Метод LockUser
- Метод UnlockUser
- Метод ResetUserPassword
- Метод GetActiveUsers
- Метод GetPropertyOption
- Метод GetRightIdByName
- Метод GetUserProperties
- Метод GetUserRights
- Метод SetUserPassword
- Метод SetUserProperties
- Описание классов основного интерфейса
- Дополнительные интерфейсы
- Разработка коннектора к источнику юнитов
- Интерфейсные классы
Разработка коннектора к кадровой системе
Общая методика разработки кадрового коннектора:
- Спроектировать способ интеграции и взаимодействия коннектора с кадровым источником. Определить архитектурную схему подключения коннектора к кадровому источнику и протокол взаимодействия.
- Если для взаимодействия с кадровым источником требуется доработка или настройка на стороне кадровой системы — произвести данную доработку.
- Реализовать все методы интерфейса кадрового коннектора.
- При необходимости автономного тестирования (без подключения к кадровому источнику) разработать интеграционные тесты на методы коннектора.
- Задокументировать установку и настройку параметров кадрового коннектора.
Все методы основного интерфейса коннектора должны быть реализованы и возвращать данные из кадровой системы в установленном интерфейсом формате.
Коннектор получает от кадровой системы и возвращает в реализованных методах интерфейса следующие сведения:
- Список подразделений, запись подразделения;
- Список сотрудников, запись сотрудника;
- Список должностей.
HR-коннектор представляет собой .NET Core сборку, содержащую публичный класс, реализующий интерфейс Avanpost.Idm.HrConnectors.Api.IHrConnector.
Ниже приведён интерфейс коннектора:
public interface IHrConnector : IDisposable
{
IEnumerable<Division> GetDivisions(string parentId);
Division GetDivision(string divisionId);
Employee GetEmployee(string employeeId);
IEnumerable<Employee> GetEmployees(string divisionId);
IEnumerable<Position> GetPositions();
}
Методы интерфейса
Метод GetDivisions
Получение подразделений – ближайших потомков указанного.
Сигнатура:
IEnumerable<Division> GetDivisions(string parentId);
Параметр parentId содержит идентификатор родительского подразделения, потомки которого должны быть возвращены. Указано родительское подразделение или null для получения подразделений верхнего уровня. Метод должен возвращать коллекцию экземпляров класса Division (см. Класс Division).
Метод GetDivision
Получение подразделения.
Сигнатура:
Division GetDivision(string divisionId);
Принимает параметр divisionId – идентификатор подразделения. Метод должен возвращать экземпляр класса Division (см. Класс Division).
Метод GetEmployees
Получение сотрудников подразделения.
Сигнатура:
IEnumerable<Employee> GetEmployees(string divisionId)
Принимает параметр divisionId – идентификатор подразделения, не может быть null. Метод должен возвращать коллекцию экземпляров класса Employee (см. Класс Employee).
Метод GetEmployee
Получение сотрудника.
Сигнатура:
Employee GetEmployee(string employeeId);
Принимает параметр employeId. Должен возвращать единичный экземпляр класса Employee (см. Класс Employee).
Метод GetPositions
Получение всех доступных должностей.
Сигнатура:
IEnumerable<Position> GetPositions();
Должен возвращать коллекцию экземпляров класса Position (см. Класс Position).
Интерфейсные классы
Данные классы используются в качестве аргументов и ожидаемого результата методов. Ссылки на них приведены в описаниях методов основного интерфейса коннектора к кадровой системе.
Класс Division
Экземпляр класса Avanpost.Idm.HrConnectors.Api.Division должен содержать значения следующих свойств:
Id— строка, идентификатор подразделения;Name— человекочитаемое наименование подразделения;ParentId— идентификатор родительского подразделения (null для корневого);ManagerId— идентификатор пользователя, являющегося владельцем данного подразделения (опционально);AdditionalProperties— коллекция вида ключ-значение, для описания дополнительных свойств подразделения (опционально).
Класс Employee
Экземпляр класса Avanpost.Idm.HrConnectors.Api.Employee должен содержать значения следующих свойств:
Id— уникальный идентификатор сотрудника;PersonId— идентификатор физического лица, которого представляет сотрудник (опционально);PersonnelNumber— табельный номер сотрудника (опционально);LastName— фамилия;FirstName— имя;Patronymic— отчество (опционально);BirthDate— дата рождения, экземпляр DateTime (опционально);EmailAddress— E-mail сотрудника (опционально);PositionId— идентификатор должности сотрудника;DivisionId— идентификатор подразделения сотрудника;Status— статус (описывается Idm.HrConnectors.Api.EmployeeStatus);AdditionalProperties— коллекция дополнительных свойств сотрудника в виде пар ключ-значение (опционально).
Класс Position
Экземпляр класса Avanpost.Idm.HrConnectors.Api.Position должен содержать значения следующих свойств:
Id— идентификатор должности;Name— человекочитаемое наименование должности. (опционально)
Разработка коннектора к управляемой системе
Общая методика разработки коннектора к целевой системе:
- Спроектировать способ интеграции и взаимодействия коннектора с целевой системой. Определить архитектурную схему подключения коннектора к целевой системе (подключение к базе данных, передача файлов, удалённый вызов процедуры, обмен сообщениями и т.д.) и протокол взаимодействия.
- Если для взаимодействия с целевой системой требуется доработка либо настройка на стороне целевой системы — спроектировать и произвести доработку.
- Если для подключения коннектора требуется создание сессии – реализовать методы
CreateSessionиDispose. - Реализовать обязательные методы интерфейса коннектора к целевой системе: методы
GetAllProperties,GetAllRights,SearchRights,GetRightIdByName,AddUserRights,DropUserRights,GetActiveUsers. - Если требуется создание учётной записи пользователя в целевой системе – реализовать метод
CreateUser. Если не требуется, реализовать данный метод возвращающим существующую учётную запись, соответствующую указанному сотруднику. - Если предполагается управление свойствами учётных записей пользователей в целевой системе – реализовать методы
SetUserProperties,GetUserProperties,GetAllProperties. Если не предполагается, реализовать методы возвращающими пустые коллекции. - Если предполагается управление сложными многозначными свойствами учётных записей пользователей (установка нескольких значений для одного свойства) – реализовать метод
GetPropertyOptions. Если не требуется — реализовать метод возвращающим пустую коллекцию. - Если требуется управление блокировкой и разблокировкой учётной записи пользователя – реализовать методы
LockUserиUnlockUser. Если не требуется, реализовать методы без логики. - Если требуется управление паролями учётной записи пользователя – реализовать методы
SetUserPasswordиResetUserPassword. Если не требуется — реализовать методы без логики. - При потребности в автономном тестировании (без подключения к целевой системе) разработать интеграционные тесты на методы коннектора.
- Задокументировать установку и настройку коннектора.
IDM коннектор представляет собой .NET Standard сборку, содержащую публичный класс, реализующий интерфейс Avanpost.Idm.Connectors.Api.IProvisioningConnector.
Ниже приведен интерфейс коннектора (наследуется от System.IDisposable):
public interface IProvisioningConnector : IDisposable
{
void CreateSession(string connectionString);
ILog Log { get; set; }
IEnumerable<Right> GetAllRights();
string GetRightIdByName(string name);
IEnumerable<Right> SearchRights(string searchString);
IEnumerable<Property> GetAllProperties();
User GetUser(string userId);
IEnumerable<Right> GetUserRights(string userId);
IEnumerable<PropertyValue> GetUserProperties(string userId, IEnumerable<string> propertyIds);
User CreateUser(NewUser user, string password);
void AddUserRights(string userId, IEnumerable<string> rightIds);
void DropUserRights(string userId, IEnumerable<string> rightIds);
void SetUserProperties(string userId, IEnumerable<PropertyValue> propertyValues);
void LockUser(string userId);
void UnlockUser(string userId);
void SetUserPassword(string userId, string password);
void ResetUserPassword(string userId);
IEnumerable<string> GetActiveUsers();
PropertyOption GetPropertyOption(string propertyId);
void Dispose();
}
Как видно из названий методов и типов параметров, интерфейс и объектная модель коннектора сфокусированы на управлении доступом и атрибутами учетных записей.
Логирование действий коннектора производится посредством объекта класса, реализующего интерфейс ILog. Этот объект передается в коннектор в свойство Log.
При формировании в методах коннектора исключения Avanpost.Idm.Connectors.Api.ConnectionAbortedException, производится автоматическое повторное создание сессии коннектора посредством вызова метода IProvisioningConnector.CreateSession.
Если взаимодействие коннектора с управляемой системой предполагает формирование продолжительного по времени подключения (с формированием сессии в управляемой системе и т.д.), тогда коннектор должен в обязательном порядке реализовывать закрытие сессии в методе коннектора Dispose.
Аргументы и возвращаемые значения
Основные объекты ресурса, передаваемые в методы коннектора и возвращаемые ими: свойства, права, учётные записи, – имеют уникальные строковые идентификаторы. Идентификаторы не могут быть null, пустой строкой или состоять только из пробельных символов. Длина идентификаторов не ограничивается. Передача в метод некорректного идентификатора в общем случае должна вызывать исключение.
Сравнение идентификаторов всегда регистронезависимое. Для систем, где эти идентификаторы регистрозависимые, коннектор должен всё равно обеспечивать регистронезависимость на уровне интерфейса (например, с помощью специального кодирования символов в верхнем регистре).
Во всех методах, возвращающих списки объектов, при пустом результате нужно возвращать пустой список вместо null (если не указано другое). Также, в общем случае, в аргументах метода пустые списки, как правило, не должны передаваться. Если специально не указано, в этом случае допускается вернуть пустой результат, но лучше бросить исключение.
Некоторые объекты – аргументы и возвращаемые значения (такие как учётная запись) − могут содержать списки других вложенных объектов (свойства, права учётных записей) и образовывать дерево. Когда аргумент или возвращаемое значение может определять как дерево, так и плоский объект, если явно не указано, метод использует только корневой объект и его свойства. В этом случае списки вложенных объектов должны игнорироваться (для аргументов) или оставаться пустыми (для возвращаемых значений). В противном случае, метод явно указывает, какие вложенные объекты должны передаваться в метод или будут заполнены при возврате.
Описание методов основного интерфейса
Метод CreateSession
Метод предназначен для установки соединения, либо проверки возможности соединения с управляемой системой.
Сигнатура:
void CreateSession(string connectionString);
Параметр connectionString представляет собой строку подключения к ресурсу. Требования к виду строки определяются коннектором.
Рекомендуемый формат — список ключ = значение, разделенный знаком “;”.
Метод GetAllRights
Метод возвращает список прав — групп, ролей или других незначимых атрибутов пользователей возможных в управляемой системе.
Сигнатура метода:
IEnumerable<Right> GetAllRights();
Должен возвращать коллекцию объектов класса Right (см. Класс Right).
Метод SearchRights
Метод используется для поиска прав из интерфейса IDM по имени (если есть) или идентификатору права.
Сигнатура:
IEnumerable<Right> SearchRights(string searchString);
Параметр searchString задаёт подстроку имени или идентификатора искомого права. В ответ метод возвращает коллекцию экземпляров объекта Right (см. Класс Right).
Метод GetAllProperties
Метод возвращает список значимых атрибутов пользователей
Сигнатура метода:
IEnumerable<Property> GetAllProperties();
Метод должен возвращать коллекцию объектов класса Property (см. Класс Property). Свойства, указание значений которых обязательно при создании пользователя в системе, должны иметь значение атрибута Required=true. Обязательные свойства должны передаваться коннектору при создании учётных записей в методе CreateUser (см. Метод CreateUser).
Метод GetUser
Метод получает экземпляр учётной записи по имени. Если запись не существует, возвращает null. Вложенные объекты — права и свойства заполнять не требуется.
Сигнатура:
User GetUser(string userId);
Параметр userId имя — искомой учётной записи. Должен вернуть экземпляр класса User (см. Класс User).
Метод CreateUser
Метод создает учетную запись пользователя в системе с указанными правами и значениями свойств.
Сигнатура:
User CreateUser(NewUser user, string password);
Логин пользователя должен быть равен user.Id. Пароль может быть null.
Дополнительные параметры пользователей передаются через список свойств user.Properties.
Коннектор может бросить исключение, если создание учётной записи пользователя без пароля невозможно.
Возвращает экземпляр созданной учётной записи (см. 3.3.4), который может отличаться от переданного в метод экземпляра (например, с дополнительными свойствами, автоматически созданными или сгенерированными коннектором).
Метод AddUserRights
Метод добавляет права пользователю.
Сигнатура:
void AddUserRights(string userId, IEnumerable<string> rightIds);
Пользователь определяется по логину, заданному в userId, метод должен добавить пользователю права с идентификаторами из списка rightIds. Если учётная запись не найдена, или не удалось добавить хотя бы одно право (в т.ч. из-за неверного идентификатора права) бросает исключение. Добавление уже существующих прав не является ошибкой (вызов должен завершаться успешно, даже если все или часть прав уже есть).
Метод DropUserRights
Метод отнимает права у пользователя.
Сигнатура:
void DropUserRights(string userId, IEnumerable<string> rightIds);
Метод аналогичен AddUserRights.
Метод LockUser
Предназначен для блокировки учетной записи пользователя.
Сигнатура:
void LockUser(string userId);
Если учётная запись не существует, бросать исключение.
Метод UnlockUser
Предназначен для разблокировки учетных записей пользователей.
Сигнатура:
void UnlockUser(string userId);
Аналогично LockUser.
Метод ResetUserPassword
Предназначен для сброса пароля пользователя. После вызова данного метода пользователю при входе будет выводиться требование ввода нового пароля.
Сигнатура:
void ResetUserPassword(string userId);
userId — имя существующей учётной записи (не null).
Метод GetActiveUsers
Возвращает все активные учётные записи в ресурсе. Предназначен для поиска активных записей в ресурсе, незарегистрированных в IDM. Под активными понимается незаблокированные, включённые и т.п. записи – те, под которыми можно работать в системе. Реализация может выбирать активные учётные записи по своему усмотрению, не привязываясь к статусам учётных записей, определённых в интерфейсе. Реализация может передать вызывающему точный или приблизительный размер списка через реализацию списком.
Сигнатура:
IEnumerable<string> GetActiveUsers();
Метод должен возвращать коллекцию строк с логинами пользователей.
Метод GetPropertyOption
В случае, если планируется использование готового набора значений свойства, позволяет получить список этих значений. Если список значений не задан, возвращает null.
Сигнатура:
PropertyOption GetPropertyOption(string propertyId);
propertyId — идентификатор свойства.
Метод должен возвращать экземпляр класса PropertyOption (см. 3.3.5).
Метод GetRightIdByName
Предназначен для разрешения человекочитаемого имени правила в его идентификатор.
Сигнатура:
string GetRightIdByName(string name);
name — человекочитаемое имя правила (например «administrator»).
Если имя правила задано неоднозначно, коннектор должен вызывать исключение. Например, искомое правило «Operator», в системе зарегистрирован некий набор правил: “Administrator”, “Database Operator”, “IDM Operator” – в данном случае должно вызываться исключение, так как имя соответствует нескольким наборам данных.
Метод GetUserProperties
Предназначен для получения значений свойств пользователя по идентификатору пользователя и группы идентификаторов свойств.
Сигнатура:
IEnumerable<PropertyValue> GetUserProperties(string userId, IEnumerable<string> propertyIds);
userId — непустой идентификатор пользователя;
propertyIds — непустой список идентификаторов свойств.
Метод возвращает значения только присущих пользователю свойств.
Метод GetUserRights
Предназначен для получения прав указанной учетной записи.
Сигнатура:
IEnumerable<Right> GetUserRights(string userId);
userId – непустой идентификатор пользователя.
Должен быть возвращён экземпляр класса Right (см. Класс Right). В случае, если учетной записи не назначены права, будет возвращен пустой список прав..
Метод SetUserPassword
Предназначен для назначения пароля пользователю.
Сигнатура:
void SetUserPassword(string userId, string password);
userId – непустой идентификатор существующего пользователя;
password – пароль пользователя, может быть любым значением, реализация может самостоятельно определять правильность пароля и бросать исключение.
Метод SetUserProperties
Предназначен для задание значений свойств в существующей учётной записи.
Сигнатура:
void SetUserProperties(string userId, IEnumerable<PropertyValue> propertyValues);
userId– непустой идентификатор пользователя;propertyValues− имена и значения задаваемых свойств, коллекция экземпляров классаPropertyValue(см. Класс PropertyValue).
Описание классов основного интерфейса
Данные классы используются в качестве аргументов и ожидаемого результата методов. Ссылки на них приведены в описаниях методов основного интерфейса коннектора к целевой системе.
Класс Right
Описывает право в ресурсе. Объект Avanpost.Idm.Connectors.Api.Right может содержать в себе следующие свойства:
Id– строковый идентификатор права;Name– необязательное человекочитаемое название права;Description– необязательное описание права.
Класс Property
Описывает свойство учётных записей в ресурсе. Объект Avanpost.Idm.Connectors.Api.Property может содержать в себе следующие свойства:
Id– строковый идентификатор свойства;Description– описание свойства;Required– признак обязательности свойства.
Класс PropertyValue
Описывает значение свойства учётной записи в ресурсе.
Объект Avanpost.Idm.Connectors.Api.PropertyValue может содержать в себе следующие свойства:
PropertyId– строковый идентификатор свойства;Value– значение свойства.
Класс User
Описывает пользователя в ресурсе. Объект Avanpost.Idm.Connectors.Api.User может содержать в себе следующие свойства:
Id– логин пользователя;Status– описание свойства, из перечисленияUserStatus.
Сигнатура перечисления UserStatus:
public enum UserStatus : short
{
Working = 0, // активный
Locked = 1, // заблокированный
Disabled = 2 // выключенный
}
Класс PropertyOption
Описывает значение свойства (опции). Объект Avanpost.Idm.Connectors.Api.PropertyOption может содержать в себе следующие свойства:
AllowCustomValues— допускается ли использование вводимых с клавиатуры значений;Type— тип свойства, перечисление OptionsType: List – плоский список;Tree— древовидное свойство;MultipleSelection— можно ли задавать несколько вариантов значений;Choices— набор готовых вариантов.
Поля типа PropertyOptionValue:
Name— заголовок значения;Value— само значение;Children— список вложенных значений (для древовидного списка).
Дополнительные интерфейсы
В пространстве имен Avanpost.Idm.Connectors.Api содержатся дополнительные интерфейсы: IObjectAccessControl, IAccountRemover и IAccountRenamer.
Интерфейс IObjectAccessControl
Расширенный интерфейс коннектора, поддерживающего обработку и управление объектными правами.
Чтобы зарегистрировать объектное право нужно знать идентификатор (URI) объекта доступа и режим доступа. Идентификатор вводится вручную и затем проверяется на наличие/корректность через коннектор, после чего можно выбрать режим доступа из списка, сформированным коннектором для указанного объекта. Конкретный формат идентификатора в рамках URI (например, схема) и режимы доступа определяются коннектором.
Примеры объектных прав:
https://devenv.avanpost.ru/idm/— web-ресурс.file:///C:/Windows— папка или файл в файловой системе.//fileserver/documents— общая папка на сервере.
Сигнатура интерфейса:
public interface IObjectAccessControl
{
bool ObjectExists(Uri objectUri);
IEnumerable<ObjectRight> GetObjectRights(Uri objectUri);
void AddUserObjectRight(string login, Uri objectUri, string rightId);
void DropUserObjectRight(string login, Uri objectUri, string rightId);
bool UserHasObjectRight(string login, Uri objectUri, string rightId);
}
Интерфейс оперирует понятием URI, являющимся уникальным признаком объекта в ресурсе. URI задаётся классом System.Uri. Может использоваться как абсолютный, так и относительный URI. Для создания экземпляра Uri с относительным URI можно использовать флаг UriKind.Relative (например, new Uri("path",UriKind.Relative).
Метод ObjectExists
Предназначен для проверки существования объектного права в ресурсе.
Сигнатура метода:
bool ObjectExists(Uri objectUri);
Принимает на вход атрибуты:
objectUri— URI ресурса в виде экземпляра классаSystem.Uri; может быть передан в виде абсолютного либо относительного URI.
Метод GetObjectRights
Предназначен для получения возможных прав объекта с указанным URI.
Сигнатура метода:
IEnumerable<ObjectRight> GetObjectRights(Uri objectUri);
Принимает на вход экземпляр класса System.Uri. Метод должен возвращать коллекцию экземпляров класса прав в объекте Avanpost.Idm.Connectors.Api.ObjectRight.
Класс ObjectRight содержит свойства:
Id— идентификатор режима доступа к объекту;Name— человекочитаемое название режима доступа к объекту, которое выводится в интерфейсе.
Метод AddUserObjectRight
Предназначен для добавления пользователю права на объект с указанным URI.
Сигнатура метода:
void AddUserObjectRight(string login, Uri objectUri, string rightId);
Принимает на вход атрибуты:
login— логин учётной записи пользователя в управляемой системе;objectUri— экземпляр класса System.Uri, к которому добавляется право;rightId— строковый идентификатор права, которое добавляется учётной записи пользователя в объекте.
Метод DropUserObjectRight
Предназначен для удаления у пользователя права на объект с указанным URI.
Сигнатура метода:
void DropUserObjectRight(string login, Uri objectUri, string rightId);
Принимает на вход атрибуты:
login— логин учётной записи пользователя в управляемой системе;objectUri— экземпляр классаSystem.Uri, к которому добавляется право;rightId— строковый идентификатор права, которое удаляется у учётной записи пользователя в объекте.
Метод HasUserObjectRight
Предназначен для проверки наличия право на объект у учётной записи пользователя.
Сигнатура метода:
bool UserHasObjectRight(string login, Uri objectUri, string rightId);
Принимает на вход атрибуты:
login— логин учётной записи пользователя в управляемой системе;objectUri— экземпляр классаSystem.Uri, к которому добавляется право;rightId— строковый идентификатор права, которое удаляется у учётной записи пользователя в объекте.
Интерфейс IAccountRemover
Предназначен для удаления учётных записей.
Сигнатура:
public interface IAccountRemover
{
void Remove(string login);
}
Метод принимает на вход атрибуты:
login— идентификатор пользователя.
Интерфейс IAccountRenamer
Расширенный интерфейс коннектора, поддерживающего переименование учётных записей.
Сигнатура:
public interface IAccountRenamer
{
void RenameAccount(string oldName, string newName);
}
Метод принимает на вход атрибуты:
oldName— имя существующей учетной записи;newName— новое имя для переименования, не должно пересекаться с существующей записью.
Разработка коннектора к источнику юнитов
Общая методика разработки коннектора к источнику юнитов:
- Спроектировать способ интеграции и взаимодействия коннектора с источником юнитов. Определить архитектурную схему подключения коннектора к источнику юнитов и протокол взаимодействия.
- Если для взаимодействия с источником юнитов требуется доработка либо настройка на стороне системы юнитов — произвести данную доработку.
- Реализовать все методы интерфейса коннектора к источнику юнитов.
- При необходимости автономного тестирования (без подключения к источнику юнитов) разработать интеграционные тесты на методы коннектора.
- Задокументировать установку и настройку параметров коннектора к источнику юнитов.
Все методы основного интерфейса коннектора должны быть реализованы и должны возвращать данные из системы юнитов в установленном интерфейсом формате.
Коннектор получает от системы юнитов и возвращает в реализованных методах интерфейса следующие сведения:
- Список типов юнитов;
- Список юнитов, запись юнита;
Юнит-коннектор представляет собой .NET Core сборку, содержащую публичный класс, реализующий интерфейс Avanpost.Iga.Connectors.Api.Units.IUnitConnector
Ниже приведён интерфейс коннектора:
public interface IUnitConnector: IDisposable
{
ILogger Log { get; set; }
void Initialize(string connectionString);
IEnumerable<UnitTypeInfo> GetSupportedUnitTypes();
IEnumerable<Unit> GetUnits(string unitId);
Unit GetUnit(string unitId);
}
Методы интерфейса
Свойство Log
Логгер юнит-коннектора
Сигнатура:
ILogger Log { get; set; }
Используется внутри коннектора для логирования работы коннектора.
Метод Initialize
Инициализация конфигурации коннектора
Сигнатура:
void Initialize(string connectionString);
Параметр connectionString является строкой с параметрами для подключения коннектора к источнику юнитов.
Метод GetSupportedUnitTypes
Получение поддерживаемых типов системой юнитов
Сигнатура:
IEnumerable<UnitTypeInfo> GetSupportedUnitTypes();
Должен возвращать коллекцию экземпляров класса UnitTypeInfo.
Метод GetUnits
Получение юнитов — ближайших потомков указанного.
Сигнатура:
IEnumerable<Unit> GetUnits(string unitId);
Параметр unitId содержит идентификатор родительского юнита, потомки которого должны быть возвращены. Указан родительский юнит или null для получения юнитов верхнего уровня. Метод должен возвращать коллекцию экземпляров класса Unit.
Метод GetUnit
Получение юнитов – ближайших потомков указанного.
Сигнатура:
Unit GetUnit(string unitId);
Принимает параметр unitId — идентификатор юнита. Метод должен возвращать экземпляр класса Unit.
Интерфейсные классы
Данные классы используются в качестве аргументов и ожидаемого результата методов. Ссылки на них приведены в описаниях методов основного интерфейса коннектора к системе юнитов.
Класс Unit
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.Unit должен содержать значения следующих свойств:
Id— строка, идентификатор юнита;Name— имя юнита (уникальное для одного родителя);TypeInfo— экземпляр класса UnitTypeInfo, информация о типе юнита;Properties— коллекция экземпляров класса UnitProperty, коллекция свойств юнита;Links— коллекция экземпляров класса UnitLink, коллекция ссылок юнита;- Responsibles — коллекция экземпляров класса UnitResponsible, коллекция ответственных юнита.
Класс UnitLink
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.UnitLink должен содержать значения следующих свойств:
- UnitId — строка, идентификатор юнита, на который ссылаются;
- Info — экземпляр класса
UnitLinkInfo,информация о ссылке.
Класс UnitLinkInfo
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.UnitLinkInfo должен содержать значения следующих свойств:
ChildTypeName— строка, имя типа юнита, на который ссылаются;Name— строка, название ссылки.
Класс UnitProperty
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.UnitProperty должен содержать значения следующих свойств:
Value— строка, значение свойства, сериализованное в json (сериализация происходит в конструкторе класса);Info— экземпляр классаUnitPropertyInfo,информация о свойстве.
Класс UnitPropertyInfo
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.UnitPropertyInfo должен содержать значения следующих свойств:
Name— строка, имя свойства (уникальное для типа);ValueType— элемент перечисленияUnitPropertyValueType, тип значения свойства.
public enum UnitPropertyValueType
{
String = 0,
Boolean = 1,
Integer = 2,
Double = 3,
Time = 4,
Date = 5,
DateTime = 6,
Uri = 7,
File = 8
}
Класс UnitResponsible
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.UnitResponsible должен содержать значения следующих свойств:
Id— строка, идентификатор сотрудника в кадровом источнике;Function— строка, функция ответственного;DataSource— строка, имя кадрового источника в Idm.
Класс UnitTypeInfo
Экземпляр класса Avanpost.Iga.Connectors.Api.Units.UnitTypeInfo должен содержать значения следующих свойств:
Name— строка, имя типа юнита;PropertyInfos— коллекция экземпляровUnitPropertyInfo, информация о свойствах типа;LinkInfos— коллекция экземпляровUnitLinkInfo, информация о ссылках типа.