While in backoffice in Adminstration Perspective you can press F4 button from keyboard. Then click menu icon on right corner for Show cockpit-config.xml
option.
hybris system requirements
hybris minimum requirements by versions. Preferred DB charset is utf8 and collation is utf8_bin.
2011 | 2005 | 1905 | 1811 | 1808 | |
JVM | SapMachine 11 or Oracle JDK/JRE 11 | SapMachine 11 | SapMachine 11 | Oracle 8.0 or SAP JVM 8.1 | Oracle 8.0 or SAP JVM 8.1 |
DB | MySQL 5.7 (jdbc 5.1.x), 8.0 (jdbc 8.x) | MySQL 5.7 (jdbc 5.1.x), 8.0 (jdbc 8.x) | MySQL 5.6, 5.7 (jdbc 5.1.x), 8.0 (jdbc 8.x) | MySQL 5.6, 5.7 (jdbc 5.1.x) ) | MySQL 5.6, 5.7 (jdbc 5.1.x) ) |
Solr | 8.6 | 8.4.0 | 7.7 | 7.5 | 7.4 |
ImageMagick | 6.7.3-5 | 6.7.3-5 | 6.7.3-5 | 6.7.3-5 | 6.7.3-5 |
Tomcat | 8.5.56 | 8.5.51 | 8.5.40 | 8.5.40 |
hybris installer failed
If you are getting error while installing receipt like below, although you have set the parameter, check your maven settings for central repositories URLs start with HTTPS.
******************************************************************************************************** Either platform properties or system environment does not have the required property 'initialpassword.admin' set. Please make sure to provide it in the recipe or in the system environment. If you are running recipe using installer application you can set required property via option -A local_property:initialpassword.admin=property_value If missing property is initialpassword.admin then you can set it up using shortcut -A initAdminPassword=admin_password ********************************************************************************************************
Maven disabled HTTP repositories. You can use below sample maven config file at <user-home>\.m2\settings.xml.
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <profiles> <profile> <id>default</id> <repositories> <repository> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> <id>central</id> <url>https://repo1.maven.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> <id>central</id> <url>https://repo1.maven.org/maven2</url> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>default</activeProfile> </activeProfiles> </settings>
My hybris development environment test
I am using my company mac pro 2015 for a lot of thing. So I need different environment look like C#, hybris, ABAP, etc. These environment needs service look like db. These service using my ram always. So I am using VM for environment which are not used often. I created VM for new hybris versions for testing (docker cannot pause / resume systems yet). I try some scenarios for my best hybris development environment.
VM: OS version Centos 7, Java 8 u162, MySQL 5.7.21 and hybris version 6.6.
Enviroment | Compile time (ant clean all) |
Hybris files in host shared with guest vm | 21 minutes 9 seconds |
Hybris files in guest vm | 3 minutes 8 seconds 2 minutes 29 seconds |
Hybris files in guest vm and shared with host (without nfs optimization) | 5 minutes 44 seconds |
Creating history for item
If you want create history for item look like backoffice, you can use below example.
public void updateConsignmentStatus(String userUid, ConsignmentModel consignment, ConsignmentStatus status) { Map<string, object=""> originals = new HashMap(); originals.put(ConsignmentModel.STATUS, consignment.getStatus()); consignment.setStatus(status); Map<string, object> news = new HashMap(); news.put(ConsignmentModel.STATUS, consignment.getStatus()); final SavedValues savedValues = JaloConnection.getInstance().logItemModification(consignment.getPk(), news, originals, false); savedValues.setUser(UserManager.getInstance().getUserByLogin(userUid)); modelService.saveAll(); }
Creating,updating or deleting other items in interceptor
public class MyCustomerPrepareInterceptor implements PrepareInterceptor { private static final Logger LOG = Logger.getLogger(MyCustomerPrepareInterceptor.class); @Override public void onPrepare(CustomerModel customerModel, InterceptorContext interceptorContext) throws InterceptorException { . . . final MyItemModel myItem = interceptorContext.getModelService().create(MyItemModel.class); interceptorContext.registerElement(myItem); //interceptorContext.registerElementFor(myItem, PersistenceOperation.DELETE); . . . }
Getting enum text with join in flex query
DB connection for DDL in groovy
DANGER!!!
In hybris hac, you cannot run DDL (data definition language) commands. You need unprotected connection to db. You can use below groovy example. Attention: DDL commands are dangerous!!!
import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; def config = spring.getBean("configurationService").getConfiguration(); DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(config.getString("db.driver")); dataSource.setUrl(config.getString("db.url")); dataSource.setUsername(config.getString("db.username")); dataSource.setPassword(config.getString("db.password")); JdbcTemplate jdbc = new JdbcTemplate(dataSource) jdbc.execute("ALTER TABLE MYTABLE ALTER (P_MYFIELD BIGINT)");
Using separate file for different class logging
Below example logging flexiblesearch class to separate file with time based trigger policy. Also we can add rollover strategy for removing old files.
log4j2.appender.FlexlogAppender.type=RollingFile log4j2.appender.FlexlogAppender.name=FlexlogAppender log4j2.appender.FlexlogAppender.fileName=${HYBRIS_LOG_DIR}/Flexlog.log log4j2.appender.FlexlogAppender.filePattern=${HYBRIS_LOG_DIR}/Flexlog.log-%d{yyyy-MM-dd}.log log4j2.appender.FlexlogAppender.ImmediateFlush=true log4j2.appender.FlexlogAppender.layout.type=PatternLayout log4j2.appender.FlexlogAppender.layout.pattern=%m%n log4j2.appender.FlexlogAppender.policies.type = Policies log4j2.appender.FlexlogAppender.policies.time.type = TimeBasedTriggeringPolicy log4j2.appender.FlexlogAppender.policies.time.interval = 1000000 log4j2.appender.FlexlogAppender.policies.time.modulate = true log4j2.logger.flexible.name = de.hybris.platform.jalo.flexiblesearch log4j2.logger.flexible.level = DEBUG log4j2.logger.flexible.appenderRef.stdout.ref = FlexlogAppender log4j2.logger.flexible.additivity = false
Known hybris strategies
Strategy | Abstract | Interface | Description |
DefaultCommerceCloneSavedCartStrategy | Clone cart. | ||
DefaultCloneAbstractOrderStrategy | Clone order. | ||
DefaultCommerceAddToCartStrategy | CommerceAddToCartStrategy | Adding product to cart. | |
DefaultCommerceUpdateCartEntryStrategy | |||
DefaultCartValidationStrategy | |||
DefaultMultiCodeCouponRedemptionStrategy | CouponRedemptionStrategy<> | Single code coupon redemption. | |
DefaultSingleCodeCouponRedemptionStrategy | CouponRedemptionStrategy<> | Multi code coupon redemption. | |
DefaultCommercePlaceOrderStrategy | |||
CommerceStockLevelStatusStrategy | |||
AbstractFacetSearchStrategy | |||
KeyStrategy | Cache key strategy. | ||
AbstractCheckoutFlowStrategy | |||
FindPaymentCostStrategy | |||
AbstractCancelDenialStrategy | OrderCancelDenialStrategy | ||
AutoLoginStrategy | |||
GUIDCookieStrategy | |||
DefaultCreateOrderFromCartStrategy | |||
DefaultCommerceCartMergingStrategy | |||
AbstractCheckoutFlowStrategy | |||
TicketOrdersAssociationStrategy | |||
AbstractCheckoutFlowStrategy | |||
DefaultRedirectStrategy | |||
DefaultBaseStoreSelectorStrategy | BaseStoreSelectorStrategy |