Hybris Item: разница между пользовательским свойством и атрибутами
В определении типа hybris я столкнулся с трудностями в понимании значения этих двух тегов:
Подробно, первый содержит дочерние теги
Пример кода, на котором я основан, взят из следа гибрида, то есть:
<itemtype
code="News"
autocreate="false"
generate="false">
<custom-properties>
<property name="catalogItemType"><value>java.lang.Boolean.TRUE</value></property>
<property name="catalogVersionAttributeQualifier"><value>"catalogVersion"</value></property>
<property name="uniqueKeyAttributeQualifier"><value>"id"</value></property>
</custom-properties>
<attributes>
<attribute qualifier="id" type="java.lang.String">
<modifiers initial="true" optional="false" write="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="catalogVersion" type="CatalogVersion">
<modifiers initial="true" optional="false" write="true"/>
<persistence type="property"/>
</attribute>
</attributes>
</itemtype>
В целом, в чем разница между двумя тегами
2 ответа
<custom-properties>
<property name="catalogItemType">
<value>java.lang.Boolean.TRUE</value>
</property>
<property name="catalogVersionAttributeQualifier">
<value>"catalogVersion"</value>
</property>
<property name="uniqueKeyAttributeQualifier">
<value>"code"</value>
</property>
</custom-properties>
Эти <custom-properties>
используются для определения ItemType в качестве каталога. Нравится Тип продукта. Вы можете сослаться на этот пост для более подробной информации.
<attribute>
используется для определения и настройки столбца таблицы / элемента.
В слове SQL я могу сказать <custom-properties>
используется для настройки на уровне таблицы (метаданные) и <attribute>
используется для определения и настройки столбца этой таблицы.
Атрибуты элемента определяют состояние элемента. На самом деле они являются столбцами таблицы db, которая создается (кроме динамических атрибутов) в результате процесса сборки и обновления платформы.
Пользовательские атрибуты - это определенные определенные атрибуты, которые используются в определении системы типов для определения определенных свойств типа. В общем, если вы интерпретируете метаданные системы типов, вы можете прочитать атрибуты для достижения желаемого поведения. Они могут быть определены на разных уровнях
- На уровне типа элемента - пользовательские свойства используются для определения свойств для типа. Это пример, который вы разместили в теле вопроса. Пользовательские типы в вопросе
<custom-properties>
<property name="catalogItemType"><value>java.lang.Boolean.TRUE</value></property>
<property name="catalogVersionAttributeQualifier"><value>"catalogVersion"</value></property>
<property name="uniqueKeyAttributeQualifier"><value>"id"</value></property>
</custom-properties>
эти свойства определены на уровне типа - эти атрибуты обеспечивают осведомленность каталога на уровне типа. Эти атрибуты могут быть получены из этих свойств типа элемента во время выполнения с помощью метода getProperty( String propertyName). Есть и другие примеры.
- Уровень отношений, см. Фрагмент ниже
<relation code="User2Addresses" generate="true" localized="false" autocreate="true">
<sourceElement type="User" cardinality="one" qualifier="owner">
<modifiers read="true" write="true" search="true" optional="true" initial="false"/>
</sourceElement>
<targetElement type="Address" cardinality="many" qualifier="addresses">
<modifiers read="true" write="true" search="true" optional="true" partof="true"/>
<custom-properties>
<property name="condition.query">
<value>"{original} is null"</value>
</property>
</custom-properties>
</targetElement>
</relation>
Свойство содержит строку, которая позже добавляется в часть "где" запроса выбора, сгенерированного для отношения "один ко многим" или "многие к одному".
- Атрибут упорядочения - определив ordering.attribute, можно указать, какой атрибут будет использоваться для упорядочивания многогранных элементов при извлечении из базы данных.
<relation code="AbstractOrder2AbstractOrderEntry" localized="false" generate="true" autocreate="true">
<sourceElement type="AbstractOrder" qualifier="order" cardinality="one">
<modifiers read="true" write="true" search="true" optional="true" />
<custom-properties>
<property name="ordering.attribute">
<value>"entryNumber"</value>
</property>
</custom-properties>
</sourceElement>
<targetElement type="AbstractOrderEntry" qualifier="entries" cardinality="many" collectiontype="list" ordered="false" >
<modifiers read="true" write="true" search="true" optional="true" partof="true" />
</targetElement>
</relation>
- Пользовательские атрибуты Backoffice - Backoffice позволит отображать все атрибуты любого типа (из коробки), тем не менее, есть некоторые специальные (скажем, технические) атрибуты, которые определенно не должны быть видны в пользовательском интерфейсе или по крайней мере должны читаться только в пользовательском интерфейсе. (независимо от того, какие права доступа они имеют). Для тех очень редких случаев hybris ввел два пользовательских атрибута, которые мы интерпретируем при сканировании системы типов.
<property name="readOnlyForUI">
<value>Boolean.TRUE</value>
</property>
<property name="hiddenForUI">
<value>Boolean.TRUE</value>
</property>
Надеюсь это поможет!