Upload
hassan-salad
View
220
Download
0
Embed Size (px)
Citation preview
8/7/2019 Pomegranate - Overview and Technical Design Document
1/23
Overview and Technical DesignInsurance Agent Portal, Pomegranate
This document describes the features and technical design of theexemplar code-named Pomegranate. This applicationis a
SharePoint (ASP.Net) web portal for use by Insurance Agents to
manger customers policies and claims.
Todd Snyder
6/27/2008
8/7/2019 Pomegranate - Overview and Technical Design Document
2/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
2
ContentsIntroduction ................................................................................................................................................................3
Application Overview .................................................................................................................................................4
Dashboard View .....................................................................................................................................................4
Customer Details View ...........................................................................................................................................5
Quote and Customer Views ....................................................................................................................................6
Technical Notes ......................................................................................................................................................6
Architecture and Technical Design .............................................................................................................................7
Technology .............................................................................................................................................................7
Microsoft SharePoint Service (WSS) 3.0 SP1 ......................................................................................................8
Net Advantage for ASP.NET 2008.2 ....................................................................................................................9
Windows 2003 Server ...................................................................................................................................... 11
SQL Server 2005 ............................................................................................................................................... 11
Layers ................................................................................................................................................................... 12
Design Patterns and Principals ............................................................................................................................ 12
Principals ......................................................................................................................................................... 13
MVP Pattern .................................................................................................................................................... 13
Adapter Pattern ............................................................................................................................................... 16
Repository Pattern ........................................................................................................................................... 17
Provider Model Pattern ................................................................................................................................... 19
AJAX and SharePoint ........................................................................................................................................... 21
Summary .................................................................................................................................................................. 23
8/7/2019 Pomegranate - Overview and Technical Design Document
3/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
3
IntroductionPomegranate is an insurance agent portal SharePoint exemplar (Reference Application). The application is built
using Windows SharePoint Services SP1, ASP.NET 2.0 and the Net Advantage for ASP.NET version 2008.2/Aikido
June CTP. The portal application utilizes a backend SQL Server 2005 (Express) database to store customerinformation and Key Performance Indicators (KPI).
The design philosophy we used to build the exemplar was a pragmatic SCRUM approach. The application was
build over the course of several small 1 to 2 weeks sprints. Each sprint focused on building out a different set of
features. To help facilitate this approach we applied several design best practices including Test Driven
Development, refactoring, design patterns and principals.
This document Is broken down into two sections:
Application Overview: Gives an overview of the different screens in the application and their features.Architecture and Technical Design: Examines the technology and design approach used to build the
application.
The exemplar can be viewed at the following URL:http://sharepoint.infragistics.com.
http://sharepoint.infragistics.com/http://sharepoint.infragistics.com/http://sharepoint.infragistics.com/http://sharepoint.infragistics.com/8/7/2019 Pomegranate - Overview and Technical Design Document
4/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
4
Application OverviewThe applications include two main screens. A dashboard view that displays six web parts: Company News,
Pending Quotes, New Policies Per Year, Active Polices by Type, Quote to Bind Ratio, and Agent Summary. The
second screen is a customer detail view that is displayed as a popup dialog when a user clicks on one of thecustomers listed the pending quotes web part.
Dashboard View
The dashboard view display six web parts that an insurance agent uses to track pending customer quotes and
other customer based KPI(s).
Figure 1: Dashboard Screen
Web Parts:
Company News: Displays the latest company news. Pending Quotes: Displays a list of pending quotes for the agents customers.New Policy per Year: Displays the number of new policies that the agent has sold per year for the
current and last two fiscal years.
Active Policy by Type: Displays a chart showing the percent of each active policy type within a specifieddate range. The user can filter the percent shown by adjusting the starting/ending expiration date filter.
8/7/2019 Pomegranate - Overview and Technical Design Document
5/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
5
Quote to Bind Ratio: Displays the current quote to bind ratio (Percent of Accepted Quotes) for one ormore policy types. The user can filter the policy types used by selecting one or more types.
Agent Summary: Displays several KPI for the agent including: # of Customers, Direct Loss, Expense, and
Loss Ratio (Direct Loss + Expense / total customer premium).
Customer Details View
The customer detail screen is displayed when a user selects one of the customers listed in the pending quotes
web part. The screen is hosted in a dialog control and it displays detail information (Bio, Polices & Claims) about
a customer.
Figure 2: Customer Detail Dialog
8/7/2019 Pomegranate - Overview and Technical Design Document
6/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
6
Quote and Customer Views
These screens are not implemented and only exist to display additional links in the applications main menu.
Figure 3: Screen not implemented
Technical Notes
The following Net Advantage for ASP.Net controls are usedoWebChartoWebDialogoWebDataGrid - Currently using the June CTP releaseoWebGaugeoWebGrid - Used on the Customer Detail ScreenoWeb Slider
The active By Policy and Quote to Bind Ratio web parts use MS AJAX (Update Panels) to support dynamic livefiltering of data.
The user Interface (UI) has been branded using a custom SharePoint theme (CSS, Images, Etc)
8/7/2019 Pomegranate - Overview and Technical Design Document
7/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
7
Architecture and Technical DesignThis section goes into detail about the architecture and technical designed used to build the application.
Technology
There are several technical components used to build the exemplar. One of the key first decisions when
designing a system is to identify when to built VS buy components. The approach we took in the exemplar was
to utilize 3rd
party components to address the core features of the system and write custom code that integrated
the pre-built components.
Key Components Used:
Microsoft SharePoint Service (WSS) 3.0 SP1Net Advantage for ASP.NET 2008.2
Windows 2003 Server
SQL Server 2005
8/7/2019 Pomegranate - Overview and Technical Design Document
8/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
8
Microsoft SharePoint Service (WSS) 3.0 SP1
WSS is a free add-on component to Windows 2003/2008. It is a web application framework for building
collaborate based solutions. If you need more advanced features you can switch over to using the Microsoft
Office SharePoint Sever (MOSS). MOSS is a full blown enterprise platform that includes advanced features for
content management, search, and form based data entry. The exemplar will run find of either version of
SharePoint.
The main features of WSS that are used by the exemplar include site provisioning, branding, and application
hosting. WSS includes additional feature that maybe used by a future version of the exemplar including custom
lists, workflows, and reporting capabilities.
Once you decided to use SharePoint that are two key technical design decisions that need to be made. First, you
need to determine which type of server farm you want to use and second you need to define the information
taxonomy needed to meet your requirements.
For the exemplar we want with a simple approach for both of these: On the hosted version of the example.
http://sharepoint.infragistics.comwe are using a single server configuration and single top level site. For a more
advance solution you may want to consider one of the other serve farm types and typically most applications
require a much more advance information taxonomy.
Figure 4: Pomegranate Online Server Topology
References:
SharePoint Deployment SharePoint Application Planning and Architecture
http://sharepoint.infragistics.com/http://sharepoint.infragistics.com/http://technet.microsoft.com/en-us/library/cc262957(TechNet.10).aspxhttp://technet.microsoft.com/en-us/library/cc262957(TechNet.10).aspxhttp://technet.microsoft.com/en-us/library/cc288426(TechNet.10).aspxhttp://technet.microsoft.com/en-us/library/cc288426(TechNet.10).aspxhttp://technet.microsoft.com/en-us/library/cc288426(TechNet.10).aspxhttp://technet.microsoft.com/en-us/library/cc262957(TechNet.10).aspxhttp://sharepoint.infragistics.com/8/7/2019 Pomegranate - Overview and Technical Design Document
9/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
9
Net Advantage for ASP.NET 2008.2
The exemplar takes advanced of several of the features (data visualization, data presentation, and filtering
capabilities) included in the Net Advantage for ASP.NET control suite. By using this approach we were able to
focus on the business problem that needed to be solved; while harnessing the power of Net Advantage for
ASP.NET for building application with great user experience (UX).
Data Visualization
Figure 5: WebChart showing Key Performance Indicators (KPI)
Figure 6: WebGauge showing Key Performance Indicators (KPI)
8/7/2019 Pomegranate - Overview and Technical Design Document
10/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
10
Figure 7: WebSlider used to filter data
Figure 8: Presenting data in the WebDataGrid
8/7/2019 Pomegranate - Overview and Technical Design Document
11/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
11
Figure 9: WebDialog displaying Customer Detail Screen
Windows 2003 Server
This is a required component for running Windows SharePoint services. If you prefer you could install the
exemplar on a Windows 2008 server.
Reference:Details about Windows 2003
SQL Server 2005
This is a required component for running Windows SharePoint services. For production systems it is recommend
running the standard or enterprise version of SQL server. But, for simple solutions you can use SQL Express.
Reference:SQL Server 2005
http://www.microsoft.com/windowsserver2003/default.mspxhttp://www.microsoft.com/windowsserver2003/default.mspxhttp://www.microsoft.com/windowsserver2003/default.mspxhttp://www.microsoft.com/sqlserver/2008/en/us/default.aspxhttp://www.microsoft.com/sqlserver/2008/en/us/default.aspxhttp://www.microsoft.com/sqlserver/2008/en/us/default.aspxhttp://www.microsoft.com/sqlserver/2008/en/us/default.aspxhttp://www.microsoft.com/windowsserver2003/default.mspx8/7/2019 Pomegranate - Overview and Technical Design Document
12/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
12
Layers
This section gives a quick overview of the logical view (Layers) of the application. The core design approach used
to build the exemplar was to build out a custom web part framework. The framework uses the Model View
Presenter pattern to separate the concerns for each web part into three components: View (Custom Web Part),
Model (Custom Business Classes: Customer, Policy, Claim), and Presenter (Controller that orchestrates the
communication between the view and the model).
Figure 10: The design of the custom web part framework used in the exemplar.
The View is responsible for instantiating its presenter. Once the view is ready it notifies its presenter; which
loads the model and binds it to the view.
The view is loosely coupled from the presenter because the presenter only uses the views interface to
communicate with the view. This allows the highest level of unit testing because you can create unit tests
without requiring the ASP.Net process to be loaded. In addition, you can minimize the dependencies between
the view and the model.
Design Patterns and Principals
The key to successfully building enterprise based system is to utilize proven best practices and design
approaches. While building the exemplar we utilize several industry best practices for building enterprise .NET
applications.
8/7/2019 Pomegranate - Overview and Technical Design Document
13/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
13
Principals
Separation of Concerns: This is a principal where you separate the concerns for a use case into severaldifferent classes. For example the Model View Presenter (MVP) Pattern separates code into views,
models, and presenters.
Single responsibility principal: This is a principal where you focus on making classes have high cohesionand try to avoid overloading the reasonability of the class.
Test Driven Development: This is a design approach where you write test first to help drive out thedesign of a system.
Refactoring: This is a design technique for restructuring an existing body of code, altering its internalstructure without changing its external behavior.
MVP Pattern
The Model View Presenter (MVP) pattern is a variation of the Model View Controller (MVC) pattern. Both
patterns promote separating the concern for a use case across three distinct types of classes: Model, Presenter
(Controller), and View. The major differences between the MVP and MVC pattern is that the MVP pattern
focuses more on separating the dependencies between the different components (Model, View, Presenter). By
doing this you can increase the testability of the overall solution.
Reference:
http://en.wikipedia.org/wiki/Model_View_Presenter
How its used in the Exemplar:
The following code listing illustrates how the MVP pattern is implemented in the exemplar.
Figure 11: Example interface used to implement the MVP Pattern
http://en.wikipedia.org/wiki/Model_View_Presenterhttp://en.wikipedia.org/wiki/Model_View_Presenterhttp://en.wikipedia.org/wiki/Model_View_Presenter8/7/2019 Pomegranate - Overview and Technical Design Document
14/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
14
Figure 12: View (Web Part) implements the view interface
Figure 13: View (Web Part) instantiates its presenter
8/7/2019 Pomegranate - Overview and Technical Design Document
15/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
15
Figure 14: Presenter loads the model and binds it to the view.
8/7/2019 Pomegranate - Overview and Technical Design Document
16/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
16
Adapter Pattern
The adapter pattern promotes establishing a simpler interface between two components that depend on each
other. This is used a lot when implementing the MVP pattern to simply the interface used between the views
and its presenter. In addition an adapter pattern maybe used to consolidate communication between multi
classes or hide the complexity of one class that has lot of dependencies with other components.
Reference:
http://en.wikipedia.org/wiki/Adapter_pattern
How its used in the Exemplar:
The diagram below illustrates how the adapter pattern is used in the exemplar to isolate the presenter from the
WebChart Control. By using this approach we can assign the responsibility for binding the model to the
WebChart to the presenter. This will allow us to better test the behavior of loading data from the model into the
chart.
When the unit test is created the presenter will talk to a mock chart adapter that will simulate the process of
creating data series and data points on the chart. The purpose of the test is to validate the presenter can handle
binding the model to the chart (via its adapter).
Figure 15: Adapter pattern used to separate the presenter from underling control type used by the view.
http://en.wikipedia.org/wiki/Adapter_patternhttp://en.wikipedia.org/wiki/Adapter_patternhttp://en.wikipedia.org/wiki/Adapter_pattern8/7/2019 Pomegranate - Overview and Technical Design Document
17/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
17
Repository Pattern
The repository pattern is a data access pattern that promotes loosely coupling the model from its data source(s).
The main goal of the pattern is to act as an in memory data repository that uses data mapper type classes to
load data into and out of the model.
By using this approach you can achieve a higher level of persist ignorance; which will increase the overall
testability of your code. In addition you can easily handle adding additional data sources or changing data access
technology (e.g. from ADO.NET to LINQ or NHibernate) without impacting the core (View & Model) of your
application.
Reference:
http://martinfowler.com/eaaCatalog/repository.html
How its used in the Exemplar:
The diagram & code listing below illustrate how the repository pattern is used by the exemplar. Because most of
the data used in the exemplar is read only we went with a simply repository implementation that mapped
ADO.Net data readers/data commands to and from our domain model.
Note: The adapter pattern was used to wrap the standard ADO.Net classes (Connection, Command, Parameters,
& data readers). This allowed us to better unit test the mapping code used by the repository.
Figure 16: Key classes used by the exemplar to implement the repository pattern
http://martinfowler.com/eaaCatalog/repository.htmlhttp://martinfowler.com/eaaCatalog/repository.htmlhttp://martinfowler.com/eaaCatalog/repository.html8/7/2019 Pomegranate - Overview and Technical Design Document
18/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
18
Figure 17: Example of a repository mapping a data reader to a domain model.
8/7/2019 Pomegranate - Overview and Technical Design Document
19/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
19
Provider Model Pattern
The provider model pattern promotes loosely coupling components in a system using the concept of
dependency injection (DI). Dependency injection is used to separate dependencies between one or more
components. Instead of two components having a hard reference between them; components rely on a DI
container to inject the dependency at runtime. For the exemplar we are using the built in DI capabilities of the
.Net framework that use reflection to load a configured provider up when an application loads.
Reference:
http://msdn.microsoft.com/en-us/library/ms972319.aspx
How its used in the Exemplar:
The diagram below contains the key classes used by the exemplar to implement the provider model. The
exemplar has a portal data provider that is used for accessing the customer KPI(s) data. The data provider used
is configured in the exemplars (SharePoint) web.config. This approach allows us to easily support additional data
sources in the future without requiring major changes to the application.
Figure 18: Classes used to implement the provide model pattern.
http://msdn.microsoft.com/en-us/library/ms972319.aspxhttp://msdn.microsoft.com/en-us/library/ms972319.aspxhttp://msdn.microsoft.com/en-us/library/ms972319.aspx8/7/2019 Pomegranate - Overview and Technical Design Document
20/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
20
Figure 19: Entry in web.config used for defining the portal data provider
8/7/2019 Pomegranate - Overview and Technical Design Document
21/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
21
AJAX and SharePoint
One the biggest technical hurdles to overcome when working with SharePoint is integrating AJAX features into
an application. AJAX is a powerful technology that allows a web application to talk back to its host server
without requiring a full page post back. By utilizing the Microsoft ASP.NET AJAX Extensions 1.0 toolkit it is pretty
easy to integrate AJAX capabilities into an ASP.Net application. Unfortunately, getting the ASP.NET Extensions to
work with SharePoint is not as easy.
The major differences between incorporating AJAX into a standard ASP.NET web site and a SharePoint web site
is that inside of SharePoint the developer does not have full control over the ASPX pages used. Instead the
developer creates custom features (Web Parts, Field Controls, etc) that are hosted in SharePoint. In addition
its typical that a SharePoint site may be running other web parts created by Microsoft or a 3rd party vender on
the same page as your custom web parts. Because of this you need to need to use caution in how and when you
use AJAX on a SharePoint web site.
How its used in the Exemplar:Out of the box SharePoint does not automatically support AJAX and there were few things we had to do to get
AJAX setup to run properly under SharePoint. First we had to create a custom default.master page that
contained an ASP.NET AJAX Script manager control (Note: this control is required to use the Net Advantage for
ASP.NET Aikido controls) and then we had to write some custom JavaScript that allows SharePoint to properly
handle AJAX calls.
In additional we minimized the use of AJAX to only web parts that required on demand filtering. The web parts
that require this type of functionality use an ASP.NET UpdatePanel control that is setup to do partial page
rendering. The UpdatePanel is a powerful control that allows you to easily incorporate AJA X functionality into a
web site. But, its important to remember that using them comes with some caveats. When an Update Panelfires an AJAX calls it still triggers the full page life cycle inside of ASP.NET page. This means that all the web parts
on a page will do normal processing (e.g. access a data source) unless you verify which update panel trigger the
async call and limited the processing only to them.
One other major issue we ran into incorporating AJAX into SharePoint was always getting the pages to properly
fire AJAX calls. The custom JavaScript code that we used to fire AJAX calls has some limitations that prevent it
from working properly when a SharePoint page does not contain at least one of the out of the box SharePoint
web part. Fortunately, to work around this limitation you can get the AJAX calls to work by adding a list view
web part control. Once the control is on the web page the custom JavaScript properly fires AJAX calls. If you
prefer not to display the normal SharePoint web parts you can mark them as hidden. Hidden web parts still will
allow the AJAX call to work properly.
8/7/2019 Pomegranate - Overview and Technical Design Document
22/23
Vision/Scope Document
Copyright 2008 Infragistics, Inc.
2008
22
Figure 20: Setting up update panel and registering JavaScript to make AJAX work
Figure 21: JavaScript code required to make AJAX calls work with SharePoint. See link for more details
http://support.microsoft.com/kb/941955
http://support.microsoft.com/kb/941955http://support.microsoft.com/kb/941955http://support.microsoft.com/kb/9419558/7/2019 Pomegranate - Overview and Technical Design Document
23/23
Vision/Scope Document
2008
SummaryThe Pomegranate exemplar is a great reference application that shows how to build custom web parts that run
inside of SharePoint. This document outlined the approach we took for building out the application as well as
how we were able to utilize Net Advantage for ASP.NEt to enhance the capabilities of the SharePoint platform.