250 likes | 391 Views
2007 ASR end of studies project The Integration of Web Services. Supervision: Christian Bac, Olivier Berger By Ilf Moussa & Asako Nakano February 7. 2007. Outline. Introduction Main issues Step by step Problem analysis Solution Progress Technical problems Taking things further
E N D
2007 ASR end of studies projectThe Integration ofWeb Services Supervision: Christian Bac, Olivier Berger By Ilf Moussa & Asako Nakano February 7. 2007
Outline • Introduction • Main issues • Step by step • Problem analysis • Solution • Progress • Technical problems • Taking things further • Conclusion
Introduction • Needs of developers for a project management • Independence of each tool but no harmonization “Picolibre project” • Uses PhpGroupWare as a basis • Merges free applications: SVN, Sympa, Twiki • Goal A single interface with a “single sign-on” system
Main issues – part 1/3 • Open source mailing list software • Data stored in database (MySql, Oracle…) • Archives • Mail • Focused on customization possibilities • Scalable: small working groups, newsletter… • Web interface What is Sympa?
Sympa Web interface : Picolibre PhpGroupWare Sympa DATABASE - SVN - Sympa - Twiki … DIRTY ACCESS SENDING QUERIES Daemon Queries for Sympa DATABASE Main issues – part 2/3 HOST 1
Sympa Web interface : Picolibre ACCESS by Sympa application PhpGroupWare Sympa DATABASE - SVN - Sympa - Twiki … Daemon Queries for Sympa DATABASE Main issues – part 3/3 HOST 1 The ideal version of Picolibre
Outline • Introduction • Main issues • Step by step • Problem analysis • Solution • Progress • Technical problems • Taking things further • Conclusion
Step by Step - Problem analysis • Search in Sympa • Only a SOAP server available • Many SOAP functions to control remotely • Search in Picolibre • Possibility of a SOAP client to send requests • A “nusoap” library Choice of the SOAP solution
Step by Step – Solution – part 1/2 • What is SOAP? • Simple Object Access Protocol • Exchange XML based messages • Existence different types of messaging patterns • RPC (Remote Procedure Call) • Exchange messages between Client Server
Web interface : Picolibre PhpGroupWare REQUEST SOAP Server Sympa vers. 5.x - SVN - Sympa - Twiki … SOAP Client ANSWER Sympa DATABASE Step by Step – Solution – part 2/2 HOST 1
Outline • Introduction • Main issues • Step by step • Problem analysis • Solution • Progress • Technical problems • Taking things further • Conclusion
Step by step - Progress • Configuration • Testing the SOAP server • Building a generic function • Search for functions to add/modify in Picolibre • Integration of the SOAP version in the project • Final integration tests • Documentation
Step by step – Progress – Part 1/7 • Configuration • Sympa update: Version 4.X to 5.3a.10 • SOAP server startup in Sympa • SOAP client (“NuSOAP”) update in Picolibre File : /etc/httpd.conf FastCgiServer /home/sympa/bin/sympa_soap_server.fcgi -processes 1 ScriptAlias /sympasoap /home/sympa/bin/sympa_soap_server.fcgi <Location /sympasoap> SetHandler fastcgi-script </Location>
Step by step – Progress – Part 2/7 • Testing the SOAP server Sympa Independent scripts SOAP_server SOAP:add add SOAP:which which SOAP:info info … …
Picolibre Sympa Sympa Picolibre Sympa_bo SOAP_server SOAP_server Sympa_bo createList SOAP:createList SOAP:createList closeList SOAP:closeList SOAP:closeList generic subscribe SOAP:subscribe SOAP:subscribe Step by step – Progress – Part 3/7 • Building a generic function Operation1 & param. Operation2 & param. Operation3 & param.
Step by step – Progress – Part 4/7 • Search for functions to add/modify in Picolibre • Subscribe • Addlist • Closelist • And other minor changes concerning the cookie setting, the creation of objects…
After functionaddlist($email,$s_title,$list_name){ $commands= createobject('picolibre_current.write_commands'); $sympa_scripts_path = 'sympa_scripts'; $sep = filesystem_separator(); return $commands->append("$sympa_scripts_path$sep".'sympa_addlist.sh '."$email $s_title $list_name"); } functionaddlist($email,$s_title,$list_name){ $parameters_sent = array('list'=>"$s_title-$list_name",'topics'=>$s_title,'template'=>'discussion_list', 'subject'=>$list_name,'description'=>$list_name); $ret = $this->sympa_soap->generic_reception_treatment("createList",$parameters_sent); return $ret; } Before Step by step – Progress – Part 5/7 • Integration of the SOAP version in the project • Generic_sympa_soap • Modified sympa_bo class: • Correct display
START Test:function Function work? No Yes END Step by step – Progress – Part 6/7 • Final integration tests • Create a list • Close a list • Subscribe a user to a list • Verify return information • Verify return errors • …
Step by step – Progress – Part 7/7 • Documentation • Comment on source codes • Create a joint report Source codes available and usable by all developers
Outline • Introduction • Main issues • Step by step • Problem analysis • Solution • Progress • Technical problems • Taking things further • Conclusion
Technical problems • Configuration of the computer system to use Sympa (and SOAP) with Picolibre • Addition of missing functions in Sympa SOAP • Configuration of the single sign-on Function : add/del/closeList <operation name="%Name_of_the_function%"> <soap:operation soapAction="urn:sympasoap#%Name_of_the_function%"/> <input> <soap:body use="encoded" namespace="urn:sympasoap" encodingStyle="…"/> </input> <output> <soap:body use="encoded" namespace="urn:sympasoap" encodingStyle="…"/> </output> </operation>
Host PICOLIBRE Sympa Twiki … Host 2 SOAP server SYMPA Taking things further – part 1/2 Toward distributed applications ? Host 1 PICOLIBRE Internet / LAN SOAP client Twiki …
Current - Picolibre Possible evolution - Picolibre Sympa Sympa Picolibre Picolibre class soap for sympa Twiki Twiki class for twiki Generic Soap Class … … Taking things further – part 2/2 • Expand the generic function to all the applications using SOAP server
Conclusion • Asynchronous to synchronous communication • New: • Acquiring knowledge about SOAP protocol • Learning more about Picolibre platform • Managing the project in a collaborative manner
Thank you for your attention Questions ?