Archiv der Kategorie Allgemein

SQL ist SQL

Oder?

Selbstverständlich ist Datenbank-Unabhängigkeit auch unter Verwendung von JDBC nicht gegeben. Dafür gibt es Frameworks, wie z.B. Hibernate. Aber darauf habe ich ja bewusst verzichtet. Da mir klar war, dass es Unterschiede gibt, habe ich von Anfang an mit entsprechenden Interfaces und abstrakten Klassen gearbeitet.

Jetzt zeigen erste Gehversuche mit Oracle, dass das Handling nicht allein bei Datentypen oder Sequenzen und sonstigem Spezialitäten abweicht. Derzeit stolpere ich über  Eigenwilligkeiten im Anwenden von Transaktionsmechanismen.

Mal schauen, welche Überraschungen die verschiedenen Datenbanken sonst noch zu bieten haben. Einen Tag habe ich jetzt investiert, ein zweiter wird es sicher. Auf einen dritten kann ich gerne verzichten.

Tags: , ,

Benutzerverwaltung mit Gruppen

Die User Verwaltung hat mittlerweile einen nicht unwesentlichen Anteil des Gesamtprojekts eingenommen. Wie so oft erwachsen aus scheinbaren Randthemen größere Baustellen. Das kann nachteilig sein (z.B. aus wirtschaftlicher Sicht), muss aber nicht.

Die User Verwaltung entstand im Zusammenspiel mit Soap, da ich dem Anwender ohne viel Aufwand die notwendige Sicherheit mitgeben wollte. Gleichzeitig war ja mein Ziel die Entwicklung eines Parametrisierungstools, nicht das einer Benutzerverwaltung. Da ich aber weiß, dass – je nach Umfang der Nutzung einer Software – schnell einige Anwender zusammen kommen können und – wiederum abhängig von der Software – eine große Anzahl von Kombinationen von Aktionen, Rechten und Benutzern, sah ich mich doch gezwungen etwas mehr ‘Komfort’ unterzubringen.

Das habe ich jetzt durch die Erweiterung der User Verwaltung mit Gruppen, denen einzelne Benutzer zugeordnet werden. Der Aufwand war nicht unerheblich, aber ich denke, er war notwendig und lohnenswert.

Tags: , , , , , , , ,

378 – Oha

In der Regel schreibe ich ja nur alle paar Tage in diesen Blog. Aus gegebenem Anlass heute aber gleich zwei mal.

Dass wegen des Loggings noch etwas Arbeit auf mich wartet, war schon klar. Jetzt ist der Zeitpunkt gekommen, die Hinweise und Fehlertexte in Angriff zu nehmen. Also ließ ich mir gerade die Anzahl der relevanten Code-Stellen suchen; nicht weniger und nicht mehr als 378 ausstehende Programmpassagen warten darauf, von mir bearbeitet zu werden. Das bedeutet viel, viel, viel Fleißarbeit.

Seufz.

Tags: , ,

Für den Hausgebrauch

Wir Entwickler neigen ja schon mal dazu, die Anwender aus dem Blick zu verlieren. Nachdem bislang Tag für Tag an CLOUD SEVEN unter der Haube gebastelt wurde, war heute mal etwas Nützliches an der Reihe. Der Konfigurations Editor für Administratoren ist bereits so gut wie fertig.

Wie es Konsolenanwendungen so an sich haben, ist auch der c7 Editor keine Schönheit. Aber darum geht es ja auch nicht. Der Editor arbeitet in zwei Modi: Parametergesteuert oder im Dialog mit dem Anwender. So kann er sowohl im Batchbetrieb oder beispielsweise per Cron gesteuert oder eben alternativ für manuelle Eingriffe komfortabel genutzt werden.

Damit die Arbeit an der Dokumentation nicht eines Tages überhand nimmt, habe ich den Editor gleich im cook book beschrieben.

Wenn das mal kein Grund für ein kühles Bier an einem schwülen Samstag Abend ist…

Tags: , , , , , ,

Dokumentation

Welch leidiges Thema!

Immer wieder darf ich Grundsatzdiskussionen mit meinen Mitarbeitern führen, warum sie – bitteschön – ihre Arbeit bitte, bitte, dokumentieren mögen (bitte!). Hätten sie nicht die Zeit, ok. Sprächen sie nicht deutsch oder englisch, naja. Aber allein der Wille ist, was fehlt. Zeigt sich daran, dass meine besten Entwickler gut ausgelastet, sehr produktiv und dennoch fleißig in der Dokumentation sind. Ich selbst dokumentiere sogar ausgesprochen gerne (offensichtlich bin ich etwas merkwürdig).

Wie auch immer, habe ich in den letzten Tagen einige Stunden dem cook book von CLOUD SEVEN gewidmet. Zugeben muss ich, dass der Aufwand exorbitant steigt, wenn möglichst alle Details berücksichtigt werden sollen. Also wird auch die Dokumentation von CLOUD SEVEN weder ein spannender Roman noch eine wissenschaftliche Abhandlung werden. Dennoch ist das Ziel, dem Anwender an den entscheidenden Stellen Unterstützung durch aufschlussreiche Information zu bieten.

Für die API Nutzer bleibt auch am JavaDoc noch einiges zu tun.

Tags: , , ,

Morgengrauen ist Schlafenszeit

Feiertag, Brückentag und Wochenende. Wenn dann noch das Wetter eher bescheiden ist, kann man richtig was schaffen. Aber zugegeben – merkwürdig ist es schon, wenn Vogelgezwitscher und Dämmerung den Gang in die Koje begleiten.
Morgen ist Montag, da will (und muss) ich wieder fit sein. Daher wird es dieses Nacht nicht so spät…

Nicht nur viele Arbeitsstunden, sondern auch einiges Kopfzerbrechen haben mir die letzten Tage beschert. Datenbank-Transaktionen und Savepoints sind z.B. typische Kandidaten, die einen Entwickler dem Abgrund nahe bringen können. Prinzip ist klar, Praxis ist – naja.

Spaß hatte ich, nachdem ich seit langer Zeit mal wieder Rekursionen angewendet habe. Aus endlosem Programmcode werden schlichte, elegante und übersichtliche Methoden. Geht doch!

Was sehr bremst, ist das ständige Redesign des Codes. Umbauen, Vereinfachen, Generalisieren. Aber m.E. ist das wichtig für die spätere Wartbarkeit und Erweiterungen. So habe ich die DB-Schnittstelle komplett umgestrickt und könnte jetzt mit deutlich weniger Aufwand neue Tabellen mit Indexes anlegen und die Zugriffe darauf verwalten. Brauche ich derzeit nicht, aber Anwender der API können das ebenfalls nutzen. Wer weiß?

Die Benutzerverwaltung mit dem Rechtekonzept musste sich ebenfalls einige kosmetische Eingriffe gefallen lassen. Zuguterletzt habe ich die Soap-Schnittstelle ein gutes Stück voran gebracht, ich denke, sie ist jetzt bei rund 90% Fertigstellung.

All die netten Features und Möglichkeiten bedeuten natürlich gleichzeitig eines: viel Arbeit mit der Doku. Und damit die was wird, gehe ich jetzt erst mal schlafen.

Unter der Haube

Der Teufel ist ein Eichhörnchen.

CLOUD SEVEN soll ein zuverlässiges und stabiles Werkzeug werden. Also muss an viele Details gedacht werden, die dann auch zu implementieren sind.

Heute habe ich die Fassaden, die die Datenbank-Aktionen durchführen, mit einem Transaktionsmechanismus ausgestattet. Sollten atomare Aktionen erfolgreich sein, müssen sie dennoch für den Fall zurückgeführt werden, dass die gesamte Aktion (später) fehl schlägt. Typisches Beispiel ist das Neuanlegen eines users (ja ich optimiere noch immer an der Benutzerverwaltung): auch wenn der Benutzer bereits erfolgreich in der DB ist, aber ein Fehler beim Zuweisen seiner Rechte oder seines Passwortes ausgelöst wird, hat der Benutzer nichts im System zu suchen. Ansonsten würden langfristig wirre Fragmente von nicht vollständigen Daten in CLOUD SEVEN herum schwirren.

Diese Verbesserung hat mich den Tag gekostet. Aber sie wird sich mit Sicherheit später auszahlen.

Abgesehen von der Implementierung habe ich in den vergangenen Tagen mit einem cook book begonnen. Naja, eigentlich ist es mehr, als ein Kochbuch, aber Beispiele und praktische Anleitungen werden eine Menge einfließen. Außerdem gibt es jetzt hier auf der Homepage eine weitere Seite mit den groben Milestones. Für diejenigen, die am Verlauf des Projekts und am Fertigstellungsgrad interessiert sind.

Tags: , ,

Konfiguration in der Praxis – Erfahrungswerte

Im Laufe der Arbeiten stelle ich fest, dass mir die Benutzerverwaltung nicht ausreichend ist. Also habe ich mich dran gesetzt und ein Rechte-Konzept mit davon abhängigen Aktionen aufgebaut. Jetzt können Anwender (oder Entwickler) in Zukunft ihre eigenen Rechte mit Aktionen verwalten. Ein wenig Arbeit muss ich da noch investieren, aber das Thema ist so gut wie durch.

Das ist zwangsläufig mehr Arbeit und bremst das Projekt etwas aus, hat aber den Vorteil, dass potentielle Schwächen im Handling mit den Konfigurationswerten aufgedeckt werden. Das sind bislang ausschließlich schnell optimierte Kleinigkeiten gewesen. Eine größere Baustelle werden vorläufig die Exceptions sein. Nachdem ich nach einigen Tagen endlich zufrieden mit dem Logging in DB und Datei bin, gefällt mir das Werfen der Exception noch nicht. Zugrunde gelegt habe ich zwar eine statische Klasse, die entspr. Texte und Fehler-Nummern liefert, aber das Erzeugen im Code ist bislang wenig elegant.

Vorbereitungen für Tests im Web

Zu Demonstrations- und Testzwecken möchte ich in Zukunft einen Web-Zugang bereitstellen. So können interessierte Nutzer die verschiedenen Schnittstellen (Java API, Soap, JMS) direkt und ohne viele Vorbereitungen ausprobieren.
Dafür muss natürlich noch einiges getan werden. Eine DynDNS Adresse ist bereits verfügbar, aber das genügt natürlich nicht.

Mittlerweile bietet die Software eine Benutzerverwaltung, für die sie – logisch – die eigene integrierte Konfigurationsverwaltung nutzt. Ganz einfach: Benutzer sind Properties und die Passwörter sowie Rechte sind ebenfalls Properties, die in Relation zu den Benutzern stehen. Das funktioniert ohne zusätzliche Datentypen oder Datenmodelländerungen. Lediglich die administrative Seite erforderte eine gute Stunde Programmieraufwand.

Die Soap-Schnittstelle macht ebenfalls beträchtliche Fortschritte. Ein Teil der Basisfunktionalitäten für den Zugriff auf Konfigurationsparameter ist als Service umgesetzt, ebenso wie ein Administrationsservice.
Für höheren Durchsatz habe ich Session-basierte Logins ermöglicht. D.h. ein Client muss sich lediglich zu Beginn mit Benutzerdaten anmelden und kann die SessionId nutzen.
Außerdem bringe ich gerade die Benutzerverwaltung in der Soap-Schnittstelle unter, aber jetzt wird erst mal Pfingst-frei gemacht.

Tags: , , , , , ,

Eingemachtes

Die Themen werden komplexer; nach recht simplen Aufgaben, wie Schnittstellen für die Verbindungs- und Datenbanktypen, Zugriff auf die DB, Suche nach Konfigurationseinträgen über diverse Varianten, waren zuletzt statisches und dynamisches Caching, Synchronisation sowie diverse Garbage- bzw. Refresh-Funktionalitäten dran.

Nachdem ich mir Nächte mit Konzepten und Implementierung um die Ohren geschlagen habe, ohne den Debugger anzuwerfen oder die (verfügbaren) Anwendung(sfragmente) auszuführen, folgten heute erste Experimente mit CLOUD SEVEN als Soap Service. Es zeigt sich, dass ich bisher recht sauber gearbeitet habe. Code geschrieben, Properties File angelegt, gestartet, läuft. So macht ein Projekt Spaß.

Mal schauen, ob es so bleibt.

Tags: , , , ,