neues aus der Entwicklung ;-)

nach langer Zeit der Stille, hier mal wieder ein paar neue Infos:
Ersteinmal vielen Dank für die beiden Kommentare im letzten Beitrag…. zwei Stück sind ja fast schon Rekord.
Aber es spiegelt sehr schön auch meine erste Reaktion auf das Rest Paradigma wieder:
Es dauert eine Weile, bis man sich selber klar wird, wie man die einzelnen Ressourcen einteilt und welche einzelnen Bereiche überhaupt interessant sind für einen Benutzer.
Filtert man zum Beispiel alle Einträge auf der Clientseite und schickt immer eine komplette Liste (was meiner Meinung nach dem ganzen System widerspricht) oder legt man gleich separate “Views” für ein- und ausgehende Einträge an (was ich jetzt tatsächlich auch so machen werde).

Auf Anraten von Phillip bin ich grade dabei die Grundprozesse zu sammeln und zu strukturieren. Also anders als die Grundfunktionen möchte ich hier dann auch die Vorgänge im System sammeln.
Also wenn zum Beispiel ein neuer Benutzer angelegt wird, wird erst ein Formular geladen, indem der Nutzer seine Daten einträgt, dann werden die Daten auf Stimmigkeit und Vollständigkeit überprüft und ggf. eine Fehlermeldung zurück gesendet. Es folgt eine Bestätigungsemail an den Ersteller, welche dieser nutzt, um seinen Account letztendlich zu aktivieren. Schon hier sind Fragen offen: zum Beispiel, soll es die Möglichkeit geben, dass nur ein Admin/Projektleiter neue Benutzer anlegen kann. Erhält ein Verantwortlicher eine Email über die Erstellung eines neuen Nutzers, sodass dieser in eine bestehende Gruppe (oder ein bestehendes Projekt) eingeordnet werden kann?
Ich denke das ich ein wenig Zeit investieren muss, aber dass sich diese Zeit definitiv auszahlt am Ende.
Ich werde meine Arbeit übrigens unter dem Titel

Aufgaben kollaborativ und webbasiert verwalten- Realisierung einer Web-Anwendung mit Enterprise Java Beans und Yahoo Web Framework

morgen anmelden. Vielen Danke für den Input Phillip :-). Gefällt mir so wirklich besser. Ab dann läuft die Zeit :-o.

RESTliches

Ich habe lange Zeit nicht mehr gemeldet.
Das lag zum einen daran, dass es viel drumherum zu tun gab und zum zweiten daran, dass ich momentan viele vage Dinge habe, die ich erstmal in eine wirkliche Form bringen will. So ungefähr wie eine Zettelsammlung, die man dann endlich Llochen und einheften möchte.

Ich fange erstmal damit an, dass ich meine – bisherigen – Funktionen zu meinen Objekten sortiere. Bisher habe ich an Objekten nur User und Entries. Wohlgemerkt, es geht hier nicht um Methoden sondern einzig und alleine um Funktionen. D.h. die Funktion wäre das was in der URI dann stehen würde.
z.B. /Users/1/inbox. Dann wäre Users also mein Objekt (dies wird auf Java Ebene dann von der Klasse UserService abgebildet) und inbox wäre die Funktion. Natürlich wird es in der Klasse UserService eine Methode Namens inbox geben, allerdings auch zusätzliche Methoden, welche nicht dem REST Paradigma unterworfen sind.

Hier also meine kleine Übersicht:

  • Entries
    • create
    • update
    • delete
    • send
    • list
    • mark
    • Dependencies
  • Users
    • create
    • update
    • delete
    • login
    • logout
    • list
    • Inbox
    • Outbox

Eine Erklärung erfolgt in einem späteren Post. Sobald ich die einzelnen Funktionen eingegrenzt habe. Zudem haben sich folgende Änderungen ergeben:

  1. Ein Eintrag kann mehrere Empfänger haben. Damit kommen folgende Problem auf mich zu:
    1. Ist ein Eintrag erledigt, wenn ein Empfänger ihn als erledigt markiert? Oder alle? Vielleicht wahlweise?
    2. Wenn es möglich ist, Einträge “weiter zu vermitteln”, wie stellt man sicher, dass die anderen Empfänger erhalten bleiben? Kann der aktuelle Empfänger weitere hinzufügen?
    3. Wie bildet man das in der Datenbank ab (zum Glückt gibt es dafür ja schon eine geeignete Lösung)

    Dazu gesellen sich dann noch Probleme, dass man zum Beispiel ja eindeutig einen aktuell Verantwortlichen für einen Eintrag ermitteln sollen kann. Bei wechselnden Empfängern und vor allem mehreren Empfänger könnte das schwierig werden. Vor allem müsste man dann auch über eine erweitere Rollenverteilung nachdenken. Stichwort Verantwortlich und Bearbeiter.

  2. eistens ist es notwendig, dass eine Aufgabe in Unteraufgaben “aufgebrochen” wird. So soll es möglich sein, dass ein Eintrag beliebig(?) viele Untereinträge auf beliebig(?) tief verschachtelten Ebenen hat. Dazu wird man den “Erledigt Status” von “unten nach oben durchreichen” müssten. Wenn aus Entry 12 Entry 12.1 und Entry 12.2 erledigt sind, sollte auch Entry 12 als erledigt markiert sein.

Zu guter Letzt noch ein paar Links, die sich so fanden:

Ajax mit HTTP Basic Auth (YUI) [1] womit schon mal ein Problem gelöst ist, was in meinem Hinterkopf festsaß.
REST with JSP [2] irgendwie sehe ich nur noch innoQ – so langsam wird man paranoid :-).
REST Web Services [3] ist ein schönes Beispiel zu REST und da wird auch der Unterschied zu SOAP deutlich.