1. .Net Masters Program
July 28, 2010
Name Major Contribution
Dorian White Designed and coded data-layer. Contributed custom user
interface controls. Chief motivator and tester.
Greg Palmer Designed and coded user interface. Created master page and
presentation look and feel. Orchestrated background music.
Created team name and about page and positive light-hearted
motivation.
Robert Designed and coded entities layer. Provided architectural
Tanenbaum direction. Wrote the requirements and PowerPoint presentation.
SVN administrator.
Vivian Ting Designed and coded data-layer and user-interface code-behind.
Created and tested security layer. Lead tester and quality
assurance.
7/26/2010 Final Project 1
2. Use Case 1: Update existing contract
• User will select from dropdown list:
– Contract Type: Tuition or Consulting
– Track: .Net, SQL, Business Intelligence, SharePoint
– Year: from existing years in sessionConfig.xml
– Quarter: 1, 2, 3, 4
• Error message will be displayed if the contract is
not found and user will be prompted to create a
new contract.
• User may click the Search button and the
program will transfer to the Update Existing
Contract page.
7/26/2010 Final Project 2
3. Use Case 2: Update existing contract
• All variables are provided to the user for
editing.
• User may edit any of the variable attributes of
the contract, overriding the default value or
changing an existing value.
• User may clear a variable to reset it to the
default value.
• User may click Save, Create new Variable, Print
Preview or Delete (see next slide).
7/26/2010 Final Project 3
4. Use Case 2: Edit existing (continued)
• Click Save:
– Variables which have non-default values are written back to the
sessionConfig.xml file.
– Cleared variables will revert to the sessionConfig.xml default values.
• Click Create new variable:
– Redirect to Create Variable screen to add a new variable.
• Click Print preview:
– Pop up the PDF Generator to show the finished contract.
• Click Delete:
– The entire contract is removed from sessionConfig.xml
– Note: that clicking the Save image after deletion will restore the
session.
• For all modifications, original sessionConfig.xml file is marked with
the date and time and saved in an Archive directory on the website.
7/26/2010 Final Project 4
5. Use Case 3: Create a new contract
• User will select from dropdown list:
– Contract Type: Tuition or Consulting
– Track: .NET, SQL, Business Intelligence, SharePoint
– Year: current year and next year
– Quarter: 1, 2, 3, 4
• If the contract exists the user is prompted to edit
it.
• If the contract does not yet exist, it is created in
the sessionConfig.xml file and the user is
redirected to the Edit existing contract screen,
where all the default values are shown.
7/26/2010 Final Project 5
6. 3-Layered Architecture
1. The Presentation Layer or User Interface consists of
an ASP.Net Website which uses entity objects to
communicate with the Data Access Layer.
2. The Data Access Layer is an .NET Class Library which
uses LINQ to XML to communicate with the XML Data
Repository.
3. The XML Data Repository consists of a collection of
XML files residing in a subdirectory of the Website.
4. The Entity Objects are built in a separate .NET Class
library referenced by both the Presentation Layer and
the Data Access Layer.
7/26/2010 Final Project 6
7. Project Architecture
Entity Objects
Presentation Layer – User Interface
Data Access Layer
LINQ to XML
XML Repository
7/26/2010 Final Project 7
8. XML Repository
• All of the XML files from the Generator project were placed
in a subdirectory of the Website with just 3 changes.
• The gridparagraph variable was missing from the list of
default values for the consulting contract so we had to add
it to the sessionConfig.xml file.
• An additional file called Schema1.txt defines each variable
and its respective type: cost, date, file, number or text.
• An additional file called Tracks.txt defines the various tracks
(.NET, SQL, SharePoint and BI) and their respective letter
associated with the naming convention –
[Year][Letter][Quarter] like 2010Q2.
• The folder contains an Archive folder which saves a copy of
the existing sessionConfig.xml file before it is modified.
7/26/2010 Final Project 8
9. Data Access Layer – Parser class public
methods
• The data layer consists of LINQ to XML queries that allows
in-memory document modifications with the support of
LINQ Query expressions and strongly-typed collections.
• These collections can be bound to web controls with little
or no code required in the user interface.
• Provides functions to
– Retrieve a list of all existing session names
– Retrieve a collection of all the variables of an existing session.
– Write back all the changes to the sessionConfig.xml file.
– Create a new session or delete an existing session.
– Automatically archive the original version of the file with a date
and time stamp.
7/26/2010 Final Project 9
10. Entity Objects Library
• Provides flexible objects for Session contents.
• Objects contain strongly typed Dictionary
collections to allow for data-driven architecture.
• The overridden ToString method writes the
Session contents in XML format.
• Provides other objects for binding to the
dropdown boxes.
• Provides enum types for the contract type of
Consulting or Tuition as well as variable types like
Cost, Date, File, Number and Text.
7/26/2010 Final Project 10
11. Presentation Layer – ASP.net website
• Presentation layer is an ASP.net website using the following
technology.
– Master page and CSS style sheet for a uniform look and feel.
– Role based security requiring login.
– Uniform navigation controls.
– Custom user controls.
• The edit contract screen and dropdown boxes are entirely
data-driven. As variables are added to or deleted from the
templates, the screens will automatically adjust and show
only those variables which are currently relevant.
• Smoothly integrated with the existing contract Generator
code.
7/26/2010 Final Project 11
12. Future Enhancements
• Track changes by user.
• Validate the user input based on the type of
the variable like date and money.
• Use of .xsd file to define the XML format.
7/26/2010 Final Project 12