Ascon Pilot Server SDK

Содержание

Интерфейсы

Списки полей объектов

Интерфейсы

Для получения серверных интерфейсов используется объект HttpPilotClient, у которого предварительно необходимо вызвать метод Connect(bool isCheckClientVersion = true).

Интерфейс IAuthenticationApi

Интерфейс авторизации. Авторизоваться необходимо перед использованием интерфейсов IMessagesApi, IServerApi и IFileArchiveApi, IEventsApi.
Для получения IAuthenticationApi необходимо вызвать метод HttpPilotClient.GetAuthenticationApi()

IAuthenticationApi.Login

Метод авторизации пользователя.

void IAuthenticationApi.Login(string databaseName, string login, string protectedPassword, bool useWindowsAuth, int licenseType);

где:

IAuthenticationApi.GetLicenseInformation

Метод возвращает сериализованную в XML информацию о лицензии LicenseDataEx.

byte[] GetLicenseInformation()

IAuthenticationApi.ConsumeLicense

Захватывает одну лицензию на сервере.

 void ConsumeLicense(int licenseType);

где - licenseType - тип лицензии.

IAuthenticationApi.ReleaseLicense

Отпускает одну лицензию на сервере.

 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 )

для получения IServerApi необходимо вызвать метод HttpPilotClient.GetServerApi(IServerCallback callback)

IServerApi.OpenDatabase

Открывает базу данных, регистрирует методы обратного вызова и возвращает описание базы данных DDatabaseInfo.

DDatabaseInfo OpenDatabase();

IServerApi.GetDatabase

Метод возвращает описание базы данных.

DDatabaseInfo GetDatabase(string database)

где:

IServerApi.GetMetadata

Получить текущие метаданные.

DMetadata GetMetadata(long localVersion)

где:

IServerApi.GetSettings

Получение значений настроек. Если параметр loadAll равен true, будут получены настройки всех пользователей. Требуются права администратора.

DSettings GetSettings(long loadAll)

где:

IServerApi.ChangeSettings

Изменение значений настроек. Для изменения значений обобщенных настроек требуются права администратора.

void ChangeSettings(DSettingsChange change);

где:

IServerApi.GetObjects

Получить объекты.

List<DObject> GetObjects(Guid[] ids);

где:

IServerApi.GetChangesets

Получить изменения.

List<DChangeset> GetChangesets(long first, long last);

где:

IServerApi.Change

Применить изменения объектов.
Вовзращает изменения, слитые с изменениями от других клиентов.

DChangeset Change(DChangesetData changes);

где:

IServerApi.LoadPeople

Загрузить всех пользователей базы данных

List<DPerson> LoadPeople();

IServerApi.LoadPeopleByIds

Получить список пользователей по идентификаторам.

 List<DPerson> LoadPeopleByIds(int[] ids);

где:

IServerApi.LoadOrganisationUnits

Получить список организационных единиц

 List<DOrganisationUnit> LoadOrganisationUnits();

IServerApi.LoadOrganisationUnitsByIds

Получить список организационных единиц по идентификаторам.

List<DOrganisationUnit> LoadOrganisationUnitsByIds(int[] ids);

где:

IServerApi.AddSearch

Добавить условие поиска.

  void AddSearch(DSearchDefinition searchDefinition);

где:

IServerApi.RemoveSearch

Удалить условие поиска.

 void RemoveSearch(Guid searchDefinitionId);

где:

IServerApi.GeometrySearch

Запустить поиск по геометрии.

 void GeometrySearch(DGeometrySearchDefinition searchDefinition);

где:

IServerApi.ContentSearch

Запустить поиск по файлам.

void ContentSearch(DSearchDefinition searchDefinition);

где:

IServerApi.UpdatePerson

Обновить информацию о пользователе.

 void UpdatePerson(DPersonUpdateInfo updateInfo);

где:

IServerApi.UpdateOrganisationUnit

Обновить информацию о должности.

 void UpdateOrganisationUnit(DOrganisationUnitUpdateInfo updateInfo);

где:

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

 void Open(int maxNotificationCount, DateTime selectFromDate);

где:

IMessagesApi.SendMessage

Отправляет сообщение. Возвращает время создания сообщения на сервере

DateTime SendMessage(DMessage message);

где:

IMessagesApi.GetNotifiableChats

Возвращает первые N чатов, отсортированные по дате последнего сообщения

List<NotifiableDChatInfo> GetNotifiableChats(int personId, DateTime fromDateTimeServer, DateTime toDateTimeServer, int topN, bool skipObjectRelated = true);

где:

IMessagesApi.GetChats

Возвращает первые N чатов, отсортированные по дате последнего сообщения

 List<DChatInfo> GetChats(int personId, DateTime fromDateTimeServer, DateTime toDateTimeServer, int topN, bool skipObjectRelated = true);

где:

IMessagesApi.GetNotifiableChat

Получить информацию о чате

 NotifiableDChatInfo GetNotifiableChat(Guid chatId);

где:

Получить информацию о чате

DChatInfo GetChat(Guid chatId);

где:

Проверяет пользователя на онлайн

bool CheckIsOnline(int personId);

где:

IMessagesApi.GetPersonalChat

Получить информацию о персональном чате залогиненого пользователя c другим участником

DChatInfo GetPersonalChat(int personId);

где:

IMessagesApi.GetNotifiablePersonalChat

Получить информацию о персональном чате залогиненого пользователя c другим участником

DChatInfo GetNotifiablePersonalChat(int personId);

где:

IMessagesApi.GetChatCreationMessage

Получить сообщение о создании чата

DMessage GetChatCreationMessage(Guid chatId);

где:

IMessagesApi.GetChatMembers

Получить список участников чата, измененный после fromDateUtc

List<DChatMember> GetChatMembers(Guid chatId, DateTime fromDateUtc);

где:

IMessagesApi.GetMessages

Возвращает список сообщений в количестве не большем maxNumber
И общее число сообщений, удовлетворяющих условиям.

Tuple<List<DMessage>, int> GetMessages(Guid chatId, DateTime dateFromUtc, DateTime dateToUtc, int maxNumber, bool descendingOrder);

где:

IMessagesApi.GetLastUnreadMessage

Возвращает самое ранее непрочитанное сообщения в чате

DMessage GetLastUnreadMessage(Guid chatId);

где:

IMessagesApi.TypingMessage

Пользователь печатает сообщение в чат

void TypingMessage(Guid chatId);

где:

IMessagesApi.GetMessagesWithAttachments

Возвращает сообщения, содержащие вложения

  List<DMessage> GetMessagesWithAttachments(Guid chatId, DateTime fromServerDateUtc, DateTime toServerDateUtc, int pageSize);

где:

IMessagesApi.GetRelatedChats

Возвращает чаты связанные с объектом

 List<NotifiableDChatInfo> GetRelatedChats(int personId, Guid objectId, ChatRelationType type);

где:

IMessagesApi.GetThirdPartyMessage

возвращает сообщение, созданное в third party приложении

 DMessage GetThirdPartyMessage(string thirdPartyInfo);

где:

IMessagesApi.GetMessage

возвращает сообщение по его идентификатору

DMessage GetMessage(Guid messageId);

где:

Интерфейс IEventsApi

Интерфейс подписки на события и изменения.

IEventsApi.SubscribeChanges

Метод подписки на изменения по переданному набору правил.

void IEventsApi.SubscribeChanges(IEnumerable<DRule> rules);

где:

IEventsApi.GetMissedChanges

Метод получения пропущенных событий, сгруппированных по правилам, которым они удовлетворяют

List<Tuple<Guid, DChangesetData[]>> IEventsApi.GetMissedChanges();

IEventsApi.AcceptChange

Метод подтверждения получения изменения от клиента

void AcceptChange(Guid changeId, Guid ruleId);

где:

Интерфейс IServerCallback

Интерфейс обратного вызова ServerApi.

IServerCallback.NotifyChangeset

Метод обратного вызова изменения объектов

void IServerCallback.NotifyChangeset(DChangeset changeset);

где:

Метод обратного вызова изменения организационных единиц

void IServerCallback.NotifyOrganisationUnitChangeset(OrganisationUnitChangeset changeset);

где:

IServerCallback.NotifyPersonChangeset

Метод обратного вызова изменения пользователей

void IServerCallback.NotifyPersonChangeset(PersonChangeset changeset);

где:

Метод обратного вызова изменения метаданных

void IServerCallback.NotifyDMetadataChangeset(DMetadataChangeset changeset);

где:

IServerCallback.NotifySearchResult

Метод обратного вызова поискового запроса

void IServerCallback.NotifySearchResult(DSearchResult searchResult);

где:

IServerCallback.NotifyGeometrySearchResult

Метод обратного вызова поискового запроса по геометрии

void IServerCallback.NotifyGeometrySearchResult(DGeometrySearchResult searchResult);

где:

IServerCallback.NotifyDNotificationChangeset

Метод обратного вызова нотификации об изменениях

void IServerCallback.NotifyDNotificationChangeset(DNotificationChangeset changeset);

где:

IServerCallback.NotifyCommandResult

Метод обратного вызова результатов выполнения пользовательской команды

void IServerCallback.NotifyCommandResult(Guid requestId, byte[] data, ServerCommandResult result);

где:

Интерфейс IServerCommandApi

Интерфейс пользовательских команд

IServerCommandApi.RegisterCommandHandler

Регистрация клиента как обработчика команд с указанным именем

void RegisterCommandHandler(string commandName);

где:

IServerCommandApi.PublishCommandResult

Публикация результата выполнения команды обработчиком

void PublishCommandResult(Guid requestId, byte[] data, ServerCommandResult result);

где:

Интерфейс IMessageCallback

Интерфейс обратного вызова API сообщений

IMessageCallback.NotifyMessageCreated

Метод обратного вызова добавляения сообщения

void NotifyMessageCreated(NotifiableDMessage message);

где:

IMessageCallback.NotifyTypingMessage

функция обратного вызова “пользователь Х печатает сообщение

void NotifyTypingMessage(Guid chatId, int personId);

где:

IMessageCallback.CreateNotification

функция обратного вызова создания уведомления

void CreateNotification(DNotification notification);

где:

IMessageCallback.NotifyOnline

уведомление о выходе пользователя онлайн

 void NotifyOnline(int personId);

где:

IMessageCallback.NotifyOffline

уведомление об отключении пользователя

void NotifyOffline(int personId);

где:

IMessageCallback.UpdateLastMessageDate

уведомление об дате последнего полученного сообщения

void UpdateLastMessageDate(DateTime maxDate);

где:

Интерфейс IQueryBuilder

Интерфейс формирования поисковых запросов

Построение запросов осуществляется с помощью конструкторов запросов IQueryBuilder. Основными элементами языка запросов являются так называемые “условия поиска“. Чтобы осуществить поиск необходимо:

Подробное описание формирования “условий поиска” см. в разделе Поиск документации Client Pilot SDK.

QueryBuilderFactory.CreateEmptyQueryBuilder()

Метод получения простого конструктора запросов. Это универсальный конструктор запросов без предварительных условий. Этот конструктор можно использовать для поиска любых объектов в базе, включая объекты системных типов.

QueryBuilderFactory.CreateFilesQueryBuilder()

Метод получения предварительно сконфигурированного конструктора запросов для пользовательских объектов. В результат поисковой выдачи не попадают oбъекты системных и сервисных типов.

QueryBuilderFactory.CreateObjectQueryBuilder()

Метод получения предварительно сконфигурированного конструктора запросов для объектов в состоянии ObjectState.Alive или ObjectState.Frozen

Списки полей объектов

Список полей LicenseDataEx
IsExpired

Содержит признак окончания срока лицензии

bool IsExpired { get; }
IsCheated

Содержит признак того, что лицензия невалидна

bool IsCheated { get; }
LicenseData

Содержит данные лицензии

LicenseData? LicenseData { get; }

Список полей LicenseData
Id

Идентификатор лицензии

Guid Id { get; }
OrganizationInfo

Информация об организации, на которую выдана лицензия

OrganizationInfo OrganizationInfo { get; }
NonCommercialUsage

Содержит признак того, что лицензия выдана для некоммерческого использования

bool? NonCommercialUsage { get; }
License

Лицензия

License License { get; }
Request

Запрос лицензии

Request Request { get; }
Product

Наименование продукта

string Product { get; }

Список полей OrganizationInfo
Name

Наименование организации

string Name { get; }
Inn

ИНН

string Inn { get; }
Address

Адрес

string Address { get; }
ContactInfo

Контактная информация

string ContactInfo { get; }

Список полей License
Products

Список приложений

Product[] Products { get; }
ValidTo

Для комерческой и некомерческой дата окончания получения обновлений.
Для опытной эксплуатации дата окончания действия продукта.

DateTime ValidTo{ get; }
IsTrial

Признак лицензии для опытной эксплуатации

bool IsTrial{ get; }

Список полей Request
Products

Список запрашиваемых приложений

Product[] Products { get; }
RequestedMonths

Число месяцев, на которое запрашивается лицензия

int RequestedMonths { get; }
IsTrial

Признак лицензии для опытной эксплуатации

bool IsTrial { get; }

Список полей Product
LicenseCode

Код лицензии

int LicenseCode { get; }
ProductName

Наименование приложения

string ProductName { get; }
Workplaces

Количество экземпляров приложения разрешенных лицензией

int Workplaces { get; }

Список полей DDatabaseInfo
MetadataVersion

Номер версии метаданных

long MetadataVersion { get; }
LastChangeset

Последний changeset

DChangeset LastChangeset { get; }
Person

Текущий залогиненый пользователь

 DPerson Person { get; }
DatabaseId

Идентификатор базы данных

 Guid DatabaseId { get; }
DatabaseVersion

Версия базы данных

long DatabaseVersion { get; }
People

Версии пользователей

Dictionary<int, ushort> People { get; }
OrganisationUnits

Версии элементов организационной структуры

Dictionary<int, ushort> OrganisationUnits { get; }

Список полей DChangeset
Id

Инкрементальный идентификатор изменения

long Id { get; }
Changed

Список идентификаторов измененных объектов

HashSet<Guid> Changed{ get; }
Identity

Идентификатор изменения

HashSet<Guid> Changed{ get; }

Список полей DPerson
Id

Поле Id содержит уникальный идентификатор пользователя.

int Id { get; }
Login

Имя пользователя (login).

string Login { get; }
DisplayName

Отображаемое имя пользователя. Например ФИО.

string DisplayName { get; }
Comment

Комментарий к статусу пользователя.

string Comment { get; }
Sid

уникальный идентификатор доменной учетной записи пользователя.

string Sid { get; }
IsDeleted

Показывает удален пользователь или нет. В системе Pilot информация пользователях не удаляется из базы данных. Пользователи помечаются как удаленные.

bool IsDeleted { get; }
IsAdmin

Показывает является ли текущий пользователь администратором.

bool IsAdmin { get; }
UidDn

Идентификатор пользователя из LDAP.

string UidDn { get; }
Email

Email пользователя.

string Email { get; }
Version

Порядковый номер изменения пользователя.

ushort Version { get; }
IsInactive

Статус активности пользователя.

bool IsInactive { get; }
Positions

Список идентификаторов должностей, которые в данный момент занимает пользователь.

List<int> Positions { get; }
BossOf

Список идентификаторов организационных элементов, на которых пользователь в данный момент является руководителем.

List<int> BossOf { get; }
AllOrgUnits

Список идентификаторов организационных элементов, на которые назначен пользователь.

HashSet<int> AllOrgUnits { get; }

Список полей DMetadata
Version

Номер версии метаданных

long Version { get; set; }
Types

Список типов

 List<MType> Types { get; }
UserStates

Список состояйние пользователей

 List<MUserState> UserStates { get; }

Список полей DSettings
PersonalSettings

Персональные настройки

Dictionary<int, DSettingsCollection> PersonalSettings { get; private set; }
CommonSettings

Общие настройки

Dictionary<int, DSettingsCollection> CommonSettings { get; private set; }

Список полей DSettingsChange
Identity

Идентификатор настройки

Guid Identity { get; set; }
OrgUnitId

Идентификатор организационной единицы, на которую распространяется настройка. Если значение -1, значит распространяется на конкретного пользователя

int OrgUnitId { get; set; }
PersonId

Идентификатор пользователя, на которого распространяется настройка. Если значение -1, значит распространяется на организационную единицу

int PersonId { get; set; }
Key

Наименование настройки

string Key { get; set; }
Value

значение настройки

string Value { get; set; }

Список полей DObject
Id

Идентификатор объекта

Guid Id { get; set; }
TypeId

Тип объекта

int TypeId { get; set; }
ParentId

Идентификатор родительского объекта

Guid ParentId { get; set; }
LastChange

Идентификатор последнего изменения объекта

long LastChange { get; set; }
LastChange

Идентификатор последнего изменения объекта

long LastChange { get; set; }

Список полей DRule
Id

Идентификатор правила

Guid Id { get; set; }
ChangeType

Тип изменения

ChangeType ChangeType { get; set; }
FileExtension

Расширение файла

string FileExtension { get; set; }

Список типов изменений
 Create = 1
 Update = 2
 Delete = 3

Результат выполениния пользовательской команды
 Success,
 Error

Список полей DMessage
Id

Идентификатор сообщения

Guid Id { get; set; }
Data

Сериализованные протобаф данные сообщения

public byte[] Data { get; set; }
CreatorId

Создатель сообщения

public int CreatorId { get; set; }
ServerDate

Серверная дата создания сообщения в UTC

public DateTime? ServerDate { get; set; }
LocalDate

Клиентская дата создания сообщения в UTC

public DateTime LocalDate { get; set; }
ChatId

Идентификатор чата

 public Guid ChatId { get; set; }
RelatedMessageId

Идентифкатор сообщения, к которому привязано данное

public Guid? RelatedMessageId { get; set; }
Type

Тип сообщения

public MessageType Type { get; set; }
RelatedMessages

Список сообщения, связанных с данным

public List<DMessage> RelatedMessages { get; set; }

Список полей DChatInfo
Chat

Чат

public DChat Chat { get; set; }
LastMessage

Псоледнее сообщение в чате

public DMessage LastMessage { get; set; }
UnreadMessagesNumber

Число не проитанных пользователем сообщений

public int UnreadMessagesNumber { get; set; }
Relations

Связи

public List<DChatRelation> Relations { get; set; }

Список полей NotifiableDChatInfo
IsNotifiable

Признак подписки пользователя на уведомления по чату

public bool IsNotifiable { get; set; }
DChatInfo

Чат

public DChatInfo DChatInfo { get; set; }

Список полей DChatMember
ChatId

Идентификатор чата

public Guid ChatId { get; set; }
PersonId

Идентификатор участника

public int PersonId { get; set; }
IsAdmin

Признак администратора

public bool IsAdmin { get; set; }
IsDeleted

Удаленный участник

public bool IsDeleted { get; set; }
IsNotifiable

Участник подписан на уведомления

public bool IsNotifiable { get; set; }
DateUpdatedUtc

Дата изменения участника в UTC

public DateTime DateUpdatedUtc { get; set; }
IsViewerOnly

Признак того, что участник просматривает чат по объекту, но не участвует в нем

public bool IsViewerOnly { get; set; }

Список полей DChatRelation
ObjectId

Идентификатор объекта, с которым установлена связь

public Guid ObjectId { get; set; }
Type

Тип связи

public ChatRelationType Type { get; set; }
MessageId

Сообщение, создавшее связь

public Guid? MessageId { get; set; }
IsDeleted

Признак удаленной связи

public bool IsDeleted { get; set; }

Список полей DSearchDefinition
Id

Идентификатор поискового запроса

public Guid Id { get; set; }
Request

Запрос поиска

public DSearchRequest Request { get; }

Список полей DSearchRequest
SearchString

“Условие поиска” в виде строки

public string SearchString { get; set; }
SearchKind

Тип поиска

public SearchKind SearchKind { get; set; }

Используйте SearchKind.Custom для формирования запросов поиска

MaxResults

Ограничение количества результатов поиска

public int MaxResults { get; set; }
SortDefinitions

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

public List<DSortDefinition> SortDefinitions { get; }