You are on page 1of 12

CRM .

NET
Customer Relationship Management System
A Project for Components Programming and Middleware, SS 2004 07/01/2004

Christian Kochs Jan Schaffner Jan Schulz-Hofen Gaurav Singh

HASSO - PLATTNER - INSTITUTE for Software Systems Engineering

Customer Management: Challenges

Manage distributed Customer Data Serve multiple Users Ensure Consistency Store different Aspects for each Customer Profile

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

Structure of Presentation

Requirements and Scenario of Application

Architecture of System Technologies used Live Demonstration with Technology Workshop Development Process and Experiences

Outlook: Conceivable Extensions

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

Use Case Diagram (UML 2.0)


CRM System

Read Customer Information


extends extends

Edit Memo

extends extends *

Evaluate extends Import Pics from eRasm-Gallery

Manage Customers
* extends <<includes>> extends

Modify Customer Information


extends

extends Change Picture extends

User

extends Edit Contact Information

Import Outlook Contact Information

Add New Customer Authenticate


<<includes>> <<includes>> Enter Name

Remove Existing Customer

Manage Security Privileges


*

extends * * *

Add Component

Deploy Components
extends

Admin

Remove Component

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

Architecture of System

Multi-User-System Follows Model-View-Controller (MVC) Pattern Own Implementation of Naming Service (Registry) Distributed Architecture (.NET Remoting) Flexible Creation of Components (offered Functionalities)
Dynamic management of heterogeneous and distributed components Component Dynamics on both Client and Server GUI is deployed together with specific component, not in the client Each Component is responsible for its individual Data Storage

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

Compositional Structure (FMC)


Clients Server
Contact Data Evaluation Data

Contact Model
R

Evaluation Model

Memo Data

Dynamic Management of many heterogeneous and distributed Components which carry their own GUI and Data

View
R

R R

Memo Model

Image Data

Controller
R R R R

Image Model
R

View
R R

Registry
R

Customers

Registered Components

CRM Base

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

Class Diagram (UML 2.0)


Clients Server

Crm::View
-GuiExtensions : SortedList -EntryList : SortedList -Ticket : int +UpdateGuiExtensions() +UpdateTitleList() -ReadCustomer() -ModifyCustomer() -RemoveCustomer() -AddCustomer() * 1

Controller
-ModelList : SortedList -AuthenticatedSessions : Hashtable +ReadProfile() +ModifyProfile() +AddProfile() +RemoveProfile() +Authenticate() +GetTitlesForGui() +GetGuiExtensionsAsCoffList() : SortedList -UpdateModelList() 1

AbstractModel
#ClassBytes : byte[] #GUI_DLL_FILENAME : string #GUI_DLL_SIZE : int +AddAspect() +RemoveAspect() +ModifyAspect() +ReadAspect() +GetGuiExtensionAsCoff()

interface GuiExtensionInterface
+FetchBody() +PutBody() +GetContentType() +Clear()

MemoModel
+ReadAspect() +AddAspect() +RemoveAspect() +ModifyAspect()

ContactModel
+AddAspect() +RemoveAspect() +ModifyAspect() +ReadAspect()

ContactGuiExtension
+FetchBody() +PutBody() +GetContentType() +Clear()

MemoGuiExtension
1 +FetchBody() +PutBody() +GetContentType() +Clear()

Crm::Registry
+ModelsTable : DataTable +GetRegisteredModels() +RegisterModel() +UnRegisterModel()

CRM Base

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

Featured Technologies
Distribution and Communication via .NET Remoting:
Server Activated Object (SAO) Singleton Pattern Binary Formatter (Performance)

Dynamic Assembly Loading (of Components UIs) Data Storage: MS SQL Server, ADO .NET, J2EE-Entity-Beans Components implemented in C# and J# COM-Interop: Microsoft Office Integration Webservices via SOAP / XML

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

System Startup Sequence (UML 2.0)


Admin :Controller start :Registry start :ContactModel start register model User

CRM Base

Additional Model

synchronize customers data start register model

:WinAppView

start login dialog

synchronize customers data

confirm authentification session id

provide login/ password

request UI components get UI component deliver UI component get UI component deliver UI component

request customer list

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

HASSO - PLATTNER - INSTITUTE

System Startup Sequence (UML 2.0)


Admin :Controller start :Registry start :ContactModel start register model User

CRM Base

Additional Model

synchronize customers data start register model

:WinAppView

start login dialog

synchronize customers data

confirm authentification session id

provide login/ password

request UI components get UI component deliver UI component get UI component deliver UI component

request customer list

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

10

HASSO - PLATTNER - INSTITUTE

Customer Profile Data Structure: E/R-Diagram (FMC)


Modular Architecture of CRM .NET requires modular Design of Data Structure
CRM Base manages Customer Base Data (Profile Set) and object specific Security Privileges Each Profile consists of one or more Customer Aspects Aspects are managed individually by CRM .NET Components ContentType is Linking Element between Model, View and Controller
Aspect - ContentType - Body TextAspect Eval.Aspect ContactAspect Profile - Name - Security Privileges

ImageAspect

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

11

HASSO - PLATTNER - INSTITUTE

System Startup Sequence (UML 2.0)


Admin :Controller start :Registry start :ContactModel start register model User

CRM Base

Additional Model

synchronize customers data start register model

:WinAppView

start login dialog

synchronize customers data

confirm authentification session id

provide login/ password

request UI components get UI component deliver UI component get UI component deliver UI component

request customer list

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

12

HASSO - PLATTNER - INSTITUTE

Dynamic Assembly-Loading in .NET

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

13

HASSO - PLATTNER - INSTITUTE

Framework Comparison
Extending the GUI dynamically in Java
Defining a Classloader extending the abstract ClassLoader Class

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

14

HASSO - PLATTNER - INSTITUTE

Framework Comparison (contd.)


Extending the GUI dynamically in Java
Using the defined GuiExtensionLoader to load a Class

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

15

HASSO - PLATTNER - INSTITUTE

Multi-User Facility
Global Data Synchronization Lets open up a second View !

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

16

HASSO - PLATTNER - INSTITUTE

COM Interop fr Einbindung von MS Outlook (FMC)

.NETApplikation

.NET-Aufruf

COM-Aufruf

RCW
R R

COMObjekt

new()

Interop Marshaler (CLR)

Interop Assembly

Managed Code

Unmanaged Code

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

17

HASSO - PLATTNER - INSTITUTE

COM Interop
Create an Instance of the referenced COM-Component
Use of the Type Library Importer (tlbimp.exe) to create a .NET Interop Assembly containing the Metadata of the COM Type Library
tlbimp <COM-Component> <.NET Interop Assembly> / <Options>

At Runtime, the .NET CLR will create an RCW for each COM Object RCW serves as a Bridge to the Unmanaged Code
Translating calls consumes COM Interfaces Marshalling data Managing lifetime of the wrapped object

In Source Code:

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

18

HASSO - PLATTNER - INSTITUTE

Security Concept
User- and Group-based Authentication Item-based Authorisation

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

19

HASSO - PLATTNER - INSTITUTE

Authentication and Authorization (FMC Petri-Net) Authentication and Authorization (FMC Petri-Net)
Dynamics of Controllers Session Management

CRM .NET Client Application (View)

CRM .NET Base (Controller)


interface ControllerInterface +ReadProfile(in ID : int, in Ticket : AuthTicket) : Profile +ModifyProfile(in ID : int, in ProfileToModify : Profile, in Ticket : AuthTicket) : void +AddProfile(in ProfileToAdd : Profile, in TitleToAdd : string, in Ticket : AuthTicket) : void +RemoveProfile(in ID : int, in Ticket : AuthTicket) +Authenticate(in username : string, in password : string) : AuthTicket +GetFilteredCustomerList(in Ticket : AuthTicket) : CustomerList
Read reference auth. info from storage

Provide authentication info and request connection

else Auth Info correct

Generate and provide unique session ticket Store ticket and corresponding user identity in list in RAM

Store session ticket in RAM

Request operation (provide ticket and involved customer profile)

Main Cycle

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh


else

20

HASSO - PLATTNER - INSTITUTE

Webservices: Talking to the J2EE-eRasm-Gallery

Client Proxy is required to access Webservice Proxy Class is generated from WSDL-File by a tool Proxy is instantiated in Client

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

21

HASSO - PLATTNER - INSTITUTE

Development Process and Experiences

Process Model applied: Extreme Programming (XP) Testing with NUnit Experiences with Tools
Microsoft Visual Studio 2003 .NET Subversion and Tortoise Client Microsoft (R) Web Services Description Language Utility Type Library Importer (tlbimp.exe) for COM-Interop

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

22

HASSO - PLATTNER - INSTITUTE

Outlook: Conceivable Extensions

Functionality
Stronger diversification within component hierarchy Additional administration frontend

Security
Extend our item-based authorization: Access Control Lists Possible to implement encryption-algorithm in additional remoting-layer

Performance
Improve caching algorithms Increase efficiency of in-memory data structures

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

23

HASSO - PLATTNER - INSTITUTE

Sources
Gosling, J., Yellin, F.: The Java Application Programming Interface, Vol. 1, Addison-Wesley, 1996 MSDN Library: msdn.microsoft.com The Code Project: www.codeproject.com Thai: .NET Framework Essentials, OReilly, 2001 The C# Corner: www.c-sharpcorner.com Hamilton, MacDonald: ADO.NET in a Nutshell, OReilly, 2003

HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh

24

HASSO - PLATTNER - INSTITUTE