Tuesday 19 April 2016

Hybris:   Data Modeling:

Type System
Attributes
Examples

Type System Definitions

                Type system definitions in an extension are defined by the content of items.xml file in XML format. The items.xml file is located in the extension's resources directory. The name of this file is always defined accordingly: $extension-items.xml where $extension is the name of an extension.

                The Type System is one of the most important concepts of the hybris Multichannel Suite. Every object stored in the platform is one type or another, depending on the kind of object. A type is a template for objects, it defines the product data the object may carry and what other objects the object is related to. Types also make product data persistent by categorizing the data and relating it to database fields.
                Models are generated from the hybris Commerce Suite type system. Furthermore, they are similar to POJOs (Plain Old Java Objects) and are used without any storage facility.


Basic Structure:

<items   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="items.xsd">
    <atomictypes>
    ...
    </atomictypes>
    <collectiontypes>
    ...
    </collectiontypes>
    <enumtypes>
    ...
    </enumtypes>
    <maptypes>
    ...
    </maptypes>
    <relations>
    ...
    </relations>
    <itemtypes>
    ...
    </itemtypes>
</items>

Example:


<itemtype
   code="Book"
   jaloclass="de.hybris.platform.print.jalo.Book"
   extends="GenericItem"
   generate="true"
   autocreate="true">
   <deployment table="Book" typecode="12232"/>
         <attributes>
            <attribute qualifier="code" type="java.lang.String">
               <modifiers optional="false" />
               <persistence type="property"/>
            </attribute>
            <attribute qualifier="sourceCatalogVersion" type="CatalogVersion">
               <persistence type="property"/>
            </attribute>
            <attribute qualifier="Book" type="BookCollection">
               <modifiers write="false" search="false"/>
               <persistence type="jalo"/>
            </attribute>
    </attributes>
</itemtype>

Friday 1 April 2016


 

Hybris consists of different parts like Platform, Commerce, Content, Channel, Orders.

Hybris Login for the complete information

Platform:
         The hybris Commerce Suite is based on a flexible modular concept that allows adding functionality through extensions. The hybris Platform consists of a standard set of extensions providing the main functionality of a hybris installation. An extension is a group of functions representing a subset of the hybris Commerce Suite. An extension can contain business logic, type definitions, a Web application, and many other things. It is the base for all the functionalities in the hybris. platform build the extensions and store the generated class files to provide the dependency of all the dependent extensions.
It provide the more functionalities so based on the Hybris license agreement we can use the functionalities. few of the functionalities are

1)Security and User Management
2)Media
3)Administration
4)Internationalization and Localization
5)Architecture
6)Cockpit Framework
7)Extension Concept
8)Product and Data Modeling
9)Search
10)Importing and Exporting
11)Ordering, Payment, and Pricing Standards
12)Data Validation
13)Reporting
14)Code Generation
15)Application Performance and Monitoring
16)Logging
17)Testing

Commerce:

Organizations worldwide use hybris’ flagship eCommerce solutions to support every step of the eCommerce process: from marketing and merchandising to sales transactions and service. The hybris Commerce Suite enables organizations to manage multiple sales and communications channels on a single platform.
It provides everything you need to deliver the ultimate multichannel experience that is both global and highly personalized to customers, prospects, suppliers, and partners — ensuring they are always able to engage with you and vice versa, wherever they sit and via whatever medium they choose. Most importantly, the hybris Commerce Suite guarantees a consistent customer experience, giving you the confidence that every customer and partner transaction is positive and profitable.

1)B2C Commerce
Consumers interact with retailers in many ways: online, phone, mobile device, and in the store. They expect to have a highly relevant and productive interaction at every touch-point: from shopping, to orders, to returns. hybris helps B2C organizations succeed in this challenging world by adopting additional channels and delivering a consistent experience across all channels, while having the tools required to drive revenue and efficiency.
The key to effective B2C commerce is to make it incredibly easy for consumers to find, learn about, and purchase products. The key to profitable B2C commerce is to have systems in place that are easy to manage and that unify customer interactions and transactions across products, brands, geographies, and communications channels. hybris B2C Commerce delivers the best of both worlds

2) B2B Commerce
hybris B2B Commerce reduces complexity by consolidating management of multiple business models, channels, and markets. It
enables B2B organizations to accommodate a wide variety of suppliers, distributors, and stores on a single platform.
The key to effective B2B commerce is to make it incredibly easy for customers to find, learn about, and purchase products. The key to profitable B2B commerce is to have systems in place that are easy to manage and that unify customer interactions and transactions across products, brands, geographies, and communications channels.

3) Omni Commerce Connect
The hybris Omni Commerce Connect (OCC) offers a broad set of commerce and data services which leverage the complete hybris Multichannel Suite functionality anywhere in a client's application landscape. The hybris OCC allows new or existing hybris customers to quickly commerce-enable new touch points and new channels without lengthy and costly IT cycles.

4) Digital Commerce
 In modern world the management of digital goods and assets is as important as management of traditional, physical goods. hybris Digital Commerce modules cater for needs of vertical businesses who market and sell digital products and services. The Digital Commerce part of the hybris Commerce Suite consists of two modules: Subscriptions and Bundling module.

Content:

The hybris architecture is unique in the e-commerce world. We listen to people's needs and improve our software with an agile response. From our point of view, the product content management process is not only about data management but is also about the data architecture, its accessibility, and a customer's attitude. We realize that if we sustain the quality of our software, our clients can nourish their potential. To have an overall insight into the management process, the content includes reporting, task management, digital asset management, and the importing of data sets. This can all be structured and scaled. The hybris Cluster is incorporated to gather bundles of data that need to be communicated. In the sections below, you can find more information about the product management site of the hybris Commerce Suite.

Digital Asset Overview
An asset means something valuable. In that context, a digital asset is defined as any item of text or media that has been formatted into a binary source with the rights to use it. There are three categories of digital assets:
A digital asset with textual content
A media asset with images
A media asset with multimedia
The hybris media software is designed to ensure that digital data management happens in an environment scaled to your business needs. It gives your system completely flexible functionality.

Product Management
Product management performs an inter-disciplinary role in the e-commerce market. To develop and grow a company, you need to look at product selling from a multiple perspective approach. It is not only about data sources but also about how to be offline and online in the full sense of the omni-commerce word. In the hybris system, you can administer product information and attributes across channels, which allows you to map all functionality together. The user-friendly GUI gives you an opportunity to easily catalog your products, maintain digital objects, language, or stockroom locations.

Importing
In order to ensure complete and accurate product information, companies must be able to aggregate data from multiple channels and fill in the gaps. Importing data from various systems into a central application is a complex task that requires detailed knowledge of creating and maintaining an import file. The hybris Import Cockpit is designed to reduce import complexity to enable business users to create import mappings with an intuitive GUI tool.

Task Management
All employees struggle with tasks on an everyday basis. They manage and define a series of tasks within an organization to produce a final outcome. To tackle the flow of employee tasks with their properties assigned to them, you need to have the module that enables you to locate the appropriate task on the employee list.

Classification System
To easily find the relation between a products catalog and the products feature, the classification system has been implemented. You can easily manage the products in the catalogs with keeping product's features in the product catalog life cycle.

Channel:

For selling products you commonly cover different distribution channels. Based on consistent single-source product information, multiple channels enable you to scale your sales activities. Even more, you can integrate and orchestrate your marketing activities across multiple channels.

1)Online Channels:

The hybris Customer Service Module provides the Customer Service Agents (CSAs) with easier and faster access to the information needed to understand and quickly resolve customers’ problems. CSAs can use the Customer Service Module to create new orders, modify previously placed orders, complete partial orders, take payments, cancel orders, authorize returns, and refund payments.
The hybris Web Content Management System Module is a marketing and publishing tool that offers Web content management capabilities that are fully integrated with product content management (PCM) and multi-channel commerce functions. The hybris Web Content Management System Module makes it easy to manage content across channels – including online, mobile, and Rich Internet Applications – from a single user interface. The solution supports such features as comprehensive preview capabilities and the ability to make changes via live edit which enable organizations to easily place and re-use cross-channel marketing campaigns.
The hybris Mobile Module is an out-of-the-box mobile solution that supports all mCommerce processes from rich product presentation over search and navigation to mobile payment and fulfillment. It is fully integrated into the hybris eCommerce solution so retailers can easily integrate mobile as part of a holistic multichannel strategy. The hybris Mobile Module also supports barcode and NFC integration.
For organizations that want to develop their own mobile app, hybris offers a fully integrated Mobile App Software Development Kit that allows developers to quickly create a native mobile application without requiring a deep knowledge of the hybris Platform. The hybris Mobile App SDK comprises API libraries and sample applications for both Android and iOS mobile devices. The libraries allow easy communication with hybris back-end while sample applications can serve as a best practice guide and starting point for creating new customized mobile apps.
The hybris InStore Module is the purpose-built application running on the tablet device. It enables the retailer to identify products, display the detailed product information, and check stock levels.

2)Offline Channels:

Despite predictions of a paperless world, printed catalogs and flyers continue to be important for retailers, manufacturers and distributors. To be effective, print materials must be kept up-to-date
and consistent with content being used on other marketing channels. To be cost-effective, catalog publishing must also be automated so it delivers relevant and accurate content without requiring manual content development.
The hybris Print Module provides the best of both worlds, delivering advanced content management and automation that enables easy creation of printed materials while increasing efficiency and reducing costs.

Orders:

The term Order is related to the users connected by the selling-buying relation. Order holds all the necessary information about the purchased products and services, addresses, payment methods, discounts and promotions info, fulfillment status, and a lot of other data that can vary depending on the particular business environment.
The hybris-made Order Management systems provide tools that can handle all the activities related to the order-handling processes like creating new orders, modifying existing orders, revoking the already created orders, including the modifications originating from promotions and discounts, calculating based on several criteria, and triggering pre-defined actions based on the existing business rules.
Order management systems from hybris support users by making the whole process easier and more comfortable, offering one central point that hides the complexity of the multi-channeled background of the ordering process.
Users can check on-the-fly the availability of products, update shipping and delivery information, check the order status, and see the total cost of the ordered goods including the shipping costs depending on the location and delivery methods. The systems support multiple methods of payment and are extensible and customizable.
Now you can decide for the Order Management Module with or without OMS for OmniCommerce that can be deployed on your hardware. You could also choose the Order Management Services that is deployed in the OnDemand environment and allow you to use all the purchased services without the need of investing and taking care of the hardware infrastructure.


1)Order Management Module:

The hybris Order Management Module forms part of the hybris on-premise offering. Its main purpose is to provide a centralized hub for processing, controlling, and routing orders placed via different channels, also known as distributed order management. The Integration Server offers open interfaces to integrate connectors to warehouses, financial systems, payment, fraud service providers, and other to guarantee coverage of the complete ordering process. It is optimized for handling large amounts of orders placed at peak times as well as for business reporting.
Key features of the Order Management Module:
Order flow control and management
Order versioning
Fraud checking
Order cancellation
Scheduled orders and replenishment
Multi-tender payment types
Return and cancel order service



2)OMS for OmniCommerce:

The new Order Management Services (OMS) for OmniCommerce are complementary with the Order Management Module and offer single view of inventory across all channels, sourcing and allocation, pick, pack, and dispatch. All this can be managed in the new OMS Cockpit. You can either use all the services that are included, or only use the services and workflows that are relevant to your strategy.

Key features of OMS for OmniCommerce:

Single view of inventory
True real-time inventory management
Order workflows
Sourcing and allocation
Pick, pack, and dispatch
OMS Cockpit

If you use the Omni channel concept it will give the different type of prices to the user whether user accessing mobile site it provide different price for the item. If the user accessing through desktop it provide different price for the item.

Hybris Login
For more information hybris license needed to provide the full fuctionalities.

What is [y] Hybris ?
Hybris is one of the upcoming agile and comprehensive commerce suite. Hybris platform is simple and based on open standards like Spring, ZK, SOLR/Lucene, ANT, Groovy, Apache Commons. The hybris commerce suite is engineered for expansion, extension and scale.

How’s the [y] Hybris architecture ?
From business standpoint the hybris Commerce Suite is divided into individual packages, such as Commerce, Content, Channel and Orders. These packages are bundles of functionality assembled for a certain range of business functionality.

From a technical point of view, packages consist of individual modules (aka extensions).
Extensions written by hybris provide standardized functionality and are supported and maintained by hybris.


hybris Commerce Suite is run in a Java Virtual Machine on a Servlet Container or a J2EE-compliant application server (such as IBM Websphere or Oracle WebLogic) and connects to an external database (MySQL, Oracle DB, Microsoft SQL Server). Internal caching and persistence mechanisms allow the hybris Commerce Suite to run on a Servlet Container. A full-fledged J2EE-compliant application server can be used, but is not necessary.




What are the key Hybris commerce capabilities and features which comes out of the box  ?

General Storefront Capabilities - Language selection , Country selection , Currency selection , SEO frienddly URLs
Product Search - Solr-based product search with Keyword Search , Keyword Autocomplete , Spelling suggestions , Faceted browsing and more
Merchandising
Personalization and Promotion
Catalog Navigation
Product Display
Cart
Checkout
Hosted Payment
Customer Account
Store Location
Content Management
Data Import / Export
Google Local / Google Shopping
Content Pages and Templates
Organization Management
Jirafe Customer Intelligence
Google Analytics
Quote Negotiation
Order Approval
Order Management (OMS)
Store Locator
Device Detection

Lets dig deeper into some of the other concepts which is essential to know –

Hybris Cockpit framework –
The hybris Cockpit framework offers a large number of highly configurable components which can be used to build a new cockpit for your customers needs, such as for example workflow and comments.

The hybris Cockpit framework is the foundation for all hybris Cockpits. It offers a large number of highly configurable components, which can be used to build a Graphical User Interface (GUI) to support high-level business use cases, allowing users to perform all their common tasks quickly and intuitively. The hybris Cockpit framework complements the functionality offered by the hMC, which provides lower-level control over all the data in the hybris system.

The hybris Cockpit framework is based on ZK, a rich internet application (RIA) framework that enables desktop-like GUIs within a web browser. The ZK Framework is also well supported by Spring. ZK delivers a rich set of user interface (UI) components, making it easy and quick for developers to deliver a rich front end experience.

The major features of the hybris Cockpit framework include:
Security infrastructure based on Spring security
Ready to use front end template
Base configuration as a starting point for new applications, based on Spring
Reusable front end components in addition to existing ZK components
Generic abstraction of persisted items in the front end layer via the Type Service
GenericSearch providers
Highly customizable front end
Automatically stored user interface configuration at application run time
Drag and drop functionality
Here’s the key Hybris cockpits listed with brief description -

Hybris Administration Console -  The hybris Administration Console is an administration Web page provided by the hac extension. It provides functionality for administration, monitoring, and configuration of the hybris Commerce Suite.
Hybris Management Console (hMC) - hMC is the administration tool of the hybris Commerce Suite. As part of the hybris Commerce Suite, it runs in web browsers. Using the hMC, you can manage business objects of the hybris Commerce Suite such as products, customer data, orders.

Product Cockpit - The hybris Product Cockpit enables organizations to manage and structure product information and catalogs in high-volume and collaborative environments. Product managers can visualize their input from multiple perspectives and make product management processes more efficient

WCMS Cockpit - The hybris WCMS Cockpit enables you to manage data of a website. For efficient management of information on your online shop, you can use both the catalog perspective and live edit perspective. Each of them provides you with different ways of data management.
In the hybris WCMS Cockpit you can easily do the following:
·         Create and update website pages and content components
·         Check and change website pages status
·         Synchronize catalog versions of your website
·         Create collections of chosen pages
·         Search for website pages, according to advanced criteria

Admin Cockpit - At present, the hybris Administration Cockpit is used for the manipulation of: Data Validation constraints and Instances of types

Customer service Cockpit - The hybris Customer Service Cockpit enables you to quickly and efficiently manage the customer and orders in the call-center environment. 

Report Cockpit - The hybris Reporting Module adds Report Cockpit in which users can create and manage personal Dashboard containing rich graphical report widgets.

Print Cockpit - The hybris Print Cockpit enables you to create the publication structure and to manage the publication data for in an intuitive and user-friendly way. Linked with Adobe InDesign, it is a unique and powerful application.

Lets take closer look at some technical bits –

Adding a new page in Hybris –
Create a new page using the cmscockpit and with the available templates(we can also create new templates using the hmc as per the requirement).
Add components to the content slots available
Create a controller to handle the user requests for the newly created page.
Get the request mapping from the request, perform the business logic and return the model and view

Adding a new component in Hybris –
Create own item in items.xml file as below
            jaloclass="de.hybris.platform.endeca.jalo.cms2.components.OurComponent">
           //necessary attributes go here.....
 Create a new controller OurComponentController.java
      Note: The name of controller is important and should be created as follows: Component Type +"Controller" (in       our case OurComponentController). Beside that we also have to create a representation of our component           ourComponent.jsp

      All the controllers  are defined the way we define beans in Spring MVC in the spring-servlet.xml file as                 mentioned below
 Perform the business logic and return the model and view.


Creating new extensions --
The hybris Commerce Suite comes with an extension generator system called extgen located in the ${HYBRIS_BIN_DIR}/platform/extgen/ directory. Using extgen, you can create new extensions based on extension templates.

The hybris Commerce Suite comes with the following extensions, which you can use as a template for new extensions:

yempty
ycockpit
yaddon
ybackoffice
yacceleratorstorefront
yacceleratortest
ycommercewebservices
yinstoreinitialdata
yacceleratorcore
yacceleratorfacades
yacceleratorinitialdata

Extgen prompts you to specify:
The extension's name.
The extension's Java package.
The extension template to use.
After you have provided the prompted values, extgen does the following:
Copying the extension template to a temporary directory.
Modifying the extension template to reflect the specified values.
Copying the new extension from the temporary directory to the directory specified by  the extgen.extension.path property in the project.properties file.
To create a new extension we follow following steps -
Optionally: Modify default values for the extension generation process.
Create a new extension.
Reference the new extension in localextensions.xml file.
Rebuild the hybris Commerce Suite.
Update the hybris Commerce Suite.
Afterwords, you can start implementing your business logic in the new extension.

How to get started with Hybris ?
Best to register at Hybris and get started. As of now they only allow certain partner companies to register so please check with your organization.
Once you registered at their wiki then you can access the product documentation.

I would highly recommend doing the Hybris core and commerce Trails. They are logically sequenced and it helps to understand overall product features and capabilities. Make sure you are good with Spring framework fundamentals , Annotations and ant commands.


Final thoughts ... No deny that Hybris has put great efforts to bring a light weight agile commerce framework which seems very promising. Best part is it cuts lot of development time to build some of the common features in a commerce site in no time, Their modular approach and open stack also gives you enough choice to pick and chose as per your need. It will be interesting to see how their future releases fair. I am yet to see how it scales and perform in a high volume and high transaction environments.