Property vs. Aspekt

cancel
Showing results for 
Search instead for 
Did you mean: 
martinn
Member II

Property vs. Aspekt

Hallo,
ich benötige wieder Infos.
1. Zum einen ist mir nicht ganz deutlich geworden, was der eigentliche Unterschied zwischen Properties und Aspekts ist.
2. Ich möchte in einer Anwendung Dokumente nach Alfresco hochladen lassen. Das klappt bereits. Nun möchte ich auch die Versionierung ermöglichen. Dazu braucht man m.E. einen Aspekt. In dem Beispiel dotNet2 gibt es Beispiele wie z.B. Images hochgeladen werden. Dieses Beispiel habe ich genutzt um andere Dokumente wie z.B. Word- u. Excel Dateien, PDFs etc. hochladen zu können. Im Code sind z.B. folgende Zeilen vorhanden:

            // Create the properties list
            nameProperty = new NamedValue();
            nameProperty.name = Constants.PROP_NAME;
            nameProperty.value = strFileName;
            nameProperty.isMultiValue = false;
            //if new properties must be added, change the next line accordingly
            arrProperties = new NamedValue[4];
            arrProperties[0] = nameProperty;

            nameProperty = new NamedValue();
            nameProperty.name = Constants.PROP_TITLE;
            nameProperty.value = strFileName;
            nameProperty.isMultiValue = false;
            arrProperties[1] = nameProperty;

            nameProperty = new NamedValue();
            nameProperty.name = Constants.ASPECT_VERSIONABLE;
            nameProperty.value = strFileName;
            nameProperty.isMultiValue = false;
            arrProperties[2] = nameProperty;

            nameProperty = new NamedValue();
            nameProperty.name = Constants.ASPECT_CLASSIFIABLE;
            nameProperty.value = strFileName;
            nameProperty.isMultiValue = false;
            arrProperties[3] = nameProperty;

            // Create the CML create object
            objCreate = new CMLCreate();
            objCreate.parent = parentReference;
            objCreate.id = "1";
            objCreate.type = Constants.TYPE_CONTENT;
            objCreate.property = arrProperties;

            // Create and execute the cml statement
            objCml = new CML();
            objCml.create = new CMLCreate[] { objCreate };
            arrUpdateResult = repoService.update(objCml);

            // work around to cast Alfresco.RepositoryWebService.Reference to
            // Alfresco.ContentWebService.Reference
            Alfresco.RepositoryWebService.Reference rwsRef = arrUpdateResult[0].destination;
            Alfresco.ContentWebService.Reference newContentNode = new Alfresco.ContentWebService.Reference();
            newContentNode.path = rwsRef.path;
            newContentNode.uuid = rwsRef.uuid;
            Alfresco.ContentWebService.Store cwsStore = new Alfresco.ContentWebService.Store();
            cwsStore.address = "SpacesStore";
            spacesStore.scheme = Alfresco.RepositoryWebService.StoreEnum.workspace;
            newContentNode.store = cwsStore;
           
            // Open the file and convert to byte array
            inputStream = new FileStream(file, FileMode.Open);

            iBufferSize = (int)inputStream.Length;
            arrBytes = new byte[iBufferSize];
            inputStream.Read(arrBytes, 0, iBufferSize);

            inputStream.Close();
Wie zu sehen ist werden Properties z.B. versionable und classifiable gesetzt. Dennoch haben hoch geladene Dokumente zwar eine Versionsnummer, dennoch wird diese nicht hochgezählt wenn eine neuere Version einer Datei hoch geladen wird. Wozu also setzt man in dem Beispiel diese Properties?
3. Soll man das mit der Versionierung besser über Aspekte realisieren, die durch Regeln des übergeordneten Verzeichnisses an die Dokumente vererbt werden?

Danke für die Mühe im Voraus.
1 Reply
thomash
Member II

Re: Property vs. Aspekt

Hallo,

die Frage property vs. aspekte passt nicht ganz. Da schmeisst du etwas durcheinander.
Das Alfresco Metadaten Model kennt Content Typen und Aspekte. Beide beschreiben Content Strukturen die aus Properties (Eigenschaften als primitiver Meta Daten Typ) und Assoziationen (also Beziehungen) zu anderen Content Objekten bestehen. Das heisst  sowohl Typen als auch Aspekte sind beschreibene Strukturen die Properties enthalten können.

Was ist der Unterschied zwischen Typen und Aspekten?
Ein Typ beschreibt die fundamentale Struktur einer Contenteinheit. Jedes Contentobjekt hat genau einen Typen welcher diesen Content beschreibt. Man könnte hier auch von einer Dokumentenklasse sprechen ein Typ ist zum Beispiel cm:content (einfaches Basisobjekt). Eine Rechnung würde ich im ersten Schritt auch als Typen modelieren.

Ein Aspekt ist eine flexible Struktur die ebenfalls Properties und/oder Associations kapselt. Ein Content Typ kann beliebig viele Aspekte zugewiesen bekommen und dies kann zur Laufzeit geschehen. Im Prinzip beschreibt ein Aspekt verschiedene Querschnittbelange in Form einer flexibel zuweisbaren Content Struktur die auf unterschiedliche Typen angewendet werden. 

Folgende Doku beschreibt das recht gut.
http://wiki.alfresco.com/wiki/Data_Dictionary_Guide

Ich auf jeden Fall die Versionierung über den Alfresco cm:versionable Aspekt umsetzen. Das Verhalten (automatisches hochzählen der Version) wird übrigens über das cm:autoVersion Property des Versionable Aspekts gesteuert.
Siehe Doku http://wiki.alfresco.com/wiki/Versioning_Behaviour

Gruß
Thomas