Элемент Hybris: разница между пользовательским свойством и атрибутами - PullRequest
0 голосов
/ 07 июня 2018

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

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

Пример кода, на котором я основан, взят из следа 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 ]

0 голосов
/ 08 июня 2018

Атрибуты элемента определяют состояние элемента.На самом деле они являются столбцами таблицы 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). Есть и другие примеры.

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

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

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

0 голосов
/ 08 июня 2018
<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> используется для определения и настройки столбца этой таблицы.

...