Search This Blog

Loading...

Tuesday, January 19, 2010

Silverlight 3 – Conceptualize, Design, Develop a AdHoc Querying / Reporting Framework

Here I’m going to write about how I conceptualized a AdHoc querying / reporting reusable Framework in Silverlight 3.

When our client came and requested they wanted to go for Business Objects / SQL Server Reporting Server kind of reporting server/tool last year in the mid of a big recession in Financial Sector and everyone wanted to reduce the cost of anything (including in our project), i was having doubt on what the end users of our project really want.

As I was with this project for almost 2yrs, and as it went to live just 6 months back when they requested this reporting feature, i told them, do we really need such a tool/server for this small application. Cos, i felt the maturity of the application is more important for going to such a product. Of-course you might think it makes sense, but, i felt, the application is not so mature to go for such a product.

I gave 4 options for reporting;

1) Silverlight based AdHoc querying/reporting tool

2) SQL Server / SSRS based reporting

3) Business Objects based AdHoc tool

Our users wanted below mentioned high-Fi features too;

  • Select the Table they wanted to Query
  • Query the Transactional/Historical tables on need basis
  • Drag & Drop the required columns
  • Have their own condition for required columns
  • See the result in a Nice gird
  • Re-arrange the columns, etc
  • Generate couple of simple graphs
  • Export the data in Excel, save the graphs as images for reporting purpose, etc.
  • Finally, a Nice looking UI for showing to their end clients that they use such a sophisticated tool for generating their reports

Due to above feature requirements and cost restrictions, they’ve decided to go with Silverlight.

Finally when I prepared the presentation, I gave a glimpse of what we’re planning in Silverlight.

image

Conceptualization

When I conceptualize to provide these features, i came up with below wire-frame ppt for my development team.

BTW, due to the last point in the above requirement, we’ve decided to use Telerik Silverlight tools.

To choose the Table, I thought we’ll use CoverFlow control.

image

Also, I convinced the users that selecting the Table and querying would be time consuming & daunting task for end-users. Instead it’ll be called Business Specific Pools (aka Views in our terms technically).

Now, the Whole AdHoc Query/Report Framework needs proper flow of controls to be placed to achieve all above features/requirements.

I thought of several other options and went with “Dockable Panel Control” called RadDocking in Telerik Silverlight. I’ve given below the wire-frame I created out of it for our AdHoc Fx.

image

Design

As we already use Silverlight 2, our team doesn’t have any issue in doing it in Silverlight 3. This is what we went with for different layers;

UI – Silverlight 3 + Telerik SL controls

Service – WCF

DB – LINQ (I’ll tell the reason behind this)

There’s nothing much to talk about UI/Service as this is easy to understand. But, with SL 2 in 2009 beginning we went with LINQ, but with SL 3.0, we thought we’ll go with Data Services. When we started investigating it, we came to know only with .NET 4.0 Data Services gets’ support for calling SPs directly, we’ve decided to go with again LINQ.

Developed AdHoc Fx

Once the team finally developed it, users very well received it and appreciated on the features we’ve provided and moreover the way it’s been implemented.

Conclusion

This blog is not just to tell whether what we can do with Silverlight/Telerik/.NET/C#. It’s all about how we should Conceptualize, Design & Develop a small piece of module when users come with such requirements, of-course with cost in tab.

It’s not about only Architect can do it, everyone who can visualize what client wants, can come up with such options.

Note: As a last note, I need to Thank my Development Team who implemented this in an excellent way, what I envisioned. Without their excellent contribution, it would not be an useful tool and got this much appreciation from users.

1 comments:

  1. Is there any way you could provide a sample application detailing the basic framework you developed? I am not asking for full code, but a starting point would be great as what you discuss here looks to be exactly like something we are trying to develop too.

    ReplyDelete