atg interview questions & answers

11
ATG Interview Questions 1 1. What are the two methods in a component Ans: getters & setters 2. Have you worked with repositories Ans: if you answer yes be ready to answer questions on cache, implementing a rep ository from scratch, and others. (please see my post on repositories) 3. Name 2 types of tables Ans: primary and auxillary 3. Name 2 types of tables Ans: primary and auxillary 4. Have you worked on shopping carts Ans: CartModifierFormHandler , ShoppingCartFormHandler 5. Name 2 types of checkout Ans: Express Checkout, Guest Checkout 6. Difference between Express Checkout and Checkout Ans: Express- Logged in user information has stored Guest- will enter all information (shipping, billing, review steps) and informat ion is not saved 7. What is BCC Ans: Business Control Center- UI for Business Users (to upload content to Catalo gs, create promotions etc) 8. What are custom dsp tags Ans: Custom tags is written by the developer. Dsp is all ready to use. you can use to render content dynamically by linking Nu cleus components directly to your JSPs. Essentially, the DSP tag libraries let y ou connect your JSP content to the Java code at work behind the scenes so you ca n separate your application logic from your presentation layer. ATG 7 provides you with three tag libraries: JSTL, DSP/DSPEL, and Core. You can find these tag libraries in /DAS/taglib. 9. Difference between droplet, FormHandler and servlet: Ans: Servlet is a java class. Droplet is from ATG Droplet is used to render or put data in the db Servlet is used to submit data, it acts as a controller. It is not used to put d ata. Servlet also renders the portion of JSP page. FormHandlers are used when there are forms. They help to perform validation for the forms. 10. Difference between dsp and dspel tags Ans: The DSP tag library tags support runtime expressions, such as references to scripting variables. These tags use a id attribute to name the scripting variab les they create. The DSPEL tag library tags support JSTL Expression Language (EL) elements that a re also evaluated at runtime. These tags often produce a result object named by the var attribute. For custom tags we need to write the properties file and a class file to define the functions. We need to include a tag file with extension .tld. (tag library d efinition) and in the droplet include the path of the tag uri <% tag uri ..%> For example we can write a custom tag to calculate the shipping rate with promot ion and save it and then extend wherever required. 1. What is ATG Dynamo? What is ATG Framework? Ans. ATG Dynamo or Dynamo Application Server(DAS) is a J2EE application server f rom Art Technology Group. Atg framework is a Web Application framework for build ing web applications. ATG dynamo implements the ATG framework. The application f ramework can also be run on all major J2EE application servers (JBoss, WebLogic, WebSphere etc...). 2. What is the scope of Dynamo Components? Ans. There are three different types of scopes for ATG components namely 1. request 2. session 3. Global

Upload: satish-pandey

Post on 27-Dec-2015

22 views

Category:

Documents


0 download

DESCRIPTION

ATG Interview Questions & Answers

TRANSCRIPT

Page 1: ATG Interview Questions & Answers

ATG�Interview�Questions�1�1.�What�are�the�two�methods�in�a�componentAns:�getters�&�setters2.�Have�you�worked�with�repositoriesAns:�if�you�answer�yes�be�ready�to�answer�questions�on�cache,�implementing�a�repository�from�scratch,�and�others.�(please�see�my�post�on�repositories)3.�Name�2�types�of�tablesAns:�primary�and�auxillary3.�Name�2�types�of�tablesAns:�primary�and�auxillary4.�Have�you�worked�on�shopping�cartsAns:�CartModifierFormHandler�,�ShoppingCartFormHandler5.�Name�2�types�of�checkoutAns:�Express�Checkout,�Guest�Checkout6.�Difference�between�Express�Checkout�and�CheckoutAns:�Express-�Logged�in�user�information�has�storedGuest-�will�enter�all�information�(shipping,�billing,�review�steps)�and�information�is�not�saved7.�What�is�BCCAns:�Business�Control�Center-�UI�for�Business�Users�(to�upload�content�to�Catalogs,�create�promotions�etc)8.�What�are�custom�dsp�tagsAns:�Custom�tags�is�written�by�the�developer.Dsp�is�all�ready�to�use.�you�can�use�to�render�content�dynamically�by�linking�Nucleus�components�directly�to�your�JSPs.�Essentially,�the�DSP�tag�libraries�let�you�connect�your�JSP�content�to�the�Java�code�at�work�behind�the�scenes�so�you�can�separate�your�application�logic�from�your�presentation�layer.ATG�7�provides�you�with�three�tag�libraries:�JSTL,�DSP/DSPEL,�and�Core.�You�can�find�these�tag�libraries�in�/DAS/taglib.9.�Difference�between�droplet,�FormHandler�and�servlet:Ans:�Servlet�is�a�java�class.�Droplet�is�from�ATG�Droplet�is�used�to�render�or�put�data�in�the�dbServlet�is�used�to�submit�data,�it�acts�as�a�controller.�It�is�not�used�to�put�data.Servlet�also�renders�the�portion�of�JSP�page.FormHandlers�are�used�when�there�are�forms.�They�help�to�perform�validation�for�the�forms.10.�Difference�between�dsp�and�dspel�tagsAns:�The�DSP�tag�library�tags�support�runtime�expressions,�such�as�references�to�scripting�variables.�These�tags�use�a�id�attribute�to�name�the�scripting�variables�they�create.The�DSPEL�tag�library�tags�support�JSTL�Expression�Language�(EL)�elements�that�are�also�evaluated�at�runtime.�These�tags�often�produce�a�result�object�named�by�the�var�attribute.For�custom�tags�we�need�to�write�the�properties�file�and�a�class�file�to�define�the�functions.�We�need�to�include�a�tag�file�with�extension�.tld.�(tag�library�definition)�and�in�the�droplet�include�the�path�of�the�tag�uri�<%�tag�uri�..%>For�example�we�can�write�a�custom�tag�to�calculate�the�shipping�rate�with�promotion�and�save�it�and�then�extend�wherever�required.1.�What�is�ATG�Dynamo?�What�is�ATG�Framework?�Ans.�ATG�Dynamo�or�Dynamo�Application�Server(DAS)�is�a�J2EE�application�server�from�Art�Technology�Group.�Atg�framework�is�a�Web�Application�framework�for�building�web�applications.�ATG�dynamo�implements�the�ATG�framework.�The�application�framework�can�also�be�run�on�all�major�J2EE�application�servers�(JBoss,�WebLogic,�WebSphere�etc...).�2.�What�is�the�scope�of�Dynamo�Components?�Ans.�There�are�three�different�types�of�scopes�for�ATG�components�namely�1.�request2.�session3.�Global

Page 2: ATG Interview Questions & Answers

Global�is�the�default�scope�3.�What�is�Nucleus?�Ans.Nucleus�is�ATG`s�open�Object�Application�Framework.�ATG�7�is�said�to�be�a�component-centric�development�platform.�The�ATG�7�Web�applications�are�nothing�but�individual�JavaBean�components�assembled�together.�These�JavaBean�components�are�configured�and�linked�together�by�.properties�files�within�Nucleus.�In�Nucleus,�each�service�is�packaged�as�a�JavaBean�or�set�of�JavaBeans.�These�JavaBeans�are�configured�individually�and�mounted�into�a�namespace.�The�beans�then�interconnect�with�the�beans�representing�other�services.�Nucleus�is�responsible�for�interpreting�the�component�configurations�and�the�management�of�the�component�namespace.�Dynamo�uses�the�Nucleus�framework�to�organize�components�into�a�hierarchical�structure�(similar�to�a�directory�structure).�Each�Nucleus�service�has�a�unique�Nucleus�name.�For�example,�the�default�javax.sql.DataSource�component�is�located�at�/atg/dynamo/service/jdbc/JTDataSourceNucleus�is�the�core�of�the�entire�ATG�system.�It�creates�and�configures�Nucleus�components�(also�called�beans�and�JavaBeans)�and�organizes�them�into�a�hierarchical�namespace,�essentially�giving�them�a�place�to�live�so�they�can�be�referenced�by�other�components.�By�reading�the�.properties�files�associated�with�each�component,�Its�Nucleus�which�figures�out�that�which�components�are�to�be�used�in�an�application�,initializes�them�to�their�default�values�and�how�decides�about�how�they�connect�to�each�other.�This�model�makes�it�easier�for�the�developers�to�build�ATG�applications�by�configuring�and�using�the�pre-built�components�instead�of�writing�a�lot�of�Java�code�from�scratch.�4.�What�is�ATG�Repository?�Ans.ATG�Repository�refers�to�the�ATG`s�way�of�accessing�the�Database�through�programs.�It�is�somewhat�similar�to�what�Hibernate�offers,�Seperating�the�Application�Logic�from�that�of�Database.�So�Atg�repository�provides�a�fine�grained�abstraction�between�the�application�logic�and�Database.�Thus�it�supports�the�ATG`s�Data�Anywhere�paradigm,�the�application�logic�created�by�developers�to�interact�with�data�need�not�change�for�any�change�in�the�source�of�that�data.�ATG�repository�architecture�ensures�that�the�source�of�the�data�is�hidden�behind�the�Dynamo�Repository�abstraction.�It�would�be�easy�to�change�from�a�relational�data�source�to�another�or�to�an�LDAP�directory�since�none�of�the�application�logic�would�need�to�change.�Once�data�is�retrieved�from�a�data�source�it�is�transformed�into�an�object-oriented�representation.�Manipulation�of�the�data�can�then�be�done�using�simple�getPropertyValue�and�setPropertyValue�methods.�The�Repository�API�ties�in�closely�with�ATG�s�targeting�APIs,�so�you�can�retrieve�items�from�the�repository�based�on�a�variety�of�targeting�rules,�as�well�as�retrieving�specific�identified�items.�5.�What�is�Atg�Pipeline?�Ans�Atg�Pipeline�is�a�variant�of�Servlet�Pipeline,�In�an�ATG�pipeline�the�sequence�of�Programs�are�executed�in�a�queue.�Below�is�the�ATG�servlet�pipeline/atg/dynamo/servlet/pipeline/DynamoHandler/atg/dynamo/servlet/pipeline/TransactionServlet/atg/dynamo/servlet/pipeline/PathAuthenticationServlet/atg/dynamo/servlet/pipeline/URLArgumentServlet�/atg/dynamo/servlet/pipeline/CookieServlet�/atg/dynamo/servlet/pipeline/ContextPathServlet�/atg/dynamo/servlet/pipeline/ServletPathServlet�/atg/dynamo/servlet/pipeline/SessionServlet�/atg/dynamo/servlet/pipeline/DynamoServlet�/atg/dynamo/servlet/pipeline/SessionSaverServlet/atg/dynamo/servlet/pipeline/FormLoginServlet�/atg/dynamo/servlet/pipeline/WebApplicationDispatcherServlet�/atg/dynamo/servlet/pipeline/CgiServlet�/atg/dynamo/servlet/pipeline/ServletPathDispatcher�/atg/dynamo/servlet/pipeline/FileFinderServlet�/atg/dynamo/servlet/pipeline/MimeTyperServlet�/atg/dynamo/servlet/pipeline/MimeTypeDispatcher�/atg/dynamo/servlet/pipeline/FileServlet�

Page 3: ATG Interview Questions & Answers

It�starts�with�the�DynamoHandler�which�adds�the�Dynamo�specific�request�and�response�objects�to�the�request's�context.�Actually�the�list�of�servlets�you�will�see�depends�on�which�modules�you�have�running.�This�is�the�DAS�configuration�DPS�and�other�modules�can�and�do�add�more�servlets�to�the�pipeline.�6.�What�is�ATG�tag�library?�Ans.�Atg�tag�library�is�a�variant�of�jsp�standard�tag�library.�However�atg�provides�its�own�set�of�tag�libraries�e.g.�dsp,dspel,�core�7.�What�is�ATG�DPS?�What�are�its�elements?�Ans7.�ATG�DPS�refers�to�the�ATG�Dynamo�personalization�system.�It�is�driven�by�User�Profile�Data�and�business�rules�designed�to�deliver�the�right�content�to�the�right�user.�There�are�three�key�elements�of�the�ATG�DPS�personalization�System.�1.�User�Profile�Management2.�Content�Targetting3.�Targeted�E-mailUser�Profile�ManagementWhen�a�person�visits�a�website�driven�by�ATG�Dynamo�Personalization�Server(ATG�DPS)�website�for�the�first�time,�The�person�is�allowed�to�create�its�own�User�Profile.Once�created,�DPS�stores�that�User`s�Profile�in�its�database�repository.�This�profile�contains�a�list�of�properties�that�describe�the�person`s�characteristics,�such�as�the�name�they�entered�in�a�registration�form�or�the�date�of�their�last�login.�ATG�DPS�uses�this�profile�information�stored�in�its�database�repository�to�provided�targeted�content�to�each�other.�Content�Targeting�Targeting�is�the�process�of�displaying�1.�Content�items2.�To�a�particular�user3.�At�a�particular�time4.�In�a�particular�context�and5.�On�a�particular�rule�set.In�the�DPS�rule�based�system,�business�managers�create�rule�sets�called�content�targeters�that�control�how�content�is�displayed�on�the�web�site.�Targeting�Email�DPS�includes�a�Targeted�Email�service�for�composing�and�delivering�personalized�email�using�the�same�profile�groups�and�targeting�rules�you�use�to�deliver�content�on�your�web�site.�Also�if�you�have�Dynamo�Scenario�Server�installed,�you�can�use�scenarios�to�deliver�targeted�email.�You�can�use�targeted�email�to�perform�below�activities.�1.�Send�a�confirmation�message�to�a�new�user�who�registers�at�your�site.2.�Notify�frequent�customers�of�special�sales.3.�Notify�all�users�that�have�not�logged�into�your�site�in�several�months�that�their�accounts�will�be�closed�soon.�4.�Send�out�a�mass�mailing�with�each�message�tailored�to�its�reciepient.8.�Which�class�to�extend�while�creating�ATG�Droplets?�Ans8.�DynamoServlet.java9.�What�are�ATG�Form�Handlers?�Ans9.�ATG�Formhandler�is�the�intermediate�class�that�comes�in�between�a�jsp�form�value�and�its�bean�class.�They�are�there�to�evaluate�the�validity�of�form�data�before�it�is�submitted,�write�data�to�and�read�data�from�a�database�or�repository,�and�direct�the�user�to�different�pages,�depending�on�the�results�of�the�form�submission10.�What�is�Base�class�for�all�ATG�Formhandlers?Ans10.�GenericFormHandler.java�1.�What�is�class�Heirarchy�for�ATG�Formhandlers?How�to�create�a�FormHandler?�At�the�top�of�ATG�formhandler�class�heirarchy�there�exists�the�DropletFormHandlerinterface.�Then�come,�three�different�classes�provided�by�Dynamo�which�extend�this�interface.�They�are�as�below�atg.droplet.EmptyFormHandler�atg.droplet.GenericFormHandler�

Page 4: ATG Interview Questions & Answers

atg.droplet.TransactionalFormHandlerThe�EmptyFormHandler�is�the�most�simplest�to�implement.�It�implements�the�DropletFormHandler�interface�and�defines�blank�body�implementations�of�the�methods�in�this�interface.�GenericFormHandler�extends�EmptyFormHandler.�It�defines�the�simple�implementations�of�the�DropletFormHandler�interface�s�methods�and�the�basic�error�handling�logic.�If�errors�occur�in�processing�a�form�that�uses�GenericFormHandler,�the�errors�are�saved�and�exposed�as�properties�of�the�form�handler�component.�TransactionalFormHandler�extends�GenericFormHandler,�It�treats�the�form�processing�operation�as�a�transaction.�Though�the�methods�invoked�by�this�form�handler�are�processed�discretely,�but�their�results�are�saved�simultaneously.�The�beforeGet�and�afterGet�methods�do�the�transaction�management.�This�establishes�the�transaction�before�any�of�your�properties�are�set�or�handler�methods�are�called.�Commerce2.�What�is�an�Order�?Ans�:�An�order�is�a�container�for�commerce�items,�shipping�groups,�payment�groups�and�relationship�objects.3.�What�is�the�ShoppingCart�?It�is�a�session�scoped�component�for�holding�current�and�saved�orders.�The�class�of�ShoppingCart�component�is�OderHolder.Shopping.current�contains�the�current�order.ShoppingCart.saved�contains�saved�orders.4.�What�is�a�commerce�item?A�commerce�item�is�order�item�which�holds�the�catalogRefId�,�quantity�and�productId.5.�What�is�a�SKU?SKU�is�a�Stock�Keeping�Unit�which�is�the�actual�item�deliverable.6.�What�is�the�Catalog�hierarchy?Standard�CatalogCategoryProductSKUCustom�CatalogCatalogCategoryProductSKU7.�How�do�you�display�a�Catalog?Standard�CatalogFirst,�we�can�use�OOTB�RootCategories�targeter�using�TargetingForEach�droplet�which�will�get�all�the�root�categories�of�the�catalog�which�root�property�is�set�to�true.Custom�CatalogWe�will�get�the�user�s�catalog�from�the�Profile.catalog.allRootCategories�property�and�pass�to�the�ForEach�droplet.After�getting�the�root�categories�in�any�of�the�above�case,�use�CategoryLookup�droplet�to�lookup�categories,�ProductLookup�droplet�to�lookup�products,�and�SKULookup�droplet�to�lookup�skus.We�will�get�the�item�ids�and�pass�between�the�pages�to�display�its�details.�For�example,�we�will�pass�the�categoryId�in�the�anchor�tag�in�home�page.�When�the�user�clicks�on�the�link,�the�user�will�be�redirected�to�the�category�details�Page�where�we�use�CategoryLookup�droplet�by�taking�the�request�parameter�catoryId.�Here�will�get�all�the�child�products.�Similarly�we�will�set�the�productId�in�the�anchor�tag�and�pass�it�to�the�product�details�page�where�we�use�ProdyctLookup�droplet�to�display�the�selected�product�details.�8.�What�is�the�difference�between�Standard�Catalog�&�Custom�Catalog?The�standard�catalog�is�the�single�catalog�shown�to�all�users.�Each�user�sees�the�same�set�of�categories�and�products.The�custom�catalog�allows�us�to�create�multiple�catalogs�which�are�intended�to�show�differently�to�different�users.�We�can�target�a�catalog�to�a�specific�user�o

Page 5: ATG Interview Questions & Answers

r�an�organization�depending�upon�the�business�rules.�For�example,�we�can�create�a�separate�catalog�for�each�country�based�on�locale.�Each�locale�will�be�having�a�separate�catalog.9.�What�are�the�steps�to�create�a�new�commerce�item�type�in�the�order�repository�definition?First�in�the�orderReposiry.xml,�create�an�item�descriptor�by�extending�the�default�commerce�item�using�inheritance�concept�such�specifying�super-type�and�sub-type.�And�adding�the�new�properties�with�new�table�under�this�item�descriptor.Next�we�will�create�a�new�java�bean�by�extending�the�CommerceItemImpl�and�adding�setters�and�getters�for�the�properties�created�in�the�new�commerce�item�item�descriptor.Next�we�will�specify�the�new�commerce�item�details�in�the�OrderTools.properies.�We�will�specify�commerceItemTypeClassMap�and�beanNameToItemDescriptorMap10.�How�do�u�create�the�newly�created�commerce�item�type�into�the�order?We�will�setup�a�map�of�sku�item�types�to�the�commerce�item�types�in�the�CommerceItemManager.properties.�Then�we�will�override�the�CommerceItemManager�s�createCommerceItem�method.�We�will�take�the�skuId�(catalogRefId)�and�find�its�SKU�item�type�and�then�from�this�name�we�will�look�up�the�map�values�in�the�CommerceItemManager.properties�to�search�for�its�related�commerceItem�type�to�create.1.�How�do�you�add�an�item�to�cart?Using�addItemToOrder�method�of�CartModifierFormHandler�by�passing�catalogRefId,�quantity�and�productId�in�the�product�details�page.2.�How�do�you�display�items�in�the�cart�page?We�will�get�the�current�order�from�the�ShoppingCart�component.�We�will�pass�the�ShoppingCart.current.commerceItems�to�the�ForEach�droplet.3.�How�do�you�update�the�quantity�of�a�commerce�item�in�the�cart�page?First�we�will�set�CheckForChangedQuantity�of�the�CartModifierFormHandler�to�true�in�the�JSP�page.�And�for�the�quantity�field�we�will�give�the�name�as�catalogRefId.�Finally,�we�will�call�handleSetOrder�method�of�CartModifierFormHandler�to�update�the�quantity.4.�How�do�u�remove�items�from�cart�?We�will�set�the�removalCommerceIds�property�of�CartModifierFormHandler�to�the�items�and�call�handleSetOrder�method�of�CartModifierFormHandler.�This�is�used�to�remove�one�or�more�items�at�the�same�time.To�remove�single�item�handleRemoveItemFromOrder�method�of�CartModifierFormHandler.5.�How�do�u�save�the�order�or�cart?We�can�use�SaveOrderFormHandler�to�save�the�order.When�we�call�handleSaveOrder�method�of�SaveOrderFormHandler�,�the�current�order�will�be�saved�to�the�ShoppingCart.saved�property�and�it�will�create�a�new�order�will�be�set�to�ShoppingCart.current.6.�How�do�u�retrieve�the�saved�order�back�to�the�current�order?We�can�use�ShoppingCart.switch�method�by�passing�handleOrderId�which�will�look�up�the�order�from�the�order�repository�and�set�to�the�current�order�of�ShoppingCart.7.�How�do�u�proceed�to�checkout�page?We�will�call�to�moveToPurchaseInfo�method�of�the�CartModifierFormHandler�which�will�execute�the�moveToPurchaseInfo�pipeline�chain�and�check�the�order�and�commerce�items�and�validates�them.�Then,�checkout�login�page�will�be�displayed�if�the�user�has�not�logged�yet.�Otherwise�user�will�be�directed�to�the�shipping�page.8.�How�do�you�set�the�shipping�address�to�the�order�or�shipping�group?We�use�the�ShippingGroup�droplet�to�display�all�the�available�shipping�addresses.�The�ShiipingGroupDroplet�will�get�the�available�addresses�from�the�Profile�s�shipingAddress�and�secondaryAddresses�properties.Then�the�user�will�select�the�shippingAddress�from�the�list.�Then�the�selected�address�will�be�set�the�current�shipping�group�by�calling�the�handleApplyShippingGroups�method�of�ShippingGroupFormHandler.We�can�create�a�shipping�group�manually�by�using�the�ShippingGroupManager.createShippingGroup�by�passing�the�address.�After�that�we�call�ShippingGroupManager.addShippingGroupToOrder�method.

Page 6: ATG Interview Questions & Answers

The�user�will�also�select�the�shipping�method�and�set�to�the�shipping�group�such�as�NextDay�,�Two�Day�or�Ground.We�will�use�AvailableShippingMethods�droplet�which�fetches�all�the�shipping�methos�names�from�the�Shipping�calculators.�Each�Shipping�Calculator�has�a�property�called�shiipingMethod.9.�What�are�the�different�relationship�objects�in�the�order?ShiipingGroupCommerceItemRelationShip,�PaymentGroupCommerceItemRelationShip,�PaymentGroupShipingGroupRelationShip,�PaymentGroupOrderRelationShip10.�How�do�you�split�items�to�multiple�shipping�addresses?We�call�the�handleSpliShippingInfos�method�of�ShippingGroupFormHandler�to�split�the�item�quantity�to�different�shipping�group.�Then�we�call�handleApplyShippingGroups�method�ShippingGroupFormHandler.�On�successful�the�payment�page�will�be�displayed.1.�What�is�a�Nucleus?Nucleus�is�the�central�registry�for�the�JavaBeans�that�contain�your�application-level�logic.�It�creates�and�configures�Dynamo�components�and�organizes�them�into�a�hierarchical�namespace2.�Difference�between�dsp:�include�and�jsp:includeDsp�imports�all�objects�of�type�class�also,�where�as�jsp�imports�only�primitive�types.Jsp�includes�are�dynamic�where�as�dsp�include�are�for�data�which�is�smaller�than�64�kb.ATG�created�the�DSP�tag�library�as�a�mechanism�for�accessing�all�data�types,�including�those�that�exist�in�ATG�s�Nucleus�framework.�Other�functions�provided�by�these�tags�manage�transactions�and�determine�how�data�is�rendered�in�a�JSP.�It�s�best�to�use�tags�from�the�DSP�tag�library�only�for�tasks�that�involve�Dynamo�Application�Framework�(DAF)�resources.�Dsp�tag�support�for�the�passing�of�object�parameters�between�pages.�In�particular,�use�dsp:include�rather�than�jsp:include,�and�use�dsp:param�rather�than�jsp:param.3.�How�to�implement�shopping�cart?ShoppingCartFormHandler4.�What�is�the�main�formhandler�you�use�for�Shopping�cart?ShoppingCartFormHandler�&�CartModifierFormHandler5.�What�are�the�ATG�component�scopes(global�session�and�request)?�(see�post�on�scopes)6.�What�are�the�Advantages�of�DAF?It�is�used�to�maintain�huge�dataIt�has�repositories�which�help�is�data�anywhere�architecture.Dependency�injectionIt�can�write�any�object�of�type�1�call�in�to�the�db.Dynamo�messaging�using�patch�bay�and�jms�Inversion�of�Control��design�pattern,�whereby�software�components�are�discreteEntities�coupled�together�by�the�Nucleus�container,�rather�than�through�direct�reference.7.�What�is�a�Component?Java�bean�and�it�s�configuration�file�together�known�as�Component�in�ATG.�A�component�is�used�to�initialize�or�set�the�properties�of�a�bean�class.8.�How�ATG�pricing�works?There�are�two�types�of�pricing.�Static�pricing�and�dynamic�pricing.In�static�pricing,�we�will�display�the�listPrice�or�salePrice�of�the�SKU�in�the�productDetails�page�without�calculating.In�dynamic�pricing,�the�list�price�or�the�sale�price�of�the�SKU�passed�the�Pricing�Engine�to�calculate�the�price.The�pricing�Engine�will�execute�the�pre�pricing�calculators�first�and�then�it�looks�up�for�the�global�and�active�promotions�of�the�user�and�applies�the�promotions�on�the�raw�price.The�discounted�price�will�be�set�in�the�PriceInfo�object�and�is�again�passed�to�the�post�calculators.�Finally,�the�PriceInfo�object�holds�the�price�to�be�displayed�to�user.For�example�ItemPricingEngine�calculates�the�price�of�a�commerce�item�and�set�th

Page 7: ATG Interview Questions & Answers

e�price�to�the�ItemPriceInfo�object.�In�the�page�we�will�get�its�price�by�calling�the�commerceItem.priceInfo.amount�which�is�after�discount�and�commerceItem.priceInfo.rawTotalPrice�is�before�discount.9.�How�do�create�a�promotion?We�can�create�a�promotion�in�the�ACC.�The�promotions�will�be�stored�in�the�Promotions�repository.�The�pricingModels.xml�contains�different�types�of�promotions�such�as�Amount�Off�,�Percentage�Off,�Fixed�price�which�can�be�applied�to�item�or�order�or�shipping�levels.We�will�create�the�PMDL�rule�while�creating�the�promotion�which�specifies�the�actual�discount�rule.10.�How�do�u�apply�a�promotion�to�a�user�?There�are�two�types�of�promotions,�global�and�user�level.�If�we�set�the�global�property�of�the�promotion�to�true,�then�that�promotion�will�be�applied�to�all�users�automatically�by�the�pricing�engine.�For�the�user�level�promotions,�we�need�to�apply�them�through�scenarios.�The�scenario�has�action�called�applyPromotion�which�adds�the�promotion�to�the�active�promotions�of�the�user�profile.�Then�pricing�engine�picks�up�the�user�level�promotions�from�the�Profile.activePromotions�property.What�are�the�performance�issues�with�ATG?Performance�problems�come�in�many�shapes�and�sizes,�but�they�all�mean�that�the�processing�of�some�task�is�not�happening�at�the�expected,�and�previously�observed�speed.�Performance�issues�include�CPU�utilization�problems,�slow�response�times,�high�levels�of�database�activity,�long�running�SQL�queries,�slow�CA�deployments,�just�to�name�a�few.Which�is�the�IBM�product�used�with�ATG?WebSphere�Application�ServerEclipse�IDEWhat�are�derived�properties?Enables�one�repository�item�to�derive�property�values�from�another�repository�item�or�from�another�property�in�the�same�repository�item.Difference�between�Item�Cache�and�Query�cacheFor�each�item�descriptor,�an�SQL�repository�maintains�two�caches:Item�cachesQuery�cachesItem�caches�hold�the�values�of�repository�items,�indexed�by�repository�IDs.�Item�caching�can�be�explicitly�enabled�for�each�item�descriptor.Query�caches�hold�the�repository�IDs�of�items�that�match�given�queries.�When�a�query�returns�repository�items�whose�item�descriptor�enables�query�caching,�the�result�set�is�cached�as�follows:The�query�cache�stores�the�repository�IDs.The�item�cache�stores�the�corresponding�repository�items.What�are�different�modes�caching?Caching�modes�are�set�at�the�item�descriptor�level,�through�the�tag�s�cache-mode�attribute.�The�default�caching�mode�is�simple�caching.�To�set�a�different�caching�mode�on�an�item�descriptor,�set�cache-mode�to�one�of�the�following�values:SimpleLockeddistributed�(distributed�TCP�caching)distributedJMS�(distributed�JMS�caching)distributedHybrid�(distributed�hybrid�caching)Which�are�the�handleX�methods�in�any�important�formhandlers?HandleX�methods�contain�the�actual�function�to�be�performed.�its�a�method.�Like�in�ProfileFormHandler-�handleLoginWhat�are�pricelists?Price�Lists�allow�you�to�target�a�specific�set�of�prices�to�a�specific�group�of�customers.�Price�lists�are�managed�through�a�single�interface�in�the�ACC.�For�example,�price�lists�can�be�used�to�implement�business�to�business�pricing�where�each�customer�can�have�its�own�unique�pricing�for�products�based�on�contracts,�RFQ�and�pre-negotiated�pricesHere�are�a�few�interview�questions�i�came�across�recently.Though�Very�basic�ques

Page 8: ATG Interview Questions & Answers

tions�this�might�help�the�reader�in�some�way.�Don�t�think�you�will�come�across�such�simple�questions�if�you�are�aiming�a�big�ATG�based�project.�But�surely�these�questions�will�throw�some�light�into�your�understanding�in�ATG�Framework.�All�the�answers�are�two�liners�which�is�just�the�first�line�of�thought�to�the�question.ATG�Interview�QuestionsWhat�is�atg�Nucleus??Nucleus�is�a�ATG�container�for�components.�It�creates�and�initializes�component�instances�on�request.�It�manages�the�components�scope.�It�locates�the�properties�file�for�the�component�and�through�that�it�reaches�the�class�file�of�the�component.�Nucleus�components�are�Java�Objects�each�with�an�associated�.properties�file�which�store�configuration�values.What�is�MANIFEST�file?Applications�often�depend�on�other�modules,�these�dependencies�are�declared�in�this�file.The�file�name�is�MANIFEST.MF�and�resides�in�the�META_INF�directory.�It�specifies�ATG-Class-Path,ATG-Required,�ATG-Config-Path�etc.How�a�component�is�instantiated�??One�can�start�or�stop�components�manually�using�an�ACC.OR.We�can�instruct�nucleus�to�start�a�component�during�server�startup,�this�is�done�by�modifying�the��Initial.properties��file.Add�the�component�name�to�the��initialServices��property�inside�the�Initial.properties�file.Differentiate�Global,Request�&�session�scopes.Global:�components�are�accessible�from�all�other�components.Not�available�across�ATG�servers,�each�server�has�its�own�copy�of�global�scoped�component.Session:�means�every�user�of�the�application�gets�a�separate�copy�of�the�component,�and�component�exists�for�duration�of�the�user�s�session.Request�:�A�component�is�called�in�for�returning�the�values�of�a�search,�so�each�time�a�search�is�triggered�an�object�instantiation�happens�and�its�gone�when�the�result�page�is�closed.Which�means�the�scope�of�the�search�component�is�request.Eg:-formhandlers�normally�have�a�request�scope.What�is�a�context�root?Is�a�URL�mounting�point�of�the�web�application.�It�decides�what�URL�site�site�visitors�will�enter�to�get�to�the�site.�Eg:�http://www.atg.com/�context-root���context-root��is�specified�in�the��application.xml��file�in�the��j2ee-apps��folder.,What�is�ATG�Dynamo?�What�is�ATG�Framework?ATG�Dynamo�or�Dynamo�Application�Server(DAS)�is�a�J2EE�application�server�from�Art�Technology�Group.�Atg�framework�is�a�Web�Application�framework�for�building�web�applications.�ATG�dynamo�implements�the�ATG�framework.�The�application�framework�can�also�be�run�on�all�major�J2EE�application�servers�(JBoss,�WebLogic,�WebSphere�etc...).What�is�the�scope�of�Dynamo�Components?There�are�three�different�types�of�scopes�for�ATG�components�namelyrequestsessionGlobalGlobal�is�the�default�scopeWhat�is�Nucleus?Nucleus�is�ATG`s�open�Object�Application�Framework.�ATG�7�is�said�to�be�a�component-centric�development�platform.�The�ATG�7�Web�applications�are�nothing�but�individual�JavaBean�components�assembled�together.�These�JavaBean�components�are�configured�and�linked�together�by�.properties�files�within�Nucleus.In�Nucleus,�each�service�is�packaged�as�a�JavaBean�or�set�of�JavaBeans.�These�JavaBeans�are�configured�individually�and�mounted�into�a�namespace.�The�beans�then�interconnect�with�the�beans�representing�other�services.�Nucleus�is�responsible�for�interpreting�the�component�configurations�and�the�management�of�the�component�namespace.�Dynamo�uses�the�Nucleus�framework�to�organize�components�into�a�hierarchical�structure�(similar�to�a�directory�structure).�Each�Nucleus�service�has�a�unique�Nucleus�name.�For�example,�the�default�javax.sql.DataSource�component�is�located�at�/atg/dynamo/service/jdbc/JTDataSourceNucleus�is�the�core�of�the�entire�ATG�system.�It�creates�and�configures�Nucleus�

Page 9: ATG Interview Questions & Answers

components�(also�called�beans�and�JavaBeans)�and�organizes�them�into�a�hierarchical�namespace,�essentially�giving�them�a�place�to�live�so�they�can�be�referenced�by�other�components.�By�reading�the�.properties�files�associated�with�each�component,�Its�Nucleus�which�figures�out�that�which�components�are�to�be�used�in�an�application�,initializes�them�to�their�default�values�and�how�decides�about�how�they�connect�to�each�other.�This�model�makes�it�easier�for�the�developers�to�build�ATG�applications�by�configuring�and�using�the�pre-built�components�instead�of�writing�a�lot�of�Java�code�from�scratch.What�is�ATG�Repository?ATG�Repository�refers�to�the�ATG`s�way�of�accessing�the�Database�through�programs.�It�is�somewhat�similar�to�what�Hibernate�offers,�Seperating�the�Application�Logic�from�that�of�Database.�So�Atg�repository�provides�a�fine�grained�abstraction�between�the�application�logic�and�Database.�Thus�it�supports�the�ATG`s�Data�Anywhere�paradigm,�the�application�logic�created�by�developers�to�interact�with�data�need�not�change�for�any�change�in�the�source�of�that�data.�ATG�repository�architecture�ensures�that�the�source�of�the�data�is�hidden�behind�the�Dynamo�Repository�abstraction.�It�would�be�easy�to�change�from�a�relational�data�source�to�another�or�to�an�LDAP�directory�since�none�of�the�application�logic�would�need�to�change.�Once�data�is�retrieved�from�a�data�source�it�is�transformed�into�an�object-oriented�representation.�Manipulation�of�the�data�can�then�be�done�using�simple�getPropertyValue�and�setPropertyValue�methods.�The�Repository�API�ties�in�closely�with�ATG�s�targeting�APIs,�so�you�can�retrieve�items�from�the�repository�based�on�a�variety�of�targeting�rules,�as�well�as�retrieving�specific�identified�items.How�to�create�a�form�using�ATG�FrameworkA�Form�is�collection�of�components�i.e�input�controls�such�as�text�box,�radio�button....�Web�Applications�require�forms�to�get�input�from�the�user.�For�e.g�You�might�need�user�information�to�register�to�your�website�or�credentials�to�log�in�to�your�website...�In�this�article,�Let�us�see�how�to�create�a�form�using�ATG(ART�TECHNOLOGY�GROUP).�A�Form�can�be�created�in�ATG�as�shown�below.<dsp:form�action=�simple.jsp��method=�post�><dsp:input�type=�text��name=�Emp_name��bean=�/com/src/Employee.empname�/><dsp:input�type=�password��name=�Emp_name��bean=�/com/src/Employee.empname��value=��/><dsp:input�type=�submit��value=�Submit�/></dsp:form>The�tag�dsp:form�requires�a�action�attribute�and�method�attribute.�The�action�attribute�specifies�the�next�action�to�be�carried�out�on�form�submission.�The�method�holds�the�method�name�that�is�used�to�submit�the�form�(Refer�HTML�FORM�METHODS).Form�Elements�can�be�created�as�shown�in�the�above�example�dsp:input�tag�is�used�to�create�the�form�components�to�get�input�from�the�user.�dsp:input�can�create�two�kinds�of�controls:A�form�field�that�gets�input�from�the�user�that�is�passed�to�a�component.A�submit�button�or�image�for�the�submission�of�the�form.All�dsp:input�tags�must�be�embedded�between�<dsp:form>..</dsp:form>�tags.The�syntax�of�a�dsp:input�tag�is�as�shown�below<dsp:input�[type="input-control"]�[name="input-name"]�bean="property-spec"�["source-spec"][checked="{true|false}"]�[default="value"][priority=integer-value]/>The�attributes�of�dsp:input�are�as�followsTypeThe�Type�attribute�specifies�the�HTML�input�type�such�as�a�checkbox,�radio�button,�or�text�box,�if�type�is�specified,�the�default�type��Text��is�considered�as�the�input�type.�The�attribute�type�can�hold�the�below�values.Text���used�to�create�a�text�box.Checkbox-�used�to�create�a�check�box.Radio-�used�to�create�a�radio�button.Submit-�specifies�to�display�a�submit�button.Image�-�specifies�a�submit�control�that�uses�the�image�specified�by�the�src�or�pageattribute.Password�-�To�create�text�box�for�pasword�.

Page 10: ATG Interview Questions & Answers

Based�on�the�type�of�input�the�other�attributes�of�a�dsp:input�tag�varies,�For�Example�a�check�box�control�has�an�attribute�checked�(to�check�or�uncheck)�which�is�not�applicable�for�a�input�of�type�Text�i.e.�text�box.NameThe�Name�attribute�assigns�a�name�to�the�input�field,�which�enables�access�to�it�during�form�processing.�The�name�must�be�unique�for�all�input�types�other�than�radio�and�checkbox.BeanThe�Bean�attribute�specifies�the�property�that�this�input�field�updates�on�form�submission.For�Example�in�the�below�code�the�control�emp_name�refers�to�bean�Component�Employee�and�property�empname.�On�Submission�of�the�form�the�value�specified�in�the�text�box�is�set�to�the�bean�component�s�property�which�can�stored�for�future�use.<dsp:input�type=�text��name=�Emp_name��bean=�/com/src/Employee.empname�/>CheckedThe�checked�attribute�is�applicable�only�if�the�type�is�set�to�a�checkbox�or�radio.�The�checked�attribute�is�used�to�check�or�uncheck�a�radio�button�or�checkbox.DefaultThe�default�attribute�specifies�the�default�value�of�the�component.�If�no�input�is�specified�the�default�value�is�set�to�the�component�s�property.PriorityThe�priority�attribute�specifies�the�priority�of�this�input�field�during�form�processing,�relative�to�other�input�fields.ValueThe�attribute�value�id�valid�only�if�the�type�attribute�is�set�to�submit.�Value�is�the�value�set�for�submit�button�slabel.Embedding�custom�attributesA�dsp:input�tag�can�embed�one�or�more�custom�attributes�by�using�the�dsp:tagAttributetag.�The�syntax�of�a�dsp:attribute�tag�is�as�follows.<dsp:input�...>dsp:tagAttribute�name="attr-name"�value="value"/><dsp:input/>The�tag�dsp:tagAttributetags�is�specifically�used�to�add�attributes�to�the�generated�HTML�beyond�the�fixed�set�of�attributes�supported�by�the�DSP�tag�library.<dsp:form�action="DoctorAppointment.jsp"�method="post"synchronized="/atg/droplet/DoctorAppointmentFormHandler">����Patient�Name:�<dsp:input�type="text"���bean="�AppointmentDetails.patientName"/>�Appointment�Date:�<dsp:input�type="text"���bean="�AppointmentDetails.appDate"/>�Appointment�Time:�<dsp:select�bean="AppointmentDetails.appTime">����<dsp:option�value="10.00am">10�am</dsp:option>����<dsp:option�value="10.15am">10.15�am</dsp:option>����<dsp:option�value="10.30am">10.30�am</dsp:option>����<dsp:option�value="10.45am">10.45�am</dsp:option>����<dsp:option�value="11.00am">11�am</dsp:option>���</dsp:select>��Gender:�����<dsp:input�type=radio�bean="�AppointmentDetails.gender"������value="male">Male</dsp:input>�<dsp:input�type=radio�bean="�AppointmentDetails.gender"������value="female"/>Female</dsp:input>��<dsp:input�type="submit"�value="Create�Appointment"���bean="�DoctorAppointmentFormHandler.create"/></dsp:form>The�above�example�demonstrates�a�form�for�booking�a�doctor�appointment�online.�Using�this�form,�a�user�can�specify:·�Patient�Details·�Appointment�Time

Page 11: ATG Interview Questions & Answers

·�Appointment�DateWhen�a�user�clicks�Create�Appointment,�the�data�entered�in�the�form�is�saved�to�the�DoctorAppointmentFormHandler�and�authorized,�and�basic�Form�handler�validation�are�done�and�saved�to�the�database�if�the�user�has�enetered�a�valid�data,�the�formhandler�returns�error�message�for�invalid�data.�since�this�example�uses�the�post�method,�the�form�is�pre-populated�with�the�data�last-saved�to�DoctorAppointmentFormHandler.