Eigene Metadaten (Felder) definieren

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

Eigene Metadaten (Felder) definieren

Hallo zusammen,

ich bin noch ganz frisch hier und versuche gerade herauszufinden, ob Alfresco das richtige System für mich ist. Habe mir die Community-Version lokal installiert und versuche mich jetzt an meinem ersten Anwendungsfall.

Ziel ist ein DMS, welches Schülerakten aufnimmt. Diese liegen momentan in Papierform vor uns sollen gescannt werden.
Die sonstigen Möglichkeiten von Alfresco wie Colab usw. sind zweitrangig.

Wenn ich das richtig verstanden habe, ist es ja möglich, dass man eigene Content-Typen definiert. Ich möchte jetzt also einen Typ "Schuelerakte" erstellen, mit ein paar eigenen Feldern, wie z.B. SchuelerNummer, Vorname, Nachname, Eintrittsdatum, Austrittsdatum, usw. Wenn ich es richtig verstanden habe, dann wäre das hier der Ansatz dafür:
http://wiki.alfresco.com/wiki/Data_Dictionary_Guide#Step_by_Step_Model_Definition

Habe mich jetzt schon einige Zeit mit der Doku beschäftigt, aber ich komme nicht weiter. Leider passt der Schritt "Step 4: Register the Model with the Repository " mal so gar nicht zu meiner Verzeichnisstrucktur. Jetzt weiß ich natürlich nicht, ob die Doku sich auf eine ältere Version bezieht, oder ob ich das was grundlegend falsch verstehe.

Kann mir jemand erklären, wie man einen eigenen Content-Typ definiert? Oder einen anderen Link auf ein Tutorial geben? Das würde mir wirklich sehr helfen.
Danke!

Gruß
Booley
2 Replies
thomash
Member II

Re: Eigene Metadaten (Felder) definieren

Hallo,

am besten kuckst du dir einfach mal das Tutorial von Jeff Potts an. Finde er hat das Thema Definition von eigenen Modellen recht anschaulich erklärt:
http://ecmarchitect.com/images/articles/alfresco-content/content-article.pdf

Zusammengefasst musst du folgende Dinge tun:
1. Model Definition erstellen. Am Ende sollte ein ..-model.xml File herauskommen das deine Typen/Aspektdeklarationen enthält.
2. Model im Data Dictionary registrieren. Hierzu konfigurierst du eine Beaninstanz der dictionaryModelBootstrap Bean in einer …-context.xml Datei. 

  <bean id="example.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/extension/exampleModel.xml</value>
            </list>
        </property>
    </bean>
Die Datei muss innerhalb des Classpaths liegen um von der Applikation beim Start gefunden zu werden. Also idealerweise legst du sowohl Model XML als auch Contexterweiterung im Verzeichnis tomcat/shared/classes/alfresco/extension ab.
Wenn das Repository sauber hochfährt und du keine gegenteilige Logausgabe findest sollte dein Model verfügbar sein.

3. Nun musst du noch die UI Konfigurationen soweit anpassen das deine Typen bzw. Aspekte auch gefunden werden. Das heisst je nach Client den du verwendest musst du die webclient-config-custom.xml im shared/classes/alfresco/extension Verzeichnis anpassen (für den Explorer) oder eine eigene ..-form-config-custom.xml im Verzeichnis shared/classes/alfresco/we-extensions definieren (Share).
Die Clients kennen die neuen Typen nicht per Default, deshalb sind diese Konfigurationen notwendig.
Hier findest du die notwendigen Infos hierzu:
http://wiki.alfresco.com/wiki/Displaying_Custom_Metadata (für den Explorer)
http://wiki.alfresco.com/wiki/Forms#Configuring_Forms (für Share)

Viel Spaß und nicht entmutigen lassen, du findest eine Reihe guter Anleitungen im Netz sowie gute Beispiele im Produkt.

Viele Grüße
Thomas
booley
Member II

Re: Eigene Metadaten (Felder) definieren

Hallo,

vielen Dank für die ausführlich Antwort. Das hat schon mal geholfen. Ich habe tatsächlich einen eigenen Content-Typ und ein Aspect erstellen können und ich kann diese auch im Explorer und im Share verwenden.

Allerdings sind die Anzeigen noch optimierungsbedürftig. So stehen im Share z.B. bei "Matadaten bearbeiten" die Namen der Eigenschaften. Was auch logisch ist, da ich keine Bezeichnung angegeben habe. Allerdings habe ich auch noch nicht heraus gefunden, wo ich dies machen kann. Kann mir da vielleicht jemand weiter helfen?
Edit: Hab's gefunden. Wird in der "web-client-config-custom.xml" angegeben. Ist angepasst…
Edit-2: Mist, das war doch "nur" für den Explorer. Im Share siehts immer noch blöd aus.
Edit-3: Gefunden, hier müssen Erweiterungen rein (s.u.):
C:\Alfresco\tomcat\shared\classes\alfresco\web-extension\share-config-custom.xml

Was mir auch noch nicht klar ist, sind die Angaben für
config evaluator="node-type" condition="lz:schuelerakte" 
in der "web-client-config-custom.xml". Wenn mir da noch jemand sagen könnte, wozu das jetzt wieder da ist, wäre das sehr nett.
Edit: Habe es heraus gefunden: ohne diesen Part wird im Explorer die Eigenschaft bei den Metadaten nicht angezeigt.
"web-client-config-custom.xml" ist angepasst…


Aber ich bin schon guter Dinge, dass ich das System so weit in den Griff bekomme, dass ich damit arbeiten kann.

Gruß
Booley

PS: Mein aktueller Stand, falls es schon jemand gebrauchen kann:

C:\Alfresco\tomcat\shared\classes\alfresco\extension\lesezeichenModel.xml
<model name="lz:lesezeichenmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
   <description>Lese-Zeichen Model</description>
   <author></author>
   <version>1.0</version>

    <imports>
         <!– Import Alfresco Dictionary Definitions –>
         <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
         <!– Import Alfresco Content Domain Model Definitions –>
         <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
    </imports>


   <namespaces>
      <!– Define a Namespace for my new definitions –>
      <namespace uri="lese-zeichen.model" prefix="lz"/>
   </namespaces>

   <!– Type and Aspect definitions go here –>
  
   <types>
      <type name="lz:schuelerakte">
         <title>Schülerakte</title>
         <parent>cm:content</parent>
         <properties>
            <property name="lz:schuelerIdx">
               <type>d:long</type>
            </property>
            <property name="lz:vorname">
               <type>d:text</type>
            </property>
            <property name="lz:nachname">
               <type>d:text</type>
            </property>
            <property name="lz:jugendamt">
               <type>d:boolean</type>
            </property>
            <property name="lz:jaName">
               <type>d:text</type>
            </property>
         </properties>
      </type>
    </types>
   
    <aspects>
      <aspect name="lz:test">
         <title>Aspect-Test</title>
         <properties>
            <property name="lz:nr">
               <type>d:int</type>
            </property>
         </properties>
      </aspect>
   </aspects>


</model>

C:\Alfresco\tomcat\shared\classes\alfresco\extension\lesezeichen-model-context.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <!– Registration of new models –>   
    <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/extension/lesezeichenModel.xml</value>
            </list>
        </property>
    </bean>
         
</beans>

C:\Alfresco\tomcat\shared\classes\alfresco\extension\web-client-config-custom.xml
<alfresco-config>

  <!– START Import Lese-Zeichen Erweiterungen –>
  <config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="lz:schuelerakte" />
      </content-types>
   </config>

   <config evaluator="node-type" condition="lz:schuelerakte">
      <property-sheet>
         <show-property name="lz:schuelerIdx" display-label="Schüler Idx" />
         <show-property name="lz:vorname" display-label="Vorname"/>
         <show-association name="lz:nachname" display-label="Nachname"/>
         <show-property name="lz:jugendamt" display-label="Jugendamt"/>
         <show-property name="lz:jaName" display-label="JA-Name"/>
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="lz:test">
      <property-sheet>
         <show-property name="lz:nr"/>
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="lz:test">
      <property-sheet>
         <show-property name="lz:nr" />
      </property-sheet>
   </config>
   <config evaluator="string-compare" condition="Action Wizards">
      <aspects>
         <aspect name="lz:test"/>
      </aspects>
   </config>

   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
            <type name="lz:schuelerakte" />
         </content-types>
         <custom-properties>
            <meta-data type="lz:schuelerakte" property="lz:schuelerIdx" />
            <meta-data aspect="lz:test" property="lz:nr" />
         </custom-properties>
      </advanced-search>
   </config>
  <!– ENDE Import Lese-Zeichen Erweiterungen –>

</alfresco-config>


C:\Alfresco\tomcat\shared\classes\alfresco\web-extension\schuelerakte-form-config-custom.xml
Edit: Das war nix. Die Änderungen müssen wohl hier rein (oder ich hab da vorher was falsch gemacht…):
C:\Alfresco\tomcat\shared\classes\alfresco\web-extension\share-config-custom.xml

   
<alfresco-config>

   <config evaluator="node-type" condition="lz:schuelerakte">
     <forms>
        <form>
           <!– edit-form template="/fdk/templates/2-column-edit-form.ftl" /–>
           <field-visibility>
              <show id="lz:schuelerIdx"/>
              <show id="lz:vorname"/>
              <show id="lz:nachname"/>
              <show id="lz:jugendamt"/>
              <show id="lz:jaName"/>
           </field-visibility>
           <appearance>
              <field id="lz:schuelerIdx" label="Schüler Idx"/>
              <field id="lz:vorname" label="Vorname"/>
              <field id="lz:nachname" label="Nachname"/>
              <field id="lz:jugendamt" label="Jugendamt"/>
              <field id="lz:jaName" label="JA Name"/>
           </appearance>
        </form>
     </forms>
  </config>

</alfresco-config>