Nehmen wir an, ich möchte meine Rechnungen nur als PDF haben, kein .zip oder Bilddateien. Außerdem möchte ich verhindern, dass Logos oder Header, die von Mailprogrammen manchmal als Bilddatei mitgesendet werden, mit in den Import gelangen und in meinem Prozess Fehler verursachen. Zuerst ist es wichtig, den Email-Import so zu konfigurieren, dass Anhänge in einer Untertabelle (hier ATTACHMENTS) abgespeichert werden:
Anschließend kann ich als Startschritt eine Entscheidung mit einer Ausführungsregel und zwei Weiterleitungsregeln anlegen.
Die Ausführungsregel führt ein einfaches PHP-Skript aus, das alle importierten Anhänge auf ihren Dateityp untersucht und nur einen PDF-Anhang in der Prozesstabelle speichert:
<?php
class className extends JobRouter\Engine\Runtime\PhpFunction\RuleExecutionFunction
{
public function execute($rowId = null) {
$field = 'attachment';
$tableVal = 'INVOICE_FILE';
$type = '.pdf';
$subtableName = 'ATTACHMENTS';
$subtableRowIds = $this->getSubtableRowIds($subtableName);
foreach ($subtableRowIds as $rowId) {
$val = $this->getSubtableValue($subtableName, $rowId, $field);
if(strpos($val, $type) !== false){
$this->setTableValue($tableVal, $val);
}
}
}
}
?>
Die Funktion strpos() untersucht hier bei allen Einträgen der ATTACHMENTS Untertabelle den Eingabewert $val auf den Dateinamen $type, hier .pdf. Nur der PDF-Anhang wird in die Prozesstabelle übertragen - Bilder, Textdateien, Zip-Dateien nicht.
Anschließend kann mit den beiden Weiterleitungsregeln auf einen gefüllten Prozesstabellenwert INVOICE_FILE selektiert werden - entweder es wird in die Hauptfunktionalität des Prozesses weitergeleitet, oder der Absender erhälteine automatische Email, die ihn darauf hinweist, dass er kein PDF als Rechnung gesendet hat.
Es ist auch möglich, auf diese Art noch feiner zu sieben und z.B. Dateien wie "Rechnung.pdf.zip" herauszufiltern.