Мне нужно получить данные CATENTDESCOVR с использованием Databean.Databean для получения CATENTDESCOVR
Есть ли какие-либо данные, предоставленные IBM для получения данных?
Я использую IBM WebSphere Commerce V7.0 Feature Pack 8
Мне нужно получить данные CATENTDESCOVR с использованием Databean.Databean для получения CATENTDESCOVR
Есть ли какие-либо данные, предоставленные IBM для получения данных?
Я использую IBM WebSphere Commerce V7.0 Feature Pack 8
Это хороший вопрос, и вот ниже объясняется, как работает CATENTDESCOVR, этот ответ основан на WCS 7.0, FEP 7. но я считаю, что у fep 8 есть одинаковые api, я не думаю, что IBM улучшила это в fep8!
, если вы посмотрите на то, как эти данные индексируются и хранятся в Solr в schema.xml вы найдете следующие строки
<!--
Catentry's description override: map to table CATENTDESCOVR
-->
<field name="nameOverride" type="wc_text" indexed="true" stored="true" multiValued="true"/>
<field name="shortDescriptionOverride" type="wc_text" indexed="true" stored="true" multiValued="true"/>
<field name="keywordOverride" type="wc_text" indexed="true" stored="true" multiValued="true"/>
обратите внимание здесь на multiValued="true"
, это означает, что если у вас есть многодисковый магазинов принадлежит на тот же Esite, solr индексирует имяOvr, descOvr как многозначное для этого catentryId, но solr не имеет представления о том, какое переопределенное имя принадлежит тому хранилищу, этот компонент сказал, что IBM solr индексирует данные основного каталога, не храня определенные данные.
Это приводит к вопросу о том, как переопределенное имя отображается в магазине в магазине спереди?
ответ путем использования WC-Search постпроцессора:
com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCatalogEntryViewDescriptionQueryPostprocessor
если посмотреть на реализацию этого постпроцессора вы найдете следующие шаги высокого уровня:
1- получить, что catOvrGrpId по:
catOvrGrpId = CatalogOverrideHelper.getOverrideGroupIdForStore(this.iStoreId)
2- получить необходимые данные переопределены путем вызова службы DSL:
JDBCQueryService service = new JDBCQueryService("com.ibm.commerce.catalog");
queryParameters.put("language", langIds);
queryParameters.put("UniqueID", catEntryUniqueIDs);
queryParameters.put("catOverrideGroupID", groupIds);
service.executeQuery("IBM_Get_CatentryDescOverride_By_LangId_And_CatentryId_And_GroupId",
queryParameters);
3- новообращенного список возвращаемого массива в совместимом результате JSON:
populateOverrideCatalogEntries((List)listOfPhysicalObjects, catalogEntryViews);
вы можете повторно использовать коды выше и попытаться декомпилировать SolrRESTSearchCatalogEntryViewDescriptionQueryPostprocessor
, чтобы понять, как вы можете прочитать эту информацию из базы данных.
запрос для IBM_Get_CatentryDescOverride_By_LangId_And_CatentryId_And_GroupId
является существование под Search/xml/config/com.ibm.commerce.catalog/wc-query-utilities.tpl
Надеется, что это будет информативным для вас.
Thanks Abed
Короткий ответ, что не существует DataBean для доступа к этим данным.
Длительный ответ [начало] заключается в том, что для доступа к таким данным вам необходимо использовать уровни BOD + DSL. Либо через JSP с использованием тега getData (Aurora широко использует этот тег), либо с помощью Java-кода (иногда с использованием выражений XPath ...). Вы также можете отследить запрос: see here.
Однако, на мой взгляд, идея переопределения заключается в том, что они прозрачны для интерфейсного. То есть переопределения описания заменяют основные описания при их настройке. see here
Не уверен, что вы пытаетесь сделать с прямым доступом к этим данным. Переопределить логику WCS?
CATENTDESCOVR уже был проиндексирован в вашем ядре solr.
Посмотрите в каталоге solr \ home \ MC_10001 \ en_US \ CatalogEntry \ conf, в файле wc-data-config.xml, и вы можете видеть, что он отображается в ядре.
Когда вы запрашиваете данные из solr, один из фильтров Post обработки, определенных в wc-search.xml проекта EAR поиска, заполнит значение переопределения как «имя» или «shortdesc» возвращаемых значений.
Итак, вам действительно нужно только позвонить в службу отдыха как обычно, чтобы получить это значение. При условии, что вы хотите получить это от внешнего интерфейса.
Если вам это нужно, вы можете использовать CatalogEntryFacadeClient для выполнения запроса solr.