Departement Bedrijfsinformatie
MOBILE CRM Stage dossier
Dwight Kerkhove Pieter Van Hamme
Bedrijf: ESC bvba
Toegepaste Informatica
Stagementor: Benny Van Hyfte
Stagebegeleider: Johan Van Schoor Academiejaar 2008-2009
Stagedossier G15
Mobile CRM
2
Inhoudstabel Inhoudstabel........................................................................................................................................ 2 Voorwoord .......................................................................................................................................... 8
Deel 1: Inleiding ............................................................................................. 9 1
Voorstelling bedrijf en activiteiten .............................................................................................. 9
2
Beschrijving van de opdracht .................................................................................................... 10
3
Beschrijving van het huidige systeem ....................................................................................... 11
4
Terminologie.............................................................................................................................. 13 4.1
CRM Server ..................................................................................................................... 13
4.2
Entiteit ............................................................................................................................. 13
4.3
View van een entiteit ........................................................................................................ 13
4.4
Form van een entiteit ........................................................................................................ 13
4.5
Meta Data van de Beheersapplicatie/Mobile Server ........................................................ 13
4.6
CRM Data ........................................................................................................................... 13
Deel 2: Analyse..............................................................................................14 1
2
Use Cases Beheersapplicatie ..................................................................................................... 14 1.1
Beheren van Entiteiten ...................................................................................................... 16
1.2
Beheren van Profielen ....................................................................................................... 17
1.3
Beheren van Users............................................................................................................. 19
1.4
Beheren van Lay-out.......................................................................................................... 21
1.5
Beheren van Forms............................................................................................................ 23
1.6
Beheren van Views ............................................................................................................ 25
1.7
Beheren van Filters ............................................................................................................ 27
1.8
Beheren van Devices ......................................................................................................... 29
Use cases Mobiele Applicatie .................................................................................................... 30 2.1
Applicatie opstarten .......................................................................................................... 31
2.2
Synchroniseren .................................................................................................................. 32
2.3
Entiteiten mobiel gebruiken .............................................................................................. 34
2.4
Oplossen van conflicten .................................................................................................... 36
2.5
Beheren van instellingen ................................................................................................... 38
Stagedossier G15
Mobile CRM
3
Deel 3: Ontwerp ............................................................................................39 1
2
3
Structuur .................................................................................................................................... 39 1.1
Mobile Client ..................................................................................................................... 39
1.2
Mobile Server .................................................................................................................... 40
1.3
CRM Server ........................................................................................................................ 41
Structuur in detail ...................................................................................................................... 42 2.1
GUI ..................................................................................................................................... 42
2.2
Domain (Business Logic Layer) .......................................................................................... 43
2.3
Data Access Layer (Persistentie laag) ................................................................................ 43
Structuur Beheersapplicatie ...................................................................................................... 45 3.1
GUI ..................................................................................................................................... 45
3.1.1
DomainAccessablePage ............................................................................................. 46
3.1.2
GuiForm, GuiTab, GuiView, GuiFilter, GuiConditieGroep, GuiConditie,GuiAttribuut46
3.2
Domein laag ....................................................................................................................... 47
3.2.1
DomainManager ........................................................................................................ 48
3.2.2
UserViewController ................................................................................................... 48
3.2.3
CRMController ........................................................................................................... 49
3.2.4
SubDomainManagers ................................................................................................ 49
3.2.5
DomainObject............................................................................................................ 50
3.2.6
TrackedDomainObject ............................................................................................... 50
3.2.7
Domein Objecten: Entiteit, Attribuut, View, Form, … ............................................... 50
3.2.8
AbstractServerData ................................................................................................... 51
3.2.9
ServerMetaData en ServerData................................................................................ 52
3.2.10
SharedServerProvider................................................................................................ 52
3.2.11
ServerProvider, MetaServerProvider ........................................................................ 52
3.2.12
AbstractSyncServerItem, SyncServerDataItem, SyncServerMetaItem ..................... 53
3.2.13
DBEntity ..................................................................................................................... 53
3.2.14
SyncObjectSerializer .................................................................................................. 53
3.3
SyncFramework (server).................................................................................................... 54
3.4
DAL laag ............................................................................................................................. 55
3.4.1
MobileSettings Dataset ............................................................................................. 55
3.4.2
SyncTracking Dataset................................................................................................. 55
3.4.3
CRMObjectConversion .............................................................................................. 55
3.4.4
CRMMapper, CRMMetaMapper ............................................................................... 56
Stagedossier G15
3.5
4
Database structuur ............................................................................................................ 57
3.5.1
Mobile Settings .......................................................................................................... 57
3.5.2
SyncTracking Database .............................................................................................. 58
3.6
4
Mobile CRM
Sequentie diagrammen ..................................................................................................... 59
3.6.1
Beheer van entiteiten ................................................................................................ 59
3.6.2
Beheer van profielen ................................................................................................. 60
3.6.3
Beheer van users ....................................................................................................... 61
3.6.4
Beheer van lay-out .................................................................................................... 62
3.6.5
Beheren van forms .................................................................................................... 63
3.6.6
Beheren van filters .................................................................................................... 65
3.6.7
Beheren van devices.................................................................................................. 66
Mobiele Applicatie .................................................................................................................... 67 4.1
GUI ..................................................................................................................................... 67
4.1.1
OrientationAwareForm ............................................................................................. 68
4.1.2
MobileCRMForm ....................................................................................................... 68
4.1.3
Entiteiten Overzicht (frmEntiteitenOverzicht) .......................................................... 68
4.1.4
AbstractFrmView ....................................................................................................... 69
4.1.5
AbstractPage, ViewPage ............................................................................................ 69
4.1.6
Records van entiteit (frmEntiteitView), Selecteren van een lookup (frmLookup) .... 70
4.1.7
FormPanel ................................................................................................................. 71
4.1.8
Details van een record (frmEntiteitForm) ................................................................. 72
4.1.9
Instellingen (frmSettings) .......................................................................................... 72
4.1.10
frmSynchronisatie, AbstractLogListener, DataLogListener, MetaLogListener .......... 73
4.1.11
Conflicten, Details van een conflict (frmConflictDetails), ConflictPanel ................... 73
4.1.12
ResourceManager, OldestCacheFirst ........................................................................ 74
4.1.13
OldestCacheFirst........................................................................................................ 74
4.2
Domein laag ....................................................................................................................... 75
4.2.1
DomainController ...................................................................................................... 75
4.2.2
SynchronizationController......................................................................................... 75
4.3
DAL laag ............................................................................................................................. 76
4.3.1
MetaMapper ............................................................................................................. 77
4.3.2
EntiteitMapper, AttribuutMapper, FormMapper, FilterMapper, ViewMapper ....... 77
4.3.3
DynamicTableMapper ............................................................................................... 78
4.3.4
DataMapper .............................................................................................................. 78
Stagedossier G15
5
4.3.5
DynamicDataMapper ................................................................................................ 79
4.3.6
LookupMapper .......................................................................................................... 80
4.3.7
ConflictMapper .......................................................................................................... 80
4.3.8
DBEntity ..................................................................................................................... 80
4.3.9
DAL Objecten ............................................................................................................. 81
4.3.10
ClientData, MetaClientData ...................................................................................... 81
4.3.11
ClientProvider, MetaClientProvider ......................................................................... 82
4.3.12
AbstractSyncClientItem, SyncClientDataItem, SyncClientMetaItem ........................ 82
4.3.13
SharedSyncObjectSerializer, SyncObjectSerializer, MetaSyncObjectSerializer ........ 83
4.4
SyncFramework (client) .................................................................................................... 83
4.5
Database ............................................................................................................................ 84
4.5.1
Meta Data tabellen.................................................................................................... 84
4.5.2
CRM Data ................................................................................................................... 85
4.6
5
Mobile CRM
Sequentie Diagrammen ..................................................................................................... 86
4.6.1
Applicatie opstarten .................................................................................................. 86
4.6.2
Entiteiten mobiel gebruiken ...................................................................................... 87
4.6.3
Oplossen van conflicten ............................................................................................ 88
4.6.4
Beheren van instellingen ........................................................................................... 89
Synchronization Framework...................................................................................................... 90 5.1
Basisstructuur .................................................................................................................... 90
5.1.1
SyncController ........................................................................................................... 91
5.1.2
ISyncClientProvider ................................................................................................... 91
5.1.3
ISyncServerProvider .................................................................................................. 92
5.1.4
AbstractClientProvider, AbstractServerProvider....................................................... 93
5.1.5
IClientData ................................................................................................................. 94
5.1.6
IServerData ................................................................................................................ 94
5.1.7
ISyncItem, ISyncClientItem, ISyncServerItem............................................................ 95
5.1.8
ISyncHeaderItem, ISyncUpdateItem, ISyncDateItem ................................................ 96
5.1.9
Conflict....................................................................................................................... 96
5.2
Synchronisatie over TCP .................................................................................................... 97
5.2.1
ServerProviderTCPClient ........................................................................................... 97
5.2.2
ServerTCPListener...................................................................................................... 98
5.2.3
SyncWorker ............................................................................................................... 98
5.2.4
EncryptedBinaryReader,EncryptedBinaryWriter ...................................................... 99
Stagedossier G15
Mobile CRM
6
5.2.5
AbstractSyncObjectSerializer .................................................................................... 99
5.2.6
Crypto ...................................................................................................................... 100
5.3
Sequentie Diagram .......................................................................................................... 100
5.3.1
Start van de synchronisatie ..................................................................................... 100
5.3.2
Updaten van gegevens op de client ........................................................................ 101
5.3.3
Updaten van de gegevens op de server .................................................................. 101
Deel 4: Afwerking en Testen ........................................................................ 103 1
2
Enkele significante scherm lay-outs ........................................................................................ 103 1.1
Beheersapplicatie ............................................................................................................ 103
1.2
Mobiele applicatie ........................................................................................................... 104
Testen ...................................................................................................................................... 105 2.1
2.1.1
Beheersapplicatie .................................................................................................... 105
2.1.2
Mobiele Applicatie................................................................................................... 109
2.2
3
Testverslag....................................................................................................................... 105
Unit testen ....................................................................................................................... 113
2.2.1
Beheersapplicatie .................................................................................................... 113
2.2.2
Synchronization Framework .................................................................................... 113
Handleiding.............................................................................................................................. 115 3.1
Deel I: Beheersapplicatie ................................................................................................. 115
3.1.1
Beheer Entiteiten..................................................................................................... 116
3.1.2
Beheer Profielen ...................................................................................................... 117
3.1.3
Beheer Profiel Details .............................................................................................. 118
3.1.4
Beheer Users ........................................................................................................... 119
3.1.5
Beheer User Details ................................................................................................. 120
3.1.6
Beheer Devices ........................................................................................................ 121
3.1.7
Beheer Lay-out Overzicht ........................................................................................ 122
3.1.8
Beheer Lay-out Entiteit............................................................................................ 123
3.1.9
Beheer Lay-out View ............................................................................................... 124
3.1.10
Beheer Lay-out Attributen....................................................................................... 125
3.1.11
Beheer Lay-out Form ............................................................................................... 126
3.1.12
Beheer Lay-out Relaties........................................................................................... 127
4.1.1
Beheer Lay-out Filter ............................................................................................... 128
4.1.2
Beheer Lay-out Filter Conditie................................................................................. 129
Stagedossier G15
4.2
Mobile CRM
7
Deel II: De mobiele applicatie.......................................................................................... 130
4.2.1
Inleiding ................................................................................................................... 130
4.2.2
Set-up ...................................................................................................................... 130
4.2.3
Beginscherm ............................................................................................................ 131
4.2.4
Weergave van een gekozen entiteit ........................................................................ 131
4.2.5
Formulier van een record ........................................................................................ 132
4.2.6
Instellingen .............................................................................................................. 134
4.2.7
Synchronisatie ......................................................................................................... 134
4.2.8
Conflicten ................................................................................................................ 135
4.3
Problemen, verbeteringen en oplossingen ..................................................................... 136
4.3.1
Attributen van entiteiten rechtstreeks van de CRM server lezen ........................... 136
4.3.2
Toestellen hangen vast aan een gebruiker ............................................................. 136
4.3.3
Globale filter ............................................................................................................ 137
4.3.4
Support voor andere talen ...................................................................................... 137
4.3.5
Log pagina voor de beheersapplicatie..................................................................... 137
4.3.6
‘Mijn’ contactpersonen, activiteiten,… bij filters kunnen instellen......................... 137
5
Slotwoord ................................................................................................................................ 138
6
Bibliografie............................................................................................................................... 139
Deel 5:Bijlagen ............................................................................................ 140 1
Weekverslagen ........................................................................................................................ 140
2
Figurenlijst ............................................................................................................................... 152
Stagedossier G15
Mobile CRM
8
Voorwoord Onze stage was een interessant project voor ons omdat het geen aanpassing of migratie project was, maar een stand-alone uitbreiding op het Microsoft Dynamics CRM systeem. We moesten dus van nul beginnen en een volledige analyse en ontwerp opstellen, daarna de 2 grote delen (beheersapplicatie en mobile applicatie) schrijven en die dan ‘verbinden’ met een synchronisatie module. Daar kwam heel wat bij kijken en is zeker 1 van de complexere stages uit de stagelijst die we kregen, wat ons alleen maar trotser maakt op het eindresultaat. We hebben bij dit project ook veel bijgeleerd qua ontwerp en technieken om een stabiele basis te implementeren. We hopen dat dit dossier u een beter beeld zal geven van de werking van het project en dat u er veel plezier mag aan beleven. We zouden ook graag ESC bedanken voor deze leerrijke ervaring. En in het bijzonder onze stagementor Benny Van Hyfte. − −
Dwight Kerkhove Pieter Van Hamme
Stagedossier G15
Mobile CRM
9
Deel 1: Inleiding
1 Voorstelling bedrijf en activiteiten
Wij hebben stage gelopen bij ESC in De Pinte. Het is een 10-jaar jong bedrijf met reeds meer dan 25 werknemers en biedt zowel hard- als software oplossingen aan (vooral KMO) bedrijven. ESC heeft 4 bedrijfstakken: •
•
Hardware: dit omvat alles wat met apparatuur te maken heeft. Gaande van een printer tot een volledige netwerkoplossing. Software: dit gedeelte wordt onderverdeelt in standaard software en maatwerk. Voorbeelden van standaard software zijn CUBIC pro, Exact Globe, Synergy, Microsoft Dynamics CRM, enz. Voorbeelden van maatwerk zijn het maken van een website, beheersystemen, enz.
•
Communicatie systemen: informatiezuilen, bewakingscamera’s en Voice over IP
•
Training: ESC geeft ook training voor alle software die ze verdelen. ESC is Q*for gecertificeerd door de Vlaamse Gemeenschap (opleiding- en adviescheques)
Stagedossier G15
Mobile CRM
10
2 Beschrijving van de opdracht Voor de opdracht moeten we een CRM uitbreiden met de mogelijkheid om de gegevens via een mobiel toestel offline te kunnen raadplegen. De opdracht zal dus bestaan uit 3 delen: - De mobile applicatie - Synchronisatie tussen de mobiele toestellen en de CRM server - De beheersapplicatie De mobile applicatie is de software die geïnstalleerd wordt op het mobiele toestel en waar de gebruiker de gegevens van het CRM systeem kan zien, toevoegen, wijzigen of verwijderen. De gegevens van de CRM Server worden op de mobiele client geplaatst door middel van synchronisatie. Deze synchronisatie gebeurt in 2 richtingen, zo worden ook de gewijzigde gegevens van op de mobile client naar de CRM Server gestuurd om deze wijzigingen door te voeren. Welke gegevens er voor wie beschikbaar is en hoe deze worden voorgesteld wordt volledig dynamisch bepaald in de beheersapplicatie. Door het aanmaken van de nodige profielen beslist de beheerder wie welke gegevens mag zien. Er kan dus per profiel meegegeven worden welke gegevens (vb. accounts, contactpersonen, activiteiten) er mag gezien worden. Niet alle gebruikers van het CRM systeem kunnen de mobile applicatie gebruiken, de beheerder geeft sommige gebruikers rechten om via de mobiele applicatie te verbinding te maken. Verschillende gebruikers mogen ook een verschillend aantal toestellen hebben (vb. iemand met een pda en gsm waar de mobiele applicatie op geïnstalleerd is). Het maximum aantal gebruikers en toestellen is gelimiteerd per licentie. Elke gebruiker moet ook tot een profiel behoren. Voorbeeld: Jan is een verkoper, hij is toegewezen aan het MobileSalesProfile. Daarin staat dat hij de entiteiten contacten en verkoopkansen op zijn mobile kan zien. Tom daarentegen is boekhouder, behoort tot MobileBookkeeper en ziet de accounts, contacten en rapporten.
Bij elk profiel hoort er per entiteit een weergave en een formulier: hierin wordt beschreven welke gegevens zichtbaar zijn enerzijds bij het overzicht van entiteiten en anderzijds bij detail van een entiteit. Vervolg voorbeeld: Jan krijgt een overzicht van alle contacten met hun naam en telefoon. Tom krijgt in het overzicht de naam en hun woonplaats te zien.
Omdat het geheugen van een mobiel toestel meestal relatief beperkt is, is er een optie voorzien om de data te filteren. Zo zal niet alle data van de CRM server naar de mobiele applicatie gesynchroniseerd worden. Vervolg voorbeeld: Jan krijgt een overzicht van alle contacten die in de stad Gent wonen te zien, terwijl Tom over de contactpersonen uit Gent en Antwerpen beschikt.
Stagedossier G15
Mobile CRM
11
3 Beschrijving van het huidige systeem Ons project was om een mobiele uitbreiding te maken voor Microsoft Dynamics CRM. Voordat we kunnen toelichten wat onze uitbreiding is en doet, is het waarschijnlijk het best dat we eerst even Microsoft Dynamics CRM uitleggen. Microsoft Dynamics CRM is de customer relationship management-software die past bij de behoeften en het budget van kleine, middelgrote en grote organisaties, en die u helpt om meer uit al uw relaties te halen. Microsoft Dynamics CRM is gemakkelijke, flexibele en geïntegreerde CRM-software die u en uw medewerkers in staat stelt te zorgen voor een goed relatiebeheer, gefundeerde beslissingen te nemen, omzet te verhogen en uw klanten een superieure service te bieden. Bron: www.microsoft.com
Microsoft Dynamics CRM is dus een applicatie die alle gegevens in verband met uw klantenrelaties regelt. Het bevat onder andere volgende gegevens van contactpersonen: namen, adressen, telefoonnummers, enz. Maar Microsoft Dynamics CRM is meer dan een digitale adressenboek. Het bevat ook facturen, verkoopkansen en zoveel meer. De “Dynamics” in Microsoft Dynamics CRM wil zeggen dat alle instellen heel vlot en gemakkelijk aan te passen zijn. Wenst u zo bijvoorbeeld een extra veld “huidige wagen” toe te voegen aan een contactpersoon is dit op 5 minuutjes toegevoegd (door een ervaren Microsoft Dynamics CRM gebruiker). De applicatie draait op een webserver en is dus toegankelijk met Internet Explorer. Zo kan elke medewerker gemakkelijk van op zijn/haar pc de gegevens bekijken en eventuele aanpassingen doorvoeren.
Figuur 1: Een overzicht van contactpersonen in de Microsoft Dynamics CRM Omgeving
Hier ziet u een overzicht van alle contactpersonen. Links kan u doorklikken naar andere onderdelen zoals “accounts”.
Stagedossier G15
Mobile CRM
12
Figuur 2: Details van 1 contactpersoon
Dit is een overzicht van de details van een contactpersoon. Hier kan u alle gegevens van deze contactpersoon beheren.
Stagedossier G15
Mobile CRM
13
4 Terminologie Om de verdere inhoud van dit document te begrijpen is het nodig een aantal termen die zullen gehanteerd worden uit te leggen.
4.1 CRM Server Customer Relationship Management Server. Dit verwijst naar de bestaande Microsoft Dynamics server waarin o.a. contact- en verkoopgegevens van klanten of relaties zitten.
4.2 Entiteit Een entiteit binnen het CRM systeem is soort container van data, zoals ‘Account’ of ‘Contactpersoon’. Het heeft verschillende attributen zoals ‘Voornaam’, ‘Naam’, etc. en kan meerdere records bevatten.
4.3 View van een entiteit Het overzicht van alle records binnen een entiteit. Het bevat altijd een aantal kolommen (die overeenstemmen met de attributen van de entiteit) en het kan een filter bevatten (vb. om alleen de gewijzigde records van de laatste 6 maanden te tonen).
4.4 Form van een entiteit De details van 1 bepaald record binnen een entiteit. Hier kan de gebruiker gegevens van het geselecteerde record in detail bekijken en aanpassen. Een form bestaat uit een aantal tabs met daarin een aantal velden aan informatie.
4.5 Meta Data van de Beheersapplicatie/Mobile Server Dit zijn de instellingen die beheerd worden door de beheersapplicatie en gesynchroniseerd worden met de mobile client. De meta data beschrijft welke CRM gegevens beschikbaar moeten zijn op de mobile client (entiteit, attribuut, profiel, user, ...) en hoe die getoond moeten worden (view, filter, form, tab, ...).
4.6 CRM Data De gegevens of records van een entiteit. Deze gegevens moeten getoond worden op de mobile client aan de hand van de meta data en kunnen dan gewijzigd worden.
Stagedossier G15
Mobile CRM
14
Deel 2: Analyse 1 Use Cases Beheersapplicatie De beheersapplicatie zal geïntegreerd zijn met de bestaande CRM Client. Het beheert welke gegevens (A, B & F), hoe (D, E) en voor wie (C) deze zullen worden weergegeven op de mobile. De gegevens zullen d.m.v. synchronisatie met de CRM Server op het mobile toestel beschikbaar zijn.
Figuur 3: Het overzicht van de use cases van de beheersapplicatie
A. Beheren van entiteiten (globaal) Toevoegen/Verwijderen van entiteiten die beschikbaar zijn voor de gehele mobiele applicatie. Bij het beheren van profielen zal er alleen keuze zijn tussen deze entiteiten. Elk van deze entiteiten hebben verplicht een mobile form en een mobile view.
B. Beheren van profielen (groepen users) Het indelen van gebruikers gebeurt d.m.v. profielen en per profiel wordt aangegeven welke entiteiten mogen gelezen worden, welke entiteiten mogen gewijzigd worden (per attribuut) en welke entiteiten verwijdert mogen worden. Bij het beheren van profielen is er enkel keuze tussen de entiteiten die bij het beheren van entiteiten beschikbaar gesteld zijn.
C. Beheren van users (1 profiel, max. devices) Toewijzen (door superuser) van users die het mobile CRM systeem mogen gebruiken, met 1 mobiele profiel per gebruiker en het maximaal aantal devices voor die user. (User aantal en device aantal beperkt aan de hand van een licentie).
D. Beheren van forms (globaal per entiteit) De volgorde van de gegevens van de geselecteerde entiteit instellen/wijzigen (zie instellingen bij profiel) en welke al dan niet moeten worden weergegeven.
Stagedossier G15
Mobile CRM
15
E. Beheren van views (globaal per entiteit) Bepaalt het uitzicht van het overzicht van een entiteitenlijst. Het bepaalt: - De kolommen (attributen) die getoond worden in de tabel - Een restrictie om niet alle data te tonen
F. Beheren van filters (globaal per profiel per entiteit) Welke records moet op de PDA terechtkomen? Vb. enkel contactpersonen uit Gent (Query).
G. Beheren van lay-out Per profiel per entiteit kunnen forms (D), views (E) en filters (F) aangepast worden.
H. Beheren van devices Een overzicht van alle toestellen die in het verleden al gesynchroniseerd hebben. Per toestel heb je de mogelijkheid het toestel te blokkeren, dit voorkomt synchronisatie in de toekomst en zal alle data op het toestel verwijderen.
Stagedossier G15
Mobile CRM
16
1.1 Beheren van Entiteiten Revision History: Auteur Pieter Van Hamme Dwight Kerkhove Pieter Van Hamme Dwight/Pieter Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use case nagekeken en kleine wijzigingen doorgevoerd Concept GUI gemaakt Aanpassing op basis van verkregen feedback Use case aangepast
Datum 17/02/2009 17/02/2009 18/02/2009 19/02/2009 04/06/2009
Primaire Actor: Beheerder van het mobile CRM systeem (die de instellingen van alle mobile CRM clients bepaald). Pre Condities: − Beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. Post Condities: − De lijst met entiteiten zijn beschikbaar voor profielen. Normaal verloop: 1. Het systeem toont een overzicht met de entiteiten die naderhand aan profielen gekoppeld kunnen worden. Dit overzicht bevat per entiteit zijn naam en bijhorend icoon. 2. De beheerder wil een entiteit beschikbaar stellen als mobile entiteit. 3. Het systeem toont een lijst van alle entiteiten die nog niet in het overzicht staan. 4. De beheerder kiest een of meerdere entiteiten en bevestigt. 5. Het systeem registreert de aanpassingen.
Alternatief verloop: 2. Entiteit verwijderen. a. De gebruiker wenst een entiteit te verwijderen. b. Het systeem vraagt bevestiging. c. De gebruiker bevestigt. d. Het systeem verwijdert de entiteit. e. Keer terug naar stap 1. 4. Annuleer keuze. a. De gebruiker annuleert zijn keuze. b. Ga terug naar stap 1.
Stagedossier G15
Mobile CRM
17
1.2 Beheren van Profielen Revision History: Auteur Pieter Van Hamme Dwight Kerkhove Pieter Van Hamme Dwight/Pieter Pieter Van Hamme Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use case nagelezen en kleine details aangepast Concept GUI gemaakt Aanpassing op basis van verkregen feedback Views, forms en filters worden via Beheren van lay-out aangepast Use case aangepast
Datum 17/02/2009 17/02/2009 18/02/2009 19/02/2009 23/02/2009 04/06/2009
Primaire Actor: Profielbeheerder Pre Condities: − De beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. Post Condities: − Het profiel is aangepast. Normaal verloop: 1. 2. 3. 4.
Het systeem toont een overzicht van alle huidige profielen. De beheerder kiest welk profiel hij wenst aan te passen. Het systeem laadt de gegevens (naam en gekozen entiteiten) van het gekozen profiel in. Het systeem toont de profielnaam en alle mobiele entiteiten. Per entiteit wordt de restrictie opties leesbaar, wijzigbaar en verwijderbaar weergegeven. Alsook de default view en default form. 5. De beheerder past de opties aan en bevestigt. 6. Het systeem registreert de gegevens.
Stagedossier G15
Mobile CRM
Alternatief verloop: 1. Geen profielen aanwezig. 1.1. De beheerder kan enkel een nieuw profiel aanmaken. 1.2. Ga naar stap 4 (met alle velden leeg). 2. 1. Nieuw profiel aanmaken. 2.1. De beheerder wil een nieuw profiel aan maken. 2.2. Ga naar stap 4 (met alle velden leeg). 2. 2. Profiel verwijderen. b. De beheerder wil een profiel verwijderen. c. Het systeem vraagt om bevestiging. d. De beheerder bevestigt. b. Het systeem verwijdert het profiel en zijn users. 4. Onvolledige gegevens a. Het systeem geeft een melding dat er niet voor elke Entiteit een view of form geselecteerd. b. Ga terug naar stap 7. 4. Geen View of Form beschikbaar voor een entiteit a. Het systeem stelt deze entiteit niet beschikbaar. b. Ga terug naar stap 4. 5. Profielnaam aanpassen. a. De beheerder past de profielnaam aan. c. Ga terug naar stap 5.
18
Stagedossier G15
Mobile CRM
19
1.3 Beheren van Users Revision History: Auteur Pieter Van Hamme Dwight Kerkhove Dwight/Pieter Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use case nagekeken en hier en daar wat aangepast Aanpassing op basis van verkregen feedback Use case aangepast
Datum 17/02/2009 17/02/2009 19/02/2009 04/06/2009
Primaire Actor: Beheerder van het mobile CRM systeem (die de instellingen van alle mobile CRM clients bepaald). Pre Condities: − Beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. Post Condities: − Er zijn mobiele gebruikers toegevoegd. Normaal verloop: 1. Het systeem geeft een overzicht van de huidige mobiele gebruikers. Met per gebruiker volgende gegevens: naam, profiel en maximum aantal toestellen. En een lijst van zijn toestellen met: het id, de naam en het platform van het toestel en de datum laatste synchronisatie. 2. De beheerder wil een gebruiker mobiele toegang geven. 3. Het systeem vraagt aan de beheerder: - Een gebruiker uit de lijst te selecteren. - Een profiel voor de gebruiker te selecteren. - Het maximum toegelaten toestellen in te geven. 4. De beheerder selecteert de gewenste gebruiker, het gewenste mobiele profiel en stelt maximum aantal toestellen in. De beheerder bevestigt. 5. Het systeem valideert de gegevens. 6. Het systeem registreert de gebruiker als mobiele gebruiker. 7. Het systeem update het overzicht. 8. De beheerder herhaalt stap 2-6 tot alle gewenste gebruikers toegevoegd zijn.
Stagedossier G15
Mobile CRM
20
Alternatief verloop: 2. 1. Gebruiker verwijderen a. De beheerder wil een gebruiker verwijderen. b. Het systeem vraagt bevestiging. c. De beheerder bevestigt. d. Het systeem verwijdert de gebruiker.
2. 3. Gebruiker aanpassen a. De beheerder wil een gebruiker aanpassen. b. Het systeem toont van de gebruiker zijn profiel, maximum toegelaten toestellen en geeft een overzicht van zijn huidige toestellen. c. De beheerder past het profiel en maximum toegelaten toestellen aan en bevestigt. d. Het systeem registreert de aanpassingen. e. Ga verder naar stap 7. 3. Maximum aantal mobiele gebruikers bereikt. a. Het systeem meldt dat het maximum aantal mobiele gebruikers bereikt is. b. Ga terug naar stap 2. 5. 1. Maximum aantal toestellen bereikt. a. Het systeem meldt dat het maximum aantal toestellen bereikt is. b. Ga terug naar stap 4. 5. 2. Geen gebruiker geselecteerd a. De beheerder heeft geen gebruiker geselecteerd. a. Het systeem vraagt om een gebruiker te selecteren. b. Ga terug naar stap 4. 5. 3. Geen profiel geselecteerd a. De gebruiker heeft geen profiel geselecteerd. b. Het systeem vraagt om een profiel te selecteren. c. Ga terug naar stap 4. 5. 4. Maximum aantal toestellen niet correct ingevuld a. De gebruiker heeft een incorrect aantal maximum aantal toestellen ingegeven. b. Het systeem vraagt om een getal tussen 1 en 20 in te geven. c. Ga terug naar stap 4. Opmerkingen: -
Maximum aantal mobiele gebruikers en maximum aantal toestellen is licentie afhankelijk.
Stagedossier G15
Mobile CRM
21
1.4 Beheren van Lay-out Revision History: Auteur Dwight Kerkhove Pieter Van Hamme Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use case nagekeken en kleine wijzigingen doorgevoerd Use case aangepast
Datum 24/02/2009 24/02/2009 04/06/2009
Primaire Actor: Beheerder Pre Condities: − Beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. Post Condities: − De lay-out van een entiteit van een profiel is aangepast. Normaal verloop: 1. 2. 3. 4. 5. 6. 7.
Het systeem vraagt van welke mobiele entiteit de aanpassingen moeten gebeuren. De beheerder selecteert een entiteit. Het systeem toont de views, forms en filters van het geselecteerde entiteit. De beheerder wil een view aanmaken. Ga naar use case Beheren van views. De beheerder wil een form aanmaken. Ga naar use case Beheren van forms.
Stagedossier G15
Mobile CRM
Alternatief verloop: 4. 1. View aanpassen a. De beheerder wil een view aanpassen. b. Ga verder met de use case: Beheren van views. 4. 2. View verwijderen a. De beheerder wil een view verwijderen. b. Het systeem vraagt om bevestiging. c. De beheerder bevestigt zijn keuze. d. Het systeem verwijdert de view. 6. 1. Form aanpassen a. De beheerder wil een form aanpassen. b. Ga verder met de use case: Beheren van forms. 6. 2. Form verwijderen a. De beheerder wil een form verwijderen. b. Het systeem vraagt om bevestiging. c. De beheerder bevestigt zijn keuze. d. Het systeem verwijdert de form. 7. 1. Filter aanpassen a. De beheerder wil een filter aanpassen. b. Ga verder met de use case: Beheren van filters. 7. 1. Filter verwijderen c. De beheerder wil een filter verwijderen. d. Het systeem vraagt om bevestiging. e. De beheerder bevestigt zijn keuze. a. Het systeem verwijdert de filter.
22
Stagedossier G15
Mobile CRM
23
1.5 Beheren van Forms Revision History: Auteur Dwight Kerkhove Pieter Van Hamme Dwight/Pieter Dwight Kerkhove Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use Case nagekeken en kleine wijzigingen doorgevoerd Aanpassing op basis van verkregen feedback Aanpassing dat forms ook per profiel zijn Use case aangepast
Datum 17/02/2009 17/02/2009 19/02/2009 23/02/2009 04/06/2009
Primaire Actor: Beheerder van het mobile CRM systeem (die de instellingen van alle mobile CRM clients bepaald). Pre Condities: − De beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. − De beheerder heeft een entiteit gekozen (zie use case: Beheren van Lay-out) Post Condities: − De beheerder heeft de mobiele voorstelling (form) van de details van een entiteit aangepast. Normaal verloop: 1. De beheerder wil een mobiele form aanpassen. 2. Het systeem toont: - De huidige lay-out (welke attributen er zich op welke tabbladen bevinden). 3. De beheerder wil een attribuut toevoegen. 4. Het systeem geeft een overzicht van alle attributen die zich nog niet op de form bevinden. 5. De beheerder selecteert een of meerdere attributen en bevestigt. 6. Het systeem voegt de gekozen attributen toe aan het huidig tabblad. 7. De beheerder verplaatst een attribuut op een tabblad. 8. Het systeem past de lay-out aan. 9. Herhaal stap 3-8 tot dat de gewenste lay-out is bekomen. 10. De beheerder slaat de wijzigingen op. 11. Het systeem registreert de wijziging.
Stagedossier G15
Mobile CRM
Alternatief verloop: 2. Geen attributen toegevoegd op het huidig tabblad. a. Het systeem geeft een melding dat er nog geen attributen toegevoegd zijn op het huidig tabblad. b. Ga verder naar stap 3. 3. 1. Nieuwe tab toevoegen. a. De beheerder wil een nieuwe tab toevoegen. b. Het systeem voegt een nieuwe tab toe en zet de nieuwe tab als huidige tab. c. Ga verder naar stap 4. 3. 2. Tab verwijderen. a. De beheerder wil de huidige tab verwijderen. b. Het systeem vraagt bevestiging aan de beheerder. c. De beheerder bevestigt. d. Ga verder met stap 4. 3.2 a.1. De huidige tab is de enige tab. i. Het systeem meldt dat de tab niet verwijderd kan worden. ii. Ga terug naar stap 3. 3. 3. Nieuwe relatie toevoegen aan tab. a. De beheerder wil een relatie toevoegen aan de huidige tab. b. Het systeem geeft een overzicht van alle relaties die zich nog niet op de form bevinden. c. De beheerder selecteert een of meerdere relaties en bevestigt. d. Het systeem voegt de gekozen relaties toe als attribuut aan het huidig tabblad. e. Ga verder naar stap 7. 3. 4. Attribuut verwijderen van tab a. De beheerder kiest voor attribuut verwijderen van de huidige tab. b. Het systeem verwijdert het attribuut van de tab. c. Ga verder met stap 9.
24
Stagedossier G15
Mobile CRM
25
1.6 Beheren van Views Revision History: Auteur Dwight Kerkhove Pieter Van Hamme Dwight/Pieter Dwight/Pieter Dwight Kerkhove Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use Case nagekeken en samen beslist om deze use case nog eens grondig na te kijken Use Case aangepast; “wijzigen van Default views” verwijderd als functionaliteit Aanpassing op basis van verkregen feedback Aanpassing dat views ook per profiel zijn Use case aangepast
Datum 17/02/2009 17/02/2009 18/02/2009 19/02/2009 23/02/2009 04/06/2009
Primaire Actor: Beheerder van het mobile CRM systeem (die de instellingen van alle mobile CRM clients bepaald). Pre Condities: − De beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. − De beheerder heeft een entiteit gekozen (zie use case: Beheren van Lay-out) Post Condities: − De beschikbare views op de mobile client zijn aangepast. Normaal verloop: 1. De beheerder wil een mobiele view aanpassen. 2. Het systeem toont: - De huidige lay-out van de view (welke attributen er moeten weergegeven worden). 3. De beheerder wenst een kolom toe te voegen. 4. Het systeem geeft een overzicht van alle attributen die zich nog niet op de view bevinden. 5. De beheerder selecteert een of meerdere attributen en bevestigt. 6. Het systeem voegt de gekozen attributen toe aan de view. 7. De beheerder verplaatst een attribuut op een tabblad. 8. Het systeem past de lay-out aan. 9. Herhaal stap 3-8 totdat alle gewenste kolommen aanwezig zijn. 10. De beheerder wenst de filter van de view aan te passen (Ga naar Beheer Filters) 11. De beheerder wil de view opslaan. 12. Het systeem registreert de gegevens.
Stagedossier G15
Mobile CRM
Alternatief verloop: 1. Nieuwe View a. De beheerder wenst een nieuwe view aan te maken. b. Het systeem toont een view zonder attributen. c. Ga verder met stap 3. 2. Attribuut verwijderen a. De beheerder wenst een attribuut te verwijderen. b. Het systeem vraagt om bevestiging. c. De beheerder bevestigt zijn keuze. d. Het systeem verwijdert het attribuut uit de view. e. Ga verder naar stap 9.
26
Stagedossier G15
Mobile CRM
27
1.7 Beheren van Filters Revision History: Auteur Dwight Kerkhove Pieter Van Hamme Dwight/Pieter Dwight Kerkhove Pieter Van Hamme
Beschrijving Opstellen van de Use Case Use case nagekeken en kleine wijzigingen doorgevoerd Aanpassing op basis van verkregen feedback Aanpassing dat filters ook per profiel zijn Use case aangepast
Datum 17/02/2009 17/02/2009 19/02/2009 23/02/2009 04/06/2009
Primaire Actor: Beheerder van het mobile CRM systeem (die de instellingen van alle mobile CRM clients bepaald). Pre Condities: − De beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. − De beheerder heeft een entiteit en profiel gekozen (zie use case: Beheren van Lay-out) Post Condities: − De filtercriteria zijn aangepast. Normaal verloop: 1. 2. 3. 4. 5. 6.
7. 8. 9. 10. 11.
De beheerder wil een filter aanpassen. Het systeem toont de gedefinieerde filter en bijbehorende criteria. De beheerder wil een nieuwe ConditieGroep toevoegen. Het systeem maakt een nieuwe ConditieGroep aan. De beheerder wil nieuwe Conditie toevoegen in die groep. Het systeem vraagt: - Een keuze uit de lijst van attributen waarop het criterium van toepassing is - De operator die de vergelijking van het attribuut met de waarde definieert (gelijk aan, groter dan,..) De waarde waarmee het attribuut wordt vergeleken aan de hand van de operator. De beheerder kiest een attribuut, operator en de waarde en bevestigt. Het systeem voegt de criteria toe. Herhaal stap 3-8 tot de filter voldoet. De beheerder slaat de gegevens op. Het systeem registreert de nieuwe filter voor de gekozen entiteit en profiel.
Stagedossier G15
Mobile CRM
28
Alternatief verloop: 3. Verwijderen van een groep (boolean operator). a. De beheerder wil de groep verwijderen. b. Het systeem vraagt om de actie te bevestigen. c. De beheerder bevestigt. d. Het systeem verwijdert de groep en alle filtercriteria die tot die groep behoorden. 5. Verwijderen van een filtercriterium. a. De beheerder wil een filtercriterium verwijderen. b. Het systeem vraagt om de actie te bevestigen. c. De beheerder bevestigt. d. Het systeem verwijdert het criterium. 5. Filtercriterium verhuizen naar andere groep. a. De beheerder wil een filtercriterium verhuizen naar een andere groep. b. Het systeem voegt het criterium toe in de bestemmende groep en verwijdert het uit de oorspronkelijke groep. 5. Filtercriterium wijzigen. a. De beheerder wil 1 of meerdere parameters wijzigen van het criterium. b. Het systeem toont de gegevens (attribuut, operator, waarde) zoals in stap 5. c. De beheerder verandert de foute gegevens en bevestigt. d. Het systeem registreert de wijziging.
Stagedossier G15
Mobile CRM
29
1.8 Beheren van Devices Revision History: Auteur Pieter Van Hamme Dwight Kerkhove
Beschrijving Opstellen van de Use Case Use case nagekeken en kleine aanpassingen doorgevoerd
Datum 04/05/2009 06/05/2009
Primaire Actor: Beheerder van het mobile CRM systeem (die de instellingen van alle mobile CRM clients bepaald). Pre Condities: − Beheerder is ingelogd. − De beheerder heeft toegang tot deze functionaliteit. Post Condities: − De gewenste toestellen zijn geblokkeerd. Normaal verloop: 6. Het systeem geeft een overzicht van alle toestellen die al eens gesynchroniseerd hebben. Met per toestel volgende gegevens: het id, de naam, het platform, de gebruiker en de datum van de laatste synchronisatie van het toestel. 7. De beheerder wil een toestel blokkeren. 8. Het systeem vraagt om bevestiging. 9. De beheerder bevestigt. 10. Het systeem stelt het toestel op de zwarte lijst. Alternatief verloop: 3. Toestel vrijgeven d. De beheerder wil een toestel vrijgeven. e. Het systeem vraagt om bevestiging. f. De beheerder bevestigt. e. Het systeem verwijdert het toestel van de zwarte lijst. Opmerking: −
De data van de toestellen op de zwarte lijst zullen bij een volgende synchronisatie volledig gewist worden.
Stagedossier G15
Mobile CRM
30
2 Use cases Mobiele Applicatie De mobile applicatie biedt de gebruiker de mogelijkheid om gegevens zoals accounts, contacten enz. te bekijken en aan te passen zonder verbonden te zijn met de CRM Server. De wijzigingen worden dan later gesynchroniseerd met de CRM server wanneer een verbinding gemaakt is. De gebruiker ziet een overzicht van de verschillende entiteiten (accounts, contacten) in het hoofdmenu. Alle wijzigingen van lay-out voor de details en/of overzicht van een entiteitenlijst (zoals de records in contacten) worden allemaal op de server gedefinieerd (d.m.v. de beheersapplicatie) en lokaal opgeslagen bij de synchronisatie.
Figuur 4: Het overzicht van de use cases van de mobiele applicatie
A. Applicatie opstarten Het initialiseren van de instellingen bij de 1e start up en het hoofdmenu tonen.
B. Synchroniseren Verzorgt de synchronisatie tussen de lokale gegevens en de gegevens op de CRM server.
C. Oplossen van conflicten Biedt de functionaliteit aan om conflicten die ontstaan zijn bij de synchronisatie te kunnen oplossen.
D. Beheren van instellingen Beschrijft de verschillende mogelijkheden van de instellingen.
E. Entiteiten mobiel gebruiken Zorgt voor de CRUD van de gegevens die beschikbaar gesteld zijn op het mobile systeem.
Stagedossier G15
Mobile CRM
31
2.1 Applicatie opstarten Revision History: Auteur Dwight Kerkhove Pieter Van Hamme Dwight/Pieter Dwight/Pieter
Beschrijving Opstellen van de use case Nazicht van de use case + concept gui Aanpassing op basis van verkregen feedback Use case aangepast
Datum 17/02/2009 17/02/2009 19/02/2009 05/05/2009
Primaire Actor: Gebruiker van het mobile CRM systeem Pre Condities: − De applicatie is correct geïnstalleerd. Post Condities: − De gebruiker heeft een keuze uit het hoofdmenu gemaakt. Normaal verloop: 1. 2. 3. 4.
Het systeem verifieert of de applicatie niet voor de eerste keer wordt opgestart. Het systeem toont het hoofdmenu met een lijst van entiteiten. De gebruiker kiest een entiteit. Ga verder met use case Entiteiten Mobiel Gebruiken.
Alternatief verloop: 1. Het systeem wordt voor de 1e keer opgestart. a. Ga verder met use case Beheer Instellingen. 2. 1. De gebruiker kiest voor de menu Instellingen. a. Ga verder met use case Beheer Instellingen. 2. 2. De gebruiker kiest voor de menu Synchronisatie. a. Ga verder met use case Synchronisatie.
Stagedossier G15
Mobile CRM
32
2.2 Synchroniseren Revision History: Auteur Dwight/Pieter Dwight/Pieter Dwight/Pieter
Beschrijving Opstellen van de use case Aanpassen van de use case op basis van nieuwe structuur (Synchronisatie flowchart) Use case aangepast
Datum 18/02/2009 20/02/2009 06/05/2009
Primaire Actor: De gebruiker, het mobiele CRM systeem, CRM server. Pre Condities: - Het toestel is verbonden met het internet. Post Condities: − De synchronisatie is voltooid. De gegevens op de mobile client zijn consistent met de CRM server. Normaal verloop: 1. De gebruiker start de synchronisatie. 2. Het mobiele CRM systeem verbindt met de CRM server. 3. Het mobiele CRM systeem autoriseert zichzelf aan de hand van de lokale gebruikersnaam, paswoord, domein en toestel informatie (id, naam en platform). 4. De CRM server verifieert deze inloggegevens. 5. Het mobiele CRM systeem vraagt een update. 6. De CRM Server stuurt alle entiteiten die gewijzigd zijn sinds de laatste synchronisatiedatum door. 7. Het mobiele CRM systeem past alle updates toe en toont de details ervan. 8. Het mobiele CRM systeem stuurt zijn logboek (alle lokale wijzigingen waar geen conflict voor bestaat) door en toont de details. 9. De CRM Server update zijn data op basis van het logboek. 10. Het mobiele CRM systeem verbreekt de verbinding.
Stagedossier G15
Mobile CRM
33
Alternatief verloop: 1. De gebruiker wil bestaande conflicten oplossen. a. Ga verder met use case Oplossen van conflicten. 2. De verbinding kan niet tot stand worden gebracht. a. Het mobiele CRM systeem kan geen verbinding maken met de CRM server. b. Het systeem geeft een foutmelding. 4. 1. Combinatie gebruikersnaam, paswoord en domein is incorrect. a. De CRM server meldt dat de combinatie van gebruikersnaam, paswoord en domein incorrect zijn. b. Het systeem geeft een foutmelding. 4. 2. De gebruiker heeft geen toegang tot het mobiele CRM systeem. a. De CRM server meldt dat de beheerder de gebruiker geen toegang gegeven heeft tot het mobiele CRM systeem. b. Het mobiele CRM systeem geeft een foutmelding. 4. 3. Het toestel van de gebruiker is geblacklist. a. De CRM server meldt dat het toestel van de gebruiker geblacklist is. b. Het mobiele CRM systeem verwijdert alle bestaande gegevens en instellingen en geeft een foutmelding aan de gebruiker. 6. Geen wijzigingen sinds de laatste synchronisatie. a. Ga naar stap 8. 7. Er is een conflict met de gewijzigde gegevens. a. De CRM server meldt dat er een conflict is bij de gewijzigde gegevens. b. Het mobiele CRM systeem slaat elk conflict op in het logboek. 8. Er zijn geen wijzigingen op het mobiele CRM systeem uitgevoerd sinds de laatste synchronisatie. a. Ga verder met stap 10. 9. Er is een conflict met de gewijzigde gegevens. a. De CRM server meldt dat er een conflict is bij de gewijzigde gegevens. b. Het mobiele CRM systeem slaat elk conflict op in het logboek.
Technische Informatie: -
Indien op elk gegeven moment de verbinding verbroken wordt, wordt de synchronisatie herstart. Wanneer de transactie per gewijzigde gegeven van zowel de server naar client of andersom onderbroken wordt, wordt deze herstart bij de volgende synchronisatie.
Stagedossier G15
Mobile CRM
34
2.3 Entiteiten mobiel gebruiken Revision History: Auteur Dwight Kerkhove Pieter Van Hamme Dwight/Pieter
Beschrijving Opstellen van de use case Use case nagekeken en kleine wijzigingen doorgevoerd Use case aangepast
Datum 18/02/2009 20/02/2009 05/05/2009
Primaire Actor: Gebruiker van mobile CRM Pre Condities: − De gebruiker heeft een entiteit uit het hoofdmenu gekozen. Post Condities: - De gebruiker heeft de gewenste informatie verkregen. Normaal verloop: 1. Het mobile CRM systeem geeft een overzicht van alle records van de gekozen entiteit. 2. De gebruiker kiest een record. 3. Het mobile CRM systeem toont de details voor het record (volgens het gedefinieerde formulier van dat entiteit). 4. De gebruiker maakt gebruik van de aangeboden informatie. Alternatief verloop: 2. 1. Nieuwe record toevoegen. a. De gebruiker wil een nieuwe record toevoegen aan de lijst. b. Het systeem vraagt de attributen van de entiteit in te vullen voor het aanmaken van de nieuwe record. c. De gebruiker vult de gewenste gegevens (attributen van de entiteit) in en bevestigt. d. Het systeem valideert en slaat deze nieuwe record op. e. Het systeem slaat deze wijziging ook op in de log. 2.1.d.1 Er zijn gegevens niet correct ingevuld. i. Het systeem duidt de ongeldige velden aan. ii. Ga terug naar alternatieve stap 2.1.c 2. 2. Record wijzigen a. De gebruiker wil een record wijzigen. b. Het systeem vraagt de attributen van de entiteit aan te passen. c. De gebruiker past de gewenste gegevens (attributen van de entiteit) aan en bevestigt. d. Het systeem valideert en slaat de record op. e. Het systeem slaat deze wijziging ook op in de log.
Stagedossier G15
Mobile CRM
2.2.d.1 Er zijn gegevens niet correct ingevuld. a. Het systeem duidt de ongeldige velden aan. b. Ga terug naar alternatieve stap 2.2.c 2. 3. View wijzigen a. De gebruiker wil de view van het overzicht wijzigen. b. Het systeem toont de beschikbare views. c. De gebruiker kiest een view. d. Het systeem past de lay-out aan op basis van de nieuwe geselecteerde weergave. 2. 4. Record verwijderen a. De gebruiker wil een entiteit verwijderen. b. Het systeem vraagt om bevestiging. c. De gebruiker bevestigt. d. Het systeem verwijdert de entiteit. e. Het systeem slaat deze verwijdering op in log. 2. 5. Sorteren a. De gebruiker wil de records sorteren. b. Het systeem sorteert de records volgens de keuze van de gebruiker. 2. 6. Zoeken a. De gebruiker wil naar een record zoeken. b. Het systeem vraagt naar wat de gebruiker wil zoeken. c. De gebruiker vult de zoekcriteria in. d. Het systeem toont de records die voldoen aan de zoekcriteria. 4. 1. Record wijzigen a. Zie alternatief verloop 2.2 4. 2. Record verwijderen a. Zie alternatief verloop 2.4 4. 3. Beschikbare telefoonnummer bellen a. De gebruiker wil de telefoonnummer bellen. b. Het systeem belt het telefoonnummer. 4. 4. Beschikbare e-mail mailen a. De gebruiker wil het beschikbare e-mail mailen. b. Het systeem start de e-mail client van het toestel met het e-mailadres als bestemming. 4. 5. Beschikbare URL openen a. De gebruiker wil navigeren naar een beschikbare URL. b. Het systeem start de internet browser van het toestel met de URL als bestemming.
35
Stagedossier G15
Mobile CRM
36
2.4 Oplossen van conflicten Revision History: Auteur Dwight Kerkhove Pieter Van Hamme
Beschrijving Opstellen van de use case Use case nakijken en kleine aanpassingen doorgevoerd
Datum 06/05/2009 06/05/2009
Primaire Actor: De gebruiker van het mobile CRM systeem. Pre Condities: - De gebruiker bevindt zich op het synchronisatie overzicht. Post Condities: − De gewenste conflicten zijn opgelost. Normaal verloop: 1. 2. 3. 4.
De gebruiker kiest ervoor om conflicten op te lossen. Het systeem toont een overzicht van alle conflicten uit het logboek. De gebruiker selecteert een conflict. Het systeem toont de details van het conflict: welk type conflict, de keuze tussen welke versie behouden moet blijven en de mobiele - en server versie van het record. 5. De gebruiker kiest om de mobiele versie te behouden en bevestigt. 6. Het systeem past de gewenste versie toe en verwijdert het conflict. 7. Herhaal stap 2 – 6 tot alle gewenste conflicten opgelost zijn.
Stagedossier G15
Mobile CRM
Alternatief verloop: 3. Er zijn geen conflicten. a. Het systeem meldt dat er geen conflicten zijn. 4. Het conflict is van type mobiele versie gewijzigd, server versie gewijzigd. a. Het systeem toont het type conflict, voor elk niet overeenkomend veld de keuze tussen de 2 versies voor het veld en de mobiele - en server versie van het record. b. De gebruiker kiest elk veld dat moet behouden blijven en bevestigt. c. Ga verder met stap 6. 3.b.1. Annuleren. iii. De gebruiker annuleert. iv. Ga terug naar stap 2. 5. Server versie behouden. a. De gebruiker kiest om de server versie te behouden en bevestigt. b. Ga verder met stap 6. 5. 2. Annuleren a. De gebruiker annuleert. b. Ga terug naar stap 2.
37
Stagedossier G15
Mobile CRM
38
2.5 Beheren van instellingen Revision History: Auteur Pieter Van Hamme Dwight Kerkhove Dwight/Pieter
Beschrijving Opstellen Use Case Use case nagelezen en hier en daar aangepast Use case aangepast
Datum 20/02/2009 20/02/2009 05/05/2009
Primaire Actor: Gebruiker van het mobile CRM systeem
Pre Condities: − De gebruiker bevindt zich op het beginscherm. Post Condities: − De gebruiker heeft de instellingen opgeslagen. Normaal verloop: 1. De gebruiker wenst de instellingen aan te passen. 2. Het systeem toont de huidige instellingen (leeg bij 1e maal): - Gebruikersnaam - Wachtwoord - Domein - Server IP - Poort - Encryptie sleutel - Database pad 3. De gebruiker past de instellingen aan en bevestigt. 4. Het systeem valideert de instellingen en voert deze door. Alternatief verloop: 3. Verwijderen alle gegevens a. De gebruiker kiest voor de optie voor alle gegevens te verwijderen en bevestigt. b. Het systeem verwijdert alle gegevens (niet de instellingen). 4. Er zijn instellingen niet correct ingevuld. c. Het systeem duidt de ongeldige velden aan en geeft de reden. d. Ga terug naar stap 3.
Stagedossier G15
Mobile CRM
39
Deel 3: Ontwerp 1 Structuur
Figuur 5:: Een compacte structuur van de 3 componenten.
De architectuur van het mobile gedeelte van de CRM server wordt zoveel mogelijk gescheiden van het bestaand systeem, waardoor het gemakkelijk is om de hele mobile module in en uit de server te pluggen. De uitbreidingen op het mobile systeem brengen dan ook geen wijzigingen teweeg op het bestaand systeem zodat eventuele problemen geïsoleerd blijven.
1.1 Mobile Client De mobile client is geïnstalleerd op een toestel met Windows Mobile en heeft een lokale database waar de meta data (de instellingen die gedefinieerd zijn in de beheersapplicatie, zoals welke weergaves en formulieren moeten aangeboden worden per eentiteit) ntiteit) en de CRM data (de inhoud van de beschikbaar gestelde entiteiten) opgeslagen zijn. De applicatie kan daarvan gebruik maken om gegevens te tonen aan de gebruiker. Om die gegevens te verkrijgen wordt er gesynchroniseerd met de mobile server die naast naa de CRM Server zal draaien. Hiervoor gebruiken we het ‘custom custom synchronization framework’ framework die de mogelijkheid biedt om te synchroniseren tussen 2 willekeurige data sources. Deze data sources worden met behulp van SyncProviders geïmplementeerd. Database Voor de database zal een Microsoft SQL Compact 3.5 database gebruikt worden aangezien deze het meest flexibel is.
Stagedossier G15
Mobile CRM
40
De andere optie was om XML als database te gebruiken maar hier zijn te veel nadelen aan verbonden: - XML werkt met tekstbestanden en tags dus de opslag van een groot aantal records neemt veel plaats in beslag (terwijl er maar beperkte opslag beschikbaar is op een mobile toestel). - Het toevoegen, wijzigen of verwijderen betekent de hele file aanpassen (traag!). - Het opzoeken van gegevens kan niet volgens primaire sleutels gebeuren, er moet sequentieel doorlopen worden (traag!). - De structuur van de entiteiten kan veranderd worden dus het volledige bestand moet aangepast worden (traag!).
1.2 Mobile Server De mobile server is als een façade voor de CRM Server. Het zal alle synchronisatie requests van de mobile clients afhandelen. Daarnaast biedt het ook een beheersapplicatie aan waar een beheerder de mobiele instellingen kan wijzigen (welke gebruikers toegang hebben, welk profiel ze hebben, hoe en welke gegevens moeten getoond worden,...). Deze applicatie wordt als ASP pagina’s aangeboden zodat die geïntegreerd kunnen worden in de pagina’s van de CRM server. Zowel de mobile server als de beheersapplicatie hebben gegevens nodig van de CRM server, dus wordt er in de DAL laag een webservice gebruikt om gegevens te kunnen opvragen en te wijzigen. Verbinding met CRM Server Via deze webservice zijn een aantal mogelijkheden beschikbaar om de gegevens op te halen: -
FetchXML: Een XML bestand wordt aan de service doorgegeven die definieert welke gegevens terug moeten gestuurd worden.
-
QueryExpression: Een query expression is een voorstelling van dezelfde opties als bij FetchXML maar er wordt gebruik gemaakt van aangeboden klassen.
-
LINQ to CRM: LINQ is een eenvoudige manier om gegevens op te vragen en met de LINQ to CRM klassen (http://www.codeplex.com/LINQtoCRM/) kunnen ook gegevens opgevraagd worden van het CRM systeem.
Voor statische methodes waar de parameters vast liggen is LINQ to CRM de beste keuze. Dit is echter niet haalbaar wanneer dynamische entiteiten moeten opgevraagd worden: -
De entiteitklassen worden bij LIQ to CRM gecontroleerd op basis van type in plaats van op basis van de entiteitsnaam (string). Er kan niet dynamisch in de select gespecificeerd worden welke attributen moeten teruggegeven worden.
We hebben dus gekozen voor de QueryExpression klassen om de gegevens op te vragen.
Stagedossier G15
Mobile CRM
41
Verbinding met mobiele client Er zijn een aantal mogelijkheden voorhanden om gegevens van de mobile server naar de client te krijgen en omgekeerd. Vb. via TCP, Webservice (SOAP), .NET Remoting, CORBA, HTML, ... Aangezien de mobile client op een PDA zal draaien met een trage verbinding (GPRS, 3G) kunnen we niet kiezen voor een text-based protocol, dus een verbinding WCF service, CORBA en HTML is uitgesloten. We werken ook met bedrijfsgevoelige informatie, dus moeten de gegevens geëncrypteerd en zo compact mogelijk verzonden worden. We hebben daarom voor een standaard TCP verbinding gekozen, omdat die het meest flexibel en meest compact is.
1.3 CRM Server De CRM server is de server die nu al beschikbaar is en gegevens bevat. Hier wordt niets aan gewijzigd.
Stagedossier G15
2
Mobile CRM
42
Structuur in detail
Figuur 6: een meer gedetailleerde structuur van de mobile server en de mobile applicatie.
2.1 GUI Beheersapplicatie - Mobile Server BeheersApplicatie Pagina’s: Biedt een GUI aan de gebruiker om de mobile instellingen te wijzigen (ASP pagina’s). De applicatie maakt gebruik van: -
De CRM Controller van de Domain Manager om gegevens op te vragen (zoals welke entiteiten gekozen kunnen worden voor de mobile client). De SubManagers (vb. EntiteitManager, ProfielManager,…) van de Domain Manager om de instellingen op te slaan die de gebruiker gemaakt heeft.
Mobile Server: Start de service om te luisteren naar inkomende TCP verbindingen
Mobiele Applicatie Mobile Applicatie: Biedt een GUI aan de gebruiker om de inhoud van beschikbare entiteiten te tonen en er aan wijzigingen te maken.
Stagedossier G15
Mobile CRM
43
2.2 Domain (Business Logic Layer) Beheersapplicatie - Mobile Server CRMController: Biedt de functionaliteit aan om gegevens uit de CRM server te lezen en ernaar weg te schrijven. DomainManager: Biedt de functionaliteit aan om de instellingen voor de mobile client te wijzigen. SubManagers: Verschillende submanagers die de instellingen opvragen en opslaan aan de adapters van de dataset (vb. entiteitmanager, attribuutmanager, formmanager, viewmanager,...) UserViewController: Biedt de functionaliteit om alleen de relevante instellingen voor een bepaalde gebruiker op te vragen. ServerTCPListener: Luistert naar inkomende TCP verbindingen, en wijst SyncWorkers toe aan elke verbinding. SyncWorker: Delegeert de inkomende berichten naar de ServerProvider en stuurt de resultaat ervan terug ServerProvider (1 provider voor meta, 1 voor data): Voorziet de methodes die de SyncController nodig heeft om gegevens te synchroniseren. Het maakt gebruik van verschillende takken van de Domain Manager: -
De CRM Controller om CRM gegevens op te vragen en te synchroniseren. De User View Controller om de meta en data voor de gebruiker te synchroniseren. De SyncTracking Manager om bij te houden welke versie de mobile heeft van een object.
Mobiele Applicatie SynchronizationController: Biedt de functionaliteit aan om de synchronisatie te starten. DomainController: Biedt de functionaliteit aan om de beschikbare entiteiten op te vragen en hun inhoud die opgeslagen zijn in de database. Het maakt gebruik van: -
De Meta Mapper om de entiteiten en de voorstelling ervan op te vragen. De Data Mapper om de CRM gegevens (records van entiteiten) op te vragen en/of te wijzigen.
2.3 Data Access Layer (Persistentie laag) Beheersapplicatie - Mobile Server CRMMapper (1 data mapper, 1 metamapper) : Biedt methodes aan om gegevens van de CRM webservice te vragen en wijzigingen door te sturen. Mobile Settings Dataset: Dataset met datatables en adapters voor elke table waar de gegevens van de database aan kan opgevraagd worden.
Stagedossier G15
Mobile CRM
44
SyncTrackingMapper: Biedt methodes aan om bij te houden welke versie de gegevens van de verschillende toestellen zijn. Dit is nodig om te bepalen of een object moet geüpdatet worden op de mobile client.
Mobiele Applicatie MetaMapper: Biedt de verschillende mappers aan om de mobile settings op te vragen en weg te schrijven naar de lokale database. DataMapper: Biedt de verschillende mappers aan om de CRM gegevens op te vragen en weg te schrijven naar de dynamische tabellen in de lokale database. ClientProvider (1 provider voor data, 1 voor metadata): Voorziet de methodes die de SyncController nodig heeft om de gegevens te synchroniseren. Het maakt gebruik van: -
De Meta Mapper om de mobile settings op te slaan bij de synchronisatie. De Data Mapper om de CRM gegevens (records van entiteiten) op te vragen en/of te wijzigen.
ClientData (1 datasource voor data, 1 voor metadata): Implementeert de datasource interface van het synchronization framework zodat de gegevens kunnen gesynchroniseerd worden) SyncController: Beheert het synchronisatie proces (deze klasse maakt deel uit van het Synchronization Framework)
Stagedossier G15
Mobile CRM
3 Structuur Beheersapplicatie 3.1 GUI
Figuur 7: De structuur van de pagina's
45
Stagedossier G15
Mobile CRM
46
Figuur 8: Het klasse diagram van de GUI. De DomainManager behoort tot de domein laag, maar is op het diagram geplaatst voor de duidelijkheid.
3.1.1
DomainAccessablePage Een abstracte pagina die de link met de domein manager verzorgt. Elke pagina die van deze klasse overerft heeft een Manager ter beschikking.
3.1.2
GuiForm, GuiTab, GuiView, GuiFilter, GuiConditieGroep, GuiConditie,GuiAttribuut De GUI voorstelling van overeenkomstige domein objecten.
de
Wanneer een form, view of filter bewerkt wordt, wordt een kopie genomen in de vorm van hun respectievelijke Gui objecten. De wijzigingen die de beheerder doet gebeuren dan op de Gui objecten. Bij het opslaan worden die Gui objecten omgezet naar de domein objecten om op te slaan in de database.
Stagedossier G15
Mobile CRM
3.2 Domein laag
Figuur 9: Het klasse diagram van de domein laag van de mobile server/beheersapplicatie
Figuur 10: De domein objecten met hun associaties
47
Stagedossier G15
3.2.1
Mobile CRM
48
DomainManager De DomainManager is de façade voor de verschillende sub managers. Elk van die managers bevat de CRUD methodes om de gegevens op te vragen en wijzigen. De domein manager kan in de context van een gebruiker gemaakt worden. De user informatie wordt dan doorgegeven aan de CRMController.
3.2.2
UserViewController Deze controller bevat methodes om alle metadata voor een bepaalde gebruiker op te vragen, aangezien de metadata verschilt per gebruiker. Bijvoorbeeld: de gebruiker die tot een Sales profiel behoort zal die andere entiteiten, views en forms beschikbaar krijgen dan iemand die tot een Management profiel behoort. Deze methodes zijn nodig om alleen de benodigde gegevens worden te synchroniseren.
Stagedossier G15
3.2.3
Mobile CRM
49
CRMController De CRMController verzorgt de methodes om gegevens uit de CRM server te lezen of gegevens naar de CRM Server weg te schrijven. Dit omvat zowel de metadata (entiteitnamen, attributen) als de eigenlijke data.
3.2.4
SubDomainManagers: EntiteitManager, AttribuutManager, ProfielManager, FormManager, FilterManager, UserManager en DeviceManager De EntiteitManager beheert de CRUD van de Entiteit en EntiteitPerProfiel klassen. De AttribuutManager beheert de CRUD van de Attribuut, AttribuutLookupEntiteit en AttribuutPicklistOption klassen. De ProfielManager beheert de CRUD van de Profiel klasse. De FormManager beheert de CRUD van de Form, Tab en AttribuutPerForm klassen. De ViewManager beheert de CRUD van de View en AttribuutPerView klassen. De FilterManager beheert de CRUD van Filter, Conditiegroep en Conditie klassen. De UserManager beheert de CRUD van de User klasse. De DeviceManager beheert de CRUD van de Device klasse. Al deze managers bevatten ook een factory methode om hun respectievelijk domein object aan te maken.
Stagedossier G15
3.2.5
Mobile CRM
50
DomainObject Elk domein object erft over van deze klasse. Alle constructors van de domein objecten zijn private en worden via de managers gemaakt. Daardoor blijven de objecten altijd in de context (in dit geval de session van de gebruiker) waartoe ze behoren, waardoor het domein thread safe is. Ook kennen de domein objecten de DomainManager die het object gemaakt heeft, zodat lazy loading van associaties naar andere domein objecten mogelijk is.
3.2.6
TrackedDomainObject Een tracked domein object kan gesynchroniseerd worden naar de mobile aangezien het tijdstip van de creatie van het object en de wijzigingstijdstip bijgehouden wordt.
3.2.7 •
Domein Objecten: Entiteit, Attribuut, View, Form, … Entiteit: Stelt een entiteit voor die beschikbaar gesteld kan worden op de mobiele client waaruit de gebruiker dan kan kiezen. Vb. Contactpersoon, Account,..
•
Attribuut: Is een voorstelling voor een attribuut van een entiteit. Bevat o.a. het type van het attribuut, naam, of het een required veld is etc.
•
AttribuutLookupEntiteit: Stelt een beschikbaar entiteit voor bij een lookup attribuut. Een lookup attribuut kan verwijzen naar een records van een voorop gestelde lijst van entiteiten.
•
AttribuutPicklistOption: Stelt een picklist option van een attribuut voor. Het attribuut is een picklist waar de gebruiker uit de verschillende opties uit een dropdownlist kan kiezen.
•
Profiel: Stelt een profiel voor waar gebruikers aan toegekend kunnen worden. Een profiel stelt een aantal entiteiten beschikbaar met views en forms (met behulp van entiteit per profiel).
•
EntiteitPerProfiel: Stelt een koppeling van een entiteit aan een profiel voor, met extra informatie die bijgehouden wordt voor het entiteit.
Stagedossier G15
Mobile CRM
51
•
User: Stelt een mobiele gebruiker voor die de applicatie mag gebruiken op zijn mobile device. Hij/zij behoort tot een profiel waar gedefinieerd staat welke gegevens beschikbaar zijn voor hem/haar.
•
Device: Is een voorstelling van een toestel van een gebruiker
•
Form: Stelt een formulier voor die de voorstelling van een record van een entiteit beschrijft. Een form heeft meerdere tabs waar verschillende attributen op gedefinieerd staan.
•
Tab: Stelt een tab voor van een form van een entiteit. Een tab bevat attributen in een bepaalde volgorde voor de voorstelling van een record van een entiteit.
•
AttribuutPerTab: Is een voorstelling van een attribuut die bij een tab behoort.
•
View: Stelt de weergave van een entiteit voor. Een view beschrijft de voorstelling van het overzicht van de records van een entiteit (welke kolommen getoond moeten worden en op welke data gefilterd moet worden).
•
AttribuutPerView: Is een voorstelling van een kolom (attribuut) die bij een view behoort.
•
Filter: Stelt een filter voor van een view, die met behulp van de gedefinieerde criteria de records kan filteren.
•
Conditiegroep: Stelt een conditiegroep voor van een filter, die subgroepen en condities groepeert met een boolean operator.
•
Conditie: Stelt een conditie voor van een filter, waarop gefilterd moet worden. Een conditie zit altijd in een conditie groep, waar meerdere condities verbonden worden door een boolean operator.
3.2.8
AbstractServerData De klasse erft over van IServerData van het synchronisatie framework en verzorgt de CRUD van de SyncTracking (last sync dates van elk item dat gesynchroniseerd wordt per client). Het fungeert als data source voor de synchronization provider. Dit gebeurt zowel bij de CRM data als metadata synchronisatie, dus dit zit in AbstractServerData. Voor de meta data wordt de MetaServerData subklasse gebruikt, voor de data synchronisatie de ServerData klasse gebruikt.
Stagedossier G15
3.2.9
Mobile CRM
52
ServerMetaData en ServerData Deze klassen zijn de data source voor de meta en data synchronisatie respectievelijk. De SyncTracking CRUD wordt in de superklasse AbstractServerData geïmplementeerd.
3.2.10 SharedServerProvider De abstracte server provider voor de synchronisatie. Aangezien zowel de metadata als de data synchronisatie dezelfde autorisatie van de mobile user gebruiken, wordt deze functionaliteit geïmplementeerd in een superklasse. De klasse erft over van de AbstractServerProvider die de synchronisatie grotendeels afhandelt en de methodes van een gegeven datasource aanroept om gegevens te verkrijgen en weg te schrijven. 3.2.11 ServerProvider, MetaServerProvider De providers voor de CRM data en meta data synchronisatie. Deze erven beide over van de SharedServerProvider. De CreateMapper maakt de datasource aan voor de synchronisatie (MetaServerData voor meta synchronisatie en ServerData voor data synchronisatie).
Stagedossier G15
Mobile CRM
53
3.2.12 AbstractSyncServerItem, SyncServerDataItem, SyncServerMetaItem De wrapper voor een object van de server (het eigenlijke object (DBEntity), maar ook de extra gegevens zoals creation date en modified date die nodig zijn bij de synchronisatie). Het enigste verschil tussen SyncServerDataItem en SyncServerMetaItem is het opvragen van het Id van het object. Bij meta data is dat veld altijd ‘id’, terwijl bij de CRM data dit afhangt per entiteit van het veld dat daarvoor gedefinieerd is op de CRM Server (contactid, accountid, …). Om de synchronisatie te versnellen wordt het id veld meegegeven aan de data item zodat het veld niet steeds aan de overeenkomstige entiteit uit de metadata moet gevraagd worden. 3.2.13 DBEntity Een DBEntity is niets meer dan een verzameling (dictionary) van velden met overeenkomstige veldnamen. Deze klasse wordt gebruikt om alle metadata objecten en records van een entiteit (bij data synchronisatie) door te sturen naar de mobile.
3.2.14 SyncObjectSerializer Erft over van de standaard AbstractSyncObjectSerializer en implementeert het lezen en schrijven van een DBEntity object.
Stagedossier G15
Mobile CRM
54
3.3 SyncFramework (server)
Figuur 11: Het server gedeelte van het synchronization framework. Klassen aangeduid in het grijs behoren tot het domein, maar zijn toegevoegd op het diagram zodat het duidelijker is welke klassen overerven en gebruiken.
Zie verder bij het deel Synchronization Framework voor meer details en uitleg over de klassen.
Stagedossier G15
Mobile CRM
55
3.4 DAL laag
Figuur 12: Het klasse diagram van de DAL laag van de mobile server/beheersapplicatie. De CRM Controller beheert tot het domein, maar is op het diagram gezet voor de duidelijkheid.
3.4.1 MobileSettings Dataset Automatisch gegenereerde datatables en adapters voor de instellingen(door de gewenste queries in te geven) die kunnen gebruikt worden om de tabellen uit de database te raadplegen. 3.4.2 SyncTracking Dataset Automatisch gegenereerde datatables en adapters voor het de laatste synchronisatie tijdstippen van elk object dat moet gesynchroniseerd worden bij te houden. 3.4.3
CRMObjectConversion Deze statische klasse wordt gebruikt om gegevens van de webservice om te zetten in standaard .Net primitives en objecten en andersom.
Stagedossier G15
3.4.4
Mobile CRM
56
CRMMapper, CRMMetaMapper De mappers die gegevens van de CRM server kunnen halen en wegschrijven. De CrmMetaMapper kan de beschikbare entiteiten, attributen en relaties ophalen van de CRM Server. De CrmMapper kan de gegevens van een entiteit ophalen, maar ook records toevoegen, wijzigen of verwijderen. De mappers worden gebruikt door de CRMController van de domein laag.
Stagedossier G15
Mobile CRM
3.5 Database structuur 3.5.1
Mobile Settings
Figuur 13: Het database diagram van de mobile settings database
57
Stagedossier G15
Mobile CRM
58
In de Mobile Settings Database worden alle instellingen opgeslagen van de beheersapplicatie. Ook worden toestellen toegevoegd in de Device tabel bij de 1e synchronisatie, en bij verdere synchronisaties altijd up to date gebracht. 3.5.2
SyncTracking Database Client cId clientID
MetaSyncDateEntry
DataSyncDateEntry
id
id
naam
naam
cId
cId
lastSyncDate
lastSyncDate
Figuur 14: Het database diagram van de SyncTracking database
In de SyncTracking Database wordt elk toestel (client) dat gesynchroniseerd heeft bijgehouden. In de MetaSyncDateEntry en DataSyncDateEntry tabellen zit voor elk object dat moet gesynchroniseerd worden voor elk toestel een record die het laatste synchronisatie tijdstip opslaat. Zo weet de mobile server over welke objecten de mobile applicatie beschikt en welke er verwijderd, toegevoegd of gewijzigd zijn.
Stagedossier G15
Mobile CRM
3.6 Sequentie diagrammen 3.6.1
Beheer van entiteiten
Figuur 15: Het sequentie diagram voor het beheren van entiteiten (zie use case)
59
Stagedossier G15
3.6.2
Mobile CRM
Beheer van profielen
Figuur 16: Het sequentie diagram voor het beheren van profielen (zie use case)
60
Stagedossier G15
3.6.3
Mobile CRM
Beheer van users
Figuur 17: Het sequentie diagram voor het beheren van users (zie use case)
61
Stagedossier G15
3.6.4
Mobile CRM
Beheer van lay-out
Figuur 18: Het sequentie diagram voor het beheren van lay-out (zie use case)
62
Stagedossier G15
3.6.5
Mobile CRM
Beheren van forms
Figuur 19: Het sequentie diagram voor het beheren van een form (zie use case)
63
Stagedossier G15
Mobile CRM
3.6.5.1 Beheren van views
Figuur 20: Het sequentie diagram voor het beheren van een view (zie use case)
64
Stagedossier G15
3.6.6
Mobile CRM
Beheren van filters
Figuur 21: Het sequentie diagram voor het beheren van een filter (zie use case)
65
Stagedossier G15
3.6.7
Mobile CRM
Beheren van devices
Figuur 22: Het sequentie diagram voor het beheren van een device (zie use case)
66
Stagedossier G15
Mobile CRM
4 Mobiele Applicatie 4.1 GUI
Figuur 23: De structuur van de window forms van de mobiele applicatie
Figuur 24: Het klassendiagram van de GUI van de mobiele applicatie
67
Stagedossier G15
4.1.1
Mobile CRM
68
OrientationAwareForm Abstracte window form die weet wanneer de oriëntatie van het toestel veranderd is en de methode OnOrientationChange oproept.
4.1.2
MobileCRMForm Abstract window form die de header en close knop beheert.
4.1.3
Entiteiten Overzicht (frmEntiteitenOverzicht) De window form die het entiteiten overzicht toont (het beginscherm van de applicatie).
Stagedossier G15
4.1.4
Mobile CRM
69
AbstractFrmView Abstracte window form die records in een lijst kan tonen met paginering, kan zoeken naar records en kan sorteren op velden van een record. Zowel frmEntiteitView als frmLookup maken hiervan gebruik om records van een entiteit te tonen. De klasse maakt gebruik van een ViewPage object, die een lijst van records kan pagineren en filteren. De meeste methodes zullen dan ook de gewenste actie delegeren naar dat object.
4.1.5
AbstractPage, ViewPage Abstracte klasse die resultaten kan pagineren. Er worden meerdere pagina’s gecached zodat vorige of volgende pagina’s opvragen zeer snel door de gebruiker ervaren wordt. Elke pagina wordt door een aparte thread opgehaald zodat de cache in parallel wordt opgevuld, wat veel sneller is dan sequentieel elke pagina opvragen. De enige methode die moet geïmplementeerd worden is de GetPage(record offset) methode. De subklasse ViewPage maakt hiervan gebruik en vraagt aan de domain controller de gewenste pagina, met toegepaste filters en sortering. Omdat dit redelijk veel parameters met zich meebrengt, zijn die gegroepeerd in de RetrieveFilteredItemsRequest klasse uit de DAL laag.
Stagedossier G15
4.1.6
Mobile CRM
70
Records van entiteit (frmEntiteitView), Selecteren van een lookup (frmLookup) frmEntiteitView is een window form die de records van een entiteit toont (in pagina’s) volgens de verschillende gedefinieerde views van de geselecteerde entiteit. Het biedt o.a. de mogelijkheid aan om: • Nieuwe records toe te voegen • Details van een record op te vragen • Een record te verwijderen • De records te sorteren • Records op te zoeken • Te bellen, naar een website te surfen of een e-mail te versturen op basis van de gegevens van het geselecteerde record (via een context menu). frmLookup wordt gebruikt om een waarde voor een lookup veld (een veld dat naar een ander record van een entiteit wijst, vb. een bovenliggende klant bij een contactpersoon) te selecteren. De gebruiker kan uit de beschikbare entiteiten voor dat lookup veld kiezen (zie AttribuutLookupEntiteit klasse) en daarvan een record selecteren.
Stagedossier G15
4.1.7
Mobile CRM
71
FormPanel Panel die de details van een record zowel alleen lezen als aanpasbaar kan tonen en de overeenkomstige controls toont aan de hand van het veld type (dropdownlist, lookup, string, memo, boolean, ...). De lay-out wordt opgebouwd op basis van de gedefinieerde instellingen (welke tabs en welke velden per tab). De gebruiker kan ook verschillende acties ondernemen zoals een telefoonnummer bellen, naar een website surfen, een email versturen of de details opvragen van een record waar een lookup veld naar verwijst. Ook worden alle velden gevalideerd of ze correct ingevuld zijn. De criteria zijn o.a.: • Verplicht veld • Correcte numerische waarde (bij numerische velden) • Waarde ligt tussen interval (bij numerische velden) • String is niet te lang • ... Extra informatie zoals interval en type van string zitten altijd in de ‘parameter’ veld van het attribuut. Bij elk onjuist veld wordt de bijbehorende label in het rood getoond.
Stagedossier G15
4.1.8
Mobile CRM
72
Details van een record (frmEntiteitForm) Dit is een window form die de details van een record van een entiteit toont met behulp van een form panel. De wijzigingen kunnen aan de form panel gevraagd worden zodat het record kan opgeslagen worden.
4.1.9
Instellingen (frmSettings) De window form waar de gebruiker de instellingen kan invullen of wijzigen. De validatie gebeurt op ongeveer dezelfde wijze als bij de FormPanel.
Stagedossier G15
Mobile CRM
73
4.1.10 frmSynchronisatie, AbstractLogListener, DataLogListener, MetaLogListener frmSynchronisatie is de window form waar de gebruiker de synchronisatie kan starten en de voortgang ervan kan zien. Er kan bij het synchronization framework een logger meegegeven worden die het synchronisatie proces observeert. AbstractLogListener implementeert de interface van die logger en heeft een methode die een lijn kan toevoegen in de lijst die de gebruiker ziet. Aangezien er een verschil van interpretatie is tussen de objecten bij de metadata synchronisatie en de data synchronisatie is dit de superklasse van de MetaLogListener en DataLogListener.
4.1.11 Conflicten (frmConflicts), Details van een conflict (frmConflictDetails), ConflictPanel Een frmConflicts form geeft een overzicht van alle conflicten die er zijn in een lijst. De gebruiker kan hieruit een conflict selecteren om de details ervan te zien en om het op te lossen. Een frmConflictDetails form toont de keuze die de gebruiker kan maken bij het conflict met behulp van een ConflictPanel. Het toont in andere tabs ook de mobile als server versie. Een ConflictPanel toont naarmate het type van het conflict ofwel een lijst van velden die tussen de mobile en server versie verschillend zijn, ofwel een keuze tussen de mobiele en server versie in zijn geheel.
Stagedossier G15
Mobile CRM
74
4.1.12 ResourceManager, OldestCacheFirst De ResourceManager beheert de images die embedded zijn in de assembly, dit zijn alle resources die gebruikt worden in de lay-out van de window forms: icons (van entiteiten) en lay-out images (zoals buttons, header image, ...). De manager cached ook een aantal images zodat die niet steeds opnieuw moeten ingelezen worden, met behulp van een OldestFirstCache.
4.1.13 OldestCacheFirst De OldestFirstCache is een cache die x aantal elementen toe laat, en daarna degene die het eerst is toegevoegd (degene die al het langst in de cache zit) uit de cache zal verwijderen om plaats te maken.
Stagedossier G15
Mobile CRM
75
4.2 Domein laag
Figuur 25: Het klasse diagram van de domein laag van de mobiele applicatie
4.2.1
DomainController De DomainController klasse is een singleton die methodes van de DAL laag beschikbaar stelt. In tegenstelling tot de beheersapplicatie wordt de applicatie maar door 1 gebruiker tegelijk gebruikt, dus is er geen probleem om een singleton te gebruiken.
4.2.2
SynchronizationController De SynchronizationController biedt de functionaliteit aan om de metadata en data synchronisatie te starten. De meta synchronisatie zal eventueel een lijst teruggeven van attributen van records die moeten gesynchroniseerd worden ongeacht of ze up to date zijn. Dit komt voor wanneer een nieuw veld beschikbaar is geworden. Die lijst kan meegegeven worden met de data synchronisatie.
Stagedossier G15
Mobile CRM
4.3 DAL laag
Figuur 26: Het klasse diagram van de DAL laag van de mobiele applicatie
76
Stagedossier G15
4.3.1
Mobile CRM
77
MetaMapper De MetaMapper is een façade voor de mappers van de meta data. Elk van de mappers bevat de CRUD methodes van hun respectievelijke DAL objecten. Het lezen van de gegevens is publiek, maar aanmaken, updaten of verwijderen van meta data is op internal (namespace) niveau, aangezien alleen de synchronisatie die methodes mag gebruiken.
4.3.2
EntiteitMapper, AttribuutMapper, FormMapper, FilterMapper, ViewMapper De EntiteitManager kan de Entiteit klasse uit de database lezen en ernaar wegschrijven. De AttribuutManager kan de Attribuut, AttribuutLookupEntiteit en AttribuutPicklistOption klassen inlezen en wegschrijven. De FormManager kan de Form, Tab en AttribuutPerForm klassen inlezen en wegschrijven. De ViewManager kan de View en AttribuutPerView klassen inlezen en wegschrijven. De FilterManager kan de Filter, Conditiegroep en Conditie klassen inlezen en wegschrijven.
Stagedossier G15
4.3.3
Mobile CRM
78
DynamicTableMapper Deze mapper beheert de dynamische tabellen die gemaakt moeten worden voor de records van entiteiten in op te slaan. De mapper kan: • Tabellen voor een entiteit toevoegen en verwijderen. • Kolommen toevoegen en verwijderen van die tabellen. • Alle dynamische tabellen verwijderen en de metadata tabellen legen.
4.3.4
DataMapper De DataMapper klasse is een façade voor de data (records van entiteiten) en conflicten.
Stagedossier G15
4.3.5
Mobile CRM
79
DynamicDataMapper Deze mapper kan records van entiteiten lezen (met filtering en sortering met behulp van ) uit de dynamische tabellen en records weg schrijven. Buiten de CRUD methodes omvat deze klasse vooral methodes om de query string op te bouwen om records te lezen. Er wordt gebruik gebrui gemaakt van een RetrieveFilteredItemsRequest die definieert welke filters juist moeten toegepast worden. Er kan gefilterd worden op: • Interval van de resultaten (subset van de resultset). • De filter gedefinieerd in de view (ingesteld in de beheerapplicatie). beheerapplicat • Relatie: de records moeten aan een bepaalde relatie criteria voldoen (vb. alle contact personen die van account ESC). • Zoekfunctie: 1 of meerdere velden van een record moet voldoen aan de ingegeven zoekstring. • Verwijderde records: moeten records die als status ‘verwijderd’ hebben ook nog teruggegeven worden.
Stagedossier G15
4.3.6
Mobile CRM
80
LookupMapper Lookup velden van een record worden in aparte tabel opgeslagen. Deze mapper beheert zowel de normale tabel voor de lookups van de mobile versies als de conflict tabel voor lookups van de server versies.
4.3.7
ConflictMapper Conflicten worden in de conflict tabel opgeslagen. De server versies van records worden in een aparte dynamische tabel opgeslagen, die aangemaakt wordt wanneer de normale tabel wordt aangemaakt. Ook voor de lookup velden is er een aparte tabel om de lookups van de server versie op te slaan. Deze mapper kan conflicten opvragen, toevoegen, updaten en verwijderen. De conflicten die opgevraagd worden, worden ingelezen met hun bijbehorende mobile en server versie.
4.3.8
DBEntity Deze klasse wordt zowel voor metadata als data gebruikt om te synchroniseren. De metadata klassen erven van deze klasse over en bieden expliciet de properties aan die in de dictionary zitten. Bij records van entiteiten zitten alle gegevens ook in die dictionary, met als key de naam van het veld. Zo kan met behulp van de metadata de gegevens opgevraagd worden.
Stagedossier G15
4.3.9
Mobile CRM
81
DAL Objecten Domein objecten hebben dezelfde functie als bij de beheersapplicatie. De associaties naar andere DAL objecten worden ook via lazy loading geladen en worden dan gecached om alles sneller te laten verlopen. De properties van de objecten worden uit de property dictionary gelezen en via property velden aangeboden.
4.3.10 ClientData, MetaClientData Zowel de ClientData als MetaClientData klassen erven over van IServerData van het synchronisatie framework. Het zijn de data sources voor de data en metadata synchronisatie. De methodes maken gebruik van de mappers in de MetaMapper en DataMapper om metadata en data op te vragen of weg te schrijven.
Stagedossier G15
Mobile CRM
82
4.3.11 ClientProvider, MetaClientProvider De client providers voor de meta en data synchronisatie. De synchronisatie wordt bijna volledig afgehandeld in de AbstractClientProvider superklasse van het synchronization framework. Het enigste verschil is dat de meta client provider een lijst van attributen opbouwt waarvan de gegevens ontbreken op de mobile. Die worden dan meegegeven bij de ClientProvider. De SyncController zal ze opvragen en doorsturen naar de server provider.
4.3.12 AbstractSyncClientItem, SyncClientDataItem, SyncClientMetaItem De wrapper voor een object van de mobile. Het bevat het eigenlijke object (DBEntity), maar ook extra gegevens zoals de status van het object: • Toegevoegd • Toegevoegd, gewijzigd • Gewijzigd • Verwijderd • Onveranderd Zoals bij de beheersapplicatie is ook hier het enigste verschil tussen SyncClientDataItem en SyncClientMetaItem is het opvragen van het Id van het object. Bij meta data is dat veld altijd ‘id’, terwijl bij de CRM data dit afhangt per entiteit van het veld dat daarvoor gedefinieerd is op de CRM Server (contactid, accountid, …).
Stagedossier G15
Mobile CRM
83
4.3.13 SharedSyncObjectSerializer, SyncObjectSerializer, MetaSyncObjectSerializer De SharedSyncObjectSerializer erft over van de standaard AbstractSyncObjectSerializer en implementeert het lezen en schrijven van een DBEntity object. De MetaSyncObjectSerializer zorgt ook wanneer een DBEntity object gelezen wordt dat het met behulp van reflection naar het goeie Metadata object omgezet wordt.
4.4 SyncFramework (client)
Figuur 27: De klassen die de client gebruikt van het synchronization framework
Zie verder bij het deel Synchronization Framework voor meer details en uitleg over de klassen.
Stagedossier G15
Mobile CRM
84
4.5 Database 4.5.1
Meta Data tabellen
Figuur 28: De meta data tabellen van de database van de mobiele applicatie.
Deze tabellen bevatten de gegevens van de meta data, die de mobiele applicatie nodig heeft om de CRM data gestructureerd te tonen. Er zijn geen foreign keys gedefinieerd aangezien de gegevens op willekeurige volgorde kunnen toegevoegd worden bij de synchronisatie (behalve bij attributen en entiteiten aangezien een entiteit zijn attributen moet kennen om de dynamische tabellen te maken).
Stagedossier G15
4.5.2
Mobile CRM
85
CRM Data
Figuur 29: De tabellen waarin de CRM data wordt opgeslagen op de mobiele applicatie
De CRM data wordt in dynamische tabellen opgeslagen. Wanneer een nieuw Meta_Entiteit toegevoegd wordt, zal er ook 2 dynamische tabellen gemaakt worden met als kolommen de gedefinieerde Meta_Attributen: • •
MOBILE_<entiteitnaam>: De tabel die de gegevens bevat van de CRM server. CONFLICT_<entiteitnaam>: De tabel die de server versie van de gegevens bevat wanneer er een conflict is met de gegevens uit de MOBILE_<entiteitnaam> tabel.
Meta_Conflict bevat de conflicten die het type conflict bevat en met de ‘itemId’ en ‘naam’ velden de 2 verschillende versies kan opvragen. De lookup tabellen worden niet aangemaakt maar er wordt wel naartoe verwezen bij records van entiteiten die 1 of meerdere lookup velden hebben. De mobile versie en de conflict versie wordt ook hier gesplitst in 2 tabellen.
Stagedossier G15
Mobile CRM
4.6 Sequentie Diagrammen 4.6.1
Applicatie opstarten
Figuur 30: Het sequentie diagram voor opstarten van de mobiele applicatie (zie use case)
86
Stagedossier G15
4.6.2
Mobile CRM
Entiteiten mobiel gebruiken
Figuur 31: Het sequentie diagram voor normale gebruik van de mobiele applicatie (zie use case)
87
Stagedossier G15
4.6.3
Mobile CRM
Oplossen van conflicten
Figuur 32: Het sequentie diagram voor het oplossen van 1 of meerdere conflicten (zie use case)
88
Stagedossier G15
4.6.4
Mobile CRM
Beheren van instellingen
Figuur 33: Het sequentie diagram voor het aanpassen van de instellingen (zie use case)
89
Stagedossier G15
Mobile CRM
90
5 Synchronization Framework 5.1 Basisstructuur
Figuur 34: De basisstructuur van het synchronization framework.
Het synchronisatie framework bestaat uit 2 grote delen, enerzijds de client (mobile) en de server (mobile server/beheersapplicatie) waar de synchronisatie moet tussen gebeuren. De SyncController (die zowel op de client als op de server kan staan) krijgt 2 providers mee: een Client- en ServerSyncProvider die de nodige methodes bevat om de synchronisatie tot een goed einde te brengen. Ook kan op elk moment de synchronisatie afgebroken worden door vb. de gebruiker, maar ook door bijvoorbeeld het wegvallen van de verbinding. Het synchronisatie protocol houdt hier mee rekening en houdt de gegevens tussen de client (mobile) en de server consistent, bij de volgende synchronisatie wordt gewoon hervat.
Stagedossier G15
5.1.1
Mobile CRM
91
SyncController De SyncController beheert de synchronisatie. Het vraagt de gegevens van de client en de server op en vraagt aan de server en client om ze up te daten zodat na de synchronisatie beide over dezelfde gegevens beschikken. Het zorgt ook voor de correcte omzetting van ISyncClientItems naar ISyncServerItems en omgekeerd.
5.1.2
ISyncClientProvider De client provider van de synchronisatie. Definieert de methodes die de SyncController nodig om de gegevens op te vragen en weg te schrijven van de client. Start van synchronisatie o SynchronizationStarted: aangeroepen wanneer synchronisatie gestart wordt.
wordt de
Updates van server o GetPartialItems: geeft properties terug van objecten die altijd moeten naar de client gestuurd worden, ook wanneer het item van de client nog up to date is (wordt gebruikt om ontbrekende data in te vullen). o ItemIsUpToDate, UpdateItem: wordt aangeroepen wanneer de last sync date van een item geverifieerd is op de server. o UpdateNewItem: wordt aangeroepen wanneer de client een item van de server niet had. o UpdateRemoveItem: wordt aangeroepen wanneer een element op de server niet meer bestaat, dus de client moet het element verwijderen.
Stagedossier G15
Mobile CRM
92
Na update, voor server o SyncBreakAfterUpdate: biedt de mogelijkheid om de synchronisatie stop te zetten na de updates (vb. indien er conflicten zijn). Commit naar server o PrepareNewItemsIterator, NextNewItem: biedt alle gegevens aan die toegevoegd zijn op de client. o UpdateItemBecauseOfFailedAdd, AddItemSuccess: wordt aangeroepen wanneer het item is toegevoegd op de server. o PrepareModifiedCreatedItemsIterator, NextModifiedCreatedItem: biedt alle gegevens aan die reeds zijn toegevoegd op de server in het synchronisatie proces maar nog gegevens hebben die verwezen naar andere nieuwe items (waardoor dus eerst alle nieuwe items moesten aangemaakt worden vooraleer de referenties kunnen gelegd worden). o PrepareModifiedItemsIterator, NextModifiedItem: biedt alle gegevens aan die gewijzigd zijn op de client. o UpdateItemBecauseOfFailedUpdate, UpdateItemSuccess: wordt aangeroepen wanneer de update op de server doorgevoerd is. o PrepareDeletedItemsIterator, NextDeletedItem: biedt alle gegevens aan die verwijderd zijn op de client. o UpdateItemBecauseOfFailedDelete, DeleteItemSuccess: wordt aangeroepen wanneer het item is verwijderd op de server. Einde van de synchronisatie o SynchronizationComplete: wordt aangeroepen wanneer de synchronisatie voltooid is. Problemen in de synchronisatie o SyncIsBroken: wordt aangeroepen als er een fout is opgetreden tijdens de synchronisatie
5.1.3
ISyncServerProvider Start van synchronisatie o SynchronizationStarted: wordt aangeroepen wanneer de synchronisatie gestart wordt. o Authorize: de client moet zich autoriseren. Updates van server o PrepareForSyncDateItems: wordt aangeroepen wanneer de client sync date items ga sturen. Hier wordt ook alle properties meegegeven van de items die zeker moeten gestuurd worden naar de client (ook al is het item up to date), zodat de ontbrekende informatie op de client kan ingevuld worden.
o VerifyLastSyncDate: geeft een item terug waarvan de server een nieuwere versie over beschikt dan de client. o NextNewItem: biedt alle gegevens die de client niet heeft aan.
Stagedossier G15
Mobile CRM
93
Commit naar server o TryUpdateItem: probeert het item van de client up te daten, als dit niet lukt wordt het item van de server teruggegeven. o TryAddItem: probeert het item van de client toe te voegen, als dit niet lukt (omdat het item al bestaat op de server), dan geeft dit de item van de server terug. o TryUpdateAddedItem: probeert het item van de client te wijzigen nadat het is toegevoegd in de synchronisatie. o TryDeleteItem: probeert het item op de server te verwijderen, als dit niet lukt (omdat het item gewijzigd is op de server), dan geeft dit de item van de server terug. Einde van de synchronisatie o SynchronizationComplete: wordt aangeroepen wanneer de synchronisatie voltooid is. Problemen in de synchronisatie o SyncIsBroken: wordt aangeroepen als er een fout is opgetreden tijdens de synchronisatie 5.1.4
AbstractClientProvider, AbstractServerProvider Beide klassen implementeren voor een groot deel het synchronisatie proces (welke gegevens er moeten opgevraagd worden, wanneer een conflict moet gegenereerd worden, etc. Ze gebruiken respectievelijk een IClientData en IServerData data source waar de gegevens aan kunnen opgevraagd worden of naartoe weggeschreven worden.
Stagedossier G15
5.1.5
Mobile CRM
94
IClientData De interface voor een datasource die de AbstractClientProvider gebruikt om de gegevens van de synchronisatie op te vragen en toe te voegen, wijzigen of verwijderen.
5.1.6
IServerData De interface voor een datasource die de AbstractServerProvider gebruikt om de gegevens van de synchronisatie op te vragen en toe te voegen, wijzigen of verwijderen. Het zorgt ook voor de SyncTracking methodes die de AbstractServerProvider gebruikt om de laatst sync tijdstippen bij te houden van elk object dat gesynchroniseerd moet worden.
Stagedossier G15
5.1.7
Mobile CRM
95
ISyncItem, ISyncClientItem, ISyncServerItem Deze interfaces stellen een item voor dat gesynchroniseerd moet worden. Beide bevatten het eigenlijke object dat gesynchroniseerd worden, maar hebben verschillende extra synchronisatie gegevens. De extra data van de client omvat per record: − Status: o Created: Item is aangemaakt op de client. o ModifiedCreated: het item is toegevoegd op de server zonder referenties, het moet nog geüpdatet worden op de server met de referenties o Modified: Item is gewijzigd op de client (als wijzigingen op een created item worden gedaan, blijft het item Created). o Deleted: Item is verwijderd op de client. o Unchanged: Er is niets aangepast aan het item sinds de last sync date. De extra van de server omvat per record: − Modified Date: Het tijdstip van de laatste wijziging van de item op de server. − Creation Date: Het tijdstip van wanneer het item op de server is aangemaakt.
Stagedossier G15
5.1.8
Mobile CRM
96
ISyncHeaderItem, ISyncUpdateItem, ISyncDateItem Een SyncHeaderItem definieert het id en de naam van een object. Dit wordt gebruikt wanneer er alleen die gegevens nodig zijn (vb. bij het verwijderen van het object is het niet nodig alle gegevens door te sturen aangezien de combinatie id en naam al voldoende zijn om te weten over welk object het gaat). Een SyncDateItem houdt buiten de naam en het id van een object ook zijn laatste synchronisatie tijdstip bij. Die kunnen worden opgevraagd en opgeslagen bij de IServerData en wordt gebruikt om te controleren of een object moet gesynchroniseerd worden. Een SyncUpdateItem duidt buiten het eigenlijke object ook nog aan of alle gegevens van het object beschikbaar zijn, of maar een deel ervan en of er ook een item is gedefinieerd dat moet geüpdatet worden.
5.1.9
Conflict Wanneer er zowel bij de client als server versie iets gewijzigd wordt, wordt een conflict gemaakt. Een Conflict object houdt dan bij het type van het conflict en welke 2 versies in conflict zitten met elkaar.
Stagedossier G15
Mobile CRM
97
5.2 Synchronisatie over TCP
Figuur 35: Het overzicht van het Synchronization Framework over TCP. IServerSyncProvider is hier 2x toegevoegd voor de duidelijkheid en 1 ervan behoort tot de client, de andere tot de server
5.2.1
ServerProviderTCPClient Deze klasse implementeert de IServerSyncProvider zodat de SyncController er gebruik van kan maken. Bij de 1e methode wordt een verbinding gemaakt naar de echte server en worden alle methodes gedelegeerd over TCP (de methode en outgoing parameters worden verstuurd. Daarna wordt een boolean gelezen die aangeeft of er een exception gegooid was. Daarachter volgt de return waarde en alle incoming parameters).
Stagedossier G15
5.2.2
Mobile CRM
98
ServerTCPListener Deze klasse luistert naar inkomende verbindingen en maakt een SyncWorker die de synchronisatie zal afhandelen op een nieuwe thread per verbinding.
5.2.3
SyncWorker De SyncWorker leest de inkomende data en delegeert de requests naar de methodes van de IServerSyncProvider van de server. Het resultaat van die methodes wordt dan teruggestuurd naar de client. Met behulp van reflection wordt de correcte gevraagde methode aangeroepen.
Stagedossier G15
5.2.4
Mobile CRM
99
EncryptedBinaryReader,EncryptedBinaryWriter De EncryptedBinaryReader leest een blok aan data uit de stream, die wordt gedecrypt en daar wordt dan alle gegevens uit gelezen, tot wanneer er voorbij het einde van die blok gelezen wordt, dan wordt de volgende blok gelezen uit de stream, enz.. Bij de EncryptedBinaryWriter worden de gegevens die weggeschreven worden in een buffer opgeslagen. Wanneer de Flush() methode aangeroepen wordt, worden de gegevens uit de buffer als een blok aan data verstuurd. Zowel de EncryptedBinaryReader als de EncryptedBinaryWriter gebruiken het adapter pattern om een extra laag boven de standaard reader en writer te voorzien.
5.2.5
AbstractSyncObjectSerializer Aangezien het compact framework geen ondersteuning heeft voor het serializeren en deserializeren van objecten worden alle objecten die moeten verstuurd worden herleid naar blokken van primitives. Deze klasse biedt de methodes aan om de synchronisatie objecten te lezen en weg te schrijven naar een stream. Het object dat gewrapped zit in een sync object is als abstracte methode toegevoegd en moet dus wel nog geïmplementeerd worden.
Stagedossier G15
5.2.6
Mobile CRM
100
Crypto Deze klasse biedt de functionaliteit aan om een blok aan data te encrypteren en te decrypteren. Er is op het compact framework geen ondersteuning voor de Cryptography klassen, dus maakt het gebruik van native Windows Mobile dll’s om de encryptie uit te voeren.
5.3 Sequentie Diagram 5.3.1
Start van de synchronisatie
De start van de synchronisatie, de client maakt gebruik van de SyncController om de synchronisatie te starten. Die laat aan beide weten dat de synchronisatie gestart wordt. Bij synchronisatie over TCP wordt bij SynchronisationStarted ook eerst de verbinding gemaakt naar de server. Daarna worden de gegevens aan de client opgevraagd die nodig zijn bij de autorisatie en doorgegeven naar de server om de client te laten autoriseren.
Stagedossier G15
5.3.2
Mobile CRM
101
Updaten van gegevens op de client
Nu wordt aan de server gevraagd al de last sync date entries van de client te overlopen en te vergelijken met de gegevens van de server. Daar kunnen inmiddels verschillen op treden: • •
•
De last sync date entry van een object is ouder dan het wijzigingstijdstip van het object op de server. Het object moet dus out of date op de client en moet dus geüpdatet worden. Het object van de last sync date entry bestaat niet meer op de server, dit wil zeggen dat heb object sinds de laatste synchronisatie verwijderd is van de server, dus de client moet het object verwijderen. Er is geen last sync date entry voor een object van de server, dus het object is nog niet gesynchroniseerd dus de client moet het toevoegen (NextNewItem).
Na deze stap zal ook aan zowel de client als server gevraagd worden of de synchronisatie hier moet eindigen. Dit is handig wanneer de client de gegevens van de server moet krijgen maar ze niet mag aanpassen, waardoor er nooit gegevens op de server geüpdatet moet worden. 5.3.3 Updaten van de gegevens op de server Het updaten van de gegevens op de server gebeurt in 4 delen:
Toevoegen van nieuwe objecten op de server
Er wordt aan de client een lijst gevraagd van nieuwe objecten die moeten toegevoegd worden, en elk van die objecten worden dan naar de server verstuurd. Er kunnen problemen optreden (vb. het mag niet toegevoegd worden), dus naargelang wordt AddItemSuccess en UpdateItemBecauseOfFailedAdd op de client opgeroepen.
Stagedossier G15
Mobile CRM
102
Updaten van toegevoegde objecten op de server
Nadat alle objecten zijn toegevoegd zijn we zeker dat verwijzingen naar 1 van die objecten kunnen bestaan op de server. Nu worden de referenties van de objecten die toegevoegd waren geüpdatet op de server, op een gelijkaardige manier als het toevoegen zelf.
Updaten van gewijzigde objecten
Na het updaten van nieuwe objecten worden de gewijzigde objecten naar de server verstuurd.
Updaten van verwijderde objecten
En tenslotte als laatste worden de headers van de verwijderde objecten naar de server gestuurd.
Einde van de synchronisatie
Nadat alle objecten naar de server verstuurd zijn is de synchronisatie afgewerkt.
Stagedossier G15
Mobile CRM
Deel 4: Afwerking en Testen 1 Enkele significante scherm lay-outs 1.1 Beheersapplicatie
103
Stagedossier G15
Mobile CRM
1.2 Mobiele applicatie
Voor meer informatie over de schermen, zie verder bij 3. Handleiding.
104
Stagedossier G15
Mobile CRM
105
2 Testen Om het project te testen hebben we een zo volledig mogelijk testverslag opgesteld om de correcte werking te garanderen. Hier en daar hebben we gebruik gemaakt van unit testing om componenten te testen, maar aangezien dit project over verschillende subprojecten loopt en een client-server model hanteert is dit niet evident om daar unit testen te voor gaan schrijven.
2.1 Testverslag 2.1.1
Beheersapplicatie
2.1.1.1 Beheer Entiteiten
Namen worden weergegeven in de gridview Icoontjes worden weergegeven in de gridview Een entiteit kunnen selecteren Selectie van een entiteit kunnen veranderen Geselecteerde Entiteit verwijderen Bevestiging bij het verwijderen van een entiteit Geen selectie, niets verwijderen Beheer Entiteiten PopUp weergeven bij toevoegen nieuwe entiteit Gridview goed updaten na het sluiten van Beheer Entiteiten PopUp Titel van de pagina wordt goed weergegeven
2.1.1.2 Beheer Entiteiten Popup
Namen worden weergegeven in de gridview Icoontjes worden weergegeven in de gridview Entiteiten kunnen worden aangevinkt/afgevinkt Bij OK worden de entiteiten toegevoegd als mobiele entiteit Bij Annuleren wordt de pagina gesloten Titel van de pagina wordt goed weergegeven
2.1.1.3 Beheer Lay-out Overzicht
Namen worden weergegeven in de gridview Icoontjes worden weergegeven in de gridview Entiteit selecteren Selectie Entiteit kunnen veranderen Beheer Lay-out PopUp weergeven bij dubbelklik op een entiteit PopUp wordt in het midden van het scherm weergegeven
2.1.1.4 Beheer Lay-out Popup
Alle Icoontjes worden goed weergegeven Default icoontjes als er voor die entiteit geen icoontje is Gridviews View/Form/Filter worden goed weergeven Er kan een rij geselecteerd worden in de gridviews View/Form/Filter Er kan een rij verwijderd worden in de gridviews View/Form/Filter Bevestiging bij verwijderen rij in Gridview View/Form/Filter Beheer Lay-out View weergeven bij dubbelklikken op View
Stagedossier G15
Mobile CRM
106
Beheer Lay-out View weergeven bij nieuwe View Beheer Lay-out Form weergeven bij dubbelklikken op Form Beheer Lay-out Form weergeven bij nieuwe Form Beheer Lay-out Filter weergeven bij dubbelklikken op Filter Opslaan & Opslaan en Afsluiten knoppen werken Titel van de pagina wordt goed weergegeven
2.1.1.5 Beheer Lay-out View
Alle Icoontjes worden goed weergeven Default icoontjes als er voor die entiteit geen icoontje is Gridview wordt goed weergeven Kolom selecteren Selectie van kolom veranderen Geselecteerde kolom verwijderen Beheer Lay-out Attributen weergeven bij toevoegen kolommen Kolommen naar rechts verplaatsen Kolommen naar links verplaatsen Beheer Lay-out Filter weergeven bij bewerken van Filter Bij nieuwe View zeggen dat ze eerst de view moeten opslaan voordat ze filter kunnen aan toevoegen Na aanmaken nieuwe filter, wordt filter goed weergegeven bij 2e keer bewerken Opslaan & Opslaan en Afsluiten knoppen werken De naam van een view moet uniek zijn Titel van de pagina wordt goed weergegeven
2.1.1.6 Beheer Lay-out Form
Alle Icoontjes worden goed weergeven Default icoontjes als er voor die entiteit geen icoontje is Tabbladen worden goed weergegeven De gridview per tabblad wordt goed weergeven Een rij van de gridview kunnen selecteren Selectie van een rij kunnen wijzigen Geselecteerde rij verplaatsen naar boven Geselecteerde rij verplaatsen naar onder Geselecteerde rij verwijderen Beheer Lay-out Attributen weergeven bij toevoegen Attribuut Tabblad selecteren Selectie Tabblad wijzigen Geselecteerde Tabblad verplaatsen naar rechts Geselecteerde Tabblad verplaatsen naar links Geselecteerde Tabblad verwijderen Bevestiging bij verwijderen van Tabblad Tabblad Toevoegen Naam Tabblad wijzigen Required Fields moeten op de form toegevoegd zijn.
Stagedossier G15
Mobile CRM
Opslaan & Opslaan en Afsluiten knoppen werken De naam van een form moet uniek zijn Beheer Lay-out Relatie weergeven bij toevoegen Relatie Weergavenaam van een relatie in de gridview wordt goed weergegeven Titel van de pagina wordt goed weergegeven
2.1.1.7 Beheer Lay-out Relatie
Namen worden weergegeven in de gridview Relaties kunnen worden aangevinkt/afgevinkt De gekozen Relaties worden goed aan de huidige GuiForm toegevoegd. Titel van de pagina wordt goed weergegeven
2.1.1.8 Beheer Lay-out Attributen
Namen worden weergegeven in de gridview Required niveau wordt weergegeven Enkel de attributen die nog niet zijn toegevoegd in View/Form wordt weergegeven Attributen kunnen worden aangevinkt/afgevinkt Titel van de pagina wordt goed weergegeven
2.1.1.9 Beheer Lay-out Filter
Alle Icoontjes worden goed weergeven Default icoontjes als er voor die entiteit geen icoontje is De treeview van de Filter wordt goed opgebouwd Default Filter wordt weergegeven bij nieuwe Filter Icoontjes in de treeview worden goed weergegeven Nodes van de treeview kunnen selecteren Selectie node wijzigen afhankelijk van de geselecteerde node andere knoppen enabled/disabled Toevoegen Node bij Toevoegen van ConditieGroep Wijzigen Operator van geselecteerde ConditieGroep Verwijderen Node bij Verwijderen ConditieGroep Bevestiging bij verwijderen van ConditieGroep Beheer Lay-out Filter PopUp weergeven bij toevoegen nieuwe Conditie Beheer Lay-out Filter PopUp weergeven bij wijzigen Conditie Verwijderen Node bij Verwijderen Conditie Bevestiging bij verwijderen van Conditie Opslaan & Opslaan en Afsluiten knoppen werken Filternaam moet uniek zijn Titel van de pagina wordt goed weergegeven
107
Stagedossier G15
Mobile CRM
108
2.1.1.10 Beheer Lay-out Filter Popup Als er een Conditie moet worden aangepast wordt deze goed weergeven Titel van de pagina wordt goed weergegeven 2.1.1.11 Beheer Profielen
Namen worden weergeven in Gridview Beheer Profielen Pop Up weergegeven bij het aanpassen van een rij Profiel verwijderen Bevestiging bij het verwijderen van een profiel In de inner Gridview wordt alles goed weergeven Entiteit in de inner Gridview verwijderen
2.1.1.12 Beheer Profiel Popup
De profielnaam wordt weergegeven Per entiteit wordt zijn eigenschappen goed weergeven In de inner gridview wordt alles goed weergeven Bij het opslaan worden de default view & form opgeslagen ook al staan ze niet aangevinkt in de inner gridview Profielen zonder view of form kunnen niet worden toegevoegd Bij aanpassingen wordt alles goed opgeslagen Bij aanmaken nieuw profiel wordt alles goed opgeslagen Profielnaam moet uniek zijn
2.1.1.13 Beheer Users
Namen worden weergegeven in Gridview Details voor een user wordt goed weergeven in de inner gridview Opties voor toevoegen van Nieuwe gebruiker worden weergegeven Verwijderen van User Bevestiging bij verwijderen van User Als er niets geselecteerd is doet de knop bewerken niets Er kan geen user toegevoegd worden als er geen profielen zijn Na toevoegen en verwijderen gebruiker, de gebruikers dropdownlist updaten
2.1.1.14 Beheer Users Popup Gegevens over User worden goed weergegeven Alle toestellen van de user worden goed weergegeven in de gridview Titel van de pagina wordt goed weergegeven
Stagedossier G15
Mobile CRM
109
2.1.1.15 Beheer Devices 2.1.2
Gegevens over alle toestellen worden goed weergegeven Blacklisted devices staan aangevinkt en hebben een zwart icoontje Bij het aanvinken van een toestel wordt het toestel na bevestiging geblacklist Bij het afvinken van een toestel wordt het toestel na bevestiging van de blacklist gehaald
Mobiele Applicatie
2.1.2.1 Initialisatie
Er wordt gevraagd om de settings in te vullen en gaat naar settings Geef fout wanneer bij de settings geannuleerd word bij de first run Er worden nog geen entiteiten getoond in de lijst (tenzij er al in de database zitten) Er zijn nog geen conflicten
2.1.2.2 View van een Entiteit
De default view van de entiteit wordt gebruikt om records te tonen De eerste kolom staat default ascending gesorteerd bij gekozen view Via menu kan alle beschikbare views gekozen worden De lay-out wordt geüpdatet wanneer een view gekozen wordt Wanneer er geladen wordt, wordt de loading image getoond Er kan gesorteerd worden op elke kolom, 2e klik sorteert descending Als er descending gesorteerd is en er wordt een andere kolom gekozen is de sort order terug ascending De kolommen worden automatisch gefit op de listview width Er wordt een dialog getoond wanneer gekozen wordt voor zoeken via menu Zoeken naar records werkt Toon alle uit menu refresht de lay-out van huidig view en toont alle records en behoudt de sort key Vorige/ Volgende pagina's kunnen gekozen worden uit de menu of met <- of -> keys Er kan geen vorige of volgende pagina gekozen worden als er geen data is Een nieuw record kan via menu toegevoegd worden -> ga naar form van entiteit Als record niet mag toegevoegd worden, geef fout Bij ‘Orientation change’ wordt de lay-out geüpdatet Een record kan verwijderd worden via de menu Als er geen record geselecteerd zijn en kies voor verwijderen, geef een fout Bij verwijderen van record wordt bevestiging gevraagd Bij gekozen record (item activate) de details tonen -> ga naar form van entiteit Het lrg icon van de entiteit wordt getoond linksboven Er is een werkende close button rechtsboven Alle images zijn beschikbaar en goed getoond De filter van de gekozen view is toegepast De lijst wordt geüpdatet wanneer een record toegevoegd is De lijst wordt geüpdatet wanneer een record aangepast is De lijst wordt geüpdatet wanneer een record verwijderd is
Stagedossier G15
Mobile CRM
110
2.1.2.3 Overzicht Entiteiten
Bij ‘Orientation change’ wordt de lay-out geüpdatet Beschikbare entiteiten worden getoond Entiteit selecteren gaat naar view Er kan niet meer geklikt worden op entiteiten wanneer 1 entiteit gekozen is Alle images zijn beschikbaar en goed getoond Er is een werkende close button rechtsboven Er kan naar de conflicten overzicht window gegaan worden via de menu Er kan naar de synchronisatie window gegaan worden
2.1.2.4 Form van een entiteit De default form wordt gebruikt om gegevens te tonen De verschillende tabs worden getoond, met 1e tab als default De attributen worden per tab getoond onder elkaar met labels links en toepasselijke velden op basis van hun type rechts Het primary field wordt getoond in de header De required of optionele velden worden aangeduid met * of + Als wijzigen van entiteit niet toegelaten is, worden alle velden als alleen lezen getoond Bij ‘Orientation change’ wordt de lay-out geüpdatet Bij een telefoonnummer veld kan het veld gebruikt worden om naartoe te telefoneren Bij een website veld kan het veld gebruikt worden om naartoe te surfen Bij een email veld kan het veld gebruikt worden om een email te sturen Na aanpassingen van email, website of telefoonnummer, wordt de actie op de nieuwe waarde van het veld uitgevoerd Wanneer de form gesloten wordt via de close en er zijn aanpassingen gebeurd, wordt bevestiging gevraagd Bij een lookup veld kan de details van de refererende record opgevraagd worden Een lookup veld wijzigen doet de frmLookup dialog open Nadat een nieuw lookup veld gekozen is, is de lay-out geüpdatet Wanneer het refererende record niet beschikbaar is op de mobiele client, wordt dat aangeduid Labels die langer zijn dan ze kunnen tonen worden getruncated Alle images zijn beschikbaar en goed getoond Er is een werkende close button rechtsboven De relaties worden als links getoond, en wanneer er op geklikt wordt, wordt een frmEntiteitView geopend Als de entiteit van de relatie niet beschikbaar is wordt dat gemeld Loading animation wordt getoond wanneer naar de details van een lookup, lookup form of relatie genavigeerd wordt 2.1.2.5 Relaties op een form Alleen de records van de entiteit van de relatie die voldoen aan de relatie met de bovenliggende entiteit worden getoond Als een nieuw record wordt toegevoegd, wordt het veld van de relatie automatisch ingevuld 2.1.2.6 Lookup Dialog Als er al een refererend veld was ingevuld, wordt het entiteit ervan automatisch gekozen
Stagedossier G15
Mobile CRM
111
Bij ‘Orientation change’ wordt de lay-out geüpdatet Als een entiteit uit de dropdownlist gekozen is, wordt de lijst van records geüpdatet De lijst wordt ook default gesorteerd op de 1e kolom De kolommen worden automatisch gefit op de width van de lijst Pagina's kunnen veranderd worden met de <- en -> keys Er kan geen vorige of volgende pagina gekozen worden als er geen data is Wanneer er geladen wordt, wordt de loading image getoond Er kan gesorteerd worden op elke kolom, 2e klik sorteert descending Als er descending gesorteerd is en er wordt een andere kolom gekozen is de sort order terug ascending Alle images zijn beschikbaar en goed getoond Er kan gezocht worden op bepaalde records van de gekozen entiteit Wanneer er gezocht is, is de knop automatisch 'toon alle resultaten' Wanneer er geladen wordt, wordt de loading image getoond De details van een record kan opgevraagd worden via de menu, de form wordt als readonly getoond Wanneer geen entiteit geselecteerd is en er wordt bevestigd, wordt de lookup gecleared Het geselecteerde record wordt doorgegeven bij bevestiging Wanneer geannuleerd wordt is er niets gewijzigd Geen entiteit selecteren cleared het lookup veld Aanpassen van het zoekveld veranderd de search button terug in zoeken Er kan niet gezocht worden wanneer geen entiteiten geselecteerd zijn
2.1.2.7 Settings
Niet alle velden correct ingevuld -> Fout, dialog met ongeldige velden Alle required velden worden met * aangeduid Bij het verwijderen van alle gegevens wordt een bevestiging gevraagd Paswoord en encryption key worden gemaskeerd Alle images zijn beschikbaar en goed getoond Er is een werkende close button rechtsboven Wanneer geannuleerd wordt is er niets gewijzigd Bij ‘Orientation change’ wordt de lay-out geüpdatet Na verwijderen van alle data wordt automatisch terug volledig gesynchroniseerd bij de volgende synchronisatie
2.1.2.8 Synchronisatie Fout bij verbreken van de verbinding Fout wanneer er geen of incorrecte instellingen ingesteld zijn Wanneer het maximaal aantal toestellen bereikt is voor de gebruiker, wordt een fout gegeven Wanneer een verkeerde gebruikersnaam en passwoord is ingeven, geef een fout Wanneer er een fout opgetreden is wordt de synchronisatie gestopt Meta data die aangemaakt, gewijzigd of verwijderd is wordt met bijpassend icoon getoond Wanneer een record aangepast is op de client, maar ook aangepast is op de server, wordt dit als conflict toegevoegd Wanneer een record is aangepast op de client, maar verwijderd op de server, wordt dit als conflict toegevoegd
Stagedossier G15
Mobile CRM
112
Nieuwe records op de server worden geüpdatet naar de client Gewijzigde records op de server worden geüpdatet op de client Verwijderde records op de server worden verwijderd op de client Records die verwijderd zijn op de client en ook verwijderd zijn op de server geeft geen conflict Records die verwijderd zijn op de client maar gewijzigd zijn op de server geeft conflicten Er kunnen geen meerdere synchronisaties tegelijkertijd gestart worden Bij ‘Orientation change’ wordt de lay-out geüpdatet Bij records die al in conflict zitten wordt het oud conflict geüpdatet Een aangemaakt record en daarachter terug verwijderd wordt niet gesynchroniseerd naar de server Nieuwe beschikbare attributen door wijziging in metadata worden ook geüpdatet, ook al is het record up to date De attributen die betrokken zijn bij een relatie worden ook mee gesynchroniseerd Wanneer het toestel geblacklist is, worden alle gegevens verwijderd, inclusief de settings
2.1.2.9 Conflicten overzicht
Alle conflicten worden in een lijst getoond Alle images zijn beschikbaar en goed getoond Er is een werkende close button rechtsboven Bij ‘Orientation change’ wordt de lay-out geüpdatet Conflictrecords worden met primary field van client versie in de lijst getoond Wanneer er geladen wordt, wordt de loading image getoond
2.1.2.10 Conflict Details
Als een client versie beschikbaar is, wordt de default form getoond in de client tab Als een server versie beschikbaar is, wordt de default form getoond in de server tab Alle images zijn beschikbaar en goed getoond Er is een werkende close button rechtsboven Als het conflict client modified, server modified is, kan voor elke mismatch gekozen worden welke versie moet bijgehouden worden Voor andere conflicten is een standaard keuze tussen client versie en server versie Voor andere conflicten is een standaard keuze tussen client versie en server versie Opslaan past de goede versie toe Wanneer geannuleerd wordt is er niets gewijzigd Bij ‘Orientation change’ wordt de lay-out geüpdatet
2.1.2.11 Alle vensters Wanneer alle windows geminimized wordt en Mobile CRM wordt gerestored, wordt het laatste window getoond Een window die gesloten wordt gaat terug naar zijn vorige window zonder dat een ander programma daar tussen springt De applicatie wordt maar 1x in task manager getoond
Stagedossier G15
Mobile CRM
2.2 Unit testen 2.2.1
Beheersapplicatie
Testen die de CRUD van de beheersapplicatie controleren. 2.2.2
Synchronization Framework
Main flow
Dit zijn verschillende testen voor situaties die het meest zullen voorkomen bij de synchronisatie.
Conflicten
Hier zijn de testen gefocust op het genereren van conflicten, iets dat minder voorkomt bij de synchronisatie.
113
Stagedossier G15
Mobile CRM
Encryptie
Deze testen verifiëren de werking van de encryptie van allerlei data.
114
Stagedossier G15
Mobile CRM
115
3 Handleiding 3.1 Deel I: Beheersapplicatie
Figuur 36: Het overzicht van de beheersapplicatie
Bij het navigeren naar de Beheersapplicatie pagina krijgt u een overzicht van de verschillende pagina’s waar u kan naar doorklikken. Een overzicht van de pagina’s met een korte beschrijving: • •
• • •
Entiteiten: Beheer hier welke entiteiten er mobiel beschikbaar mogen zijn. Profielen: Beheer hier welke profielen er beschikbaar zijn. Stel in tot welke entiteiten een profiel toegang heeft. En welke weergaven en formulieren er voor elk van die entiteiten van toepassing is. Gebruikers: Beheer hier welke gebruikers mogen inloggen via de mobiele applicatie en tot welk profiel elke gebruiker behoort. Toestellen: Beheer hier welke toestellen mogen synchroniseren. Weergaven en Formulieren: Beheer hier de weergaven en formulieren voor de mobiele applicatie.
Stagedossier G15
3.1.1
Mobile CRM
116
Beheer Entiteiten
Figuur 37: overzicht van de mobiele entiteiten
Om entiteiten beschikbaar te stellen op de mobiele applicatie moet u deze eerst op de pagina Beheer Entiteiten toestaan. Als u op de knop “Nieuwe Entiteit” klikt komt er een venster te voorschijn met een overzicht van alle entiteiten van uw CRM systeem. Hier vinkt u de entiteiten aan die u wenst toe te voegen en drukt u op OK om uw keuze te bevestigen. Nu zijn de nieuw toegevoegde entiteiten beschikbaar om te gebruiken als mobiele entiteit. Als een mobiele entiteit uit de lijst selecteert kan u deze verwijderen. Bij het verwijderen van een mobiele entiteit verwijdert u ook alle weergaven en formulieren die aan deze mobiele entiteit gekoppeld zijn. Ook wordt bij een volgende synchronisatie van een mobiele gebruiker alle data van deze entiteit verwijdert van zijn toestel.
Stagedossier G15
3.1.2
Mobile CRM
117
Beheer Profielen
Figuur 38: Overzicht mobiele profielen
Door een profiel aan te maken kan u mobiele gebruikers groeperen. Per profiel stelt u in welke entiteiten er voor dat profiel beschikbaar zijn. Zie pagina Beheer Profiel Details voor meer informatie over de instellingen bij het toevoegen van een entiteit aan een profiel. Om een nieuw profiel aan te maken klikt u op de knop “Nieuw Profiel”. U krijgt dan een nieuw venster te zien waar u een nieuw profiel kan aanmaken. Zie pagina Beheer Profiel Details voor meer informatie over het aanmaken van een profiel. Om een bestaand profiel te bewerken selecteert u eerst het gewenste profiel en klikt u daarna op de knop “Bewerk”. U krijgt dan een nieuw venster te zien waar u de instellingen van het profiel kan aanpassen. Zie pagina Beheer Profiel Details voor meer informatie over het wijzigen van een profiel. Nadat u een profiel hebt geselecteerd kan u deze ook verwijderen. Daarvoor klikt u op de knop “Verwijder” en bevestigt. Opmerking: Bij het verwijderen van een profiel verwijdert u ook alle gebruikers die toegewezen zijn aan dat profiel.
Stagedossier G15
3.1.3
Mobile CRM
118
Beheer Profiel Details
Figuur 39: Overzicht details van een profiel
Op de pagina Beheer Profiel Details krijgt u een overzicht van alle instellingen van het huidige profiel. Deze instellingen omvatten per profiel: • • • • • • •
Profielnaam: de naam van het huidige profiel. Lees: vink dit aan zodat de gebruikers van dit profiel deze entiteit mogen lezen. Wijzig: vink dit aan zodat de gebruikers van dit profiel een record van deze entiteit mogen wijzigen. Verwijder: vink dit aan zodat de gebruikers van dit profiel een record van deze entiteit mogen verwijderen. Default Weergave: kies een weergave die als standaard gebruikt wordt op de mobiele applicatie. Default Formulier: kies een formulier die als standaard gebruikt wordt op de mobiele applicatie. Weergaven & Formulieren: als je een rij openklapt kan je voor elke entiteit meerdere weergaven en formulieren aanvinken, zodat er meerdere weergaven en formulieren kunnen gebruikt worden op de mobiele applicatie.
Stagedossier G15
3.1.4
Mobile CRM
119
Beheer Users
Figuur 40: Overzicht mobiele gebruikers
In de pagina Beheer Gebruikers kan je een CRM gebruiker toestaan om via de mobiele applicatie de data van de CRM te bekijken/wijzigen. Bij het toevoegen van een gebruiker moet je instellen tot welk profiel hij zal behoren en hoeveel toestellen de gebruiker maximum mag hebben. Als je een gebruiker hebt geselecteerd heb je volgende opties waarover u beschikt: • Bewerken: dit gebeurt via een handig dialoogvenster. Zie Beheer User Details voor meer informatie over het bewerken van een gebruiker. • Verwijderen: na bevestiging wordt alle informatie over de mobiele gebruiker gewist.
Stagedossier G15
3.1.5
Mobile CRM
120
Beheer User Details
Figuur 41: Overzicht details van een gebruiker
Bij het wijzigen van een gebruiker wordt u doorverwezen naar de pagina Beheer User Details. Op deze pagina krijgt u een overzicht van de instellingen van de gebruiker en welke toestellen er reeds aan de gebruiker gekoppeld zijn. U kan de gebruiker van profiel wijzigen en zijn maximum aantal toestellen aanpassen. Indien u van een gebruiker zijn maximum aantal toestellen wilt veranderen naar aantal minder dan zijn huidig aantal toestellen, moet u eerst een andere toestel blacklisten zodat hij nooit meer toestellen heeft dan maximum toegestaan.
Stagedossier G15
3.1.6
Mobile CRM
121
Beheer Devices
Figuur 42: Overzicht van alle toestellen
Hier kan u beheren welke toestellen toegang krijgen tot het CRM systeem. Het toevoegen van een toestel gebeurt automatisch nadat een gebruiker voor de eerste maal heeft gesynchroniseerd (indien hij de toestemming heeft: zie Beheer Gebruikers voor meer informatie hier omtrent). Als u een toestel wenst te blokkeren moet u dat toestel aanvinken. Dit toestel komt dan in de zwarte lijst te staan. Als het geblokkeerde toestel probeert te synchroniseren wordt alle data op het toestel verwijderd.
Stagedossier G15
3.1.7
Mobile CRM
122
Beheer Lay-out Overzicht
Figuur 43: Overzicht van alle mobiele entiteiten, kies een entiteit om zijn lay-out aan te passen
Op de pagina Beheer Lay-out Overzicht krijgt u een overzicht van alle mobiele entiteiten. U kan dubbelklikken op een entiteit naar keuze om zijn weergaven, formulieren en filters aan te passen. Zie Beheer Lay-out Entiteit voor meer informatie over het aanpassen van weergaven, formulieren en filters van een mobiele entiteit. Deze weergaven en formulieren kan u dan later aan een profiel koppelen. Zie Beheer Profiel voor meer informatie over het koppelen van weergaven en formulieren aan een profiel.
Stagedossier G15
3.1.8
Mobile CRM
123
Beheer Lay-out Entiteit
Figuur 44: Overzicht met alle weergaves, formulieren en filters van een mobiele entiteit
Als u in de pagina Beheer Lay-out Overzicht een mobiele entiteit heeft gekozen komt u op de pagina Beheer Lay-out Entiteit terecht. Hier kan u alles wat met lay-out te maken heeft voor een entiteit op de mobiele applicatie beheren. Kies in het linker menu welk onderdeel van de lay-out u wenst aan te passen. Weergaven: hier vindt u een overzicht van alle weergaven van de entiteit en zijn bijhorende filter. Dubbelklik op een weergave om deze te bewerken. Zie Beheer Lay-out View voor meer informatie over het aanpassen van een weergave. Als een weergave geen standaard weergave van een profiel is, kan u deze verwijderen. Dit doet u door de gewenste weergave te selecteren, op “Verwijder” te klikken en te bevestigen. Formulieren: hier vindt u een overzicht van alle formulieren van de entiteit. Dubbelklik op een formulier om deze te bewerken. Zie Beheer Lay-out Form voor meer informatie over het aanpassen van een formulier. Als een formulier geen default formulier van een profiel is kan u deze verwijderen. Dit doet u door het gewenste formulier te selecteren, op “Verwijder” te klikken en te bevestigen. Filters: hier vindt u een overzicht van alle filters van elke view van de entiteit. Dubbelklik op een filter om deze te bewerken. Zie Beheer Lay-out Filter voor meer informatie over het aanpassen van een filter. Een filter verwijderen doet u door de gewenste filter te selecteren, op “Verwijder” te klikken en te bevestigen. Omdat een filter altijd gekoppeld is aan een weergave gebeurt het aanmaken van een nieuwe filter via weergave.
Stagedossier G15
3.1.9
Mobile CRM
124
Beheer Lay-out View
Figuur 45: Beheer hier de lay-out van de weergave
Als u een nieuwe weergave wil aanmaken of een bestaande weergave wenst aan te passen moet dit gebeuren via de pagina Beheer Lay-out View. Hier krijgt u een voorbeeld te zien van hoe de weergave er (ongeveer) zal uitzien op de mobiele applicatie. Bovenaan het rechter menu vindt u de weergavenaam terug. Deze kan u in het tekstvak aanpassen. Om nieuwe kolommen toe te voegen klikt u in het rechter menu op “Toevoegen”. Dan krijgt u een dialoogvenster waar u de gewenste attributen kan selecteren. Zie Beheer Lay-out Attributen voor meer informatie over het kiezen van de gewenste attributen. Als u uw keuze gemaakt heeft worden de gekozen attributen als kolommen toegevoegd in de weergave. Om een kolom te verwijderen moet u eerst de kolom selecteren, dit doet u door op de kolomkop te klikken. Daarna kiest u in het rechter menu voor “Verwijder” en wordt de kolom verwijderd. Als u een kolom geselecteerd hebt kan u ook de volgorde van de kolommen aanpassen. In het rechter menu kan u met de pijlen de kolommen verplaatsen in de gewenste richting. Als u in het rechter menu voor “Bewerk Filter” kiest krijgt u een nieuw venster te zien waar u de filter van de weergave kan bewerken.
Stagedossier G15
Mobile CRM
125
Indien er nog geen filter aan de weergave gekoppeld was, wordt er een basis filter aangemaakt. Zie Beheer Lay-out Filter voor meer informatie omtrent het aanpassen van een filter. Door op “Verwijder Filter” te klikken in het rechter menu verwijdert u de filter van de weergave. De filter wordt na bevestiging volledig verwijderd. Terwijl u bezig bent met de weergave aan te passen kan u de weergave opslaan door links boven op de afbeelding voor opslaan te klikken. Als u voor “Opslaan en Sluiten” kiest zullen de aanpassingen worden opgeslagen en het huidige venster gesloten worden. 3.1.10 Beheer Lay-out Attributen
Figuur 46: Kies een of meerdere attributen om toe te voegen
Dit venster krijgt u te zien als u in Beheer Lay-out Form of Beheer Lay-out View gekozen heeft om een nieuw attribuut toe te voegen. Hier krijgt u een overzicht van alle attributen die zich nog niet op de weergave of het formulier bevinden. U kan de attributen die u wenst toe te voegen selecteren door de checkbox vooraan in de rij aan te vinken. Nadat u uw keuze heeft bevestigd worden alle gekozen attributen toegevoegd aan de weergave of het formulier.
Stagedossier G15
Mobile CRM
126
3.1.11 Beheer Lay-out Form
Figuur 47: Beheer hier de lay-out van het formulier
Als u een nieuw formulier wil aanmaken of een bestaand formulier wenst aan te passen moet dit gebeuren via de pagina Beheer Lay-out Form. Hier krijgt u een voorbeeld te zien van hoe het formulier er zal uitzien op de mobiele applicatie. Bovenaan het rechter menu vindt u de formuliernaam terug. Deze kan u in het tekstvak aanpassen. Om nieuwe tab toe te voegen klikt u in het rechter menu op “Toevoegen” in de sectie “Tabs”. Er wordt dan een tabblad toegevoegd aan het. Je kan de naam van het huidige tabblad veranderen in de sectie “Tabs” van het rechter menu. Klikt u in het rechter menu op “Verwijder” in de sectie “Tabs” zal de huidige tabblad na bevestiging verwijderd worden. In het rechter menu kan u met de pijlen de tabbladen verplaatsen in de gewenste richting (naar links of naar rechts). Wenst u om een attribuut toe te voegen in de huidige tab moet u klikken op “Toevoegen” in de sectie “Attributen” van het rechter menu. Dan krijgt u een dialoogvenster waar u de gewenste attributen kan selecteren. Zie Beheer Lay-out Attributen voor meer informatie over het selecteren van de gewenste attributen. Als u uw keuze gemaakt hebt worden de nieuw gekozen attributen als rijen toegevoegd op het huidige tabblad van het formulier.
Stagedossier G15
Mobile CRM
127
Om een rij te verwijderen moet u eerst de rij selecteren. Daarna kiest u in het rechter menu voor “Verwijder” in de sectie “Attribuut” en wordt de rij na bevestiging verwijderd. Als u een rij geselecteerd hebt kan u ook de volgorde van de rijen aanpassen. In het rechter menu kan u met de pijlen de kolommen verplaatsen in de gewenste richting (naar boven of naar onder). Terwijl u bezig bent met het formulier aan te passen kan u het formulier opslaan door links boven voor opslaan te kiezen. Als u voor “Opslaan en Sluiten” kiest zullen de aanpassingen worden opgeslagen en het huidige venster gesloten worden. 3.1.12 Beheer Lay-out Relaties
Figuur 48: Kies een of meerdere relaties om toe te voegen aan het formulier
Dit venster krijgt u te zien als u in Beheer Lay-out Form gekozen heeft om een nieuwe 1 op N relatie toe te voegen. Hier krijgt u een overzicht van alle 1 op N relaties die zich nog niet op het formulier bevinden. U kan de relaties die u wenst toe te voegen selecteren door de checkbox vooraan in de rij aan te vinken. Nadat u uw keuze heeft bevestigd worden alle gekozen relaties toegevoegd aan het formulier.
Stagedossier G15
4.1.1
Mobile CRM
128
Beheer Lay-out Filter
Figuur 49: Beheer hier de lay-out van de filter
Een filter wordt gekoppeld aan een weergave. Zo beslis je welke data er in de weergave te zien is op de mobiele applicatie. Je kan de filter een naam geven die als beknopte omschrijving fungeert zodat je in 1 oogopslag weet wat de filter doet. Een filter bestaat uit een verzameling van conditiegroepen en condities. Een conditiegroep bevat meerdere condities die d.m.v. de operator aan elkaar worden gekoppeld. Je kan een conditiegroep alleen toevoegen aan een andere conditiegroep. Een conditie kan je alleen maar toevoegen aan een conditiegroep. Een conditie bevat een attribuut, een operator en eventueel een waarde. Voorbeeld: conditiegroep met operator “EN”, bevat 2 condities: - attribuut “address1_stad”, operator “gelijk aan”, waarde “Gent” - attribuut “telefoon (werk)”, operator “niet leeg”, waarde “” De weergave waar deze filter op toegepast is zullen enkel de records bevatten waar de address1_stad gelijk is aan Gent EN er een telefoon(werk) is ingevuld. Symbolisch voorgesteld: ((address1_stad == Gent) OF (telefoon(werk)!=””))
Zie Beheer Lay-out Filter Conditie voor meer informatie over het toevoegen van een conditie.
Stagedossier G15
4.1.2
Mobile CRM
129
Beheer Lay-out Filter Conditie
Om een conditie toe te voegen moet u eerste een attribuut kiezen uit de lijst. Afhankelijk van het type van het attribuut wordt dan de lijst met operatoren gevuld. Nadat er een operator geselecteerd is moet u (indien nodig) een waarde ingeven. Die waarde is weer afhankelijk van het attribuut type en van de gekozen operator. Indien u een conditie wenst aan te passen worden alle velden ingevuld en kan u de gewenste aanpassingen maken. Figuur 50: Kies een attribuut, operator en waarde.
Voorbeeld: voor een attribuut van het type datum kan u de operator “Vorige Maand” kiezen, terwijl u bij een getal de operator “Groter dan” kan selecteren.
Stagedossier G15
Mobile CRM
130
4.2 Deel II: De mobiele applicatie
4.2.1 Inleiding De mobiele applicatie geeft de gegevens weer van de CRM server volgens de instellingen van de beheersapplicatie. Hier kan u gegevens opvragen, toevoegen, wijzigen en verwijderen per entiteit. Bij de volgende synchronisatie worden die wijzigen dan doorgevoerd naar de CRM Server. Hierdoor kan u de gegevens altijd raadplegen wanneer u geen toegang heeft tot het internet om rechtstreeks de gegevens aan de server te vragen. 4.2.2
Set-up Nadat u de software geïnstalleerd heeft en de applicatie voor de 1e keer opstart, wordt er achter de basisinstellingen gevraagd. Deze instellingen zijn nodig voor de verbinding te leggen naar de CRM server.
Figuur 51: Het beginscherm van Mobile CRM
Stagedossier G15
Mobile CRM
131
Vraag aan uw beheerder de instellingen die gebruikt moeten worden (zie Instellingenvoor meer informatie over de instellingen,) Nadat u de instellingen heeft ingevuld komt u terecht in het hoofdscherm waar u toegang heeft tot alle beschikbare entiteiten. Aangezien u nog niet gesynchroniseerd heeft, is er nog niets beschikbaar. Ga naar synchronisatie wanneer u een actieve internetverbinding heeft om de gegevens van de server op te halen. Naargelang de hoeveelheid aan gegevens kan dit even duren, alle volgende synchronisaties zullen incrementeel worden uitgevoerd, waardoor alleen gewijzigde gegevens zullen gesynchroniseerd worden (wat veel sneller zal verlopen).
4.2.3
Figuur 52: Vul de instellingen in
Beginscherm Hier krijgt u het overzicht van alle entiteiten waar u de records kan van opvragen. Via de menu kan u ook naar de synchronisatie menu navigeren of de instellingen aanpassen. Kies een entiteit uit de lijst om de records van het geselecteerde entiteit te zien.
Figuur 53: Het beginscherm met de beschikbare entiteiten
4.2.4
Weergave van een gekozen entiteit Hier ziet u de lijst van records voor het gekozen entiteit met de ingestelde standaardweergave. Als er ook andere weergaves beschikbaar zijn voor de entiteit, dan zijn die beschikbaar in de menu ‘weergaves’. Aangezien het systeem een groot aantal records kan bevatten, worden de resultaten opgesplitst in pagina’s zoals bij het CRM systeem. Om te navigeren tussen verschillende pagina’s kan u het menu of de en toetsen gebruiken. U ziet de huidige pagina nummer in het menu tussen de vierkant haakjes.
Figuur 54: Een weergave van alle contactpersonen (geselecteerd entiteit)
De beheerder kan de weergaves beheren voor elk entiteit in de beheersapplicatie.
Stagedossier G15
Mobile CRM
132
Via het menu is het ook mogelijk om nieuwe records toe te voegen of bestaande records te verwijderen, op voorwaarde dat u die rechten heeft. Ook kunt u hier naar records zoeken (menu zoeken), of de zoekopdracht te annuleren (menu toon alle). Het is ook mogelijk de records te sorteren door op de kolommen te klikken. Om de details van een record te zien, selecteer het gewenste record uit de lijst. Figuur 55: Keuze uit de verschillende weergaves voor de records
Indien het record telefoonnummers, websites of e-mails bevat, kunt u via het snelmenu (tap & hold) snel de gewenste functie gebruiken zonder de details te moeten zien.
Figuur 56: Via de context menu kunnen snel acties voor records genomen worden
4.2.5
Formulier van een record Hier vindt u de details van een record zoals u deze zou terugvinden op de CRM server. Als de beheerder u rechten verleend heeft om record van dat type entiteit (hier in het vb. een contactpersoon) te wijzigen, dan zijn alle velden aanpasbaar. De verplichte velden en aanbevolen velden zijn aangeduid met respectievelijk een * en een +. Bij bepaalde velden is het ook mogelijk om een actie uit te voeren:
Figuur 57: Het formulier van een contactpersoon, niet alleen lezen
•
Met kunt u een telefoongesprek starten (als uw apparaat over een belfunctie beschikt)
•
Met
kunt u een naar een website surfen.
•
Met
kunt u een e-mail versturen
•
Bij een lookup veld (vb. )kan u de details opvragen van het record waar het naartoe verwijst.
Stagedossier G15
Mobile CRM
133
Om een lookup veld (een veld dat verwijst naar een ander record zoals bvb ‘Bovenliggende klant’) in te vullen, wordt een nieuw venster geopend. Hier kan u uit de verschillende mogelijke entiteiten selecteren om een record te kiezen. De weergave die toegepast wordt is de standaardweergave, maar de bijbehorende filter wordt niet toegepast. Ook hier zijn de records gepagineerd, waar u met de en toetsen kunt navigeren. Het is ook mogelijk een record te zoeken met het zoekveld, op een bepaalde kolom te sorteren zoals bij de lijstweergave van een entiteit. U kunt ook de details van een geselecteerd record opvragen via de menu ‘Details’. Tenslotte om het lookup veld leeg te maken, selecteert u geen entiteit en drukt u op “OK”.
Figuur 58: Records opzoeken voor een lookup veld is even eenvoudig als bij de standaard web interface
Een formulier kan ook relaties naar records van een ander entiteit bevatten. Die worden als hyperlink getoond zoals u in Figuur 59 kan zien. Als u op een relatie klikt, wordt de desbetreffende lijstweergave getoond met alle records die aan de relatie voldoen. Vb. alle contactpersonen van de account ESC. Als u wijzigingen heeft doorgevoerd, kunt u die opslaan via het menu. Bij de volgende synchronisatie worden de wijzigingen doorgestuurd naar de CRM server. Figuur 59: De account ESC bevat een relatie contactpersonen
Wanneer u wilt terugkeren naar het vorig scherm en u heeft aanpassingen gemaakt, zal altijd eerst een bevestiging gevraagd worden zodat u niet per ongeluk gegevens kan verliezen. Als u gegevens incorrect invult, wordt elk foutief ingevuld veld aangeduid. Het systeem zegt ook waarom het veld onjuist is ingevuld. Dit kan bvb zijn omdat het veld noodzakelijk is, geen numeriek veld is, de waarde niet tussen een geldig interval ligt, enz.
Figuur 60: De velden worden gevalideerd, ongeldige velden worden aangeduid
Stagedossier G15
4.2.6
Mobile CRM
134
Instellingen Hier kunt u de instellingen wijzigen: Gebruikersnaam, wachtwoord en domein: De gebruikersnaam, wachtwoord en domein die u gebruikt om in te loggen op het CRM systeem. Server IP en poort: het IP adres en de poort van de mobiele CRM server, waar naartoe verbonden wordt om te synchroniseren. Encryptiesleutel: de sleutel die ingesteld is bij de mobiele CRM server, om de gegevens bij de synchronisatie te de/encrypteren. Database pad: de locatie van het database bestand
Figuur 61: De instellingen van de mobiele applicatie
4.2.7
U kunt ook alle gegevens uit de database verwijderen. De volgende synchronisatie zal alle gegevens terugzetten.
Synchronisatie De synchronisatie zorgt ervoor dat gegevens van de server beschikbaar worden voor de mobiele applicatie en andersom. Het bestaat uit 2 delen: • De meta synchronisatie: zal de entiteiten, weergaves, formulieren en andere instellingen ingesteld door de beheerder synchroniseren. •
Figuur 62: Het synchronisatie proces in volle actie
De data synchronisatie: zal de gegevens van de CRM server beschikbaar stellen op de mobiele applicatie. En de wijzigingen die op de mobiele applicatie zijn uitgevoerd terug sturen naar de CRM server.
Via het menu kan u ook eventuele conflicten oplossen.
Stagedossier G15
4.2.8
Mobile CRM
135
Conflicten Het kan gebeuren dat een record dat u gewijzigd heeft op de mobile ook al gewijzigd was op de CRM server sinds de laatste synchronisatie. Er wordt dan een conflict gegenereerd waar u kan kiezen welke versie behouden moet blijven. Zolang u geen keuze maakt zal het record bij volgende synchronisaties niet verstuurd worden naar de server, maar eventuele nieuwere versies op de server zullen wel opgeslagen worden bij het conflict, zo bent u altijd zeker van de laatste versie.
Figuur 63: Er is een conflict bij de synchronisatie
Er zijn verschillende soorten conflicten: • Een record is zowel op de mobile als op de server gewijzigd. Hier kunt u de details van beide versies bekijken en per veld dat niet overeenkomt kiezen welke versie van het veld moet behouden blijven. (zie Figuur 65)
•
Een record is gewijzigd op de mobile, maar verwijderd op de server. U kunt de alleen de details opvragen van de mobile versie, en u heeft de keuze tussen de mobile versie en de server versie te behouden (er kan niet per veld gekozen worden) Figuur 64: Bij het conflicten overzicht ziet u het conflict dat is toegevoegd
•
Figuur 65: De details van het conflict. U ziet de velden die niet overeenkwamen met de server
Een record is verwijderd op de mobile, maar gewijzigd op de server. Dit conflict werkt op dezelfde manier als het voorgaande, u kunt de mobile (de staat van het record van voor het verwijderd is) en server versie bekijken.
Stagedossier G15
Mobile CRM
136
4.3 Problemen, verbeteringen en oplossingen Er zijn een aantal problemen en verbeteringen die nog kunnen doorgevoerd worden om het systeem flexibeler en gebruiksvriendelijker te maken. We hadden jammer genoeg niet de tijd meer om al deze criteria nog aan te passen, maar we hebben hier een overzicht gemaakt met telkens een mogelijke oplossing. 4.3.1 Attributen van entiteiten rechtstreeks van de CRM server lezen De attributen van een entiteit worden momenteel opgeslagen in de database wanneer een mobiel entiteit wordt toegevoegd bij de ‘Beheer van Entiteiten’ pagina. Alle wijzigingen die gebeuren op de CRM server van de attributen daarna worden dus niet meer doorgegeven naar de mobile, wat problemen kan veroorzaken wanneer er wijzigingen moeten doorgevoerd worden naar de CRM Server (attribuut toegevoegd, etc.). Ook verschillende talen is hierdoor onmogelijk, aangezien de taal van de beheerder wordt gebruikt wanneer de attributen worden toegevoegd. Oplossing: Haal de attributen dynamisch op door een property te voorzien bij de Entiteit klasse (zoals nu reeds gebeurt met One to many relaties). Verander ook alle aId referenties in de database (AttribuutPerTab tabel, AttribuutPerView tabel, Conditie tabel) naar de guid van het attribuut op de server. Ook de lookup entiteiten en picklist opties worden dan niet meer opgeslagen in de database, maar hangen ook vast aan het attribuut. 4.3.2 Toestellen hangen vast aan een gebruiker De devices hangen nu altijd vast aan een gebruiker. Wanneer de gebruiker verwijderd wordt, worden ook alle toestellen van die gebruiker verwijderd. Dit kan problemen geven omdat een toestel die geblacklist is (omdat het toestel bvb gestolen is) ook wordt verwijderd als de gebruiker die met het toestel laatst gesynchroniseerd is wordt verwijderd. Het toestel is dan immers niet meer geblacklist, dus de gegevens worden niet verwijderd wanneer er geprobeerd wordt met het toestel te synchroniseren. Oplossing: Verwijder de foreign key constraint uit de database en laat voor het veld uId van een device null waarden toe. Voorzie dan ook bij ‘Beheer van toestellen’ een verwijder mogelijkheid om een toestel te verwijderen.
Stagedossier G15
Mobile CRM
137
4.3.3 Globale filter Per view van een entiteit kan een filter worden ingesteld, die zorgt ervoor dat niet alle gegevens van de CRM Server worden gesynchroniseerd. Er kunnen ook meerdere views aangemaakt en meegestuurd worden naar de mobiele applicatie. Om daar de gegevens die nodig zijn op de mobile van te bepalen wordt een verzameling gemaakt van alle gegevens die aan tenminste 1 filter voldoet. Het probleem hier is dat wanneer bij 1 view geen filter wordt ingesteld, alle gegevens moeten gesynchroniseerd worden, dus om optimaal te werken moet per view bepaalde criteria herhaald worden. Vb. alle contactpersonen uit Gent moet bij elke filter steeds herhaalt worden. Oplossing: Voorzie een globale filter (De tabel FilterPerProfielEntiteit was hiervoor al aangemaakt in de database), die wordt toegepast wanneer de gegevens opgevraagd worden aan de CRM Server bij de synchronisatie (in de ServerData klasse). 4.3.4 Support voor andere talen Zowel de mobiele applicatie als de beheersapplicatie zijn de strings die getoond worden hard coded. Er is geen gebruik gemaakt van een resource bundel waar de verschillende talen in kunnen worden gedefinieerd. Oplossing: Maak gebruik een resource bundel waar elke string uit kan gehaald worden (via een singleton klasse). Vergeet ook niet het attribuut probleem op te lossen, anders zullen de displayName’s van de attributen altijd in de taal van de beheerder staan. 4.3.5 Log pagina voor de beheersapplicatie Buiten het console window van de Mobile Server (en de bijgehouden last sync dates van alle toestellen) is er geen manier om te weten te komen hoe de synchronisatie verlopen is voor een toestel. Oplossing: Werk de sync log listener die nu naar de console schrijft verder uit (per sync context i.p.v. per singleton) en sla de regels op in een tabel in de database. Die kunnen dat opgevraagd en getoond worden op een log pagina. 4.3.6 ‘Mijn’ contactpersonen, activiteiten,… bij filters kunnen instellen Bij filters kan nog niet op owner gefilterd worden, waardoor entiteiten van de gebruiker op het mobile systeem nog niet zijn entiteiten alleen kan zien (zoals bij het CRM systeem). Oplossing: Stuur na de autorisatie bij de synchronisatie de system user guid van de gebruiker terug naar de mobile, en sla die daar op in de settings. Bij het toepassen van de filter (in BuildConditieQuery), zorg dat de waarde van owner vergeleken wordt op de guid die opgeslagen is in de settings.
Stagedossier G15
Mobile CRM
138
5 Slotwoord Het was een omvangrijk project waar we op vele vlakken hebben bijgeleerd. Jammer genoeg was het project zo groot dat we niet alle gewenste functionaliteiten aangebracht hebben die we wouden implementeren. Toch hebben we een stabiel bruikbaar systeem afgeleverd waar we trots op kunnen zijn. We hopen dat ons dossier ons stageopdracht genoeg heeft verduidelijkt. Indien u toch meer informatie wenst over ons project kan u ons altijd contacteren:
[email protected] of
[email protected]
Stagedossier G15
Mobile CRM
139
6 Bibliografie −
Mike Snyder, Jim Steger, Working With Microsoft Dynamics 4.0, Microsoft Press, 2008
−
Karine Samyn, Slides Dynamische Webapplicaties, 2008
−
Karine Samyn, Slides Keuzepakket Programmeren (deel ASP.NET), 2008
−
Eggheadcafe forum (http://www.eggheadcafe.com/)
−
MSDN documentatie en forums (http://msdn.microsoft.com/)
−
Microsoft Compact Framework, Pocket PC Signature Application Sample Article (http://www.codeproject.com/KB/mobile/PPCSignatureApp.aspx)
−
Sandcastle GUI Builder (Codeplex) (http://www.codeplex.com/SHFB)
−
W3Schools (http://www.w3schools.com/)
−
ASP Forums (http://forums.asp.net)
−
DevX forums (http://forums.devx.com)
−
Javascript-Coder (http://www.javascript-coder.com/)
Stagedossier G15
Mobile CRM
140
Deel 5:Bijlagen 1 Weekverslagen Weekverslag week 1: 16/02/2009 – 20/02/2009 Dag 1: 16/02/2009 - Voorbeelden van reeds bestaande mobiele CRM systemen opgezocht en kritisch bekeken. - Onderzocht welke databasestructuur we het best zouden gebruiken voor lokale opslag. Daar zijn we tot de conclusie gekomen dat XML trager is omdat we met veel records werken. Daarom zullen wij opteren voor SQL. SQL is ook veel praktischer om queries op uit te voeren voor bijvoorbeeld views. - Functionaliteit van de beheersapplicatie nader bekeken en met onze eigen woorden toegelicht. Dag2: 17/02/2009 - Use cases geschreven voor: o Login (mobile) o Beheren van profielen o Beheren van entiteiten o Beheren van users o Beheren van forms o Beheren van views o Beheren van filters. Dag3: 18/02/2009 - Concept GUI gemaakt voor use cases: Beheren van forms, profielen en entiteiten. - Use case Beheren van views aangepast. - Use cases: Entiteiten mobiel gebruiken, Hoofdmenu gebruiken opgesteld. - Vooronderzoek van mobiele CRM systemen verder gezet. - Use case: Synchronisatie deels afgewerkt. Dag4: 19/02/2009 - Use case: Synchronisatie verder beredeneert. - Alle use cases aangepast aan de hand van de verkregen feedback. - Verschillende synchronisatiemethodes besproken. Dag5: 20/02/2009 - Use case synchronisatie aangepast en een synchronisatieproces met scenario uitgetekend. - Use cases voor mobile applicatie. Nagekeken en aangepast. - Use case: Instellingen aanpassen. - CWR Mobility bestudeerd. - Onderzocht of het Synchronization Services API ons kan helpen bij het synchroniseren van de gegevens.
Planning week 2: 23/02/2009 – 27/02/2009 -
Synchronization Services API nader bestuderen. Een 1e ontwerp voor de mobile applicatie, beheer applicatie en de mobile CRM service. Use cases fine tunen. CRM architectuur nader bestuderen. Scenario’s voor de verschillende use cases opstellen.
Stagedossier G15
Mobile CRM
Weekverslag week 2: 23/02/2009 – 28/02/2009 Maandag: 23/02/2009 - Database Lay-out opgesteld van Mobile Settings (voor beheer applicatie). - Ontwerp van synchronization framework bestudeerd. - Verbinding met CRM Service laten werken (om gegevens op te halen). Dinsdag: 24/02/2009 - Opstellen van analyse&ontwerp document. - Implementatie + testen connectie CRM service. Woensdag: 25/02/2009 - Synchronization framework implementatie in detail bekijken. - Algemene DAL methodes voor het ophalen van gegevens van CRM service geschreven. - Methoden geschreven voor het ophalen van contactpersonen, accounts en systeemusers. Donderdag: 26/02/2009 - Basis gelegd voor BeheerProfielen, BeheerEntiteiten. - Synchronization framework implementatie opnieuw in detail bekeken. Vrijdag: 27/02/2009 - Beheren van Profielen (Entiteiten per profiel) afgewerkt. - Beheren van Users afgewerkt. - Microsoft Synchronization Framework geanalyseerd. - Analyse&Ontwerp rapport afgewerkt.
Planning week 3: 02/03/2009 – 06/03/2009 -
Beheersapplicatie volledig afwerken. Starten met mobile applicatie. Synchronisatie implementeren. Scenario’s voor de verschillende use cases opstellen.
141
Stagedossier G15
Mobile CRM
142
Weekverslag week 3: 02/03/2009 – 06/03/2009 Maandag: 02/03/2009 - Basis gelegd voor het beheren van Views (DAL – domein – gui). Synchronisatie Framework geschreven. - Testen voor Synchronisatie Framework geschreven. Dinsdag: 03/03/2009 - Synchronisatie Framework afgewerkt met sample code. - Testen voor Synchronisatie Framework geschreven. - Optimalisatie voor Synchronisatie Framework doorgevoerd. - Beheren van Entiteiten aangepast zodat je Entiteiten kan verwijderen (cascading naar Attribuut en Profiel). Woensdag: 04/03/2009 - Beheren van views volledig afgewerkt. - Stress test voor synchronisatie. - Basis gelegd voor het Beheren van Forms. - Basis gelegd voor synchronisatie over TCP. Donderdag: 05/03/2009 - Synchronisatie over TCP afgewerkt. - Synchronisatie met client database en ontwerp aangepast. - Beheren van forms volledig afgewerkt. - Voorbereiden van 1e samenkomst met Stagebegeleider (presentatie gemaakt). Vrijdag: 06/03/2009 - Alles commentaar voor de beheersapplicatie geschreven. - Stagepresentatie voorbereid en gegeven voor stagebezoek. - Synchronisatie met client database verder geïmplementeerd.
Planning week 4: 09/03/2009 – 13/03/2009 -
Afwerken beheersapplicatie. Afwerken Synchronisatie. Starten ontwikkelen mobiele applicatie.
Stagedossier G15
Mobile CRM
Weekverslag week 4: 09/03/2009 – 13/03/2009 Maandag: 09/03/2009 - View en Form bij Profiel geïntegreerd. - Synchronisatie integreren met de opgeslagen Mobile Settings. - Cascade deleting voor de beheersapplicatie. Dinsdag: 10/03/2009 - Cascade deleting voor de beheersapplicatie afgewerkt + testen geschreven. - Synchronisatie integreren met de opgeslagen Mobile Settings afgewerkt. Woensdag: 11/03/2009 - Test gemaakt om Mobile Settings database te vullen met testdata. - Implementeren van 2e synchronisatie stap met data uit CRM server. Donderdag: 12/03/2009 - Klassendiagram voor DAL en Domein van beheersapplicatie aangemaakt. - Beheer van Filters basis gelegd. - Beheer van Filters afgewerkt. Vrijdag: 13/03/2009 - Tests geschreven voor beheren van Filters. - Gui details Beheren van Filters geïmplementeerd. - Synchronisatie met data uit CRM Server geprobeerd. - Integratie Beheersapplicatie met Synchronisatie.
Planning week 5: 16/03/2009 – 20/03/2009 -
Starten ontwikkelen mobiele applicatie. Integratie Beheersapplicatie met Synchronisatie testen.
143
Stagedossier G15
Mobile CRM
144
Weekverslag week 5: 16/03/2009 – 20/03/2009 Maandag: 16/03/2009 - Synchronisatie van filters. - Meer informatie van CRM server van entiteiten kunnen opvragen. - Domein mobiele applicatie geschreven. Dinsdag: 17/03/2009 - Synchronisatie aangepast zodat synchronisatie kan gestart worden vanaf de mobiele applicatie. - Synchronisatie gedebugged. - Forms in mobiele applicatie aangemaakt: o frmEntiteitenOverzicht o frmEntiteitView o frmEntiteitForm o frmSynchronisatie. Woensdag: 18/03/2009 - Opmaak beheersapplicatie. - Synchronisatie met wijzigingen in beheersapplicatie getest. Donderdag: 19/03/2009 - Opmaak beheersapplicatie (beheer van lay-out). - Opmaak mobiele applicatie. - Stagepresentatie voorbereid en gegeven voor stagebezoek. Vrijdag: 20/03/2009 - Paginering bij een view op de mobiele applicatie mogelijk gemaakt. - Onderzoek naar de verschillende attribuut types gedaan. - Incrementele synchronisatie getest.
Planning week 6: 23/03/2009 – 27/03/2009 -
Lay-out van de pagina Beheer Lay-out aanpassen. Autorisatie bij synchronisatie. Verder onderzoeken van attribuut types.
Stagedossier G15
Mobile CRM
Weekverslag week 6: 23/03/2009 – 27/03/2009 Maandag: 23/03/2009 - Synchronisatie geoptimaliseerd en uitgebreid (nieuwe meta data -> zeker data sync). - Meer ondersteuning voor CRM Attribuut types toegevoegd. Dinsdag: 24/03/2009 - De lay-out van beheren van Entiteiten CRM-like gemaakt. - Attribuut type lookup onderzocht en eerste test implementatie geschreven. Woensdag: 25/03/2009 - De lay-out van beheren van Views CRM-like gemaakt. - Lookup velden laten synchroniseren met de mobiele applicatie. Donderdag: 26/03/2009 - De lay-out van beheren van Attributen CRM-like gemaakt. - De lay-out van de mobiele applicatie in orde gebracht. - Refactoren van de mobiele applicatie voor de herbruikbaarheid te vergroten. Vrijdag: 27/03/2009 - De lay-out van beheren van Views afgewerkt. - De lay-out van beheren van Forms begonnen met CRM-like te maken. - Custom control gemaakt: ImageTextButton. - Refactoren van de Mobiele DAL laag.
Planning week 7: 30/03/2009 – 03/04/2009 -
Afwerken van de lay-out van de beheersapplicatie. Synchronisatie van Mobiele Applicatie naar CRM server.
145
Stagedossier G15
Mobile CRM
146
Weekverslag week 7: 30/03/2009 – 03/04/2009 Maandag: 30/03/2009 - De lay-out van beheren van Forms afgewerkt. - Functionaliteit zoeken op de mobiele applicatie toegevoegd. - Bugs op de mobiele applicatie opgelost. - Lazy Loading toegepast op het entiteitenmodel. Dinsdag: 31/03/2009 - De lay-out van beheren van Filters ontworpen. - Icoontjes van entiteiten toevoegen op de gewenste plekken. - Velden om vereiste attributen toe te voegen toegevoegd. - Lay-out van de mobiele applicatie aangepast. Woensdag: 01/04/2009 - Lay-out van Mobiele applicatie aangepast. - Lay-out van beheren van Filters aangepast. - Namiddag: Jobbeurs ICC. Donderdag: 02/04/2009 - Updaten naar CRM server. - Details van lay-out van de beheersapplicatie aangepast. - Lay-out van Mobiele applicatie aangepast. - Stagepresentatie voorbereid en gegeven voor stagebezoek. Vrijdag: 03/04/2009 Nieuwe methodes geschreven in de beheersapplicatie om de functionaliteit van filters te kunnen toepassen. Updaten en aanmaken van records naar CRM server afgewerkt.
Planning week 8: 06/03/2009 – 10/04/2009 -
Filters afwerken. Autorisatie afwerken. Create en Update testen met meer attributen.
Stagedossier G15
Mobile CRM
Weekverslag week 8: 06/04/2009 – 10/04/2009 Maandag: 06/04/2009 - Performantie, custom controls: scrollbar, radiobuttons, commiten naar CRM server. - Verder werken aan FilterPopUp. Dinsdag: 07/04/2009 - Commit naar CRM server, refactoren form, conflict management. - Commentaar schrijven in de beheersapplicatie. Woensdag: 08/04/2009 - Conflict management. - Encryptie bestudeert. - FilterPopUp in de beheersapplicatie afgewerkt. Donderdag: 09/04/2009 - Conflict management afgewerkt. - Mobiele applicatie op een mobiel toestel geplaatst. - Validators toegevoegd in de beheersapplicatie. Vrijdag: 10/04/2009 Attribuut support voor Memo en DateTime. - CRM mapper aangepast van singleton naar user-based context. - Validators toegevoegd in de beheersapplicatie. - Afwerking gui beheersapplicatie.
Planning week 9: 13/04/2009 – 17/04/2009 -
Details in beheersapplicatie aanpassen. Filters toepassen (zowel op server als client).
147
Stagedossier G15
Mobile CRM
Weekverslag week 9: 13/04/2009 – 17/04/2009 Maandag: 13/04/2009 (Paasmaandag) - Entiteitsmodel vervangen door dataset bij beheersapplicatie. - Performantie verbetert mobile applicatie. - Encryptie (40bit). Dinsdag: 14/04/2009 - Performantie verbetert van mobile applicatie. - Filters toepassen op mobile applicatie. - Commentaar geschreven. - Beheer van Entiteiten aanpassen (PopUp voor selecteren van nieuwe entiteiten). Woensdag: 15/04/2009 - Validatie van Forms op mobiele applicatie. - Betere support voor oriëntation change. - Filter toepassen op mobiele applicatie. Donderdag: 16/04/2009 - Bug opgelost bij updaten naar CRM server. - Settings pagina op mobiele client gemaakt. - Begonnen ontwerpen van overzichtspagina voor op de CRM server. - Default Icoontjes op alle pagina’s toegepast. Vrijdag: 17/04/2009 - Bug met Decimals in Database opgelost. - Settings pagina op de mobiele client afgewerkt. - Afwerken overzichtpagina van beheersapplicatie op CRM server.
Planning week 10: 20/04/2009 – 24/04/2009 -
Afwerking van functionaliteiten. Testen van de functionaliteiten. Blacklist devices toevoegen.
148
Stagedossier G15
Mobile CRM
Weekverslag week 10: 20/04/2009 – 24/04/2009 Maandag: 20/04/2009 - Eindpresentatie voorbereiden. - Icoontjes bij gebruikers pagina toegevoegd. - Functionaliteit bewerken van gebruiker toegevoegd. - Encryptie problemen opgelost. - Lay-out mobiele client geüpdatet. - Toevoegen functionaliteiten op de mobiele client: o Bellen naar telefoonnummer o Surfen naar website o Mailen naar email adres. - Filter toepassen op de server. Dinsdag: 21/04/2009 Lay-out Beheer Profiel aangepast. - Bevestigingen bij verwijderen van items toegevoegd. - Sorteren bij view op mobiele client toegevoegd. - Lay-out mobiele client geüpdatet. - Filter verwijderen via de pagina Beheer View. - Nieuwe pagina om Blacklist Devices te beheren. - Optimaliseren van mappers van de mobiele applicatie. - Pagina Beheer Devices toegevoegd aan de overzichtpagina. Woensdag: 22/04/2009 - Optimaliseren van mappers van de mobiele applicatie. - Nested Gridview lay-out aanpassen op volgende pagina’s: o Beheer Users o Beheer Profielen o Beheer Profiel PopUp. Donderdag: 23/04/2009 - Checklist Functionaliteit Testen V1 opstellen. - Checklist Functionaliteit Testen V1 afnemen. Vrijdag: 24/04/2009 Implementeren van 1 op N relaties tussen entiteiten: o Bij beheersapplicatie o Bij mobiele applicatie. - Functionaliteiten verbeteren aan de hand van de checklist.
Planning week 11: 27/04/2009 –01/05/2009 -
Checklist Functionaliteiten verder uitbreiden & Testen. Handleiding. Voorbereiden Interne voorstelling van de stage.
149
Stagedossier G15
Mobile CRM
Weekverslag week 11: 27/04/2009 – 01/05/2009 Maandag: 27/04/2009 - Testen van Mobiele Applicatie. - Testen van de Beheersapplicatie. - Bugs fixing. - Relaties verder afgewerkt. - Commentaar geschreven. Dinsdag: 28/04/2009 - Testen van Mobiele Applicatie. - Testen van de Beheersapplicatie. - Bugs fixing. - Interne presentatie voorbereid en gegeven. Woensdag: 29/04/2009 - Commentaar geschreven voor de Beheersapplicatie. - Commentaar geschreven voor de Mobiele Applicatie. - Bekeken hoe de Entiteit “Activiteit” in elkaar zit. Donderdag: 30/04/2009 - Handleiding draft geschreven voor Beheersapplicatie. - Handleiding draft geschreven voor Mobiele Applicatie. - Test Verslag v2 opgesteld en uitgevoerd. Vrijdag: 01/05/2009 - Vrije Dag.
Planning week 12: 04/05/2009 – 08/05/2009 -
Handleiding verder afwerken. Applicatie onderwerpen aan nog meer testen.
150
Stagedossier G15
Mobile CRM
Weekverslag week 12: 04/05/2009 – 08/05/2009 Maandag: 04/05/2009 - Use cases beheersapplicatie aangepast. - Handleiding verder afgewerkt. - Verder commentaar geschreven voor mobile applicatie en beheersapplicatie. - Context menu toegevoegd bij weergavescherm van een entiteit op de mobiele applicatie. - Ontwerp verder uitgeschreven. Dinsdag: 05/05/2009 - Commentaar beheersapplicatie afgewerkt. - Handleiding verder afgewerkt. - Use Cases mobiele applicatie aangepast. - Refactoren van de beheersapplicatie. - Screenshots beheersapplicatie geüpdatet. Woensdag: 06/05/2009 - Begonnen met het stagedossier. - Use Cases mobiele applicatie aangepast. - Klassendiagrammen opgesteld. Donderdag: 07/05/2009 - Ontwerp voor stagedossier geüpdatet. - Presentatie gegeven aan stagementor en stagebegeleider. - (zelf)evaluatie van de stage overlopen. Vrijdag: 08/05/2009 - Testen van Filters. - UML Diagrammen gemaakt. - Ontwerp voor stagedossier geüpdatet.
151
Stagedossier G15
Mobile CRM
152
2 Figurenlijst Figuur 1: Een overzicht van contactpersonen in de Microsoft Dynamics CRM Omgeving ................... 11 Figuur 2: Details van 1 contactpersoon................................................................................................. 12 Figuur 3: Het overzicht van de use cases van de beheersapplicatie ..................................................... 14 Figuur 4: Het overzicht van de use cases van de mobiele applicatie .................................................... 30 Figuur 5: Een compacte structuur van de 3 componenten. .................................................................. 39 Figuur 6: een meer gedetailleerde structuur van de mobile server en de mobile applicatie............... 42 Figuur 7: De structuur van de pagina's .................................................................................................. 45 Figuur 8: Het klasse diagram van de GUI. De DomainManager behoort tot de domein laag, maar is op het diagram geplaatst voor de duidelijkheid. ....................................................................................... 46 Figuur 9: Het klasse diagram van de domein laag van de mobile server/beheersapplicatie................ 47 Figuur 10: De domein objecten met hun associaties ............................................................................ 47 Figuur 11: Het server gedeelte van het synchronization framework. Klassen aangeduid in het grijs behoren tot het domein, maar zijn toegevoegd op het diagram zodat het duidelijker is welke klassen overerven en gebruiken. ....................................................................................................................... 54 Figuur 12: Het klasse diagram van de DAL laag van de mobile server/beheersapplicatie. De CRM Controller beheert tot het domein, maar is op het diagram gezet voor de duidelijkheid.................... 55 Figuur 13: Het database diagram van de mobile settings database ..................................................... 57 Figuur 14: Het database diagram van de SyncTracking database ......................................................... 58 Figuur 15: Het sequentie diagram voor het beheren van entiteiten (zie use case) .............................. 59 Figuur 16: Het sequentie diagram voor het beheren van profielen (zie use case) ............................... 60 Figuur 17: Het sequentie diagram voor het beheren van users (zie use case) ..................................... 61 Figuur 18: Het sequentie diagram voor het beheren van lay-out (zie use case) .................................. 62 Figuur 19: Het sequentie diagram voor het beheren van een form (zie use case) ............................... 63 Figuur 20: Het sequentie diagram voor het beheren van een view (zie use case) ............................... 64 Figuur 21: Het sequentie diagram voor het beheren van een filter (zie use case) ............................... 65 Figuur 22: Het sequentie diagram voor het beheren van een device (zie use case) ............................ 66 Figuur 23: De structuur van de window forms van de mobiele applicatie ........................................... 67 Figuur 24: Het klassendiagram van de GUI van de mobiele applicatie ................................................. 67 Figuur 25: Het klasse diagram van de domein laag van de mobiele applicatie .................................... 75 Figuur 26: Het klasse diagram van de DAL laag van de mobiele applicatie .......................................... 76 Figuur 27: De klassen die de client gebruikt van het synchronization framework ............................... 83 Figuur 28: De meta data tabellen van de database van de mobiele applicatie. ................................... 84 Figuur 29: De tabellen waarin de CRM data wordt opgeslagen op de mobiele applicatie ................... 85 Figuur 30: Het sequentie diagram voor opstarten van de mobiele applicatie (zie use case) ............... 86 Figuur 31: Het sequentie diagram voor normale gebruik van de mobiele applicatie (zie use case) ... 87 Figuur 32: Het sequentie diagram voor het oplossen van 1 of meerdere conflicten (zie use case) ..... 88 Figuur 33: Het sequentie diagram voor het aanpassen van de instellingen (zie use case)................... 89 Figuur 34: De basisstructuur van het synchronization framework. ...................................................... 90 Figuur 35: Het overzicht van het Synchronization Framework over TCP. IServerSyncProvider is hier 2x toegevoegd voor de duidelijkheid en 1 ervan behoort tot de client, de andere tot de server ............ 97 Figuur 36: Het overzicht van de beheersapplicatie ............................................................................. 115 Figuur 37: overzicht van de mobiele entiteiten .................................................................................. 116 Figuur 38: Overzicht mobiele profielen............................................................................................... 117 Figuur 39: Overzicht details van een profiel........................................................................................ 118
Stagedossier G15
Mobile CRM
153
Figuur 40: Overzicht mobiele gebruikers ............................................................................................ 119 Figuur 41: Overzicht details van een gebruiker................................................................................... 120 Figuur 42: Overzicht van alle toestellen .............................................................................................. 121 Figuur 43: Overzicht van alle mobiele entiteiten, kies een entiteit om zijn lay-out aan te passen .... 122 Figuur 44: Overzicht met alle weergaves, formulieren en filters van een mobiele entiteit ............... 123 Figuur 45: Beheer hier de lay-out van de weergave ........................................................................... 124 Figuur 46: Kies een of meerdere attributen om toe te voegen .......................................................... 125 Figuur 47: Beheer hier de lay-out van het formulier........................................................................... 126 Figuur 48: Kies een of meerdere relaties om toe te voegen aan het formulier.................................. 127 Figuur 49: Beheer hier de lay-out van de filter ................................................................................... 128 Figuur 50: Kies een attribuut, operator en waarde............................................................................. 129 Figuur 51: Het beginscherm van Mobile CRM..................................................................................... 130 Figuur 52: Vul de instellingen in .......................................................................................................... 131 Figuur 53: Het beginscherm met de beschikbare entiteiten............................................................... 131 Figuur 54: Een weergave van alle contactpersonen (geselecteerd entiteit) ...................................... 131 Figuur 55: Keuze uit de verschillende weergaves voor de records ..................................................... 132 Figuur 56: Via de context menu kunnen snel acties voor records genomen worden ........................ 132 Figuur 57: Het formulier van een contactpersoon, niet alleen lezen ................................................. 132 Figuur 58: Records opzoeken voor een lookup veld is even eenvoudig als bij de standaard web interface .............................................................................................................................................. 133 Figuur 59: De account ESC bevat een relatie contactpersonen .......................................................... 133 Figuur 60: De velden worden gevalideerd, ongeldige velden worden aangeduid.............................. 133 Figuur 61: De instellingen van de mobiele applicatie ......................................................................... 134 Figuur 62: Het synchronisatie proces in volle actie............................................................................. 134 Figuur 63: Er is een conflict bij de synchronisatie ............................................................................... 135 Figuur 64: Bij het conflicten overzicht ziet u het conflict dat is toegevoegd ...................................... 135 Figuur 65: De details van het conflict. U ziet de velden die niet overeenkwamen met de server ..... 135