Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis,
[email protected]
Technisch ontwerp Project "Web Essentials" 11 maart 2009
Versie 1.1.0 Teamleden: Armin Ghassemi Gerben Strien Hans Allis Max Gramsma Peter Mols Wesley van Vliet
Project Initiation Document Team 6 Pagina 1
i. Inhoudsopgave
i. Inhoudsopgave ............................................................................................... 1 ii. Versiebeheer ................................................................................................ 2 1. Kernonderdelen & instellingen .......................................................................... 3 2. Code toelichting ............................................................................................ 4 3. Ontwerpbeslissingen ....................................................................................... 5 4. Entity Relationship Diagram .............................................................................. 6
Project Initiation Document Team 6 Pagina 2
ii. Versiebeheer Auteur
Reden van verandering
Datum
Versienummer
Gerben Strien
Start document
9 maart 2009
1.0.0
Max Gramsma
Hoofdstuk ontwerpbeslissingen + ERD toegevoegd.
11 maart 2009
1.1.0
Tabel 1: Gegevens over versies van dit document.
Project Initiation Document Team 6 Pagina 3
1. Kernonderdelen & instellingen Onze applicatie zal bestaan uit twee delen. Als eerste de front-end. Deze bestaat uit een website waar de gebruiker via een internet aangesloten PC bij kan. Als tweede de back-end, SugarCRM.
Koppeling De front-end wordt via SOAP gekoppeld aan de back-end. SOAP is de taal om webservices mee aan te spreken. SugarCRM heeft een scala aan functies beschikbaar gesteld via SOAP. Hierdoor is het erg gemakkelijk om de verschillende functies bruikbaar te maken via de front-end.
Nu-SOAP library De Nu-SOAP library bevat een aantal handige PHP klassen die ontwikkelaars kunnen gebruiken om web services aan te roepen die gebruik maken van SOAP 1.1, WSDL 1.1 en HTTP 1.0/1.1. Wij maken gebruik van deze library om de functies van SugarCRM aan te roepen in onze front-end.
SugarCRM WSDL De verschillende SugarCRM functies zijn beschikbaar gemaakt via een WSDL bestand. Deze is te vinden via het volgende adres http://domeinnaam/SugarCRM/soap.php?wsdl. Een lijst van de functies en bijbehorende informatie is te vinden op http://domeinnaam/SugarCRM/soap.php.
SugarCRM instellingen Momenteel nog geen instelling wijzigingen vereist.
Project Initiation Document Team 6 Pagina 4
2. Code toelichting In dit hoofdstuk worden belangrijke code segmenten beschreven die gebruikt kunnen worden om het product te reproduceren.
Proxy object Om via PHP functies te gebruiken van de webservice kan een proxy object gebruikt worden. Hieronder de code die ik gebruikt heb om dit te realiseren. Als eerste wordt er een soap client object aangemaakt met de URL naar het WSDL bestand. Vervolgens wordt het proxy object aangemaakt door getProxy() aan te roepen. $soapclient = new soapclient($soap_url,true); $this->proxy = $soapclient->getProxy(); Een functie zoals bijvoorbeeld “login” kan zo worden aangeroepen. $this->proxy->login($params,'SugarCRM');
Inloggen Als eerste dient er een simpel inlogformulier te zijn. Dit zal ik niet verder toelichten. Het enige wat ik hier gebruikt heb is een gebruikersnaamveld, wachtwoordveld en een submit knop. Vervolgens zal de inlog functie aangeroepen moeten worden. Dit gebeurt uiteraard als de $_POST gegevens binnen zijn. Maar voordat er functies aangeroepen kunnen worden van SugarCRM moet er eerst een proxy object opgeroepen worden. Als dit gedaan is kan de login functie aangeroepen worden waar de inloggegevens aan meegegeven kunnen worden. De WSDL functie heeft de logische naam login(). De parameters die meegegeven moeten worden zijn uiteraard gebruikersnaam en wachtwoord. Daarnaast ook nog versie nummer. Maar deze is niet kritisch voor het succes van het inloggen.
Gebruikers maken Ook hier gebruik ik een simpel HTML formulier waar de gebruiker de nodige gegevens kan intikken. Vervolgens worden deze verzonden en dan wordt net als bij het inloggen via het proxy object de juiste functie van de WSDL aangeroepen. Dit gebeurt via de call() methode waar set_entry als eerste paramater dient opgegeven te worden. Als tweede parameter dient er een array met de nodige gebruikersgegevens meegegeven te worden.
Project Initiation Document Team 6 Pagina 5
3. Ontwerpbeslissingen Inloggen bij elke functie(tijdelijk) Op dit moment wordt er bij elke functie in de code opnieuw het SOAP object aangemaakt. Dit is een tijdelijke oplossing, de bedoeling was om dit object in de sessie te bewaren, maar dit werkt niet goed. Hier zal nog een betere oplossing voor worden bedacht, maar om nu toch door te kunnen gaan maken we het object elke keer opnieuw aan.
Map/bestand structuur De mapstructuur zal er uiteindelijk als volgt uit komen te zien: SugarCRM Home Functies Modules Naammodule1 Naammodule2 Libs Klassen Op deze manier blijft alles duidelijk gescheiden van elkaar. Alle verschillende modules/usecases krijgen een eigen map waarin voor elke functie een apart bestand wordt gemaakt. In het index-bestand wordt ervoor gezorgd dat de juiste functies worden toegevoegd. Door alle verschillende functies in aparte bestanden te zetten, kan er ook gemakkelijker door meerdere teamleden tegelijk aan gewerkt worden.
Project Initiation Document Team 6 Pagina 6
4. Entity Relationship Diagram