Monday, November 19, 2012

Report Suites Architecture


I have seen lot of people started thinking about development, when we ask them to integrate site catalyst, Google analytic or urchin in their site, people are immediately jumping into code like how to call JavaScript to record data into site catalyst and how to retrieve site catalyst data etc… but all these things are simple, we can get lot of examples when we read respective SDK’s, but there is another area where we need to put actual attention

What is Report Suite in Site Catalyst?

Every day the omniture system captures thousand of records from web application or website which are integrated with ominture, where exactly all these information stores? These information stores in report suite of site catalyst and we need to pass reportsuiteid for every request

Is one report suite sufficient for entire application?

Before creating new report suite we need to identify what kind of information the client wants to track and what kind of reports he/she wants to generate, without having all these required information in your hand and if you blindly starts then you will be definitely in big mess

Because the report suite supports only 100 events, 75 Traffic variables and 75 conversion variables, what if we want track more than 100 events and if we want to create 76 Traffic variable ?

See the below image,



if we create single report suite for entire Amazon site, then it is very difficult to maintain, if India location head wants to see last one month reports of “Amazon India site” then to generate this report is difficult, we need to apply filters, sometimes the data accuracy problem may occur, and sometimes the events, variables may cross the limit and also we are missing modularization concept here

The solution for this is create new report suite for every location, so that the location head can easily generate reports,  sometimes we may need aggregate data across all locations, we can create global report suite which contain all locations information 


Note : creating report suites is totally depends on how you organize your data , don't forget to get complete information from your client and also the information architects or CMS experts can help on this


Saturday, November 17, 2012

Is it right approach deploying CSS, JavaScript files as part of deployment package in “Content Management System”?


Is it right approach deploying CSS, JavaScript files as part of deployment package in “Content Management System”?

Why,  because I have seen some people who came from traditional web development and no knowledge on CMS trying to deploy css and js files through package and finally mess up entire environment like overriding content of css and js files of content authors

How can we handle this situation, in any cms you can find two types of content one is static content and another one is dynamic content

Dynamic content:

The content which you think it changes frequently need to be handled by content deployment or replication or page activation

Ex: Style sheets, images, text etc…

Normally, the content authors or site admin’s performs this action

Static content:

The content which you think it will not change in future need to be deployed as package such as style sheets, images, JavaScript files etc…
This is the developer job and the developer includes this content into package and deploys into a respective environment

Solution:

You can solve this using several ways one is creating two sets of css files one is for static content and another one is for dynamic content so that if you deploy new package in your CMS environment that t will not disturb dynamic content

Second one is don’t include css and js files in your deployment package keep it in central location which can be accessible by content authors as well as developers
Normally in SharePoint you can do this by placing style sheets in style libray and in CQ5 you can do this by putting in etc/designs folder

Monday, November 5, 2012

Reading data from site catalyst through CQ5

In this article I am going to explain how to read data from site catalyst and display it on CQ5 components

REST api’s :

The omniture exposes REST api to read/write data from site catalyst data source, REST is a lightweight protocol and alternative to Web Services (SOAP, WSDL, etc.), in this I am not going to explain REST based concepts

CQ5:

To connect to site catalyst data source the cq5 has provided cq-analytics.jar file, this jar file is just wrapper of omniture REST api it provide different methods to read data from omniture, using this we can successfully read data from site catalyst from CQ5 environment


POM of cq-analytics jar :

<dependency>
           <groupId>com.day.cq</groupId>
     <artifactId>cq-analytics</artifactId>
           <version>5.4.4</version>
           <scope>provided</scope>
      </dependency>

Code :

The cq5 is provided “SitecatalystWebservice” to connect to site catalyst and there is one more class “Account” we use this entity class to pass account information to site catalyst web service

Account acc = new Account (true, companyName, userName, secret, server);
 
SitecatalystWebservice active = sling.getService(SitecatalystWebservice.class);

String str = active.getReportSuites(acc);

String reports = active.getSuccessEvents(acc,”reportSuiteId”)

The above code returns all success events which are created for “reportSuiteId

CompanyName :

The name is company name which we use to connect to CQ5 omniture site catalyst

Username :

Omniture site catalyst username

Secret:

The secret key is unique for every user we can find this by navigating   “Omniture Site Catalyst”  -> Admin -> Admin Console -> Company

Server :

This is datacenter url we can find this in omniture admin console