Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
programm code posten zur Diskussion
qojote:
Ich glaube auch nicht das dir dieser Kurs no soviel gebracht hätte ;)
Für mich ist das aber schon ein ganz guter Einstieg um mir einen kleinen Überlick über einen Teil dieses riesigen Themas zu verschaffen.
In dem Forum muß ich nochmal schauen.
Ich wills aber erst noch mal auf einem anderen Rechner versuchen mit einem vernünftigen OS.
Ich habs auf meinem Notebook getestet. Da hab ich leider aus Kompatilitäts gründen zu den Sesamstrassen spielen von meinem Sohn Windows ME drauf.
Gruß
qojote
Gruß
Sven
Axel_Janssen:
Hi,
es ist wesentlich einfacher anderer Leutes code nieder zu machen, als es selbst besser zu machen.
Du benutzt Java wie eine Skriptsprache. Das geht zwar auch, führt aber genau nicht zu Übersichtlichkeit und Wiederverwendbarkeit.
Klassen sollten durch "high cohesion" und "low coupling" geprägt sein.
high cohesion: Klassen sollten sich möglichst mit zusammenhängenden Themen befassen.
Das war dann auch in die richtige Richtung Verarbeitung beschäftigt sich mit Notes und sql mit RDBMS.
Wiederverwendbar ist aber gerade Verarbeitung nicht. Schon wenn du auf eine andere Tabelle der RDBMS zugreifen willst ginge es nur mit copy und paste Wiederverwendung, was auf die Dauer deutlich zu anstrengend ist.
Deine Exception Handling/Logging Strategie ist nicht konsequent. Das benutzen einer Log-Datenbank ist eine sehr gute Idee. Aber warum wird z.B. eine mgl. exception im SQL-statement Teil nicht geloggt?
Vernünftigste Regel ist wohl, dem Anwender eine für ihn verständliche Meldung zu liefern und das technische Zeugs in MÖGLICHST WENIGEN LOG-DATEIEN bzw. Mechanismen zu senden, damit sich das ein Fachmann anschauen kann.
In dieser Branche wird ständig nach Wiederverwendung geschrien. Besonders mehr Management orientierte Menschen haben aber oft deutliche Schwierigkeiten zu begreifen, dass Wiederverwendbarkeit eine tendentiell hohe intelektuelle Anforderung darstellt, die viel mit Erfahrung zu tun hat. Auch mit der Erfahrung von anderen Leuten. Deshalb beschäftige ich mich mit Design Patterns und Frameworks. Das ist zwar weniger sexy als einfach loszuhacken, aber imnsho mittelfristig eine gute Idee.
Meine Idee ist, die Anforderung erstmal mit klassisch mit dem DAO Access Pattern anzugehen, ibatis (http://www.ibatis.com/common/dao.html) abzuchecken und meine Rod Johnson Studien wieder aufzunehmen. Ausserdem ist es sinnvoll irgendwie eine Art von Connection Pooling aufzuabauen..
Fortsetzung folgt. Wg. der geschilderten, real existierenden Doppel-Belastung dauerts ein bischen länger.
Wir bräuchten erstmal eine vernünftige Debugging Umgebung. Ich habe eine Idee, wie man Notes-Agenten dadurch simmuliert, dass man aus Eclipse Notes von aussen anspricht. Dann hätte man Debugging von Java-Notes-Agenten ähnlichen Gebilden.
Gruß Axel
TMC:
--- Zitat von: Axel_Janssen am 21.02.04 - 22:44:59 --- es ist wesentlich einfacher anderer Leutes code nieder zu machen, als es selbst besser zu machen.
--- Ende Zitat ---
Das sind wahre Worte :-)
Matthias
qojote:
Hi Axel,
das mit der Verarbeitung ist mir leider auch schon beim programmieren aufgefallen :-[.
Um nicht immer in den Agent einsteigen zu müssen habe ich die Sql Statements in die Konfigurations Dokumente ausgelagert was schon ganz gut ist damit ich mit dem Agent verschiedene Daten zurückgeben kann.
Mein großes Problem hierbei ist aber leider das die Notes Datenstrukturen und Datentypen ganz unterschiedlicher Art (zur Relationalen DB )sind was dazu führt das ich mir eigentlich jedes Feld anschauen und gegebenfalls wandeln muß.
Dies macht es na klar auch sehr schwer wieder verwendbaren Code zu schreiben.
Ich hab im Moment leider auch sehr wenig Zeit, hoffe aber das es ab morgen besser wird so das ich endlich mein Anforderungskonzept und den versuch das in Klassen zu packen fertig bekomme.
Da ich diese Art von Agenten in der nächsten Zeit öfters brauchen werde will ich mal versuchen so etwas wie ein Framework dafür zu bauen.
Gruß
Qojote
Axel_Janssen:
ok. hier kommt bald mein Vorschlag.
Habe das aber ein bischen anders gemacht.
Von "aussen" wird eine NotesDatenbank per Java ausgelesen und in eine MySQL Datenbank geschrieben.
Man kann das ganze auch als Notes-Agenten umschreiben. Benötigt aber ein bischen Anpassung. So konnte ich Eclipse benutzen. Ich schreib Notes-Java Agenten auch in Eclipse (und kopier die dann rüber). Alles in Eclipse zu schreiben ist noch besser, weil dann hab ich debugger und viele Dinge mehr.
So richtig voll objekt-orientiert ist das auch nicht.
Letztlich wird hier auch kein richtiger OO-Business-Layer gebildet, sondern die ganzen Daten nur so portiert: auslesen_aus_notes --> Datenstruktur (ohne behaviour, keine Methoden) --> RDBMS (konkret MySQL). Beziehungen zwischen Tabellen (oder Haupt-Antwort-Doc) werden nicht berücksichtigt. Kein Transaktionssupport.
Kyle Brown hat das in seinem tollen Websphere-Buch angesprochen. Der Sack schmeisst aber mit ca. 4-6 Fowler-Enterprise Business Application Patterns (auch ein sehr gutes Buch, btw) um sich und das geht nicht mal so schnell am Wochenende. War auch für die Aufgaben-Stellung nicht nötig.
Vielleicht geht das neue Spring-Framework in die Richtung, aber da bin ich mir noch nicht so sicher.
Ich werde hier lediglich eine Implementierung des guten alten DAO-J2EE-Patterns reinschmeissen.
Das ist aber schon ein ganzes Stück flexibler als Quojotes Ansatz.
Und es gibt hier tonnenweise dolle Interfaces und abstrakte Methoden.
Als konkretes Beispiel habe ich die gist - Datenbank von eknori genommen, die im Rahmen des Entfernungs-Berechnungs-Threads entstanden ist (hier ist link auf download: http://www.atnotes.de/attachments/Dist.rar ). Ist nicht klein.
Ich hab als "RDBMS" die zukünftige SAP-Datenbank mySql gewählt. Ist recht einfach zu bedienen und nicht so groß wie db2 oder Oracle. Reicht aus. http://www.mysql.com/products/index.html . Interessierte müssen auch unbedingt den jdbc-Treiber und (ernste Empfehlung) das controll center runterladen. GAlles gibts bei der mySql Seite.
Die einfachste Art mySql zu starten ist über den Befehl mysqld-nt --standalone aus der Kommandozeile im bin-Verzeichnis von mySql.
Der Standard-Alle-Rechte-User heisst glaub ich "admin" ohne Kennwort.
Ich beschreibe alles Eclipse-mässig, weil das meine Entwicklungsumgebung ist.
Wens interessiert. Auf MySql müsste erstmal eine Datenbank erstellt werden. Die soll "gist" heissen. Geht mit dem Controll Center
Hier ist der DDL-code für die Generierung der einzigen Tabelle:
--- Code: ---# Host: localhost
# Database: gist
# Table: 'location'
#
CREATE TABLE `location` (
`id` bigint(20) NOT NULL auto_increment,
`city` varchar(50) NOT NULL default '',
`loc` varchar(30) default '',
`east` varchar(10) NOT NULL default '10',
`north` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `BY_CITY` (`city`)
) TYPE=MyISAM;
--- Ende Code ---
Die gist-DB sollte im Controll-Center grün sein. Dann auf SQL Button klicken. Das obige DDL reinkopieren und dann ausführen. Dann Control Center schliessen und öffnen (tool ist nicht so schlau, hab aber auch null doku dazu gelesen.
rest.kommt.später, lüpt aber schon.
Arbeite vielleicht morgen noch daran, die Generierung der mySql Datenbank ein bischen konfortabler zu gestalten, aber das mach ich auch nicht jeden Tag.
Gruß Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln