Справочник обработчиков Interactor
Аннотация @Bind* связывает метод интерфейса с одним InteractionHandler. Доступность аннотации зависит от корневого интерфейса; актуальная группировка приведена на странице «Поддерживаемые сущности».
Общие соглашения
-
Чтение — метод без аргументов с не-
voidрезультатом. -
Одиночный результат обычно возвращает
null, если значения нет. Требование обязательного значения задаётся@NotNull. -
Для коллекционных данных используются
List<T>иSet<T>. -
Изменение коллекции различается по началу имени:
setзаменяет,add/plusдобавляет,remove/deleteудаляет,clearочищает. -
Если специальный префикс не требуется, обработчик трактует изменяющий метод как добавление или замену согласно своей документации.
-
Изменяющие методы кешируемого интерфейса следует помечать
@DropCache. -
Неподдерживаемая сигнатура выявляется во время вызова и приводит к исключению.
Типы ниже записаны в Java-форме для компактности; эквивалентные Kotlin-типы поддерживаются через reflection.
Базовые обработчики
@BindConfig
Читает конфигурацию сущности. Параметры аннотации: key = "", defaultValue = "", useGlobalConfig = false. Ключ можно передать аргументом с @BindConfig.Key, а значение по умолчанию — с @BindConfig.Default.
T getValue();
T getValue(@BindConfig.Key String key);
T getValue(@BindConfig.Default T defaultValue);
T getValue(@BindConfig.Key String key, @BindConfig.Default T defaultValue);
Configurable getConfig();
Фактически поддерживаются String, boolean/Boolean, int/Integer, BigDecimal, List<String>, List<Integer>, Set<String>, Set<Integer> и реализации Configurable. Строка проходит через TextTemplateProcessor. useGlobalConfig = true читает глобальный Setup, иначе — конфигурацию типа процесса или пользователя.
Ограничение для GroupInteractor описано на странице сущностей.
|
Параметры сущностей
Во всех аннотациях этого раздела value — ID параметра.
@BindTextParam
Читает и изменяет параметры text и blob.
String getValue();
void setValue(String value);
void clearValue();
Значение и аргумент могут быть null.
@BindTextParamAsNumber
Работает с числом, сохранённым в text/blob.
int getValue(); Integer getValue();
long getValue(); Long getValue();
BigDecimal getValue();
void setValue(int value); void setValue(Integer value);
void setValue(long value); void setValue(Long value);
void setValue(BigDecimal value);
void clearValue();
Для отсутствующего или некорректного текста примитивный результат равен 0, nullable-объект — null.
@BindTextParamAsCollection
Хранит коллекцию в text/blob. Параметр delimiters по умолчанию равен [","].
List<String> getValues(); Set<String> getValues();
List<Integer> getValues(); Set<Integer> getValues();
void setValues(Collection<String> values);
void setValues(Collection<Integer> values);
void clearValues();
Пустое значение читается как пустая коллекция.
@BindTextParamAsJson
Сериализует произвольный тип в JSON текстового параметра с помощью Jackson.
T getValue();
T getValue(@BindTextParamAsJson.Default T defaultValue);
void setValue(T value);
void clearValue();
Без значения и без аргумента по умолчанию возвращается null.
@BindBooleanParam
Работает с параметром boolean.
boolean getValue();
void setValue(boolean value);
void clearValue();
clear эквивалентен записи false.
@BindNumberParam
Работает с параметром number.
BigDecimal getValue(); Integer getValue(); Long getValue();
Double getValue(); Float getValue(); Short getValue();
Byte getValue();
void setValue(BigDecimal value); void setValue(Integer value);
void setValue(Long value); void setValue(Double value);
void setValue(Float value); void setValue(Short value);
void setValue(Byte value);
void clearValue();
Результаты и аргументы объектных типов могут быть null.
@BindDateParam
Работает с параметром date. Параметр format по умолчанию равен yyyy-MM-dd и используется только для String.
LocalDate getValue(); Date getValue(); String getValue();
void setValue(LocalDate value);
void setValue(Date value);
void setValue(String value);
void clearValue();
@BindDateTimeParam
Работает с параметром datetime. Параметр format по умолчанию равен yyyy-MM-dd HH:mm:ss и используется только для String.
LocalDateTime getValue(); Date getValue(); String getValue();
void setValue(LocalDateTime value);
void setValue(Date value);
void setValue(String value);
void clearValue();
@BindListParam
Работает с параметром list.
Integer getValue(); IdTitle getValue(); IdTitleComment getValue();
List<Integer> getValues(); Set<Integer> getValues();
List<IdTitle> getValues(); Set<IdTitle> getValues();
List<IdTitleComment> getValues(); Set<IdTitleComment> getValues();
void setValue(int value); void setValue(IdTitle value);
void setValue(IdTitleComment value);
void setValues(Collection<T> values);
void addValue(T value); void addValues(Collection<T> values);
void removeValue(T value); void removeValues(Collection<T> values);
void clearValues();
Здесь T — Integer, IdTitle или IdTitleComment; операция определяется префиксом имени.
@BindListCountParam
Работает с параметром listCount.
ParameterListCountValue getValue();
List<ParameterListCountValue> getValues();
Set<ParameterListCountValue> getValues();
void setValue(ParameterListCountValue value);
void setValues(Collection<ParameterListCountValue> values);
void addValue(ParameterListCountValue value);
void addValues(Collection<ParameterListCountValue> values);
void removeValue(ParameterListCountValue value);
void removeValues(Collection<ParameterListCountValue> values);
void clearValues();
@BindTreeParam
Работает с параметром tree.
String getValue(); TreeTitle getValue();
List<String> getValues(); Set<String> getValues();
List<TreeTitle> getValues(); Set<TreeTitle> getValues();
void setValue(T value); void setValues(Collection<T> values);
void addValue(T value); void addValues(Collection<T> values);
void removeValue(T value); void removeValues(Collection<T> values);
void clearValues();
Здесь T — строковый ID дерева или TreeTitle.
@BindAddressParam
Работает с параметром address. Параметр loadDetails = false управляет загрузкой справочных данных.
ParameterAddressValue getValue();
HouseInteractor getValue();
StreetInteractor getValue(); // loadDetails = true
CityInteractor getValue(); // loadDetails = true
List<T> getValues(); Set<T> getValues();
void setValue(ParameterAddressValue value);
void setValues(Collection<ParameterAddressValue> values);
void addValue(ParameterAddressValue value);
void addValues(Collection<ParameterAddressValue> values);
void removeValue(ParameterAddressValue value);
void removeValues(Collection<ParameterAddressValue> values);
void clearValues();
Коллекционный T — один из четырёх типов одиночного результата. Одиночные значения и аргументы могут быть null.
@BindPhoneParam
Работает с параметром phone. format = "10" задаёт CRM-формат, unformatted = true возвращает номер без форматирования.
String getValue(); List<String> getValues();
Set<String> getValues();
void setValue(String value); void setValues(Collection<String> values);
void addValue(String value); void addValues(Collection<String> values);
void removeValue(String value); void removeValues(Collection<String> values);
void clearValue();
@BindEmailParam
Работает с параметром email и умеет возвращать как адрес, так и модель с комментарием.
String getValue(); ParameterEmailValue getValue();
List<String> getValues(); Set<String> getValues();
List<ParameterEmailValue> getValues();
Set<ParameterEmailValue> getValues();
void setValue(T value); void setValues(Collection<T> values);
void addValue(T value); void addValues(Collection<T> values);
void removeValue(T value); void removeValues(Collection<T> values);
void clearValue();
T — String или ParameterEmailValue.
@BindFileParam
Работает с параметром file.
FileData getValue();
List<FileData> getValues(); Set<FileData> getValues();
void addValue(FileData value);
void removeValue(FileData value);
Удаление определяется префиксом remove или delete. Операции полной замены и очистки обработчик не предоставляет.
@BindObjectList
Работает со строками параметра objectList. Параметры: value = 0 — ID параметра, allowNotFinishedElements = false — включать ли несохранённые строки с отрицательным ID.
List<RowInteractor> getRows();
RowInteractor newRow();
void clearRows();
RowInteractor должен наследовать ObjectListInteractor. Метод с префиксом new добавляет строку и возвращает proxy для неё; помечайте его @DropCache, иначе кеш может повторно вернуть тот же proxy. clear удаляет все строки параметра.
Свойства процесса
@BindCreateTime
Возвращает время создания процесса как LocalDateTime, Date или String. Параметр format для строки по умолчанию равен yyyy-MM-dd HH:mm:ss.
@BindCloseTime
Возвращает nullable-время закрытия как LocalDateTime, Date или String. format имеет то же значение по умолчанию.
@BindCreateUser
Возвращает создателя процесса.
User getCreateUser();
int getCreateUserId();
Изменение создателя не поддерживается.
Статусы процесса
@BindProcessStatus
int getStatus();
StatusChange getStatus();
IdTitle getStatus();
boolean isClosedStatus();
void setStatus(int statusId);
void setStatus(int statusId, String comment);
Проверка закрывающего статуса определяется префиксом isClosed.
Группы и исполнители процесса
@BindProcessGroups
Параметр roleId = 0 фильтрует группы по роли.
ProcessGroup getGroup(); int getGroup();
List<ProcessGroup> getGroups(); Set<ProcessGroup> getGroups();
List<Integer> getGroups(); Set<Integer> getGroups();
void setGroups(Collection<ProcessGroup> values);
void addGroup(ProcessGroup value); void addGroups(Collection<ProcessGroup> values);
void removeGroup(ProcessGroup value); void removeGroups(Collection<ProcessGroup> values);
Для одиночного результата можно использовать @Size.
@BindProcessExecutors
Параметры: roleId = 0; firstSuitableGroup = false разрешает при передаче User автоматически выбрать первую подходящую группу, иначе неоднозначность групп считается ошибкой.
ProcessExecutor getExecutor(); User getExecutor();
UserInteractor getExecutor(); int getExecutor();
List<T> getExecutors(); Set<T> getExecutors();
void setExecutors(Collection<T> values);
void addExecutor(T value); void addExecutors(Collection<T> values);
void removeExecutor(T value); void removeExecutors(Collection<T> values);
Для чтения T — ProcessExecutor, User, UserInteractor или Integer; для изменения — первые три типа.
Привязки процесса
Одиночные getters всех обработчиков этого раздела допускают @Size для проверки количества до выбора первого значения.
@BindProcessLinkedObjects
Параметры typePattern = "." и titlePattern = "." фильтруют объекты.
CommonObjectLink getLink();
List<CommonObjectLink> getLinks(); Set<CommonObjectLink> getLinks();
void setLinks(Collection<CommonObjectLink> values);
void addLink(CommonObjectLink value); void addLinks(Collection<CommonObjectLink> values);
void removeLink(CommonObjectLink value); void removeLinks(Collection<CommonObjectLink> values);
@BindProcessLinkedCustomers
Customer getLink(); CustomerInteractor getLink();
List<T> getLinks(); Set<T> getLinks();
void setLinks(Collection<T> values);
void addLink(T value); void addLinks(Collection<T> values);
void removeLink(T value); void removeLinks(Collection<T> values);
T — Customer или CustomerInteractor.
@BindLinkedCommonContracts
Работает с едиными договорами; titlePattern = ".*" фильтрует номер.
CommonContract getLink(); CommonContractInteractor getLink();
List<T> getLinks(); Set<T> getLinks();
void setLinks(Collection<T> values);
void addLink(T value); void addLink(int commonContractId);
void addLinks(Collection<T> values);
void removeLink(T value); void removeLink(int commonContractId);
@BindProcessLinkedContracts
Работает с договорами биллинга. Параметры: billings = [], titlePattern = ".*", typeFilter = []. Пустой фильтр означает все значения; типы договора: SUPER, INDEPENDENT, SUB_INDEPENDENT, SUB_DEPENDENT.
Contract getLink();
List<Contract> getLinks(); Set<Contract> getLinks();
void setLinks(Collection<Contract> values);
void addLink(Contract value); void addLinks(Collection<Contract> values);
void removeLink(Contract value); void removeLinks(Collection<Contract> values);
@BindLinkedProcesses
Работает с процессными связями. Параметры:
-
mode = LINKED: искать процессы, привязанные к текущему;LINKING— процессы, к которым привязан текущий; -
linkTypes: по умолчаниюLINK,MADE,DEPEND; -
processTypes = []: фильтр типов; -
statuses = []иstatusMode = ANY|NONE: фильтр статусов при чтении.
Process getProcess(); Integer getProcess(); ProcessInteractor getProcess();
List<T> getProcesses(); Set<T> getProcesses();
void addProcess(Process value); void addProcess(int id);
void addProcess(ProcessInteractor value); void addProcesses(Collection<T> values);
void removeProcess(Process value); void removeProcess(int id);
void removeProcess(ProcessInteractor value);
Для изменения в linkTypes должен остаться ровно один тип связи. Коллекционное удаление обработчиком не реализовано.
TMC и Verdandi
@BindProcessTmcMoves
Получает движения для process ID из Verdandi и фильтрует их параметрами useTypes, accountingTypes и deviceCategory. По умолчанию включены рабочие типы назначения, режимы MOUNTING, DISMOUNTING, NOT_NEED_ACCOUNTING и категории MATERIAL, EQUIPMENT, SERVICES.
TmcMove getMove();
List<TmcMove> getMoves();
Set<TmcMove> getMoves();
Одиночный результат поддерживает @Size.
@BindTmcUserLeftovers
Использует переданный user ID. Для UserLeftover читает ИНН пользователя и запрашивает остатки Verdandi; isMainResources = true переключает запрос на основные ресурсы. Для MolLeftovers читает ID склада 1С из параметра пользователя.
List<UserLeftover> getUserLeftovers();
Set<UserLeftover> getUserLeftovers();
List<MolLeftovers> getMolLeftovers();
Set<MolLeftovers> getMolLeftovers();
При отсутствии ИНН или ID склада выбрасывается BGMessageException.