Impex old pk имеет неправильный формат при импорте пользовательского компонента в слот контента - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать сценарий impex в Hybris 6.4, чтобы поместить мой пользовательский компонент в ContentSlot с помощью инструмента импорта ImpEx, который находится в консоли администрирования Hybris.Когда я запускаю impex, я получаю ошибку old pk has wrong format: 'catalogVersion(CatalogVersion.catalog(Catalog.id[default=apparel-ukContentCatalog])', type code is not an integer.[HY--1].Я использовал приложение BackOffice, чтобы убедиться, что мой пользовательский компонент присутствует.Что мне нужно сделать, чтобы назначить свой компонент ContentSlot, не обнаружив ошибки old pk has wrong format: 'catalogVersion(CatalogVersion.catalog(Catalog.id[default=apparel-ukContentCatalog])', type code is not an integer.[HY--1]?

Вот мой импекс.

<header line is blank>
$contentCatalog=apparel-ukContentCatalog
$catalogVersion=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Online])[default=$contentCatalog:Online]
INSERT_UPDATE ContentSlot;$catalogVersion;uid[unique=true];active;cmsComponents(uid, catalogVersion)
;;SearchResultsGridSlot;true;MyComponent:$catalogVersion

Обратите внимание, что ятакже пробовал этот вариант макроса $ catalogVersion:

$catalogVersion=catalogversion(catalog(id[default=$contentCatalog]),version[default='Online'])[unique=true,default=$contentCatalog:Online]

Это трассировка стека для попытки импекса.

ERROR [hybrisHTTP27] (000002C5) [CronJobErrorHandler] line 5 at main script: Exception ocurred, will ignore: de.hybris.platform.impex.jalo.ImpExException: old pk has wrong format: 'catalogVersion(CatalogVersion.catalog(Catalog.id[default=apparel-ukContentCatalog])', type code is not an integer.[HY--1]
de.hybris.platform.impex.jalo.ImpExException: old pk has wrong format: 'catalogVersion(CatalogVersion.catalog(Catalog.id[default=apparel-ukContentCatalog])', type code is not an integer.
    at de.hybris.platform.impex.jalo.imp.DefaultImportProcessor.processInsertUpdateLine(DefaultImportProcessor.java:483) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.DefaultImportProcessor.processItemData_Impl(DefaultImportProcessor.java:259) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.DefaultImportProcessor.processItemData(DefaultImportProcessor.java:158) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.ImpExImportReader.processLine(ImpExImportReader.java:718) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.ImpExImportReader.readLine(ImpExImportReader.java:518) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.Importer.doImport(Importer.java:251) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.Importer.importNextInternal(Importer.java:757) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.Importer.importNext(Importer.java:738) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.doImport(ImpExImportJob.java:290) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.performJob(ImpExImportJob.java:248) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.performCronJob(ImpExImportJob.java:115) [impexserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1390) [processingserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:814) [processingserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:732) [processingserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.perform(Job.java:644) [processingserver.jar:?]
    at de.hybris.platform.servicelayer.cronjob.impl.DefaultCronJobService.performCronJob(DefaultCronJobService.java:86) [processingserver.jar:?]
    at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importData(DefaultImportService.java:437) [impexserver.jar:?]
    at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importDataUsingStandardImpex(DefaultImportService.java:360) [impexserver.jar:?]
    at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importData(DefaultImportService.java:104) [impexserver.jar:?]
    at de.hybris.platform.hac.facade.impl.DefaultImpexFacade.importData(DefaultImpexFacade.java:60) [classes/:?]
    at de.hybris.platform.hac.controller.console.ImpexController.handleImpexImportContent(ImpexController.java:189) [classes/:?]

Для дальнейшего исследования я попыталсяудаление уникального атрибута из определения макроса $ catalogVersion, чтобы увидеть, можно ли найти какие-либо подсказки, но обнаруженная здесь ошибка, кажется, усиливает необходимость присутствия атрибута уникального ключа в макросе $ catalogVersion.

Импекс без уникального атрибута для catalogVersion

<header line is blank>
$contentCatalog=apparel-ukContentCatalog
$catalogVersion=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Online])[default=$contentCatalog:Online]
INSERT_UPDATE ContentSlot;$catalogVersion;uid[unique=true];active;cmsComponents(uid, catalogVersion)
;;SearchResultsGridSlot;true;MyComponent:$catalogVersion

Трассировка стека для импекса без уникального атрибута

ERROR [hybrisHTTP29] (000002C4) [CronJobErrorHandler] line 5 at main script: Exception ocurred, will ignore: de.hybris.platform.impex.jalo.imp.AmbiguousItemException: More than one item of type ContentSlot found for unique qualifiers {uid2=SearchResultsGridSlot}[HY-0]
de.hybris.platform.impex.jalo.imp.AmbiguousItemException: More than one item of type ContentSlot found for unique qualifiers {uid2=SearchResultsGridSlot}
    at de.hybris.platform.impex.jalo.imp.DefaultExistingItemResolver.resolveByQuery(DefaultExistingItemResolver.java:204) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.DefaultExistingItemResolver.findExisting(DefaultExistingItemResolver.java:133) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.DefaultImportProcessor.processItemData_Impl(DefaultImportProcessor.java:213) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.DefaultImportProcessor.processItemData(DefaultImportProcessor.java:158) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.ImpExImportReader.processLine(ImpExImportReader.java:718) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.imp.ImpExImportReader.readLine(ImpExImportReader.java:518) ~[impexserver.jar:?]
    at de.hybris.platform.impex.jalo.Importer.doImport(Importer.java:251) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.Importer.importNextInternal(Importer.java:757) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.Importer.importNext(Importer.java:738) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.doImport(ImpExImportJob.java:290) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.performJob(ImpExImportJob.java:248) [impexserver.jar:?]
    at de.hybris.platform.impex.jalo.cronjob.ImpExImportJob.performCronJob(ImpExImportJob.java:115) [impexserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1390) [processingserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:814) [processingserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:732) [processingserver.jar:?]
    at de.hybris.platform.cronjob.jalo.Job.perform(Job.java:644) [processingserver.jar:?]
    at de.hybris.platform.servicelayer.cronjob.impl.DefaultCronJobService.performCronJob(DefaultCronJobService.java:86) [processingserver.jar:?]
    at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importData(DefaultImportService.java:437) [impexserver.jar:?]
    at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importDataUsingStandardImpex(DefaultImportService.java:360) [impexserver.jar:?]
    at de.hybris.platform.servicelayer.impex.impl.DefaultImportService.importData(DefaultImportService.java:104) [impexserver.jar:?]
    at de.hybris.platform.hac.facade.impl.DefaultImpexFacade.importData(DefaultImpexFacade.java:60) [classes/:?]
    at de.hybris.platform.hac.controller.console.ImpexController.handleImpexImportContent(ImpexController.java:189) [classes/:?]

1 Ответ

0 голосов
/ 01 октября 2018

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

$contentCatalog=apparel-ukContentCatalog
$catalogVersion=catalogversion(catalog(id[default=$contentCatalog]),version[default=Online])[unique=true,default=$contentCatalog:Online]
INSERT_UPDATE ContentSlot;$catalogVersion;uid[unique=true];active;cmsComponents(uid, $catalogVersion)
;;SearchResultsGridSlot;true;MyComponent

Рабочий импекс для этого слота в стандартной системе.

$contentCatalog=apparel-ukContentCatalog
$catalogVersion=catalogversion(catalog(id[default=$contentCatalog]),version[default=Online])[unique=true,default=$contentCatalog:Online]
INSERT_UPDATE ContentSlot;$catalogVersion;uid[unique=true];active;cmsComponents(uid, $catalogVersion)
;;SearchResultsGridSlot;true;SearchResultsGrid
...