OpenKM ist ein Dokumentenmanagement-System. Es wird hauptsächlich von einer einzigen spanischen Firma gepflegt, daher siehth es zuerst so aus, das es keine echte Community-Software ist. Allerdings steht es komplett unter einer freien Lizenz und ist wie ein echtes gutes Open Source Projekt mit einer guten Dokumentation (in einem Wiki) versehen. Einige Zusatzmodule scheinen nicht frei zu sein, allerdings enthält, soweit ich das sehe, die freie Basis für die meisten Anwender alles, was man so braucht (http://www.openkm.com/en/product/comparison-of-versions.html Vergleich der Versionen).

Es gibt eine schöne Demo-Installation, die man sich bei Interesse auf jeden Fall ansehen sollte.

Auf den ersten Blick erscheint die Oberfläche schöner und übersichtlicher als z.B. Alfresco. Mein Eindruck ist, das OpenKM sich vor allem für Anwender interessant macht, die klassische Dokumente (also z.B. Eingangs- und Ausgangspost) verwalten und ordnen wollen, also als Ersatz für einen Aktenschrank. Alfresco hat da eher einen modernen multimedialen Ansatz, der dazu führt, das man zwar leicht (in Alfresco) eine Website bauen kann, aber die Oberfläche zur Ansicht von simplen PDFs etwas unhandlich ist. (Nachdem ich das gesagt habe, sollte ich darauf hinweisen, das OpenKM natürlich auch HTML- sowie Audio- und Videodateien verwalten kann.)

Installation #

Nachdem ich eine ganze Weile mit der Online-Demo herumgespielt und im Wiki gelesen habe, wollte ich die Software nun auch lokal bei mir installieren. Es gibt eine Quick Install-Seite im Wiki, die verspricht, das man es in 5 Minuten installiert hat. Ich vermute allerdings, das es ein bisschen länger dauert, bis alles so eingerichtet ist, das ich alle Komponenten habe, die ich möchte.

Basisinstallation #

Als root:

  # aptitude install openjdk-7-jdk unzip

Als user:

  $ unzip openkm-6.3.0-community-tomcat-bundle.zip
  $ cd tomcat
  $ bin/catalina.sh start

Jetzt kann man auch schon auf http://localhost:8080/OpenKM/ auf die Weboberfläche gehen. Die 5 Minuten sind klar unterboten. Prima! :-)

deutsches Languagepack #

Die Standardversion enthält eine englische und spanische Übersetzung. Nach der Anleitung ging es aber ganz einfach, das deutsche Sprachpaket zu installieren. Ich hatte die Programmversion 6.2 installiert und das aktuelle Languagepack, auf das mich das Wiki verwies, war als 6.4 bezeichnet. Das war aber kein Problem. Das schwierigste war noch die Frage nach dem Icon einer deutschen Flagge, die ich mir dann irgendwoher googeln musste.

Die deutsche Übersetzung sieht im übrigen auf den ersten Blick sehr gut aus. :-) Alle normalen Anwenderfunktionen sehen gut übersetzt aus. Sympathischerweise ist z.B. der Administrations-Bereich nicht übersetzt. Mit persönlich gefällt das besser, weil ein User für mich irgendwie immer ein User ist und ich es so leichter habe, die angesprochenen Dinge in der Datenbank oder auch per Google in den Projektforen zu finden. Aber das ist natürlich Geschmackssache!

Entropie #

Ich habe meine Experimente auf einem virtellen System (mit KVM) durchgeführt. Auf einmal stand beim Reboot der Server und machte keinen Mucks mehr. Es dauerte eine Weile, bis ich merkte, das er nach einigen Minuten dann doch lief. Was war geschehen? Dem virtuellen System waren die Zufallszahlen ausgegangen! 8-o

Um die Entropie eines virtuellen Systems zu erhöhen kann man entweder

  export CATALINA_OPTS="-Djava.security.egd=file:/dev/./urandom"

LDAP #

Die LDAP-Einbindung ist nicht so richtig gut erklärt. Aber letztlich waren dann doch alle Wissensteile da (z.B. http://wiki.openkm.com/index.php/Testing_LDAP_configuration). Ich benutze natürlich einen OpenLDAP-Server (und kein Active Directory), so das man auf die dementsprechenden Beispiele schgauen sollte. Außerdem hat sich die Konfiguration im Vergleich zu älteren Versionen wohl geändert, weshalb man aufpassen sollte, das man keine Beispiele für den (früher benutzten) JBoss erwischt, sondern welche für Tomcat.

Einführend ist zu sagen, das die grundlegende Authentifizierung on OpenKM vom Tomcat gemacht wird. Dieser muss also eine LDAP-Konfiguration bekommen. Hat man diese am laufen, muss aber dennoch OpenKM selber noch eine eigene Konfiguration haben. Damit holt es dann weitere Infos wie Mailadresse, Klarname, etc. aus dem LDAP.

Man schreibt also einen Teil der Konfiguration in die Datei OpenKM.xml (für den Tomcat) und einen Teil in OpenKM.cfg (für die eigentliche Applikation).

Wenn man das weiss und ein bisschen weiss, wie LDAP so tickt und wie LDAP-Abfragen aufgebaut sind, kann man am besten das Beispiel unter http://wiki.openkm.com/index.php/Ldap-example1 als Basis nehmen.

Meine OpenKM.xml sieht so aus:

  <security:authentication-manager alias="authenticationManager">   
        <security:authentication-provider ref="ldapAuthProvider" />
  </security:authentication-manager>
  <!-- -->
  <beans:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
        <beans:constructor-arg value="ldaps://ldap.example.loc/dc=example,dc=loc"/>
  </beans:bean>
  <!-- -->
  <beans:bean id="ldapAuthProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
        <beans:constructor-arg>
                <beans:bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
                        <beans:constructor-arg ref="contextSource"/>
                        <beans:property name="userSearch" ref="userSearch"></beans:property>
                </beans:bean>   
        </beans:constructor-arg>
        <beans:constructor-arg>
                <beans:bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
                        <beans:constructor-arg ref="contextSource"/>
                        <beans:constructor-arg value="ou=group"/>
                        <beans:property name="groupSearchFilter" value="memberUid={1}"/>
                        <beans:property name="groupRoleAttribute" value="cn"/>
                        <beans:property name="searchSubtree" value="true" />
                        <beans:property name="convertToUpperCase" value="false" />
                        <beans:property name="rolePrefix" value="" />
                </beans:bean>   
        </beans:constructor-arg>
  </beans:bean>
  <!-- -->
  <beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
    <beans:constructor-arg index="0" value="ou=People" />
    <beans:constructor-arg index="1" value="uid={0}" />
    <beans:constructor-arg index="2" ref="contextSource" />
    <beans:property name="searchSubtree" value="true" />
  </beans:bean>

Als allerletztes muss man noch darauf achten, das OpenKM-Benutzer in der Gruppe ROLE_USER sein müssen. Also habe ich diese im LDAP noch anlegen müssen. (sonst kommt beim Einloggen eine Fehlermeldung "OKM-012015 (GetRootNode)", weil man nicht auf "okm:root" zugreifen darf). Bei der Gelegenheit bietet es sich direkt an, auch einem Benutzer die Rolle ROLE_ADMIN zu geben.

Damit der Maileingang funktioniert, muss ein Benutzer übrigens dennoch in der OpenKM-Datenbank angelegt sein. Weiteres siehe im Abschnitt unten zur Mail.

Vorschau #

Von ganz alleine kann das Programm nur HTML-Dokumente eingebettet anzeigen. Alle anderen Dateiformate werden intern zuerst in das PDF-Format gewandelt. Hierzu benutzt OpenKM das OpenOffice-Paket (als Hintergrund-Server) und einige andere Programme. Diese müssen aber dafür auch installiert sein:

  aptitude install libreoffice libreoffice-l10n-de
  aptitude install imagemagick

Ausserdem wird noch z.B. das Tool pdf2swf benutzt. Das ist zwar eigentlich Teil des Debian-Paketes swftools, aber in der Fehlermeldung habe ich gesehen, das es von einem besonderen Pfad geladen wird. Es ist offensichtlich auch im OpenKM-Paket enthalten. Ein Blick in das Paket zeigte noch mehr Tools. Nun kann man entweder alle diese Pfade anpassen (in OpenKM.cfg) oder folgendermassen den Standard-Pfad gültig machen:

  ln -s /home/openkm/tomcat1/ /opt/openkm

Mail #

Die Möglichkeit, Mails zu importieren, scheint es erst seit relativ kurzer Zeit zu geben.

Ein Administrator kann auf dem Tab "Administration" Benutzer anlegen. Dort ist es dann auch möglich, für den Benutzer Mailkonten einzurichten. Mit meinem Mailserver war dies problemlos möglich. Dies Mails werden dann alle paar Minuten aktuell abgeholt und in eine nach Datum sortierte Ordnerstruktur eingeordnet.

Allerdings werden diese Mails scheinbar nicht wie vollwertige Dokumente behandelt. Sie werden z.B. nicht indexiert und sind daher auch nicht per Suchfunktion zu finden.

Damit ist diese Funktion auf den ersten Blick nicht so sinnvoll. Ich denke jedoch, das der Gedanke eher ist, das Mails so automatisch dem System hinzugefügt werden und sodann manuell zugeordnet werden sollen. D.h. man kann sie dann "zur Ablage" in ein entsprechendes Verzeichnis der Taxonomie (so heisst das gemeinsame Hauptverzeichnis der abgelegten Dokumente) verschieben. Man kann diesen Schritt natürlich ggf. auch automatisieren (siehe nächster Abschnitt).

Automation #

Eine sehr spannende Möglichkeit ist die sogenannte Automation von OpenKM. Man kann als Administrator Regeln vorgeben, die automatisch ausgeführt werden, wenn bestimmte Bedingungen erfüllt sind.

Das bedeutet z.B., das man, wenn man in ein Unterverzeichnis "Kunden" eine Datei neu einstellt (Event), deren Titel das Wort "Angebot" enthält (Validator), diese Datei automatisch die Kategorie "Angebot" zugeordnet bekommt (Aktion). Natürlich gibt es etliche andere Events, Validatoren und Aktionen.

Aus mir nicht ganz verständlichen Gründen ist die Automation standardmäßig nicht aktiviert und muss erst mit ein paar SQL-Befehlen eingeschaltet werden.

Die Automation kann man auch selber erweitern. Einerseits kann man komplett neue Aktionen in Java programmieren (siehe Extension Guide, insbesondere auch http://wiki.openkm.com/index.php/Extend_automation_6.4 Extend Automation). Andererseits dürfte es in den meisten Fällen völlig ausreichend sein, das http://wiki.openkm.com/index.php/Scripting_-_OpenKM_6.2 Skripting zu benutzen. Skripte werden in Beanshell geschrieben und können einige http://wiki.openkm.com/index.php/Automation_events_table Variablen benutzen, die entsprechend der Events gesetzt werden.

Es gibt einige schöne Beispiele für Skripte im Wiki (auch auf der etwas älteren Scripting-Seite zu OpenKM 5.1) sowie in den Foren. Ich selber benötige eine Automation, um Mails anhand eines bestimmten zu erkennenden Musters in bestimmte Ordner und Kategorien einzusortieren. Dazu gibt es bereits eine http://forum.openkm.com/viewtopic.php?f=6&t=5360&start=15 Lösung im Forum, die ich bei Gelegenheit ausprobieren und anpassen möchte.

OCR #

Die Indexierung der Inhalte läuft automatisch alle 5 Minuten im Hintergrund an. Es kann also gut sein, das man nach einem nagelneuen Dokument noch nicht sofort suchen kann. Außerdem muss es einen sogenannten TextExtractor für das benutzte Dateiformat geben. Für die meisten Formate ist das enthalten und man kann sodann nach dem kompletten Inhalt suchen. Für reine eingescannte Bilder geht das aber leider nicht sofort. Dazu braucht man noch ein OCR-Programm.

OpenKM erlaubt es, verschiedene Programme zum OCR (Optical Character Recognition) einzusetzen. Hiermit kann man eingescannte Dokumente "lesen" und auch für die Suche indexieren.

Das beste freie Programm ist wohl Tesseract. Wer es perfekt möchte, kann aber auch das kommerzielle Abby einbinden. Ich habe es so gemacht:

  aptitude install tesseract-ocr tesseract-ocr-deu

Dann muss man ein paar Einstellungen in der Konfiguration im Administrator-Fenster anpassen (nicht in OpenKM.cfg):

  system.ocr = /usr/bin/tesseract ${fileIn} ${fileOut} -l deu
  registered.text.extractors (hinzufügen:) com.openkm.extractor.Tesseract3TextExtractor

OCR von gescannten Dokumenten im PDF-Format sollte gehen, geht aber bei mir nicht. :-(

WebDAV #

Das WebDAV Protokoll erlaubt es, mittels normalen Filezugriffen auf den Dokumentbaum zuzugreifen. Dabei kann man entweder im Filebrowser des Linux-Systems eine "dav:" oder eine "http:"-URL eingeben oder man benutzt davfs, um den Baum direkt auf Filesystemebene einzubinden.

Jeder Schreibzugriff an einer Datei im Baum erzeugt eine neue Version, so das man später die Geschichte eines Dokumentes rekonstruieren kann. So hat man z.B. Zugriff auf alte Versionen von Verträgen etc.

Auch hier gibt es im Wiki eine Anleitung für WebDAV. Dieses muss zuerst freigeschaltet werden. Übrigens steht dort, das man die entsprechende Property in der Administrator-Ansicht des Programmes eingeben soll und nicht in die Konfigurations-Datei. (Das hatte ich zuerst überlesen, was mich eine Stunde extra gekostet hat.) Sobald man das gemacht hat, kann man die angegebene URL z.B. in Thunar (oder jedem anderen guten Dateiexplorer) eingeben und fertig.

CMIS #

Auch per CMIS-SChnittstelle kann man auf den Dokumentenbaum zugreifen. Bei CMIS handelt es sich um eine standardisierte Schnittstelle, um auf Dokumentenmanagement-Systeme zuzugreifen. Hier bietet es sich also an, eigene Erweiterungen zu programmieren. IN Java benutzt man hierzu als Bibliothek am besten Apache Chemistry.

Ein wichtiges Programm hat allerdings bereits eine CMIS-Schnittstelle. Und zwar kann man mit OpenOffice (bzw. LibreOffice) direkt per CMIS auf das System zugreifen. Das erlaubt, aus dem Office-Programm heraus Dokuemente auszuchecken (d.h. für andere zu sperren), zu bearbeiten und dann als neue Version (ggf. mit entsprechendem Versions-Kommentar) wieder einzustellen. Damit das funktioniert, muss man übrigens LibreOffice auf den eigenen Datei-Requester einstellen. Der Rest ist dann einfach, aber im Wiki und in einem Erklärvideo auch nochmal gut erklärt.

Allerdings bietet die CMIS-Anbietung keine Eigenschaften, die mn nicht auch z.B. per WebDAV hat. Man kann also Dokumente laden und speichern. Z.B. in Alfresco ist es möglich, das man direkt aus OpenOffice ein Dokument auscheckt und dann direkt eine neue Version mit Versionsbeschreibung etc. anlegt. OpenKM legt zwar auch eine neue Version an (wie bei jeder anderen Änderung auch), man hat aber keinen Einfluss auf Versionsnummerierung und -Beschreibung.

Datenbank austauschen #

OpenKM arbeitet und der Haube mit Apache Jackrabbit. Es übernimmt daher alle dort möglichen Einstellungen. Jackrabbit speichert seine Daten im Normalfall an zwei verschiedenen Stellen ab: Einen Teil in einer Datenbank und einen Teil im Filesystem. Die Datenbank ist im Standard HSQL (also auch im Filesystem), was recht performant ist. Man kann allerdings auch eine andere Datenbank bevorzugen, wenn man z.B. noch weitere Abfragen hierauf machen möchte. Die Binärdaten kann man anstatt im Filesystem auch in einer Datenbank-Tabelle ablegen. Das macht eigentlich keinen Sinn, weil das Filesystem hier performanter ist. Dennoch kann auch das sinnvoll sein, wenn man eine gut verteilte und gesicherte Datenbank mit viel Platz hat.

Siehe http://wiki.openkm.com/index.php/PostgreSQL

Eigene Datenstrukturen #

Man kann - nur über die Weboberfläche - sogenannte Proerty Groups anlegen. Das ist eine Gruppe von Eigenschaften (also von Feldern verschiedenen Typs), die man dann einem Dokument zuordnen kann. Es erscheint für jede zugeordnete Group eine eigene Registerkarte in der unteren Dokumentenansicht. Hier kann man weitere Angaben zum Dokument hinterlegen. Es ist dann auch möglich, nach den eingegebenen Feldern zu suchen.

Berichte #

Auf http://wiki.openkm.com/index.php/Reports ist beschrieben, das man auch JasperReport-Berichte einbinden kann. Diese können nicht nur per SQL auf die Datenbank zugreifen, sondern auch per XPath den Dokumentenbaum durchsuchen. Damit kann man dann wahrscheinlich auch z.B. Dokumente heraussuchen, die bestimmt PropertyGroups haben etc.

Persönlich ausprobiert habe ich das noch nicht.

Zwei kleine Icons in der Eigenschaften-Ansicht eines Dokumentes haben die Titel URL und WebDAV. Diese kann man anklicken (sie benötigen Flash, sonst geht es nicht) und dann ist die entsprechende URL im Copy-Speicher des Betriebssystems. Man kann dann also z.B. seinen Datei-Explorer öffnen, in die URL-Zeile gehen und Strg-V drücken, um das Dokument oder den ordner dort aufzurufen.

Leider funktionierte das nicht sofort, weil die URL nicht ganz stimmte. Dazu ist noch folgende Einstellung nötig:

TODO

Verschlüsselung per SSL #

TODO

Startskript #

Ein Startskript, um den Server beim Hochfahren des Rechners automatisch zu starten, findet man hier: http://wiki.openkm.com/index.php/Configure_Tomcat_service_linux

Was ist nicht so schön? #

Ehrlich gesagt sind mir bisher noch nicht so ganz viele Dinge aufgefallen. Also hier eine kleine Liste, die hoffentlich kurz bleibt.

  • CMIS-OpenOffice-Anbindung bietet keine Versionskommentare, ist daher also gar kein Vorteil geenüber einem normalen File-Zugriff
  • OCR von PDFs geht (bei mir) nicht
  • Online-Editor für Textdokumente gar nicht vorhanden
  • Dinge, die ich vermisse, die aber nur in der Enterprise-Version enthalten sind:
    • Live-Edit
    • Online-Editor für HTML-Dokumente
    • integriertes Wiki

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-10) was last changed on 22-Feb-2015 19:48 by ThomasBayen