Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz.

Ähnliche Präsentationen


Präsentation zum Thema: "© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz."—  Präsentation transkript:

1 © Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz

2 © Raphael Volz 2001 Slide 2 Agenda Verwaltung von Zope Objekten Zugriff auf Zope Objekte Grundlegende Zope Techniken –DTML –Python –Zope API

3 © Raphael Volz 2001 Slide 3 Globale Systemarchitektur

4 © Raphael Volz 2001 Slide 4 Objektdatenbank Transparente Persistenz für alle Objekte Transaktionen, Multi-User fähig Versionierung, Undo-Fähigkeiten

5 © Raphael Volz 2001 Slide 5 Klassen Modellieren „Inhalt“ (Content) Haben Eigenschaften Ordner (Folder) Können andere Objekte enthalten. Erzeugen eine Objekt-Hierarchie. DTML Dokumente Dynamische Erzeugung von Dokumenten. Nutzen DTML (Document Template Markup Language)  Erzeugung von Inhalt...

6 © Raphael Volz 2001 Slide 6 Methoden Modellieren „Prozesse“ Keine Eigenschaften Bekommen Kontext von aufrufendem Objekt DTML Methoden  „Inhalt-erzeugende Prozesse“ Python Skripte Begrenzter Zugriff auf Python-Bibliotheken  „Inhalt-verarbeitende Prozesse“ Externe Methoden Python Skripte mit unbeschränktem Zugriff auf Sicherheits- kritische Dinge (Dateisystem...)

7 © Raphael Volz 2001 Slide 7 Eigenschaften Manche Zope-Objekte haben zusätzlich Eigenschaften (Properties) Bsp.: Ordner, Bilder, DTML Dokumente... NICHT: Methoden Mittels Eigenschaften können zusätzliche Informationen mit einem Objekt verbunden werden Eigenschaften sind typisiert (string, int...) Bsp.: Titel...

8 © Raphael Volz 2001 Slide 8 Agenda Verwaltung von Zope Objekten Zugriff auf Zope Objekte Grundlegende Zope Techniken –DTML –Python –Zope API

9 © Raphael Volz 2001 Slide 9 Zugriff auf Objekte Akquisition Ein Objekt hat Zugriff auf alle Objekte, die sich entlang des Pfades vom Objekt in Richtung Wurzel befinden. Beispiel: Zoo/LargeAnimals/giraffe/feed 

10 © Raphael Volz 2001 Slide 10 Request-Objekt Wird bei jedem Aufruf eines Zope-Objektes durch einen Clienten neu erzeugt Enthält Wichtige Daten vom Clienten, z.B.: –Aufgerufene URL –Formulardaten –Cookies –Parameter DTML-Tipps: – gibt alle Elemente des REQUEST Objekts aus. – Erzeugt eine neue Variable „Semester“ innerhalb des Request- Objekts

11 © Raphael Volz 2001 Slide 11 Zugriff auf Variablen Zugriff auf Variablen und Objekte über Namen (identifier) Variablen können an verschiedenen „Orten“ definiert sein: –Request-Objekt –innerhalb Objekt –Objekt-Eigenschaft –innerhalb Objekthierarchie Jeder „Ort“ definiert einen Namensraum (namespace)

12 © Raphael Volz 2001 Slide 12 Finden von Variablen Variablen werden zuletzt im Request-Objekt gesucht. Für das Client Object gelten die Regeln der Akquisition Nutzung eines bestimmten Namensraums kann erzwungen werden REQUEST Name: „Petra“ Name: „Hans“ Min_weight: 100 Remote_Addr: 192.168.1.1 Owner: „Stadt K‘he“

13 © Raphael Volz 2001 Slide 13 Agenda Verwaltung von Zope Objekten Zugriff auf Zope Objekte Grundlegende Zope Techniken –DTML –Python –Zope API

14 © Raphael Volz 2001 Slide 14 DTML Document Template Markup Language Proprietär Dynamische Erzeugung von Inhalten (z.B.: HTML, XML,...) „_“ wird als Namespace-Variable bezeichnet. –Darüber erfolgt Zugriff auf die Zope API und freigegebene Python-Bibliotheken. –Bsp.:  Ausgabe: „10.1“

15 © Raphael Volz 2001 Slide 15 DTML-var Ausgabe von Variablen und Objekten Ausgabe ist typ-abhängig –Datei (File)  Inhalt –Bild (Image)  Link zu Bild und Img-Attribute –... Attribute –Name  Namen, der im Namespace nachgeschlagen werden soll –Expr  Auswertung von Python-Ausdrücken (gemäß Python- Syntaxregeln –Fmt  Formatierung der Ausgabe Beispiele –...

16 © Raphael Volz 2001 Slide 16 DTML-call Aufruf von Aktionen Keine Ausgabe Beispiel:

17 © Raphael Volz 2001 Slide 17 DTML Verzweigungen,,, Beispiele: Die Variable/Objekt „snake“ existiert 5"> num is greater than five num is less than five num must be five

18 © Raphael Volz 2001 Slide 18 DTML Iteratoren durchläuft Mengen Das aktuelle abgerufene Element wird oben auf den Namespace-Stapel gelegt. Beispiel: bgcolor="#EEEEEE" bgcolor="#FFFFFF"

19 © Raphael Volz 2001 Slide 19 Veränderung des Namespace-Stapel Deklaration/Veränderung von Variablen: Auswahl eines Namespace 'id' was not in the request.  (Neuer) Namespace wird ganz nach oben sortiert

20 © Raphael Volz 2001 Slide 20 Ausnahmebehandlung,,, Beispiel: Teilung durch Null geht nicht.

21 © Raphael Volz 2001 Slide 21 DTML Beispiele Cookie-Management Formularbehandlung

22 © Raphael Volz 2001 Slide 22 Cookie Management Setzen eines Cookie: Auslesen eines Cookie:

23 © Raphael Volz 2001 Slide 23 Formularverarbeitung Was sind Ihre Lieblingsgerichte Schnitzel Bockwurst Sauerkraut Semmelknödel Saumagen Sie mögen gerne: Über alles ausgewählte iterieren Sie essen wohl nichts... Inputform_process

24 © Raphael Volz 2001 Slide 24 Python-Skripte Entwicklung in der Sprache Python Eingeschränkter Zugriff auf Standard Python Module Attribute des Skripts müssen angegeben werden Bindings

25 © Raphael Volz 2001 Slide 25 Bindings Context Objekt, welches das Skript aufruft; auch „acqusition parent“ Container Ordner, in welchem das Skript abgelegt ist Script Selbstreferenz auf das Skript Namespace Nur bei Aufruf aus DTML heraus: Namespace des Aufrufenden Subpath Teil der URL nach dem Skriptnamen (Liste von Strings)  Nutzung wie jedes andere Python-Objekt

26 © Raphael Volz 2001 Slide 26 Rückgabe aus Python-Skripten Standard Python Rückgabe „return“ Umlenkung der Standardausgabe: –„print“ Statements wie normal nutzen –„return printed“

27 © Raphael Volz 2001 Slide 27 Zope API Siehe Zope Book Appendix A + B Beispiel ObjectManager-Methoden: –manage_addProduct['OFSP'] Mapping-Methode, die Zugriff auf Objektkonstruktoren des OFSP ermöglicht. –manage_addFolder(id, title) Objektkonstruktor für einen Ordner DTML: Python: context.manage_addProduct['OFSP'].manage_addFolder(id, title)

28 © Raphael Volz 2001 Slide 28 Python-Skript Beispiel Gästebuch Du bist: Deine Weisheit (HTML erlaubt): DTML Doc „enter“ """ Create a guest book entry. """ # create a unique document id id='entry_%d' % len(context.objectIds()) # create the document context.manage_addProduct['OFSP'].manage_addDTMLDocument(id, title="", file=comments) # add a guest_name string property doc=getattr(context, id) doc.manage_addProperty('guest_name', guest_name, 'string') Skript „addEntry“ – comments, guest_name sind Parameter


Herunterladen ppt "© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz."

Ähnliche Präsentationen


Google-Anzeigen