Hybris Item: разница между пользовательским свойством и атрибутами

В определении типа hybris я столкнулся с трудностями в понимании значения этих двух тегов: и

Подробно, первый содержит дочерние теги , а второй содержит дочерние теги . В тегах "property" есть еще один тег с содержимым.

Пример кода, на котором я основан, взят из следа гибрида, то есть:

<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, которая создается (кроме динамических атрибутов) в результате процесса сборки и обновления платформы.

Пользовательские атрибуты - это определенные определенные атрибуты, которые используются в определении системы типов для определения определенных свойств типа. В общем, если вы интерпретируете метаданные системы типов, вы можете прочитать атрибуты для достижения желаемого поведения. Они могут быть определены на разных уровнях

  1. На уровне типа элемента - пользовательские свойства используются для определения свойств для типа. Это пример, который вы разместили в теле вопроса. Пользовательские типы в вопросе

<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). Есть и другие примеры.

  1. Уровень отношений, см. Фрагмент ниже

<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>

Свойство содержит строку, которая позже добавляется в часть "где" запроса выбора, сгенерированного для отношения "один ко многим" или "многие к одному".

  1. Атрибут упорядочения - определив 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>

  1. Пользовательские атрибуты Backoffice - Backoffice позволит отображать все атрибуты любого типа (из коробки), тем не менее, есть некоторые специальные (скажем, технические) атрибуты, которые определенно не должны быть видны в пользовательском интерфейсе или по крайней мере должны читаться только в пользовательском интерфейсе. (независимо от того, какие права доступа они имеют). Для тех очень редких случаев hybris ввел два пользовательских атрибута, которые мы интерпретируем при сканировании системы типов.

<property name="readOnlyForUI">
     <value>Boolean.TRUE</value>
 </property>
 <property name="hiddenForUI">
     <value>Boolean.TRUE</value>
 </property>

Надеюсь это поможет!

Другие вопросы по тегам