Разработка и применение пользовательского типа данных "Комплексное значение"
Для использования новых типов данных, в том числе сложноструктурированных, в системе сущзествует возможность разработки собственных типов данных, путем создания их через java-классы. Таким образом, если ведение вложенной структуры данных через композируемые позиции является нецелесообразным или невозможным, то можно разработать новый тип данных и использовать его в качестве типа данных для простых атрибутов в системе.
Разработка нового комплексного типа данных является целесообразной в следующих условиях:
-
композируемые позиции являются одним единым комплексным значением, которое должно редактироваться как единое целое;
-
для композируемых позиций избыточным является функционал управления статусами, дедубликация, ведение переходных ключей и т.д.
Java-класс для комплексного типа данных должен реализовывать:
-
возврат информации о новом комплексном типе данных, для его регистрации в системе и выборе из списка допустимых типов данных для простого атрибута;
-
сериализацию/десериализацию комплексного значения в JSON и XML для хранения в БД и передачи данных через REST и SOAP;
-
метод обогащения комплексного значения переданным, с учетом указанных настроек;
-
метод автоматического сопоставления комплексного значения с переданным. Если комплексное значение содержит в себе массив структурированных значений, то здесь можно реализовать логику их сопоставления;
-
метод получения массива строк для индексации, по которым пользователь сможет строить фасеты и выполнять расширенный поиск;
-
метод получения массива строковых идентификаторов для поиска дубликатов
Для атрибута с комплексным типом данных не допускается:
-
включать опцию множественности значения. Если комплексный тип данных предполагает множественное значение, то множественность и корректную его обработку при слиянии с другим комплексным значением нужно реализовать в java-классе;
-
добавлять атрибут с комплексным типом данных в ограничительную таблицу;
-
делать атрибут вычисляемым.
Для работы с новым комплексным типом данных в веб-клиенте, требуется реализовать
специальное расширение, обеспечивающее:
-
просмотр комплексного значения в карточке позиции;
-
редактирование комплексного значение через специальный диалог, открываемый из карточки по кнопке;
-
настройку слияния комплексных значений через специальный диалог - при выполнении операции дедубликации;
-
сравнение комплексных значений через специальный диалог.
Для добавления нового атрибута с типом данных "комплексное значение" необходимо создать простой атрибут, для которого в свойстве Тип выбрать вариант "Комплексное значение". В появившемся поле Тип комплексного значения выбрать из выпадающего списка один из зарегистрированных в Системе java-классов.
Создание атрибута типа "комплексное значение" в классификаторе
Особенности настройки декларации такого атрибута в справочной группе будет определяться параметрами, заданными в java-классе, а также четырьмя базовыми свойствами декларации, как показано на рисунке ниже.
Базовые свойства декларации атрибута с комплексным значением
Если в Системе был создан простой атрибут с типом данных "
комплексное значение", но для него не был создан соответствующий java-класс или расширение с этим классом не было
зарегистрировано в системе и
Тип комплексного значения остался <
не задан>, то при декларации данного атрибута в справочной группе для позиций этой группы при задании значения будет открываться окно редактора для ввода комплексного значения в виде JSON.
Окно редактора для ввода значения атрибута с типом данных "Комплексное значение"