Untergeordnete Seiten
  • Erstellung eines Inhaltsverzeichnisses bei der E-Mail-Verarbeitung
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Bei der Konvertierung von E-Mails mit jadice server nach PDF besteht gelegentlich die Anforderung, dass zusätzlich nachvollzogen werden muss, welche Anhänge an dieser Mail anhängen.

Im entstehenden PDF bringt jadice server automatisch ein Inhaltsverzeichnis auf, doch wie kann ein solches auch in der Client-Anwendung erstellt werden? Dies kann mit einfachen Mitteln erreicht werden.

Zunächst wird wie im Benutzerhandbuch beschrieben ein normaler Workflow zur Konvertierung von EML nach PDF aufgebaut:

Konvertierung EML nach PDF

Der "Trick" besteht nun darin, dass man wissen muss, dass jadice server über einen JobListener Ihre Anwendung nicht nur über Zustandswechsel des Jobs informiert, sondern auch, wenn während der Verarbeitung dynamisch neue Nodes erzeugt werden, die Methode subPipelineCreated() darüber informiert.

Während der Konvertierung eine E-Mail wird auf Serverseite im groovy-Script EmailConversion.groovy der MailBodyCreatorNode aufgerufen, der für die Erstellung der PDFs mit dem Inhalt des E-Mailbodies zuständig ist. Dieser Knoten hat als Parameter bereits die Objekt-Struktur AttachmentDirectory, die zur Erstellung des Inhaltsverzeichnisses im PDF verwendet wird.

Über einen eigene JobListener-Implementierung kann diese Objekt-Struktur auch in der Client-Anwendung abgegriffen werden:

Eigener JobListener, um AttachmentDirectory abzugreifen

Zwei Dinge sind in dieser Klasse besonders erwähnenswert:

  1. Durch den CountDownLatch wird sichergestellt, dass ein Zugriff auf die Methode getAttachmentDirectory() solange blockiert, bis dieses entweder vorliegt oder der Job fehlschlägt und klar ist, dass dieses nicht erzeugt werden kann
  2. Während der Verarbeitung von Mails an denen Mails angehängt sind, werden dynamisch weitere ScriptNodes erzeugt, die wiederum mehrfach MailBodyCreatorNodes und somit AttachmentsDirectorys erzeugen. Um sicherzustellen, dass nur dasjenige AttachmentDirectory verwendet wird, dass für die "äußere" E-Mail gilt, wird in der Methode subPipelineCreated() überprüft, ob der neu instantiierte Knoten nicht von einem dynamisch erzeugen ScriptNode aus erstellt wurde.

Der obere Aufruf von jadice server kann nun mit folgendem Listener ergänzt werden:

Änderung, um AttachmentDirectoryReceiver zu verwenden

 

Dieses AttachmentDirectory kann sehr einfach rekursiv durchlaufen werden:

Rekursive Verarbeitung des AttachmentDirectories


Icon
Die vollständige Demo-Klasse finden Sie in Github unter https://gist.github.com/geissebn/6317468