cancel
Showing results for 
Search instead for 
Did you mean: 

Brauche Hilfe bei DMS-Strucktur

booley
Champ in-the-making
Champ in-the-making
Hallo zusammen,

ich möchte zunächst mit Alfresco ein DMS für eine lerntherapeutische Praxis aufbauen. Da ich mir nicht sicher bin, wie ich es am besten struckturieren soll, möchte ich euch gerne um eure Meinung bitten.

Das habe ich vor:
Zwei grundsätzliche Dokument-Typen:
1) Schülerakten
2) Unterrichts-Materialien


Zu 1)
Ein Schüler soll einige Eigenschaften erhalten, wie z.B. Schüler-Nr, Nachname, Vorname, Wohnort, KZ-Jugendamt, usw.
Im Laufe der Therapien fallen immer wieder Dokumente an, welche einem Schüler zugeordnet werden sollen. Dies sind verschiedene Dokumente sein, wie z.b. aus Office, gescannte Unterlagen als PDF (ohne OCR), Bilder, usw.
Diese Dokumente sollen möglichst einfach immer jeweils einem Schüler zugeordnet werden, ohne dass man immer wieder die Schülereigenschaften an das Dokument hängen muss.
Mein erster Gedanke war, einen Folder für jeden Schüler anzulegen und dort die Eigenschaften dran zu hängen (also einen Custom-Type). Diese sollen dann an die Dokumente im Folder automatisch übergeben werden.

Bei meinen Versuchen habe ich es nicht hin bekommen. Ich habe einen Custom-Type mit dem Parent "content" erstellt, welcher die gewünschten Eigenschaften beinhaltet. Dieser Type wird dann per Regel automatisch allen Dokumenten in dem Ordner "Schüler" zugewiesen wird. Das klappt so weit.
Wenn ich jetzt aber innerhalb von "Schüler" einen Folder anlege, bekommt dieser natürlich nicht diesen Typ zugewiesen, da es ja ein Folder ist. Hier sollen aber die Eigenschaften hinterlegt werden, welche an die Dokumente innerhalb des Ordners vererbt werden. Ich könnte jetzt den Dokument-Typ ändern, dass er von "folder" erbt, aber dann werde ich es ja wiederum nicht an die Dokument im Ordner vererben können, oder?

Weiß jemand, wie sowas geht? Oder gibt es eine besserer Idee? Vielleicht mir Associations? Mit denen habe ich mich noch nicht vertraut gemacht…


zu 2)
Es gibt eine Unmenge von Unterrichtsmaterialien (Arbeitsblätter, Leistungstests, usw.), welche für die verschiedenen Gebiete eingesetzt werden. Diese Materialien können dann wiederum verschiedenste Eigenschaften haben.

Hier mal ein paar Beispiele:
Einsatzgebiet: Legasthenie/LRS
Eigenschaften: Optik, Akustik, Differenzierung, Serialität, lauttreues Schreiben, Dehnungs-H, Konsonanten-Doppelung, …

Einsatzgebiet: Dyskalkulie/Rechenschwäche
Eigenschaften: Optik, Akustik, Differenzierung, Serialität, Zahlenraum 1 bis 9, Zahlenrauf 1-20, Zahlenraum 1-100, Zehnerübergang, Addition, Subtraktion, …

Einsatzgebiet: Konzentration
Eigenschaften: einzeln, Gruppe, Optik, Akustik, …

Ggf. erhält ein Blatt mehrer Einsatzgebiete.

Hier dachte ich, wären wohl Aspects ein geeigneter Ansatz, welche man dem Material zuweisen kann.
Außerdem könnte man zusätzliche Aspects erstellen für komplette Therapieprogramme. Also wenn man z.B. einen Ordner voll mit Kopiervorlagen zu einer speziellen Therapiemethode hat.

Ist der Ansatz bis hier hin in Ordnung? Oder sollte man sowas anders organisieren?

Gleich Baustelle, nächste Aufgabe:
Die Materialien sind momenan alle in Papierform vorhanden. Sie müssen also eingescannt und verschlagwortet werden.
Wie kann man denn soetwas vereinfachen?
Ich dachte hier an mehrere IN-Ordner, in welche die gescannten PDF's über das Netzlaufwerk eingestellt werden. Diese sollten dann mit Regeln hinterlegte Aspekte zuordnen und anschließend das Dokument aus dem IN-Ordner in einen Material-Ordner verschieben. Ich würde also z.B. einen Order "IN_Legasthenie_Optik" erstellen, welcher dann automatisch den Content-Typ "Material" und den Aspect "Legasthenie" zuweist in und in diesem Aspect die Eigenschaft "Optik" setzt. Der Rest muss dann natürlich noch händisch hinzugefügt werden.

Geht das? Irgendwelche besseren Ideen? Wären vielleicht Tags auf Grund der mehrfach vorkommenden Eigenschaften der bessere Ansatz?


Uff, ist jetzt doch ganz schö viel geworden.
Ich würde mich freuen, wenn ihr mir eure Meinungen, Gedanken, Ideen usw. miteilt. Denn sonst werde ich vermutlich schnell in eine falsche Richtung laufen…

Gruß
Booley
6 REPLIES 6

booley
Champ in-the-making
Champ in-the-making
Hallo noch einmal,

hat denn keiner eine Meinung dazu? Ich fände es wirklich nett, wenn sich jemand mit ein wenig Erfahrung mal dazu äußern könnte…

Danke!

afaust
Legendary Innovator
Legendary Innovator
Hallo Booley,

zu 1) Für den von dir skizzierten Zweck ist ein Type aufgrund der von dir dargestellten Problematik nicht geeignet. Du willst, dass sowohl ein Ordner im Schüler-Baum als auch die jeweiligen Dokumente Schüler-bezogene Daten bzw. eine Assoziation zum Schüler selber (wenn dieser z.B. als eigenständiges Objekt verwaltet wird) halten. Dies kannst du lediglich mit einem Aspekt realisieren - diesen kannst du auf Objekte beider Typen anwenden und so eine einheitliche Metadatenstruktur definieren ohne extra Typen einführen zu müssen.

Bei der Frage Properties vs. Association in Bezug auf Schülerinformationen kommt es immer darauf an, ob man nach diesen Informationen suchen könnens soll oder nicht, d.h. ein Dokument auf dieser Basis auffinden. Kann man die Frage bejahen, muss man zwangsläufig für die Lucene Suche die relevanten Attribute an den Dokumenten "duplizieren".
Ist eine direkte Suche weniger relevant, d.h. entweder nicht notwendig oder aber auch über eine mehrstufige Suche realisierbar, dann kann man entweder eine Asssoziation oder eine einzige Eigenschaft vom Typ NodeRef nutzen, d.h. der Schüler wird als eigenständiges Objekt in einer separaten Struktur verwaltet und mit jedem Dokument/Folder in Verbindung gebracht. Daten liegen dann nicht redundant herum und können an einer zentralen Instanz gepflegt werden ohne das aufwendige Synchronisierungsregeln notwendig wären. Eine Assozation ist einfacher und potentiell in beide Richtungen navigierbar, während ein Property vom Typ NodeRef günstiger in der Datenhaltung ist. In deinem Fall würde ich aufgrund der Masse an Verknüpfungen letzteres nutzen.

zu 2) Deine Beispiele sehen für mich eher nach einer Klassifizierung aus, d.h. ein bestimmtes Arbeitsblatt oder ein Test wird z.B. im Gebiet "Legasthenie" in Bezug auf "Lauttreues Schreiben" eingesetzt. Hier liegt also eine mehrstufige/hierarchische Einordnung vor, welche durch Kategorien abgebildet werden (Wiki). Aspekte werden dann genutzt, wenn es eine echte Erweiterung eines Inhalts um mehrere unterschiedliche Eigenschaften (z.B. Autor, Erstelldatum, Änderungsdatum etc.) oder funktionales Verhalten geht. In deinem Fall gibt es aber an sich nur eine Eigenschaft "Verwendung", welche eine Liste von Werten aus einer hierarchischen Struktur enthalten kann.

Die Verwendung von Kategorien / Klassifikation ermöglicht dir zusätzlich bei der Suche auch aggregierte Abfragen. Soll heißen, obwohl deine Arbeitsblätter nur mit den konkreten Bezugs-Eigenschaften klassifiziert wurden, kannst du über die gesamte Hiearchie, also auch über ein Einsatzgebiet als Ganzes, alle Dokumente suchen lassen.

Tags sind übrigens nichts weiter als dynamisch pflegbare Kategorien…

Dein Ansatz mit verschiedenen IN-Ordnern ist grundsätzlich möglich, aber bei der Menge an Varianten kommst du so auf eine doch recht große Menge n IN-Ordnern. Außerdem kannst du so immer nur eine Variante einem Dokument zuordnen - für Mehrfachzuweisungen musst du dann wieder manuell eingreifen. Mir fällt hier spontan kein besseren und verlässlicheren Ansatz als 100% manuelle Klassifikation ein - kommt natürlich auch immer darauf an, über wieviele Dokumente wir hier sprechen. Ein paar Dutzend in der Woche gehen noch - ein paar Dutzend in der Stunde wird unlustig…

Gruß

booley
Champ in-the-making
Champ in-the-making
Hallo Axel,

erst einmal vielen Dank für deine ausführliche Antwort.

Ich fasse mal zusammen, wie ich es verstanden habe:
zu 1) Da ich die Frage nach der Suche mit einem "Ja" beantworte, wären hier also Aspects ein gangbarer Weg.
zu 2) Hier wären mehrstufige Kategorien ein gutes Mittel, meine Anforderungen umzusetzen.

Jetzt habe ich leider direkt das nächste Problem  Smiley Surprisedops: :
Ich habe zwar inzwischen gelernt, wie ich Aspects definieren und konfigurieren kann, damit ich mit ihnen sowohl im Explorer, als auch im Share arbeiten und danach suchen kann. Ich weiß aber nicht, wie ich den Inhalt eines Aspects vererben kann.

Beispiel:
Ich erstelle einen Folder "Mustermann, Mirko".
Hier hänge ich den Aspects "Schueler" automatisch mit einer Regel an.
"Schueler" enthält folgende Propertys:
- Schueler-Nr
- Nachname
- Vorname
- Wohnort
- KZ-Jugendamt

Diese fülle ich nach der Anlage manuell mit Inhalt, also z.B.
4711
Mustermann
Mirko
Berlin
true

Jetzt scanne ich ein Dokument ein und lege das PDF diesen in den Folder "Mustermann, Mirko" ab. Jetzt wäre es natürlich bombe, wenn der Aspect nicht nur über die Regel automatisch an das Dokument gehangen werden, sonder diese auch automatisch die Werte vom Folder übernehmen. Also auch wiederum "4711, Mustermann, Mirko, …" zugewiesen werden.
Ansonsten pflegt man sich ja bewustlos…

Machbar ist das ja sicherlich, ich finde aber keinen Ansatz dafür. Wenn ich dafür auch noch einen Tipp bekommen könnte, wäre ich ja schon fast am Ziel!

Vielen Dank noch einmal für die Unterstützung. Ansonsten wäre ich jetzt noch viel weiter in die falsche Richtung gelaufen…

afaust
Legendary Innovator
Legendary Innovator
Hallo Booley,

an sich gibt es zwei unterchiedliche Anwendungsfälle:

1) Upload einer neuen Datei und Übernahme der Ordnerwerte

2) Änderung der Ordnerwerte und automatische Übernahme an existierende Inhalte / Strukturen.

Auch für die Vererbung könnten unabhängig von Anwendungsfall Regeln genutzt werden. Es ist z.B. möglich, bei einem "Update" eine Regel auszulösen, welches ein kleines Skript ausführt (JavaScript). In diesem Skript ist dann kodiert, dass die (relevanten) Eigenschaften vom Auslöser auf alle enthaltenen Dokumente und Unterstrukturen übertragen werden. Im Endeffekt gibt es dann mit der Kaskadierung über die verschiedenen Ebenen (Vererbung löst Regel auf untergeordnete Struktur aus) einen "Bulk Change", der alle Strukturen und Inhalte erfasst, sofern nicht die Vererbung der Regel eingeschränkt wurde.
Ebenso ist es möglich, deine Regel beim Upload noch um eine weitere Aktion zu erweitern, die ein zweites Skript aufruft, welches die Eigenschaften des Ordners in das neue Dokument hinein "zieht".

Man sollte dabei bedenken, dass das Update bei Anwendungsfall 2 komplett über den gesamten Baum geht und je nach Menge des Inhaltes schon eine gewisse Zeit in Anspruch nehmen wird - u.U. so lange, dass z.B. bei Share ein intern auf 90s gestellter Time-Out erreicht wird und die Oberfläche vorzeitig einen Fehler meldet, obwohl das System im Hintergrund noch arbeitet.

Dokumentation zu JavaScript in Alfresco findest du hier im Wiki, wobei die erste Variante in diesem Abschnitt die beschriebene Option darstellt.

Gruß

P.S.: Im Übrigen kannst du dir mit JavaScript als Aktion die ursprüngliche "Aspekt hinzufügen" Aktion sparen, da du dieses mit in dem Skript für das Upload-Event integrieren kannst.

booley
Champ in-the-making
Champ in-the-making
Ja, das hat geholfen!  Smiley Very Happy

Ich habe mir ein Script basteln können, welches einen Aspect anlegt und die Properties vom Parent übernimmt.

Für den Fall, dass es jemand gebrauchen kann:
//———————————————————————-
// add an aspect to a document with properties from parent
//———————————————————————-

// define Array for properties
var props = new Array();

// transfer aspect properties from parent
props["my:propertie1"] = document.parent.properties["my:propertie1"];
props["my:propertie2"] = document.parent.properties["my:propertie2"];
props["my:propertie3"] = document.parent.properties["my:propertie3"];

// add aspect to document
document.addAspect("my:aspect", props);

Im Moment muss ich die Regel zum Auslösen des Scripts noch manuell ertellen. Dies zu automatisieren wird also der nächste Schritt sein.

Und eigentlich müsste es doch auch möglich sein, den Namen des Folders auszulesen, diesen zu zerlegen und in die Properties zu schreiben. So dass aus dem Folder "Mustermann, Mirko" die Substrings "Mustermann" und "Mirko" ausgelesen werden, um diese bei Anlage des Folders auch gleich in die entsprechenden Properties zu speichern.

Ich bin mal gespannt, ob ich das so hin bekomme…

booley
Champ in-the-making
Champ in-the-making
Und wieder einen Schritt weiter und wieder der aktuelle Stand…

Die automatische Anlage habe ich einfach über zwei Content-Rules gelöst. Es wird jetzt bei jeder Neuanlage folgendes ausgeführt.

Bin ich ein Space in der ersten Inhaltsebene, dann dieses Script ausführen:

var props = new Array();
var names = new Array();

// Name und Vorname aus Ordner extrahieren
names = document.properties.name.split(', ', 2);
props["lz:a_nachname"] = names[0]
props["lz:a_vorname"] = names[1];

// Aspect schreiben
document.addAspect("lz:schueler", props);

Für jedes Element in allen Ebenen wird dies hier ausgeführt (Erweiterung vom Sript aus dem Post davor):
//———————————————————————-
// add an aspect to a document with properties from parent
//———————————————————————-

// define Array for properties
var props = new Array();

// exists aspect in Parent?
if (document.parent.hasAspect("lz:schueler") == true)
{
  // transfer aspect properties from parent
  props["lz:a_schuelerIdx"] = document.parent.properties["lz:a_schuelerIdx"];
  props["lz:a_vorname"] = document.parent.properties["lz:a_vorname"];
  props["lz:a_nachname"] = document.parent.properties["lz:a_nachname"]
  props["lz:a_kzInaktiv"] = document.parent.properties["lz:a_kzInaktiv"];
  props["lz:a_inaktivJahr"] = document.parent.properties["lz:a_inaktivJahr"];
  props["lz:a_jugendamt"] = document.parent.properties["lz:a_jugendamt"];
  props["lz:a_jaName"] = document.parent.properties["lz:a_jaName"];
 
  // add aspect to document
  document.addAspect("lz:schueler", props);


else
{
  // add aspect to document
  document.addAspect("lz:schueler");
}

Da fehlen jetzt natürlich noch diverse Sicherheitsabfragen, um auf die "Kreativität" der User bei der Namensgebung zu reagieren. Aber als Muster sollte man damit ja schon mal klar kommen.