Welcome to the IBM Websphere Commerce Hub


Welcome to the IBM Websphere Commerce Hub

Come join me in my journey to explore the various features and capabilities of IBM Websphere Commerce and understand how retailers can benefit from its really cool out-of-box functionality.

Tuesday, October 22, 2013

Websphere Commerce Data Cache

  • The WebSphere Commerce data cache can be configured to use DistributedMap object caches, by defining specially named.object caches in the cacheinstances.properties file.
  •  Object caching in specified DistributedMap instances causes each type of data to be cached in its corresponding DistributedMap object.
  • Takes precedence over the dynamic caching configuration specified in cachespec.xml - the configurations are no longer read from the cachespec.xml for the objects cached using the object caches - hence priority, timeout, or inactivity settings cannot be fine-tuned using cachespec.xml and need to be defined using various DistributedMap attributes in the cacheinstances.properties file.
  • Can be configured in two ways :
    • Define DistributedMap objects with the default JNDI names in the cacheinstances.properties file
    • Use the WebSphere Application Server Integrated Solutions Console. From the left menu, click Resources > Cache instances > Object cache instance
  •  The DistributedMap cache objects cannot be viewed in Dynamic Cache Monitor which comes packaged with WAS. The Extended Dynamic Cache Monitor need to be installed. The steps and download can be found in the here

Related Reading:
 IBM WCS 7.0 Infocenter

Thursday, July 25, 2013

Spell Checker in Management Center

You can customize the Spell check feature within the Management Center by adding in new words to the dictionary. Please note that with WCS - new dictionary cannot be created though.

To add words to the Management Center spell check dictionary, create <word> elements as children of the root <dictionary>  element of the file     LOBTools > WebContent > WEB-INF > dictionaries >addenda.xml using the below guidelines and restart the server.
      
SAMPLE:
        <word>sampleword1</word>
        <word>sampleword2</word>
        <word locale="de-DE" >sampleword3</word>
        <word locale="en-US" >sampleword4</word>
        <word locale="en-US,fr-FR" >sampleword5</word>
        <word locale="en-US,fr-FR,it-IT,">sampleword6</word>

Specify a comma separated list of locales in the locale attribute to indicate the languages for which each word is available.

If the locale attribute is not specified, the word will be available for all languages.

The following locales can be specified:
                  
  Language - Country/Region       Locale code
        Afrikaans - South Africa        af-ZA
        Arabic                          ar-XX
        Catalan                         ca-CT
        Czech - Czech Republic          cs-CZ
        Danish - Denmark                da-DK
        German - Switzerland            de-CH
        German (Germany)                de-DE
        Greek - Greece                  el-GR
        English - Australia             en-AU
        English - United Kingdom        en-GB
        English (US)                    en-US
        Spanish (Spain)                 es-ES
        French - Canada                 fr-CA
        French (France)                 fr-FR
        Italian (Italy)                 it-IT
        Norwegian (Bokmal) - Norway     nb-NO
        Dutch - The Netherlands         nl-NL
        Norwegian (Nynorsk) - Norway    nn-NO
        Polish (Poland)                 pl-PL
        Portuguese (Brazil)             pt-BR
        Portuguese - Portugal           pt-PT
        Russian (Russia)                ru-RU
        Swedish - Sweden                sv-SE

Friday, June 7, 2013

Websphere Commerce FEP6 Highlights

1. Search Enhancements : Enhancements to the Search Rules to improve search – enabling to promote , demote or exclude the products from search results based on product attributes and dynamic content such as inventory.

2. Improved Navigation and product Recommendations using Dynamic Merchandising

3. Improved Content Management through Management Centre: 
  • Simplified marketing asset , promotion and attribute management
  • Business control over labels for eMarketing Spots without IT involvement
  • Enable the business user to define image map content by specifying coordinates and links without the need for IT involvement.
  • Enhancements to the Store Update and Preview – In-context previews , “click-to-edit” capabilities , Preview link generation and shares
4. Data load enhancements – Support for XML file uploads and support for delta uploads

5. Mobile enhancements ( using IBM Worklight ) – Integration with IBM Worklight and hybrid Android reference application built on the IBM Worklight platform provided OOB. Worklight software licenses need to be acquired separately

6. Tealeaf Integration- The Aurora starter store checkout flow is pre-configured for Tealeaf Customer Experience in Feature Pack 6.0. Tealeaf software needs to be acquired separately.

7. Advanced catalog integration - extensive work flow support to foster collaboration in the creation and maintenance of product information, and with advanced access control (sub-trees and field-level), can help ensure trusted data quality of product information.Enabled by IBM InfoSphere® Master Data Management Collaborative Edition V10.1, which is licensed seperately.

WebSphere Commerce Search Cookbook


The IBM Support blog, called the 'Commerce Search Cookbook' covers common customizations requested by customers.

https://www.ibm.com/developerworks/community/blogs/CommerceSearch/?lang=en


This is a great reference  point for SOLR issues and solutions - so sharing with the readers.

Happy Exploring!

Monday, June 3, 2013

Tutorial : E-mail Templates & Custom Placeholders

E-mail templates define the structure and content of marketing e-mails that you send to customers using an e-mail or dialog activity. 
E-mail templates can contain placeholders for content, such as e-Marketing Spots, links, unique promotion codes, and the customer's first and last name. When it is time to deliver the e-mail, the server replaces the placeholders with actual content.

To know more about how to work with e-mail templates , visit the Infocenter link

While using the email templates , we may be faced with providing custom placeholders , as per the client requirements.

Below are the steps to do so. For demonstration purposes , we would be introducing the customer's phone number as a custom placeholder attribute.

1. Customize the Management Center Open-laszlo files to include the new custom tag for your new custom attribute.

 File
/LOBTools/WebContent/WEB-INF/src/lzx/commerce/marketing/restricted/widgets/EmailTemplateRichTextEditor.lzx

Step 1: Modify the  open lazlo file to introduce "Customer Phone Number" in the selection dropdown.

1. Locate the text "<mktTextlistitem value="lastName" displayName="${mktMarketingResources['lastName'].string}"/>"

2. Add the below text in the next line
<mktTextlistitem value="phoneNumber" displayName="Customer Phone Number"/>

The completed code will look as follows :


Step 2: Modify the  on-click handler to insert the custom tag <e-mail:PhoneNumber /> in the editor when the user selects "Customer Phone Number" and clicks on "Insert"


1. Locate the text "<handler name="onclick">"

2. Add the below text in the function implementation
  else if(selected == "phoneNumber") {
     classroot.insertTextAtSelection("<e-mail:PhoneNumber />");
   }


The completed code will look as follows :


Step 3: Build the Open Lazlo project - LOBTools
Right Click "LOBTools" project and click on "Build OpenLaszlo Project" as show in the figure below. Restart server.
.

This concludes the Management Center customizations.

  



2. Introduce a Tag implementation class

1. Create a tag implementation class which would contain the logic to replace the placeholder tag <e-mail:PhoneNumber /> with actual content.

This class should implement the "com.ibm.commerce.emarketing.emailtemplate.tag.Tag" interface. Follow the link to understand the interface methods which need to be implemented.

For the pupose of this tutorial , let the fully qualified name of this class be :

'com.wcshub.commerce.emarketing.emailtemplate.tag.TagPhoneNumber

2. Make an database entry in the table TAGCLASS.
To more about this table , follow the Infocenter link.  The sample query is provided below:

 insert into tagclass values ('PhoneNumber',  'com.wcshub.commerce.emarketing.emailtemplate.tag.TagPhoneNumber' ,  'Implementation class for Phone Number Tag' , NULL  );

The tutorial is now complete. Test the customizations.

I hope you found this topic interesting and informative - Please leave your feedback comments. 

Sunday, January 27, 2013

Business Object Document : Websphere Commerce Web Services

The WebSphere Commerce BOD command framework architecture uses well defined interfaces to decouple the implementation of the presentation layer, business logic layer and persistence layer. From the business logic layer perspective, OAGIS messages are used as the interface for making requests to retrieve business data or invoke business logic. The BOD command framework provides the capability to process these BOD requests and responses.

Found this really nice pictorial description of the various assets and processes involved in the BOD development in the  IBM Red Book (sg247619)

More to come to BOD Command Framework... 

On reader's requests -

See Also:

 

Monday, January 21, 2013

Service Oriented Integration (SOI) - Websphere Commerce Web Services

As part of the WebSphere Commerce transition to SOA, there is an effort to decouple components to allow re-use of WebSphere Commerce business services in other environments besides the WebSphere Commerce application. In order to support this decoupling, the core infrastructure is the first piece that needs to run independently so it can be leveraged in other environments as well. The request handling has changed to create a lightweight runtime environment that new and existing components can use. This lightweight runtime focuses on the processing of business object documents (BODs). This new architecture paves the road to SOA adoption by standardizing on how clients will talk with SOA components.
WebSphere Commerce now provides 4 SOI service modules -- logical groupings of business objects that have been grouped to standardize communication. These service modules are:
  • Member
  • Order
  • Catalog
  • Contract
The SOI modules ultimately maps to the ControllerCommand. And you would often extend the OOB commands for your custom logic - use EJBs for persistance much as the way as you did in WCS 6.0
( I can see a lot of v6 developers expressing a huge sigh of relief ). Most of the time what the developers struggle is how to map a service to a command name. I have put together a small diagram showing the complete flow - Taking a very common scenario - extending the Registration process to store custom membership attributes.

I hope you find it easy to understand and helpful!

 

The sad part is that we may not be able to really see the "actionCode" being used in the method ( registerPerson in this example ) since we do not have the access to the source code ( I narrowed down the command by my past experience in v6 ) - but what IBM is done is help the developer community at large is provide the methodName to CommandName mappings directly in the following link:

http://pic.dhe.ibm.com/infocenter/wchelp/v6r0m0/index.jsp?topic=%2Fcom.ibm.commerce.component-services.doc%2Fconcepts%2Fcwvcs.htm

The following is a mapping for the MemberFacadeClient methods and the corresponding URL commands:
  • Map registerPerson(Map) - UserRegistrationAdd
  • Map updatePerson(Map) - UserRegistrationUpdate
  • Map addAddressForPerson(Map) - AddressAdd
  • Map updateAddressForPerson(Map) - AddressUpdate
  • Map deleteAddressForPerson(Map) - AddressDelete
  • Map registerOrganization(Map) - OrgEntityAdd
  • Map updateOrganization(Map) - OrgEntityUpdate
  • Map addAddressForOrganization(Map) - AddressAdd
  • Map updateAddressForOrganization(Map) - AddressUpdate
  • Map deleteAddressForOrganization(Map) - AddressDelete

If you really want to appreciate the actionCode concept , refer the below method used in the SOITutorialStoreFacadeClient.java 

( Find the details of the above in the Infocenter TutorialStore )

So, though you may not need to follow the entire web of configurations but I feel this is worth knowing.

Happy learning!