Для получения серверных интерфейсов используется объект HttpPilotClient, у которого предварительно необходимо вызвать метод Connect(bool isCheckClientVersion = true).
Интерфейс авторизации. Авторизоваться необходимо перед использованием интерфейсов IMessagesApi, IServerApi и IFileArchiveApi, IEventsApi.
Для получения IAuthenticationApi необходимо вызвать метод HttpPilotClient.GetAuthenticationApi()
Метод авторизации пользователя.
void IAuthenticationApi.Login(string databaseName, string login, string protectedPassword, bool useWindowsAuth, int licenseType);
где:
databaseName - имя базы данных.login - логин пользователяprotectedPassword - пароль, зашифрованный с помощью Advanced Encryption StandarduseWindowsAut - признак использования windows авторизацииlicenseType - тип лицензииМетод возвращает сериализованную в XML информацию о лицензии LicenseDataEx.
byte[] GetLicenseInformation()
Захватывает одну лицензию на сервере.
void ConsumeLicense(int licenseType);
где - licenseType - тип лицензии.
Отпускает одну лицензию на сервере.
void ReleaseLicense(int licenseType);
где - licenseType - тип лицензии.
public const int PILOT_ICE = 100;
public const int PILOT_ECM = 101;
public const int PILOT_STORAGE = 102;
public const int PILOT_ENTERPRISE = 103;
public const int RENGA_ARCHITECTURE = 104;
public const int RENGA_STRUCTURE = 105;
public const int _8D = 106;
public const int _8D_PROF = 107;
public const int RENGA_MEP = 108;
для получения IServerApi необходимо вызвать метод HttpPilotClient.GetServerApi(IServerCallback callback)
Открывает базу данных, регистрирует методы обратного вызова и возвращает описание базы данных DDatabaseInfo.
DDatabaseInfo OpenDatabase();
Метод возвращает описание базы данных.
DDatabaseInfo GetDatabase(string database)
где:
database - имя базы данных.Получить текущие метаданные.
DMetadata GetMetadata(long localVersion)
где:
localVersion - текущая версия метаданных на клиенте.Получение значений настроек. Если параметр loadAll равен true, будут получены настройки всех пользователей. Требуются права администратора.
DSettings GetSettings(long loadAll)
где:
loadAll - признак необходимости получения настроек всех пользователей.Изменение значений настроек. Для изменения значений обобщенных настроек требуются права администратора.
void ChangeSettings(DSettingsChange change);
где:
change - изменение.Получить объекты.
List<DObject> GetObjects(Guid[] ids);
где:
ids - список идентификаторов объектов.Получить изменения.
List<DChangeset> GetChangesets(long first, long last);
где:
first - начало возвращаемого промежутка идентификаторов изменений.second- окончание возвращаемого промежутка идентификаторов изменений.Применить изменения объектов.
Вовзращает изменения, слитые с изменениями от других клиентов.
DChangeset Change(DChangesetData changes);
где:
changes - измененияЗагрузить всех пользователей базы данных
List<DPerson> LoadPeople();
Получить список пользователей по идентификаторам.
List<DPerson> LoadPeopleByIds(int[] ids);
где:
ids - идентификаторы пользователейПолучить список организационных единиц
List<DOrganisationUnit> LoadOrganisationUnits();
Получить список организационных единиц по идентификаторам.
List<DOrganisationUnit> LoadOrganisationUnitsByIds(int[] ids);
где:
ids - идентификаторы организационных единицДобавить условие поиска.
void AddSearch(DSearchDefinition searchDefinition);
где:
searchDefinition - условия поискаУдалить условие поиска.
void RemoveSearch(Guid searchDefinitionId);
где:
searchDefinitionId - идентификатор условий поискаЗапустить поиск по геометрии.
void GeometrySearch(DGeometrySearchDefinition searchDefinition);
где:
searchDefinition - условия поискаЗапустить поиск по файлам.
void ContentSearch(DSearchDefinition searchDefinition);
где:
searchDefinition - условия поискаОбновить информацию о пользователе.
void UpdatePerson(DPersonUpdateInfo updateInfo);
где:
updateInfo - измененияОбновить информацию о должности.
void UpdateOrganisationUnit(DOrganisationUnitUpdateInfo updateInfo);
где:
updateInfo - изменения
Интерфейс для работы с сообщениями и чатами.
Метод, возвращающий через методы обратного вызова уведомления для сообщений, которые были отправлены, пока залогиненый пользователь был оффлайн.
void Open(int maxNotificationCount, DateTime selectFromDate);
где:
maxNotificationCount - максимальное число уведомлений. Если это число превышено, будет отправлено агрегирующее уведомлениеselectFromDate - дата создания сообщения, начиная с которой сообщения будут отправлены как нотификация Отправляет сообщение. Возвращает время создания сообщения на сервере
DateTime SendMessage(DMessage message);
где:
message - сообщениеВозвращает первые N чатов, отсортированные по дате последнего сообщения
List<NotifiableDChatInfo> GetNotifiableChats(int personId, DateTime fromDateTimeServer, DateTime toDateTimeServer, int topN, bool skipObjectRelated = true);
где:
personId - идентификатор пользователя. Должен совпадать с залогиненым пользователемfromDateTimeServer - начало временного промежуткаtoDateTimeServer - окончание временного промежуткаtopN - количество чатовskipObjectRelated - указывает на необходимость пропускать чаты типа ObjectRelatedВозвращает первые N чатов, отсортированные по дате последнего сообщения
List<DChatInfo> GetChats(int personId, DateTime fromDateTimeServer, DateTime toDateTimeServer, int topN, bool skipObjectRelated = true);
где:
personId - идентификатор пользователя. Должен совпадать с залогиненым пользователемfromDateTimeServer - начало временного промежуткаtoDateTimeServer - окончание временного промежуткаtopN - количество чатовskipObjectRelated - указывает на необходимость пропускать чаты типа ObjectRelatedПолучить информацию о чате
NotifiableDChatInfo GetNotifiableChat(Guid chatId);
где:
Получить информацию о чате
DChatInfo GetChat(Guid chatId);
где:
Проверяет пользователя на онлайн
bool CheckIsOnline(int personId);
где:
personId - идентификатор пользователяПолучить информацию о персональном чате залогиненого пользователя c другим участником
DChatInfo GetPersonalChat(int personId);
где:
personId - идентификатор пользователяПолучить информацию о персональном чате залогиненого пользователя c другим участником
DChatInfo GetNotifiablePersonalChat(int personId);
где:
personId - идентификатор пользователяПолучить сообщение о создании чата
DMessage GetChatCreationMessage(Guid chatId);
где:
chatId - идентификатор чата Получить список участников чата, измененный после fromDateUtc
List<DChatMember> GetChatMembers(Guid chatId, DateTime fromDateUtc);
где:
chatId - идентификатор чатаfromDateUtc - да, после которой должны быть добавлены или отредактированы возвращаемые участникиВозвращает список сообщений в количестве не большем maxNumber
И общее число сообщений, удовлетворяющих условиям.
Tuple<List<DMessage>, int> GetMessages(Guid chatId, DateTime dateFromUtc, DateTime dateToUtc, int maxNumber, bool descendingOrder);
где:
chatId - идентификатор чатаdateFromUtc - дата, после которой должны быть соданы возвращаемые сообщенияdateToUtc - дата, до которой должны быть соданы возвращаемые сообщенияmaxNumber - максимальное число возвращаемых сообщенийdescendingOrder - порядок сортировки сообщений. True -- в порядке убывания серверной даты. False -- в порядке возрастанияВозвращает самое ранее непрочитанное сообщения в чате
DMessage GetLastUnreadMessage(Guid chatId);
где:
chatId - идентификатор чатаПользователь печатает сообщение в чат
void TypingMessage(Guid chatId);
где:
chatId - идентификатор чатаВозвращает сообщения, содержащие вложения
List<DMessage> GetMessagesWithAttachments(Guid chatId, DateTime fromServerDateUtc, DateTime toServerDateUtc, int pageSize);
где:
chatId - идентификатор чатаfromServerDateUtc - дата, после которой должны быть соданы возвращаемые сообщенияtoServerDateUtc - дата, до которой должны быть соданы возвращаемые сообщенияpageSize - максимальное количество возвращаемых сообщенийВозвращает чаты связанные с объектом
List<NotifiableDChatInfo> GetRelatedChats(int personId, Guid objectId, ChatRelationType type);
где:
personId - идентификатор пользователяobjectId - идентификатор объектаtype - тип связивозвращает сообщение, созданное в third party приложении
DMessage GetThirdPartyMessage(string thirdPartyInfo);
где:
thirdPartyInfo - дополнительная информация, которую можно заполнить при создании сообщениявозвращает сообщение по его идентификатору
DMessage GetMessage(Guid messageId);
где:
messageId - идентификатор сообщенияИнтерфейс подписки на события и изменения.
Метод подписки на изменения по переданному набору правил.
void IEventsApi.SubscribeChanges(IEnumerable<DRule> rules);
где:
rules - список правил.Метод получения пропущенных событий, сгруппированных по правилам, которым они удовлетворяют
List<Tuple<Guid, DChangesetData[]>> IEventsApi.GetMissedChanges();
Метод подтверждения получения изменения от клиента
void AcceptChange(Guid changeId, Guid ruleId);
где:
changeId - идентификатор изменения.changeId - идентификатор правила, по которому изменение получено.Интерфейс обратного вызова ServerApi.
Метод обратного вызова изменения объектов
void IServerCallback.NotifyChangeset(DChangeset changeset);
где:
Метод обратного вызова изменения организационных единиц
void IServerCallback.NotifyOrganisationUnitChangeset(OrganisationUnitChangeset changeset);
где:
changeset - изменения над орг. единицами.Метод обратного вызова изменения пользователей
void IServerCallback.NotifyPersonChangeset(PersonChangeset changeset);
где:
Метод обратного вызова изменения метаданных
void IServerCallback.NotifyDMetadataChangeset(DMetadataChangeset changeset);
где:
changeset - изменения метаданных.Метод обратного вызова поискового запроса
void IServerCallback.NotifySearchResult(DSearchResult searchResult);
где:
searchResult - результаты поиска. Метод обратного вызова поискового запроса по геометрии
void IServerCallback.NotifyGeometrySearchResult(DGeometrySearchResult searchResult);
где:
searchResult - результаты поиска.Метод обратного вызова нотификации об изменениях
void IServerCallback.NotifyDNotificationChangeset(DNotificationChangeset changeset);
где:
changeset - Changeset со списоком сообщений. Метод обратного вызова результатов выполнения пользовательской команды
void IServerCallback.NotifyCommandResult(Guid requestId, byte[] data, ServerCommandResult result);
где:
requestId - id запроса. data - результат выполнения команды. result - тип результата выполнения команды. Интерфейс пользовательских команд
Регистрация клиента как обработчика команд с указанным именем
void RegisterCommandHandler(string commandName);
где:
commandName - имя команды.Публикация результата выполнения команды обработчиком
void PublishCommandResult(Guid requestId, byte[] data, ServerCommandResult result);
где:
requestId - идентификатор запроса.data - результат выполнения команды.result - тип результата выполнения команды.Интерфейс обратного вызова API сообщений
Метод обратного вызова добавляения сообщения
void NotifyMessageCreated(NotifiableDMessage message);
где:
message - сообщениефункция обратного вызова “пользователь Х печатает сообщение
void NotifyTypingMessage(Guid chatId, int personId);
где:
chatId - идентификатор чатаpersonId - идентификатор пользователя, печатающего сообщениефункция обратного вызова создания уведомления
void CreateNotification(DNotification notification);
где:
notification - уведомлениеуведомление о выходе пользователя онлайн
void NotifyOnline(int personId);
где:
personId - идентификатор пользователяуведомление об отключении пользователя
void NotifyOffline(int personId);
где:
personId - идентификатор пользователяуведомление об дате последнего полученного сообщения
void UpdateLastMessageDate(DateTime maxDate);
где:
maxDate - дата создания сообщенияИнтерфейс формирования поисковых запросов
Построение запросов осуществляется с помощью конструкторов запросов IQueryBuilder. Основными элементами языка запросов являются так называемые “условия поиска“. Чтобы осуществить поиск необходимо:
QueryBuilderFactory: CreateEmptyQueryBuilder, CreateFilesQueryBuilder или CreateObjectQueryBuilder.IServerApi.AddSearch() передав в качестве параметра экземпляр класса DSearchDefinition.Подробное описание формирования “условий поиска” см. в разделе Поиск документации Client Pilot SDK.
Метод получения простого конструктора запросов. Это универсальный конструктор запросов без предварительных условий. Этот конструктор можно использовать для поиска любых объектов в базе, включая объекты системных типов.
Метод получения предварительно сконфигурированного конструктора запросов для пользовательских объектов. В результат поисковой выдачи не попадают oбъекты системных и сервисных типов.
Метод получения предварительно сконфигурированного конструктора запросов для объектов в состоянии ObjectState.Alive или ObjectState.Frozen
Содержит признак окончания срока лицензии
bool IsExpired { get; }
Содержит признак того, что лицензия невалидна
bool IsCheated { get; }
Содержит данные лицензии
LicenseData? LicenseData { get; }
Идентификатор лицензии
Guid Id { get; }
Информация об организации, на которую выдана лицензия
OrganizationInfo OrganizationInfo { get; }
Содержит признак того, что лицензия выдана для некоммерческого использования
bool? NonCommercialUsage { get; }
Лицензия
License License { get; }
Запрос лицензии
Request Request { get; }
Наименование продукта
string Product { get; }
Наименование организации
string Name { get; }
ИНН
string Inn { get; }
Адрес
string Address { get; }
Контактная информация
string ContactInfo { get; }
Список приложений
Product[] Products { get; }
Для комерческой и некомерческой дата окончания получения обновлений.
Для опытной эксплуатации дата окончания действия продукта.
DateTime ValidTo{ get; }
Признак лицензии для опытной эксплуатации
bool IsTrial{ get; }
Список запрашиваемых приложений
Product[] Products { get; }
Число месяцев, на которое запрашивается лицензия
int RequestedMonths { get; }
Признак лицензии для опытной эксплуатации
bool IsTrial { get; }
Код лицензии
int LicenseCode { get; }
Наименование приложения
string ProductName { get; }
Количество экземпляров приложения разрешенных лицензией
int Workplaces { get; }
Номер версии метаданных
long MetadataVersion { get; }
Последний changeset
DChangeset LastChangeset { get; }
Текущий залогиненый пользователь
DPerson Person { get; }
Идентификатор базы данных
Guid DatabaseId { get; }
Версия базы данных
long DatabaseVersion { get; }
Версии пользователей
Dictionary<int, ushort> People { get; }
Версии элементов организационной структуры
Dictionary<int, ushort> OrganisationUnits { get; }
Инкрементальный идентификатор изменения
long Id { get; }
Список идентификаторов измененных объектов
HashSet<Guid> Changed{ get; }
Идентификатор изменения
HashSet<Guid> Changed{ get; }
Поле Id содержит уникальный идентификатор пользователя.
int Id { get; }
Имя пользователя (login).
string Login { get; }
Отображаемое имя пользователя. Например ФИО.
string DisplayName { get; }
Комментарий к статусу пользователя.
string Comment { get; }
уникальный идентификатор доменной учетной записи пользователя.
string Sid { get; }
Показывает удален пользователь или нет. В системе Pilot информация пользователях не удаляется из базы данных. Пользователи помечаются как удаленные.
bool IsDeleted { get; }
Показывает является ли текущий пользователь администратором.
bool IsAdmin { get; }
Идентификатор пользователя из LDAP.
string UidDn { get; }
Email пользователя.
string Email { get; }
Порядковый номер изменения пользователя.
ushort Version { get; }
Статус активности пользователя.
bool IsInactive { get; }
Список идентификаторов должностей, которые в данный момент занимает пользователь.
List<int> Positions { get; }
Список идентификаторов организационных элементов, на которых пользователь в данный момент является руководителем.
List<int> BossOf { get; }
Список идентификаторов организационных элементов, на которые назначен пользователь.
HashSet<int> AllOrgUnits { get; }
Номер версии метаданных
long Version { get; set; }
Список типов
List<MType> Types { get; }
Список состояйние пользователей
List<MUserState> UserStates { get; }
Персональные настройки
Dictionary<int, DSettingsCollection> PersonalSettings { get; private set; }
Общие настройки
Dictionary<int, DSettingsCollection> CommonSettings { get; private set; }
Идентификатор настройки
Guid Identity { get; set; }
Идентификатор организационной единицы, на которую распространяется настройка. Если значение -1, значит распространяется на конкретного пользователя
int OrgUnitId { get; set; }
Идентификатор пользователя, на которого распространяется настройка. Если значение -1, значит распространяется на организационную единицу
int PersonId { get; set; }
Наименование настройки
string Key { get; set; }
значение настройки
string Value { get; set; }
Идентификатор объекта
Guid Id { get; set; }
Тип объекта
int TypeId { get; set; }
Идентификатор родительского объекта
Guid ParentId { get; set; }
Идентификатор последнего изменения объекта
long LastChange { get; set; }
Идентификатор последнего изменения объекта
long LastChange { get; set; }
Идентификатор правила
Guid Id { get; set; }
Тип изменения
ChangeType ChangeType { get; set; }
Расширение файла
string FileExtension { get; set; }
Create = 1
Update = 2
Delete = 3
Success,
Error
Идентификатор сообщения
Guid Id { get; set; }
Сериализованные протобаф данные сообщения
public byte[] Data { get; set; }
Создатель сообщения
public int CreatorId { get; set; }
Серверная дата создания сообщения в UTC
public DateTime? ServerDate { get; set; }
Клиентская дата создания сообщения в UTC
public DateTime LocalDate { get; set; }
Идентификатор чата
public Guid ChatId { get; set; }
Идентифкатор сообщения, к которому привязано данное
public Guid? RelatedMessageId { get; set; }
Тип сообщения
public MessageType Type { get; set; }
Список сообщения, связанных с данным
public List<DMessage> RelatedMessages { get; set; }
Чат
public DChat Chat { get; set; }
Псоледнее сообщение в чате
public DMessage LastMessage { get; set; }
Число не проитанных пользователем сообщений
public int UnreadMessagesNumber { get; set; }
Связи
public List<DChatRelation> Relations { get; set; }
Признак подписки пользователя на уведомления по чату
public bool IsNotifiable { get; set; }
Чат
public DChatInfo DChatInfo { get; set; }
Идентификатор чата
public Guid ChatId { get; set; }
Идентификатор участника
public int PersonId { get; set; }
Признак администратора
public bool IsAdmin { get; set; }
Удаленный участник
public bool IsDeleted { get; set; }
Участник подписан на уведомления
public bool IsNotifiable { get; set; }
Дата изменения участника в UTC
public DateTime DateUpdatedUtc { get; set; }
Признак того, что участник просматривает чат по объекту, но не участвует в нем
public bool IsViewerOnly { get; set; }
Идентификатор объекта, с которым установлена связь
public Guid ObjectId { get; set; }
Тип связи
public ChatRelationType Type { get; set; }
Сообщение, создавшее связь
public Guid? MessageId { get; set; }
Признак удаленной связи
public bool IsDeleted { get; set; }
Идентификатор поискового запроса
public Guid Id { get; set; }
Запрос поиска
public DSearchRequest Request { get; }
“Условие поиска” в виде строки
public string SearchString { get; set; }
Тип поиска
public SearchKind SearchKind { get; set; }
Используйте SearchKind.Custom для формирования запросов поиска
Ограничение количества результатов поиска
public int MaxResults { get; set; }
Позволяет установить поля и направления сортировки результатов поиска
public List<DSortDefinition> SortDefinitions { get; }