Wednesday, 25 April 2012

ATG Forms Example

<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

· Appointment Date

When 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.

Sunday, 8 April 2012

How to create a form using ATG Framework

A 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 follows

Type

The 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.

  1. Text – used to create a text box.
  2. Checkbox- used to create a check box.
  3. Radio- used to create a radio button.
  4. Submit- specifies to display a submit button.
  5. Image - specifies a submit control that uses the image specified by the src or pageattribute.
  6. Password - To create text box for pasword .

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.

Name

The 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.

Bean

The 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”/>

Checked

The 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.

Default

The default attribute specifies the default value of the component. If no input is specified the default value is set to the component’s property.

Priority

The priority attribute specifies the priority of this input field during form processing, relative to other input fields.

Value

The attribute value id valid only if the type attribute is set to submit. Value is the value set for submit button’slabel.

Embedding custom attributes

A 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.

Saturday, 7 April 2012

ATG Interview Questions

  1. What is atg Nucleus??
  2. 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.
  3. What is MANIFEST file?
  4. 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.
  5. How a component is instantiated ??
  6. 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.
  7. Differentiate Global,Request & session scopes.
  8. 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.
  9. What is a context root?
  10. 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.,
  11. What is ATG Dynamo? What is ATG Framework?
  12. 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...).
  13. What is the scope of Dynamo Components?
  14. There are three different types of scopes for ATG components namely
    • request
    • session
    • Global
    Global is the default scope
  15. What is Nucleus?
  16. 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/JTDataSource
    Nucleus 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.
  17. What is ATG Repository?
  18. 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.

Tuesday, 3 April 2012

ATG interview Questions 6

  1. What are the performance issues with ATG?
  2. 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.
  3. Which is the IBM product used with ATG?
    • WebSphere Application Server
    • Eclipse IDE
  4. What are derived properties?
  5. Enables one repository item to derive property values from another repository item or from another property in the same repository item.
  6. Difference between Item Cache and Query cache
  7. For each item descriptor, an SQL repository maintains two caches:
    • Item caches
    • Query caches
    Item 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.
  8. What are different modes caching?
  9. 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:
    • Simple
    • Locked
    • distributed (distributed TCP caching)
    • distributedJMS (distributed JMS caching)
    • distributedHybrid (distributed hybrid caching)
  10. Which are the handleX methods in any important formhandlers?
  11. HandleX methods contain the actual function to be performed. its a method. Like in ProfileFormHandler- handleLogin
  12. What are pricelists?
  13. 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 prices
    Here are a few interview questions i came across recently.Though Very basic questions 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.

Monday, 2 April 2012

ATG Interview Questions 5

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 namespace

2. Difference between dsp: include and jsp:include

Dsp 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?

ShoppingCartFormHandler

4. What is the main formhandler you use for Shopping cart?
ShoppingCartFormHandler & CartModifierFormHandler

5. 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 data
It has repositories which help is data anywhere architecture.
Dependency injection
It 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 discrete
Entities 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 the 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.



ATG Interview Questions 4

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.

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, PaymentGroupOrderRelationShip

10. 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.

ATG Interview Questions 3

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 atg.droplet.TransactionalFormHandler

The 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.

Commerce

2. 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 Catalog

Category

Product

SKU

Custom Catalog

Catalog

Category

Product

SKU

7. How do you display a Catalog?

Standard Catalog

First, 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 Catalog

We 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 or 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 beanNameToItemDescriptorMap

10. 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.

ATG Interview Questions 2

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. request
2. session
3. Global
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/JTDataSource
Nucleus 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
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 Management
2. Content Targetting
3. Targeted E-mail
User Profile Management
When 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 items
2. To a particular user
3. At a particular time
4. In a particular context and
5. 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.java


9. 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 submission

10. What is Base class for all ATG Formhandlers?
Ans10. GenericFormHandler.java

Sunday, 1 April 2012

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 repository from scratch, and others. (please see my post on repositories)


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 information is not saved


7. What is BCC
Ans: Business Control Center- UI for Business Users (to upload content to Catalogs, 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 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 db
Servlet 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 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 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.