Domino und PHP EC 2013 Track 2 Session 7 1 Domino und PHP Worum es heute geht Überblick über die verschiedenen Methoden Installation Allerlei Beispiele und Ideen Worum es nicht geht LotusScript, PHP (Sie sollten die Grundidee beherrschen) 2 Domino und PHP Los geht's! - Einführung Über WieLis.com Mit wem haben Sie es zu tun? Wie installieren? Praktische Anwendung Ansichten auslesen Dokumente lesen und speichern PDF-Generierung 3 Los geht’s! – Einführung Über WieLis.com / die Notes-Werkstatt Gegründet 2002 5 Mitarbeiter Domino-Entwicklung Workflows Schnittstellen Intranetlösungen Web-Entwicklung Intra-/Extranets Shop/Community/Schnittstellenlösungen Workflow / Support/Operations Serverbetrieb und Hosting (Windows, Linux, Domino) Netzwerksupport Analyse und Konzeption 4 Los geht's! - Einführung Ihre Referentin - Mit wem haben Sie es zu tun? Anne Wiesmann, [email protected] Studierte Diplom-Ingenieurin (FH) Technische Informatik IT-Erfahrung seit 1995 Gründerin und Mitinhaberin von WieLis.com seit 2002 5 Wie installieren? PHP direkt auf dem Domino Server (CGI) Funktioniert prima, spart Ressourcen Keine direkte Kommunikation möglich PHP auf eigenem Apache Vor allem dann zu empfehlen, wenn der Apache ohnehin vorhanden ist oder MySQL Datenbanken genutzt werden sollen Auch keine direkte Kommunikation möglich 6 Wie installieren? (2) PHP über COM API Alles möglich (ähnlich Lotusscript) Notes-Client muss auf dem Webserver installiert sein Windows-Betriebssystem erforderlich PHP über C API Klappt gut, erfordert aber C-Kenntnisse und tiefe Kenntnisse über die Schnittstellen des Domino Servers PHP über Notes SQL Mit neueren Betriebssystemen und NotesVersionen problematisch Windows-Betriebssystem erforderlich 7 Zugriff über C API Gut machbar, greift aber tief ins System ein Stabilitätsrelevant Erfordert tiefe Systemkenntnisse Eigene dll muss hergestellt werden Domino Server Abstürze möglich 8 Zugriff über Notes SQL Ja, aber Funktioniert nicht sauber auf 64 Bit Systemen Instabil Nicht sonderlich performant Windows-Betriebssystem erforderlich 9 Fazit Direkter Zugriff ist schick, aber schwierig zu machen Indirekter Zugriff ist schwieriger, dafür aber sicher und ausreichend performant Im folgenden werden die Möglichkeiten des indirekten Zugriffs gezeigt 10 Rein ins Praktische Genug gelabert ;-) 11 PHP CGI installieren Installation ist leicht: PHP installieren (Standard Download von PHP Website) 12 PHP CGI installieren (2) Installation ist leicht: VC++ 2008 Redistributable installieren php.ini anpassen Testen 13 PHP CGI installieren (3) Redirect im Server/Websitedokument eintragen 14 PHP CGI installieren (4) Testen, ob alles geklappt hat. 15 PHP über eigenen Apache Installation nach Anleitung Kollidierende Ports Domino / Apache beachten Ggf. Domino Port ändern Zugriff nur über Webservices / Agenten etc. möglich 16 PHP über COM API Apache / PHP wie gewohnt installieren Notes Client wie gewohnt installieren Einmalig starten, geeignete User-ID nutzen Loslegen 17 Webservices Verfügbar ab Domino 8 Vernünftig nutzbar ab Domino 8.5 18 Ansichten auslesen Mit Bordmitteln möglich Vorteil: Geht mit jeder Ansicht ohne weiteren Programmieraufwand Nachteil: Es wird immer die ganze Ansicht übertragen Langsam Hohes Datenvolumen Alternative: Über Webservice Vorteil: Schlank, anpassbar Beliebige Dokumentauswahl möglich (auch z.B. Volltextsuche) Beliebige Feldauswahl möglich Nachteil: Programmieraufwand nötig Für jede Auswahl neuer Programmiercode nötig Alternativ: Parameter übergeben (aber sicherheitsrelevant) 19 Ansichten auslesen mit Bordmitteln GetViewEntries liefert View-Inhalt als XML: 20 Ansichten auslesen mit Bordmitteln (2) Einfaches PHP-Skript zur Anzeige: So sieht es aus: 21 Ansichten auslesen über Webservice Beispielanwendung: PLZ-Auswahl Quelldaten: Notes-Dokumente mit Orten und Postleitzahlen Ziel: Suchfunktion für Orte abhängig von Land und PLZ-Teilstück 22 Ansichten auslesen über Webservice(2) PHP Frontend Die Adresse des Domino Webservices SOAP kompatible Anfragedaten mit unseren Suchwörtern Curl Konfiguration Einlesen in simplexml Passendes Element aus dem SOAP Return auslesen 23 Ansichten auslesen über Webservice(3) Zurückgegebener XML-Code (SOAP Return) Envelope Body 24 Ansichten auslesen über Webservice(4) Lotus Script und wsdl Deklaration Liste von Orten Einzelner Ort Einzelner Ort Array von Orten Liste von Orten 25 Ansichten auslesen über Webservice(5) Abfrageklasse Gemäß WSDL übergebene Parameter Volltextsuche Array aus Ort-Elementen Ort befüllen Array zurückgeben 26 Dokumente lesen und schreiben Programmierung nötig Es existiert kein URL Befehl, der Dokumente zurückgibt Webservice kann ganz ähnlich aussehen wie eben beschrieben 27 Dokument bearbeiten Daten laden (PHP-Seite) ID übergeben Rückgabewerte verarbeiten 28 Dokument bearbeiten Daten laden (Webservice) Übergebene ID Werte zurückgeben 29 Dokumente bearbeiten Maske 30 Dokumente bearbeiten Dokument speichern (PHP-Seite) Rückgabewert anzeigen 31 Dokument bearbeiten Dokument speichern (Webservice) Bei neuem Dokument ID vergeben 32 Dokument bearbeiten Die „View“ Dokumentliste holen Durchlaufen und ausgeben 33 Dokument bearbeiten Demo-Time... 34 PDFs generien Mit fPDF ganz einfach Daten aus Domino Links im Web, über XPages oder berechnete Links im Notes-Client 35 PDFs generieren (2) So geht es: Fpdf einbinden Erste Seite Überschrift Tabellenzeilen 36 Ein Bild sagt mehr als 1000 Worte Bildnamen können oft eindeutig ermittelt werden URL kann im Webservice berechnet werden Download des Bildes über standard Domino Webservice (bei CGI) oder ein spezielles Handler Skript (beiApache-Installation) 37 Bilder anzeigen (2) Webservice Backend Attachment Name zurückgeben 38 Bilder anzeigen (3) PHP Frontend Bild ausgeben 39 Kleine Verschnaufpause Ihre Fragen? 40 Ausblick / Weiterlesen Allgemeiner Abriss über die Möglichkeiten http://www.ibm.com/developerworks/lotus/library/domino-php/ Installationsanleitung für PHP in Domino http://www-01.ibm.com/support/docview.wss?uid=swg21099845 PHP Download (z.B.) http://windows.php.net/download/ VC++ 2008 Redistributable http://www.microsoft.com/download/en/details.aspx?id=5582 Webservices mit Lotus Domino http://www.ibm.com/developerworks/lotus/library/web-services3/ fpdf http://www.fpdf.org/ Domino URL Cheat Sheet http://www.ibm.com/developerworks/lotus/library/ls-Domino_URL_cheat_sheet/ 41 Jetzt sind Sie dran... Vielen Dank für Ihre Aufmerksamkeit! Ich freue mich auf Ihre Fragen. Anne Wiesmann Technische Leitung 04153 / 55 9 41 – 21 [email protected] 42