Menschen von oben fotografiert, die an einem Tisch sitzen.

adesso Blog

Sind für die Abwicklung von Geschäftsprozessen Systeme wie Appway, jBPM, Activiti, Camunda oder massgeschneiderte Anwendungen im Einsatz, müssen die Templates in diese Systeme integriert werden. Dabei werden die Vorlagen oft mit einem Reporting Tool von einem Entwickler als Report/Liste neu – anhand des Word Templates – erstellt. Das erzeugte Dokument ist in solchen Fällen meistens ein PDF, das nicht weiter verändert werden kann. Dies steht jedoch im Widerspruch zu der häufig vorliegenden Anforderung, dass eine editierbare Word-Datei aus den Geschäftsanwendungen erzeugt werden soll, welche es dem Sachbearbeiter erlaubt, individuelle Ergänzungen vorzunehmen.

Wie löst man diesen Konflikt?

Es gibt verschiedene Frameworks, die versuchen diese Anforderung zu erfüllen und die Transformation in ein BPM-System zu vereinfachen. Jedoch bietet keines der bekannten Frameworks eine Unterstützung direkt mit Microsoft-Word-Vorlagen oder entsprechende Vorlage-Funktionalitäten. Template-Felder werden nicht unterstützt und müssen mit einer Framework-spezifischen Notation ersetzt werden. Das heißt, auch bei diesen Frameworks muss das Word Template manipuliert werden. Zudem müssen die Datenfelder der Daten im jeweiligen Geschäftsprozess bekannt sein und definierte Tags oder Platzhalter dürfen keine Schreibfehler enthalten, um die Daten richtig in das Template abzufüllen. Dadurch wird ein erheblicher Testaufwand nötig.

Gibt es keine bessere Lösung?

Doch – bei diesen Hürden und Fehlerquellen der bestehenden Frameworks setzt das Open Source Projekt wte4j (word template engine for Java) an. wte4J wurde von der adesso Schweiz AG entwickelt und erlaubt Standard Microsoft Word Templates in Java-basierten Anwendungen zu verwenden, ohne dass die Templates verändert werden müssen. Auch die Namen der Felder können frei gewählt werden, ohne das Datenmodell der Geschäftsanwendung zu kennen. Durch ein Admin Tool können Vorlagen ins System geladen oder ersetzt werden. Beim Administrieren kann ein Anwendungsverantwortlicher die Template-Felder mit den Datenfeldern verlinken und diese testen.

Realisiert ist die Engine als eine Java-Bibliothek, die als Spring-Framework-Modul gebaut ist und in Spring-Anwendungen besonders einfach integriert werden kann. Es braucht keine Plug-Ins und kein Microsoft Word auf der Entwicklungsumgebung oder dem Anwendungsserver. Somit fallen keine Lizenzkosten an und es ist eine benutzerfreundliche, kostengünstige und effiziente Lösung.

Technische Informationen
  • Die Anwendung läuft unter dem Namen wte4j (word template engine for Java).
  • Der Code ist als Open-Source-Projekt hier abgelegt.
  • Weitere Informationen zu wte4j gibt es im Wiki.
Demo-Applikation

Das Projekt stellt außerdem eine Demo-Anwendung zur Verfügung.

Ausblick

Dank Open Source kann die Funktionalität auf weitere Dokumenttypen erweitert werden. In der Pipeline sind zudem diverse Features wie eine PDF-Generierung, eine Filter- und Suchfunktion, eine Unterstützung für bedingte Inhalte und Listenverarbeitung enthalten.

Habt ihr auch schon von dieser Lösung gehört oder sie vielleicht sogar schon ausprobiert? Ich freue mich auf Kommentare mit euren Erfahrungen.

Entwickler:

Oliver Freivogel ist Software Engineer bei adesso Schweiz AG, Commiter und Administrator

Kontakt: oliver.freivogel@adesso.ch

Thomas Selber ist Software Engineer bei adesso Schweiz AG, Commiter

Kontakt: thomas.selber@adesso.ch

Daniel Mast ist Software Engineer bei adesso Schweiz AG

Kontakt: daniel.mast@adesso.ch

Babar Rehmann ist Software Engineer bei adesso Schweiz AG

Kontakt: babar.rehman@adesso.ch

Bild Matthias Roth

Autor Matthias Roth

Matthias Roth war Head of Java Department bei der adesso Schweiz AG und Leiter der internen Themengruppe Blockchain. Daneben ist er mit seiner Firma iSchule als Berater und Coach in den Bereichen JEE, GWT, Android, Spring, Activiti BPM und Scrum tätig und im Vorstand von eco-HERMES (User-Group der Projektmanagement-Methode HERMES).

Diese Seite speichern. Diese Seite entfernen.