概述
初始化处理的目的是准备store数据
通过加速器扩展导入数据
加速器提供了两个专门的挂钩来导入自定义数据
core data hook,merchandisecore扩展中的de.hybris.merchandise.core.setup.CoreSystemSetup,使用@SystemSetup注解,在merchandisecore-spring.xml中定义,它的设计是为了初始化store basic data(non concrete store data, non store-specific data),如cockpit definitions, email templates, CMS layout等
sample data hook,merchandiseinitialdata扩展中的de.hybris.merchandise.initialdata.setup.InitialDataSystemSetup,使用@SystemSetup注解,在merchandiseinitialdata-spring.xml中定义,它的设计是为了初始化all the product and concrete cms content(concrete store data,store-specific data),如catalogs, Solr configurations等
Sample Data hook包括两个重要的service,它们有一个共同的父类AbstractDataImportService,提供importing all data, synchronizing catalogs, run solr indexes等功能
Core Data Import Service,它的设计是为了导入store的all essential core data(basic structure of a store),如catalog definition, email templates, site definition,可以看de.hybris.platform.commerceservices.dataimport.impl.CoreDataImportService这个类,注意store’s data是怎样导入的,如catalogs, solr configuration, cms content等
Sample Data Import Service,它的设计是为了导入all the store-specific data和用concrete data,如product data, images来填充core data import service定义的structure,可以看de.hybris.platform.commerceservices.dataimport.impl.SampleDataImportService这个类,注意store’s data是怎样导入的,如products, images, cms content等
修改InitialDataSystemSetup类
加入以下代码
package de.hybris.merchandise.initialdata.setup;
...
import java.util.Arrays;
...
@SystemSetup(extension = MerchandiseInitialDataConstants.EXTENSIONNAME)
public class InitialDataSystemSetup extends AbstractSystemSetup
{
...
public static final String MERCHANDISE = "hybris";
...
@SystemSetup(type = Type.PROJECT, process = Process.ALL)
public void createProjectData(final SystemSetupContext context)
{
/*
* Add import data for each site you have configured
*
* final List<ImportData> importData = new ArrayList<ImportData>();
*
* final ImportData sampleImportData = new ImportData();
* sampleImportData.setProductCatalogName(SAMPLE_PRODUCT_CATALOG_NAME);
* sampleImportData.setContentCatalogNames(Arrays.asList(SAMPLE_CONTENT_CATALOG_NAME));
* sampleImportData.setStoreNames(Arrays.asList(SAMPLE_STORE_NAME));
* importData.add(sampleImportData);
*
* getCoreDataImportService().execute(this, context, importData);
* getEventService().publishEvent(new CoreDataImportedEvent(context, importData));
*
* getSampleDataImportService().execute(this, context, importData);
* getEventService().publishEvent(new SampleDataImportedEvent(context, importData));
*/
final List<ImportData> importData = new ArrayList<ImportData>();
final ImportData hybrisImportData = new ImportData();
hybrisImportData.setProductCatalogName(MERCHANDISE);
hybrisImportData.setContentCatalogNames(Arrays.asList(MERCHANDISE));
hybrisImportData.setStoreNames(Arrays.asList(MERCHANDISE));
importData.add(hybrisImportData);
getCoreDataImportService().execute(this, context, importData);
getEventService().publishEvent(new CoreDataImportedEvent(context, importData));
getSampleDataImportService().execute(this, context, importData);
getEventService().publishEvent(new SampleDataImportedEvent(context, importData));
}
...
}