Websphere Commerce Questions and Answers I.

It was my first job interview related to IBM websphere commerce, it was conducted via Skype by technical head of some company from Malaysia.This was a bit fun, a bit irritating as both of us were facing so much distortion,  line was going to break again and again, we both(but mostly, it was me) were like, “what are you saying?”,”are you there?”,”come again”. It was fun because there were few things that I did not have very clear idea about at the time of interview and that guy was decent enough to actually told me where I was wrong and what was the correct answer/concept.To that awesome person: Wherever you are,Thank you, Sir!

Q1: How to know whether an inventory is allocated for the order or not?
Ans: By checking in to OrderItems table InventoryStatus column.If that column has a value allc then an inventory is allocated for the order.

Q2: What is fulfillment center?
Ans: Stores use fulfillment centers or Delivery Centers as both inventory warehouses and, shipping and receiving centers from where the actual delivery of merchandise takes place. One store can have one or many fulfillment centers.

Q3: Different types of Charges?
Ans:
There are 7 types of charges, those are:

a)discount
b)shipping
c)sales tax
d)shipping tax
e)shipping adjustment
f)coupon(forgot it during interview:) )
g)surcharge(didn’t know about it, interviewer told me about this)

Q4: Different types of kits
Ans:There are four types of kits and bundles

  1. Prebuilt Kit: A prebuilt kit is a collection of catalog entries that cannot be sold separately. A prebuilt kit has own its price and cannot be changed once it is added to the shopping cart. Inventory of prebuilt kit is independent of its component parts.
  2. Dynamic Kit: A dynamic kit is a group of product that is ordered as a unit. The components of kit cannot be modified in the order, but they are reconfigured by the user having rights. The entire configuration must be fulfilled together.
  3. Static Kit: A static kit is a group of product that is ordered as a unit. The components of kit cannot be modified in the order. The individual components within the order cannot be modified and must be fulfilled together. A static kit will be backorder if any of its components is unavailable. A static kit has no inventory of its own. When the static kit is purchased, the inventory of its component part is decreased.
  4. Bundle: A bundle is a collection of catalog entries which allows customer to buy multiple merchandise with one click. The bundle components can be sold separately.

Q5: what is the difference between product and item?
Ans: An item is a tangible unit of merchandise that has a specific name, part number and price.
A product acts as template for a group of items(or SKUs) that exhibits the same attributes.
Explaination:
Item is a sale-able merchandise where as Product is a group of sale-able merchandise which share certain attributes. For example – Car is a product whereas 2015 Audi Q7 is an item.
Moreover,Quantity is always attached to SKU (mentioning SKU in the answer lead interviewer to ask next question 🙂 ) or items. Product quanity has no relevance in terms to identify the current stock or reorder condition.

Q6: Explain the partnumber, SKU?
Ans:Every product has a unique identification number when it is manufactured i.e.,PartNumber.
SKU is Stock keeping unit. Items are referred to as SKU as they are the narrowest identifier for which business needs to track quantity.
SKU is a store keeping unit which is a number which indicates that a product is order-able.

Q7: Difference between MasterCatalog and sales catalog?
Ans:Master Catalog is a centralized location to manage stores. Everything that is required for the store is present in master catalog. It is a single catalog that contains products, items, relationships and prices that is required for sale in the store.
While  a sales catalog is a subset of the merchandise and services found in the master catalog.

Every store in the WebSphere Commerce system must have a master catalog. Only one master catalog can exist at a time, and multiple stores can share a master catalog. However, you can create one or more sales catalogs. A sales catalog has a flexible display structure that allows you to associate products to more than one category if required..

Q8: Describe Catalog subsystem and the tables used in WCS for managing this ?
Ans. The catalog subsystem or Catalog Management provides online catalog navigation, partitioning, categorization, and associations. In addition, the catalog subsystem contains all logic and data relevant to an online catalog, including catalog groups (or categories), catalog entries, and any associations or relationships among them.

Q9: Tables used for Catalog subsystem
1. CATENTRY
2. CATENTREL

Q10: What are the tables used for Catalog Management ?
Ans. CATALOG , CATALOGDSC , CATENTRY, CATENTREL, CATENTATTR, ATTRIBUTE, ATTR , ATTRVAL , ATTRDESC , ATTRVALDESC , CATENTTYPE , CATGPENREL.

Q11: what is optimistic locking?
Ans: WebSphere Commerce uses an optimistic locking scheme that allows the database transaction isolation level that you use in the application to be lowered so that fewer locks are placed against the database assets . Using that scheme, database rows that  normally accessed concurrently are not locked with an intent to update when they are read. Instead, when the update is eventually made, the row is checked to make sure it has not been updated concurrently since it was read. If it has been updated concurrently, then the transaction is rolled back and the command may be restarted from the beginning in a new transaction, if appropriate. In this scheme, performance is improved when concurrent updates do not normally occur, because the relatively expensive process of obtaining the database locks with intent to update is avoided. On the other hand, for those operations where concurrent updates are more likely to occur, pessimistic locking, whereby intent to update locks are obtained when the row is read, continues to be used, thus avoiding the more expensive process of rolling back and re-starting from the beginning in a new transaction.

Q12:Explain the Dynacache?
Ans:I talked about it so much, so it became a very length answer , had to wrote it in a separate blog post.

Q13: What is the difference between Controller and Task Command.
Ans: Controller Command is the command that gets called upon a request, just like We have actions in struts and controller in Spring. Task is a step in this bigger process. Task command are the commands that perform specific task for a controller command, like service classes in other frameworks. In order to complete the request, a controller command may invoke multiple task commands.

Moreover,
 a. There is a url mapping for controller command whereas Task command don’t have URL mapped to them.
 b. Controller command gets invoked before the task command.

 

Q14: Is it necessary to register controller command  in CMDREG table ?
Ans. It is not necessary to enter data in the CMDREG table, but an entry should be made in the struts-config.xml.And if CMDREG entry is not made you have to specify the default classname in the Interface. The controller command can be registered in the CMDREG table by xml and SQL query.

To register a new controller command, or a new task command, in the CMDREG table, create an entry in the XML file for each new/customized controller or task commands, following is an example of a task command:

<cmdreg storeent_id=”@storeent_id_1″ interfacename= ” com.ibm.commerce.payment.commands. DoPaymentCmd ” classname = “com.ibm.commerce.payment.commands .DoPaymentMPFCmdImpl”/>

 Register by SQL query

insert into CMDREG (storeent_id, interfacename, description, classname) values  (0,’ com.ibm.commerce.payment.commands.DoPaymentCmd ‘, ‘Payment  command for all items’, ‘ com.ibm.commerce.payment.commands.DoPaymentMPFCmdImpl ‘).

If there is no entry for the command in the CMDREG table, then controller will check defaultCommandClassName in the interface.

public interface PaymentNotificationServiceCmd extends ControllerCommand {

public static final String NAME = PaymentNotificationServiceCmd .class.getName();

public static final String defaultCommandClassName =PaymentNotificationServiceCmd Impl .class.getName();

}

Leave a comment