Bidvertiser Issue Showing No Revenue Initially

I have seen many feedbacks about Bidvertiser Ad network,so thought of sharing my own experience.Find below the discussion thread with Bidvertiser team.Feel free to share your views if its genuine.


My Question
Hi Bidvertiser Team,

I am quite new to bidvertiser,recently i published my blog with Bidvertiser,my blog is about discussing issues and solution maninly ATG Commerce developers and few general topics,i am able to derive a decent traffic to my blog and currently i am seeing xxxx impressions and x Click Points,but my revenue and pending balance is shown as 0$,is there anything i am missing or its the usual behaviour and will take some time to get the updated status,highly appreciate your response.


Response from Bidvertiser Team
Dear Sebastian ,

Clicks and conversion bonus our now joined together to form Click Points, this is what you see displayed in your account, not clicks. Conversion revenue is a potentially additional revenue depending on the quality of traffic that you are sending through the advertisements.

In cases where there is only a small amount of traffic and clicks, it is possible that little or no revenue is earned. However as you increase the traffic quantity and quality a significant increase in revenue will be seen.

Best Regards,
BidVertiser Support Team.



Follow Up Question
Still not seeing any improvement in revenue.


Response from Bidvertiser Team
Dear Sebastian ,

Some of our ads provided have very low minimum bids, and work on a conversion basis. If the visitor converts into a lead or sale, then a large amount of revenue is paid to the publisher. We obviously also have more regular ads that pay on a ppc basis, and a mixes of both of these.



Follow Up Question
Thanks for the update,need to know is there a way we can choose the regular ads that pay on a ppc basis,In some Forums i saw Bidvertiser has an option to filter out ads based on the bid amount,is it possible ?


Response from Bidvertiser Team
Dear Sebastian ,

It sounds as though that was an old post. The option to manually filter which ads are shown has not been available for some time now.


         Issue in displaying Ads side by side
                  Blog option to delete images 

Luminate Issues Not displaying Ads in Images

Luminate Ads are not displaying on my posts,Given below my discussion thread with Luminate Team.

My Question
Hi Luminate team, I am quite new to Luminate,recently i published my blog with Luminate,my blog is primarily targeted to ATG Commerce developers to solve their day to day issues during development and few general topics,currently i am getting a traffic of around 100-200 daily pageviews,but my revenue is shown as 0$,My Current reports says i have 181 image views and i am not seeing the luminate icon or any other ads coming on my images,i can see only the luminate icon when i put my image and publish my post for sometiem,but after that it disappears,is there anything i am missing or its the usual behaviour and will take some time to get the images start working,or is it region specific ?
highly appreciate your response.


Response from Luminate team

I am seeing the icons and adds here: http://atgtipsandtweaks.blogspot.com/2012/06/atg-coupon-codes.html and see attached screenshot. Are you not seeing the same? 
Image screen shot below.
luminate icon displaying













Follow up Question
Hello Luminate team,
Many thanks for your response,however i cannot see the luminate icon in the same image,any region specific settigns is there,i have attached the screen shot taken this morning(09:50 AM Indian time),it does not have the icon, similiarly for my other images i cant see the icon. Aprreciate your response. Image screen shot below.
luminate icon not displaying













Response from Luminate team
The only geo specific thing is the ad, it may not appear in all geos. However the sharing icons should appear for you. Let me enquire internally why this may be.

Follow up Question
I have uploaded one more image on 24th June,this is of a Shopping cart - 'Add to Cart'  option ,with dimension  (235*215),while previewing my post i am able to see the luminate icon and the overlay ads,but after publishing my post,neither i can see the luminate icon nor the ads.one more similiar issue. Image screen shot below.

Post URL - >http://atgtipsandtweaks.blogspot.com/2012/06/pricelists-in-atg-basic-configurations.html

shopping cart without luminate icon












Response from Luminate team
I am seeing the apps and the ad
in this image. Are you sure you don't have ad block on in your browser, sometimes that interferes. See the attachment, I am seeing below.

Also see Bidvertiser Revenue not showing up

         Issue in displaying Ads side by side
         Blog option to delete images

shopping  cart with luminate ad and icon



atg configure promotion for a Product/Sku - item discount percent off

This is the continuation of the post configuring pricelist.

Before starting your development with Promotion please note the point,
Promotion rules are cached for efficiency,as a developer who edit rules frequently,you should not turn off the caching mechanism.To do so,set the maximumCacheSize and maximumCacheEntries properties of the atg/commerce/pricing/PMDLcache component to 0.

Now go to ACC Pricing go to Promotion,Create a new promotion of type 'Item Discount - Percent Off'
ACC item discount percent off












Now create a PMDL Rule,this is to specify the condition of the discount.
PMDL for product black berry











Now set few properties according to your requirements.My values just for  reference.

Automatically apply to all Orders - Global Promotion,make it true or false appropriately.Value - >false.
Discount Percentage - give an integer value as your percentage of Discount for that item.Value -> 5.
Give to a customer more than once - Number of times per user Promotion can be given.Value -> true

Once your Promotion has set then create a scenario to deliver this Promotion to targeted users.

The scenario's action specify who is eligible to receive promotion.
Once the customer receives the promotion,the promotion rule then determines if the customer qualifies to receive the promotion's discount.

Since for this example we are simply targeting only one user.So our scenario will look something like below.
scenario item viewed












Once the scenario is enabled,login to your application with the login name (i have created a user atguser)navigate to the product details page,select product Black Berry,you can see the price as 11 Euro now,proceed with checkout where you will see the promotion is applied to that product and the discounted price is displayed,since we had given 5% as item discount ,the actual price now is 11-.55 = 10.45 Euro.

Now logout and simply browse through your catalog and select the same product and proceed to checkout and you can see the price is shown as 11 Euro without any discount.

checkout page with promotion applied






This is the continuation of the post configuring pricelist.
Also see the posts on internal working of promotions and pricing engine.

Pricelists in ATG - Basic Configurations

Price Lists are created for sites when a contract lists specific pricing that is not promotional pricing or conditional pricing.

In ACC open the tab Pricing and then click on Price Lists.

You will need to check first to insure that a price list hasn’t already been created for your site.

If no folder exists, create new price list folder by first selecting the folder you want your new price list to be placed into and then clicking on the icon at the top right of the screen to create the folder.

When you have the folder selected click on the new folder you have created and then click on New Price List.Type in the Name.

Base price field is optional.

Select the End date and set it as a future date.Click OK.

Now you can set/modify the price for the items you need.

Search for the product: items of type Product whose Name contains (ignore case) name item you want to change.

Enter a new price for the item.SAVE.Click OK.

Now you will have to test your site to insure that the Price list is working correctly.

Basic Configuration

Create a priceList Folder and PriceLists(Sale Prices and List Price minimum),after that set prices for Skus and Products,basically create the list prices and sale prices in Price item of Price Lists Repository ,The Price Lists prices are derived from this,you can also override this,If the sale Price is less than the list price,Application displays the Sale Price and List price to the Customer with List price striked.Customer will be charged for the sale price only.


Implement in your application

Call the PriceDroplet twice
, once for the standard prices and a second time for the sale prices.standard prices is the property configured in the profile->Profile.priceList.
Call PriceRangeDroplet which calculates the lowest and highest prices from the inputs.

Compare the values returned from 
PriceRangeDroplet during the two calls,If they differ, it means that the sale price list returned a lower value than the standard price list, in that case, the sale price range should be rendered along with the standard price range.See the screen shot below.
Also see how to configure Promotions here
 displays sale price and list price in application


issue in display ads side by side in blogs

I hope you know how to place two ads side by side,its pretty simple.Add two div tags,with float property of each set to right,left and margin pixel as 1px,see the screen shots below.Well this works if there is no content below the ads.


configurations for displaying ads side by side

If we plan to place ads side by side above your content,and if there is enough space between the two ads,content might overlap,it will automatically fit in between the ads.

ads with content overlap









you can do some tweaks for this .Increase the margin pixel size of your container which holds the ads which will eventually reduce the extra space between  ads.

I modified the margin pixel size of the second container .See the modifications below.

<div style='float:left; Margin: 1px;'>
Your Ad Code
</div>


<div style='float:left; Margin: 40px;'>
Your Ad Code
</div>


Now my ads are happily displaying side by side without any overlapping content !!!. 


Also see the posts


                                                
no overlapping content between ads 

Not able to create New Scenarios and Scenario Templates - Button is disbled

How to enable the scenario buttons in ACC ?
Normally Scenarios are not enabled by default in ATG,You need to do a small tweak here to start working with Scenarios,Scenario Templates.

There are basically two places you need to do change before working with scenarios 

Database changes

Use any client tool(toad or sqlplus or heidisql for this)to connect your database,find the table dss_server_id and modify the value like below.










Note - Your server_id is the computer name,to find it,go to
MyComputer->Properties->Computer name,and the port is the drp_prt,
to find it go to atg component administration view
navigate to /atg/dynamo/server/DrpServer -> port,ideally it should be
8850,unless specified other wise.

Local Config Changes

Create a file scenarioManager.xml inside the folder
C:\ATG\ATGXXX\home\localconfig\atg\scenario
Add the entry like below and restart your server.






Go to ATG Control Center and you can now able to create/edit and delete your Scenarios,ScenarioTemplates etc.

atg.workflow.WorkflowException: The project type named /Content Administration/import.wdl is invalid.

This is also a similiar issue where the current Process Editor Server is configured or registered with the first Server, So you need to edit this in workflowProcessManager.xml file which would be located in the path \config\atg\epub\workflow\process\workflowProcessManager.xml.Otherwise create it under localconfig\
\atg\epub\workflow\process\workflowProcessManager.xml.

 
OR  there is an alternate solution.

1. Run the query select * from epub_wf_server_id; 
   in publishing schema which will give you the registered process  
   editor server name and port.
2. Update the epub_wf_server_id table with the actual hostname 

   and drp port.
3. Update epub_wf_server_id set SERVER_ID='Sebastian-
   HP:8851' where SERVER_ID='hostname:8851'
4. Restart BCC server.
 

Also see the below topics

Scenario Internal Working

Catalog Maintenace Service Console Output

12:55:11,015 INFO [CatalogMaintenanceService] Service CatalogMaintenance - processing functions: AGS_GENPROPERTIES
12:55:11,104 INFO [CatalogMaintenanceService] Service Lock CatalogMaintenance obtained for service CatalogMaintenance.
12:55:11,110 INFO [AncestorGeneratorService] Service AncestorGenerator - processing functions: AGS_GENPROPERTIES
12:55:11,110 INFO [AncestorGeneratorService] TreeWalkUpdateService:performService starting.
12:55:11,110 INFO [AncestorGeneratorService] Update Catalogs: started at Mon Jun 18 12:55:11 IST 2012
12:55:11,116 INFO [AncestorGeneratorService] Executing count queries for base catalogs, categories and folders.
12:55:11,118 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree starting to process base catalogs.
12:55:11,118 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree ended processing of base catalogs.
12:55:11,120 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree starting to process base categories.
12:55:11,365 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree ended processing base categories.
12:55:11,367 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree starting to process base catalog folders.
12:55:11,367 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree ended processing of base catalog folders.
12:55:11,367 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree starting to update repository for catalogs and categories.
12:55:11,516 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree update to repository ended for catalogs and categories.
12:55:11,516 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree starting to update repository for products and skus.
12:55:11,518 INFO [AncestorGeneratorService] updateProducts: starting to process products.
12:55:11,518 INFO [AncestorGeneratorService] Product range builder loop
12:55:11,519 INFO [AncestorGeneratorService] Execution of rangebean query starting at:0 using query:all with starting index:0
12:55:11,546 INFO [AncestorGeneratorService] Execution of rangebean query completed.
12:55:11,655 INFO [AncestorGeneratorService] Creating UpdateProductRange object:missing_product - prod2001
12:55:11,657 INFO [AncestorGeneratorService] Update thread started for range missing_product to prod2009
12:55:12,054 INFO [AncestorGeneratorService] Finished update of data.
12:55:12,076 INFO [AncestorGeneratorService] updateProducts: finished processing product requests.
12:55:12,077 INFO [AncestorGeneratorService] updateSkus: starting to process skus.
12:55:12,092 INFO [AncestorGeneratorService] Sku range builder loop
12:55:12,092 INFO [AncestorGeneratorService] Execution of rangebean query starting at:0 using query:all with starting index:0
12:55:12,108 INFO [AncestorGeneratorService] Execution of rangebean query completed.
12:55:12,118 INFO [AncestorGeneratorService] Creating UpdateSkuRange object:missing_product_sku - sku50001
12:55:12,120 INFO [AncestorGeneratorService] Update thread started for range missing_product_sku to sku50111
12:55:12,121 INFO [AncestorGeneratorService] Sku Range calculation completed.
12:55:13,541 INFO [AncestorGeneratorService] Finished update of data.
12:55:13,559 INFO [AncestorGeneratorService] updateSkus: finished thread.
12:55:13,559 INFO [AncestorGeneratorService] updateSkus: finished processing skus.
12:55:13,559 INFO [AncestorGeneratorService] TreeWalkUpdateService:processTree update to repository ended for products and skus.
12:55:13,559 INFO [AncestorGeneratorService] Update Catalogs: ended at Mon Jun 18 12:55:13 IST 2012
12:55:13,559 INFO [AncestorGeneratorService] Update Catalogs: total processing time is seconds: 2
12:55:13,559 INFO [AncestorGeneratorService] TreeWalkUpdateService:performService finished in 2 seconds.
12:55:13,560 INFO [CatalogMaintenanceService] Service Lock CatalogMaintenance released for service CatalogMaintenance.

See different ways to update catalog structure

atg fullfillment administration from AdminUI


Login to Admin UI,click Commerce Administration-Fullfillment Administration.


Click the link under List Shippable Groups to view the list of
shipping groups that are pending shipping.The list would be
ideally empty.

Now Go to your application and place an order with a single shipping
group.

Go to ACC and refresh the list of hardgood shipping groups.Select
the new shipping group.The status should be INITIAL,Refresh and within
a short time you can see the status change to PROCESSING and to PENDING_SHIPMENT.

Go back to Admin UI-Shippable Groups,You should see your shipping 
group awaiting shipping.

Go to the section Notify Fullfillment of shipment,fill the OrderID and
ShippingGroupId from the above table and click the Ship button.which
will notify the fullfillment system that the given shipping group has
been shipped to the customer.

Notify Fullfillment of shipment













Go back to ACC and refresh the view of the shipping group one more time.The status should now be NO_PENDING_ACTION.

Note:We have an option to Reprocess Shipping Groups as well.The Fullfillment Administration form will send a ShippingGroupUpdate message with the given data. A ShippingGroupUpdate message will tell the fulfillment system that the given shipping groups have been changed and need to be reprocessed. The order id given should be the order containing all of the shipping groups listed. List as many shipping group ids as necessary, separated by spaces.

ATG JSP tags with sample codes


Below are the few usages of JSP tags in ATG context.

1.Setting Bean values in different ways

Setting Bean from a parameter

<dsp:a href="myfile.jsp" bean="mybean.name" paramvalue="user">

some text...

</dsp:a>

Setting Bean from a constant

<dsp:a href="myfile.jsp" bean="mybean.name" value="sebastian">

some text...

</dsp:a>

2.<dsp:getvalueof></dsp:getvalueof>

<dsp:getvalueof id="name" bean="mybean.name" idtype="java.lang.String">

this can be used inside other tags(dsp or jstl) or in the page itself using scriplet tags.given below one usage.

<c:if test="${empty name}">

<c:set var="name" value="atg_store_formValidationError"/>

</c:if>

3.<dsp:setvalue/>

The setvalue tag allows you to set a bean property or page parameter with a value copied from another bean property,page parameter or constant.

Setting a parameter value to bean value

<dsp:setvalue param="myparam" beanvalue="mybean.name"/>

setting a bean value to a page parameter

<dsp:setvalue bean="mybean.name" paramvalue="myparam"/>

setting a parameter value to a constant

<dsp:setvalue param="myparam" value="Hello World"/>

setting a bean value to a constant

<dsp:setvalue bean="mybean.name" value="Hello World"/>

4.<dsp:param/>

Setting param from constant

<dsp:param name="amount" value="20.12"/>

setting param from a component

<dsp:param name="repository" bean="/atg/userprofiling/ProfileAdapterRepository" />

setting param from an inscope parameter

<dsp:param name="id" value="element.repositoryId"/>

See usages for other tags as well.

ATG Custom Catalog Creation Steps


ACC go to the Catalog Management - > Catalogs menu.
You can see the folders already created for you like store Catalog Folder and Sub Catalogs


Click on Sub-Catalogs folder,Click New Catalog button
Name your new catalog and click OK,Your new sub-catalog will
appear in the list.Click on your new sub-catalog and open it


Add Category to Catalog


Click the New Category button,name your new category and click OK
Expand the new catalog and your new category will appear below it in the left pane.


Click the category name use the Add Category button and select the
'View by Listing' tab to find existing sub-categories select the appropriate Category and then choose 'Add Category'.


Now in ACC select Catalog Management-catalogs
Click on the 'Master Catalog' and then Add Catalog button.Select your catalog and click the OK button.


Assign Catalogs to Users


Open ACC go to People and Organizations-Users and assign the catalog property.


After that Go to ACC and Update the Catalog Structure.


See different ways to Update Catalog Structure



ATG Coupon Codes

Creating a Coupon Code

Under Purchases and Payments, click on the Gift Certificates
and Coupons.

Navigate to Coupon Item descriptor,then click on the New Item button on the top right corner of the window.

No Coupon Codes should have the same characters with only Case mismatching.


For eg: If there
 is a Coupon Code by name “sc37d85”, then another Coupon Code with the names like “ SC37d85”, “sc37D85” etc should not be created.Also no spaces should be applied either at the start or at the end of a Coupon Code.

The new Coupon window will look like the one below.



The Coupon Code should be alphanumeric with a max length of
16 characters without any special characters.
 
A Coupon Code will be valid till the Expiration Date,it can be made to expire by setting the desired value for the property Expiration date.

Now Attach the Coupon Promotion to the Coupon Code as in the below screen shot.


Note: Only the Coupon Promotion
needs to be attached to the Coupon Code and not other general promotions. All Item level Coupon Promotions should be of type REGULAR and all Order level Coupon Promotions should be of type instantOnlineCredit.


We have already created a Coupon Item Level Promotion - Coupon Promotion -100,which we are associating to this Coupon.

See Also How to create an Item level Coupon Promotion.

Associted Promotion and Expiry Date for Coupon


ATG Logging Tips Few things to know before start Logging

Always provide meaningful information in log messages
Think in the direction how logging will help
to solve an issue or report a status later stage in maintaining
the application.This will inspire to add value while putting
logging in your code.

Its advisable,while logging include the name of the method,session ids,this will help to easily identify which portion of code issue is and allow log entries to track back what user is doing to end up in an issue.

Always use if statements before you actually write the logging
code,refer the below example for this,otherwise you will end up
logging everything which will have a serious impact on performance.

This is good

if(isLoggingDebug()) logDebug(“handleAddItemsToOrder() Executing Add Item To Order for session “ + getSessionId() + “ for product “ + getProductId());

This is bad

if(isLoggingDebug()) logDebug(“ handleAddItemsToOrder() “Hello World”);

Do not use two lines of logging when one would do,because in
actual production there will be many threads running
through the code and your log statement will be written to the
logs many times in a minute.

Logging Debug must set to false by default.Because this level is used to log the granular information of a method or an operation, its advised to turn this on only in development environment.In rare scenarios this will be turned on in live to identify a root cause most cases to identify performance related issues.

Logging Info is used to indicate the startup and initialisation of global components,you might have noticed the info level messages coming up in the server console during the application server startup.

Logging Error is used in situation where a system error occurs and due to that user is not able to proceed further,one scenario would be an external system down and request getting timed out.

customize your log files to include timestamp,session id etc.

ATG Coding Best Practices in writing a Function

Below listed few best practices while writing a Function.


Function should not exceed more than 40 lines and should not perform more than one operation.

Don’t pass more arguments(try to limit the maximum number by 5 ), as parameter in function with out valid reason.

Since resolving a component is costlier and risky,always pass request and session scope objects to global scope component methods instead of resolve component.

Declare variable in the beginning of block where you are
planning to use it.

Initialize local variables where they’re declared.

You should not locally re-declare a member variable while coding for a Function.This will gradually hide the visibility of 
member variable.

Do not directly access variable, instead use getter functions
If a variable has been created only for a loop, use suffix 'temp' to let others know that the variable will be used only
to store data temporarily. such variable should be declared 
null at beginning of method and initialized only when they are needed.


See ATG Form Handler Best Practice

ATG Component dos and donts


Try to keep Class and Component name same if possible(keeping in mind that one java class may be the source of multiple components).Also try to match Component path with class package structure if class is not an ATG component extension.


Always pass request and session scope objects to global scope component methods instead of resolve component.


Use window scope when you want different browser windows to maintain different states (another way to do that is to use URL parameters—for example, if a user wants to view two different products in separate windows—however, sometimes URL parameters are not sufficient or convenient).


ATG support Window scope which allows you to associate specific component instances with a specific browser window. Such components need to live longer than a request and also need to be different for every browser window associated with the user’s session.


Global component should not refer any session/request scope component.


Session component should not refer any request scope component.


Global scope component should not have any class level member variable. 

ATG Update Custom Catalog Structure



Custom Catalogs structure are complex,for example a product
or sku may appear in multiple catalogs/categories,so whenever
there is a change in the Catalog structure it 
is critical to maintain the relationships that form the paths, 
from Catalog to Sku.ATG has provided OOTB components and
inbuilt options to update the Catalog structure whenever a change
is made.


Catalog Structure can be updated basically in 3 ways.


The easiest method is via ATG Control Center,Open ACC,go to
Catalog Management - Catalogs and select 'Update Catalog 
Structure' from the Edit menu.Click the 'Yes' button,you will
see an Update Catalog window in the ACC like below.
Wait for the process to complete.

Update Catalog Structure
In the Admin UI click Commerce Administration link.In the 'Catalog Maintenance' Section you can click the 'Basic Maintenance Link'.
This will invoke all the functions of the AncestorGeneratorService 
and the CatalogVerificationService.It will take you to a new
browser window showing you the catalog maintenance last execution log.


From the Admin UI Invoke the performMaintenance() method on the atg/commerce/catalog/custom/CatalogMaintenanceService component.
Maintenance services can be performed dynamically at runtime
using CatalogChangeListener.We can also invoke these methods Programmatically.


See also how to increase the performance of ATG OOTB CMS

ATG,Nucleus and Component

ATG is a framework for developing web applications. ATG is fast, scalable and based on J2EE standards. The ATG Adaptive Scenario Engine provides an open, server-side environment for building and deploying dynamic, personalized applications for the Web and other communication channels, such as email and wireless devices. The core of the platform is the Dynamo Application Framework (DAF), which implements a component development model based on JavaBeans and JavaServer Pages (JSPs).

Nucleus is the ATG container for components,provides a heierarchical name space Each component has a unique full name so that pages and other components reference it.creates and initializes component instance on request Decouples code from configuration and manages component scope.

Any Java object with an empty constructor can act as a Component in Nucleus, so writing a new Nucleus component is as easy as writing a Java class. Nucleus components are standard JavaBeans, each with an accompanying .properties file, storing configuration values Nucleus sets the configured values on each new instance of a component. There can be many instances of a component.  In each case, the configured values in the .properties file become the initial values for properties of the “live” component.  After initialization, the live values may change, depending on usage of the particular property. 
  

ATG Scenario Donts

Exclude Anonymous Visitors, if possible filter out as many people as possible up front from your Scenario, try to minimize the number of visitors to whom the Scenario applies,in case if you have a large number of site users.Overall it will improve your system performance.

The number of Scenarios you have enabled affects the performance of your site,for example if you have 15 Scenarios, each of which includes a page visit element, you may notice that pages load more slowly because the site must process 15 page visit elements,whenever the user visits any page.You can improve the performance by creating a single Scenario that contains one Page visit event followed by multiple actions.

If an event is repeating in a Scenario,it will trigger multiple
individual Scenarios to be created,so take utmost care while
dealing with Repeated events.

Since Collective Elements apply to all the users in a Scenario,
try to reduce the usage,the performance will be compromised in
case we have huge number of profiles.


Avoid Never Ending Scenarios.

Avoiding Indefinitely run Scenarios.

Ref: Design Effective Scenarios
See: ATG Scenario Internals

ATG Scenarios Internal Working

When the system loads Scenario,it is stored in an in-memory lookup table.if a new event generates,it comes to the system
and system looks into the cache to see any scenarios are waiting for those events.Since this caching is done in Memory,it will be extremely fast.


Scenarios are precompiled when Dynamo starts up, it parses Scenario’s XML  file into a state machine.
During this pre-compilation phase, the system also performs a number of optimizations which maximize server performance.   


Cost of a scenario will depend upon how often its
triggered,if its triggered frequently then the cost associated
will be high,to minimize this restrict the scenarios to group,
lets say the group be 'all high end customers'.Also try to limit
the occurrences of Scenarios.

While starting the Dynamo instance we are running the 
Dynamo Scenario Server software as well,this means both the 
Dynamo activities and Scenario activities occur in same JVM.
Internally Load Manager allocates all the activities of one user session to one Dynamo instance.Thus, information, pages and data can be cached improving performance.

See also ATG Slots
Related Posts Plugin for WordPress, Blogger...