Понимание оператора синтаксиса Impex в Hybris

Здравствуйте, я пытаюсь изучить Hybris, и, поскольку у меня нет доступа к сайту Wiki, мне сложно понять основы кода. Может ли кто-нибудь помочь мне понять приведенные ниже заявления Impex для текста «Добро пожаловать на домашнюю страницу» на главной странице.

Мои вопросы из приведенного ниже кода: на самом деле, у меня есть больше, но я не хочу обременять вас, но если вы можете помочь мне в большинстве основ заявления Impex, я буду очень признателен.

1) В некоторых местах используется более одной точки с запятой, почему?
2) Что такое uid?
3) Кажется, что значения параметров, определенных в start, начинаются после двух точек с запятой (;;) в каждом операторе, дайте мне знать, что я прав?

INSERT_UPDATE CMSParagraphComponent;$contentCV[unique=true];uid[unique=true];name;&componentRef;;;;content;
;;welcomeInfoComponent;Welcome information;welcomeInfoComponent;;;;welcome to home page;

INSERT_UPDATE ContentSlotName;name[unique=true];template(uid,$contentCV)[unique=true][default='LandingPage2Template'];validComponentTypes(code);compTypeGroup(code)
;welcomeInfo;;;wide

INSERT_UPDATE ContentSlot;$contentCV[unique=true];uid[unique=true];name;active
;;welcomeInfoSlot;welcome info slot;true

INSERT_UPDATE ContentSlotForTemplate;$contentCV[unique=true];uid[unique=true];position[unique=true];pageTemplate(uid,$contentCV)[unique=true][default='LandingPage2Template'];contentSlot(uid,$contentCV)[unique=true];allowOverwrite
;;WelcomeInfo-LandingPage2;welcomeInfo;;welcomeInfoSlot;true

INSERT_UPDATE ContentSlot;$contentCV[unique=true];uid[unique=true];cmsComponents(uid,$contentCV)
;;welcomeInfoSlot;welcomeInfoComponent

Я вижу, вы задали много вопросов здесь, в StackOverflow, но не приняли ни одного ответа. Пожалуйста, взгляните на этот "Что мне делать, когда кто-то отвечает на мой вопрос?" и внесите свой вклад в сообщество SO

HybrisHelp 12.11.2018 15:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
1
3 479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

what is uid?

uid - это атрибут, определенный как уникальный в CMSItem. Практически все элементы CMS расширяют CMSItem. Таким образом, вы должны указать уникальное значение для всех ваших записей в вашем Impex. Кроме того, uid использовался для объявления CMSItem как поддерживающего каталог.

<itemtype code = "CMSItem" jaloclass = "de.hybris.platform.cms2.jalo.contents.CMSItem" extends = "GenericItem" autocreate = "true"
    generate = "true" abstract = "true">
    <custom-properties>
        <property name = "catalogItemType">
            <value>java.lang.Boolean.TRUE</value>
        </property>
        <property name = "catalogVersionAttributeQualifier">
            <value>"catalogVersion"</value>
        </property>
        <property name = "uniqueKeyAttributeQualifier">
            <value>"uid"</value>
        </property>
    </custom-properties>
    <attributes>
        <attribute qualifier = "uid" generate = "true" autocreate = "true" type = "java.lang.String">
            <persistence type = "property" />
            <modifiers optional = "false" unique = "true" />
        </attribute>
        <attribute qualifier = "name" generate = "true" autocreate = "true" type = "java.lang.String">
            <persistence type = "property" />
        </attribute>
        <attribute qualifier = "catalogVersion" type = "CatalogVersion">
            <modifiers optional = "false" unique = "true" />
            <persistence type = "property" />
        </attribute>
    </attributes>
</itemtype>

it seems values of parameters defined in starts begins after two semicolons (;;) in each statement, let me know I'm correct?

Позвольте мне сначала отформатировать ваш impex, чтобы вы поняли идею

INSERT_UPDATE CMSParagraphComponent ; $contentCV[unique=true] ; uid[unique=true]     ; name                ; &componentRef        ;  ;  ;  ; content              ;  
                                    ;                         ; welcomeInfoComponent ; Welcome information ; welcomeInfoComponent ;  ;  ;  ; welcome to home page ;  

Здесь

  • INSERT_UPDATE - это режим вашего импекса
  • CMSParagraphComponent - ItemType
  • Затем вы должны поместить ; (точка с запятой), который является просто разделителем значений. Отсюда вы можете начать объявление имени атрибута / столбца (например, uid, name и т. д.) Вместе с модификатором (например, [unique = true]).
  • Теперь ваше значение должно быть ниже, чтобы столбец определился в первой строке (вызовите как заголовок). Для некоторого столбца вам не нужно объявлять значение или вы хотите объявить пустое значение, тогда вы просто оставьте его пустым, как мы сделали для $ contentCV
  • Здесь $ contentCV - это макрос для передачи значения атрибута каталогВерсия, которое в основном определяется в верхней части файла. Во время импорта эти макросы анализируются, и имя макроса заменяется значением макроса. Таким образом, мы оставляем значение пустым, поскольку нам не требуется указывать его значение для каждой строки значений.

in some place more than one semicolon is used, why?

Просто для удобства чтения вы можете поставить столько точек с запятой, сколько хотите, в заголовке и столько же в строке значений. Если вы удалите эти лишние ;, даже если ваш Impex будет работать

INSERT_UPDATE CMSParagraphComponent ; $contentCV[unique=true] ; uid[unique=true]     ; name                ; &componentRef        ;  content              ;  
                                    ;                         ; welcomeInfoComponent ; Welcome information ; welcomeInfoComponent ;  welcome to home page ;  

Я ценю ваш ответ, он очень помог в понимании кода. Последний вопрос, какова цель тега & componentRef?

sagar 09.10.2018 20:54
&componentRef используется для создания ссылки. Чтобы вы могли использовать эту ссылку в каком-нибудь другом itemType. Здесь вы можете увидеть, что ссылка welcomeInfoComponent используется в последней строке (ContentSlot) для привязки вашего компонента к contentSlot (welcomeInfoSlot).
HybrisHelp 10.10.2018 06:52

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