Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core fileworkflow
Nachdem Sie Bedingungen für den Fileworkflow definiert haben, erstellen Sie nachfolgend Ablaufregeln. Ablaufregeln definieren, was passieren soll, wenn eine Bedingung aus dem Fileworkflow zutrifft.
Folgende Ablaufregeln existieren:
Legt ein Dokument in einem beliebigen Bereich ab.
Der Bereich besteht aus einem Wurzelordner, der vorhanden sein muss, und einem beliebigen Pfad, den Sie auch aus den Metadaten des Dokuments anlegen können.
Definiert einen festen Pfad, der bei Angabe bereits vorhanden sein muss.
Sie können den Wurzelordner auch per Suche definieren, anstatt einen festen Pfad anzugeben.
Hinweis: Die Suche funktioniert nur, wenn der Wurzelordner schon vorhanden ist. Erstellen Sie ihn innerhalb des aktuellen Ablaufs des Fileworkflows, findet die Suche diesen Ordner nicht und Benutzer können die Suche nicht verwenden.
Hinweis: Sie können bei der Angabe des Pfads Formatierungen für das Jahr oder das Datum einfügen (siehe Formatierung Zahlen und Formatierung Datumswerte).
Definiert einen Pfad, zusammengesetzt aus Inhalten von Metadaten und festen Namen.
Tippen Sie ein $ in die Zeile des Pfads, öffnet sich ein Hilfemenü mit einer Auflistung der möglichen Syntax.
Tipp: Verwenden Sie in einem Fileworkflow einen Platzhalter mit einem Datum, kann es zu Problemen bei der Ausgabe des Datums aufgrund der Sommer-/Winterzeit kommen. Dann verwendet das System etwa anstatt dem 25.03. den 24.03, wodurch der Pfad in der Ablage und der Dateiname nicht mehr korrekt sind.
Geben Sie daher beim Platzhalter Folgendes an (fett markiert):
${Belegdatum:yyyy-MM-dd|H+12}
Das System zählt zum Datum 12 Stunden hinzu (h=hour).
Das Beispiel verwendet folgende Syntax:
Syntax | Beschreibung |
---|---|
${DocFormSource} | Erstellt einen Ordner mit dem Inhalt des Metadatums DocFormSource. Ist etwa agorum Software GmbH enthalten, erstellt das System den Ordner mit diesem Namen. |
Belege | Erstellt den Ordner Belege. |
${acmf_rechnungsDatum:yyyy} | Erstellt einen Ordner wird mit der Jahreszahl aus dem Rechnungsdatum. Lautet das Rechnungsdatum etwa 20.04.2015, erstellt das System den Ordner 2015. |
${acmf_rechnungsDatum:MM} | Erstellt einen Ordner wird mit der Monatszahl aus dem Rechnungsdatum. Lautet das Rechnungsdatum etwa 20.04.2015, erstellt das System den Ordner 04. |
Eingangsbelege | Erstellt den Ordner Eingangsbelege. |
Folgender Pfad ergibt sich:
/agorum/roi/Files/Musterfirma GmbH/Musterfirma GmbH/Lieferanten/agorum Software GmbH/Belege/2015/04/Eingangsbelege
Unterhalb der beiden Felder befinden sich weitere Optionen, mit denen Sie das Verhalten der Ablaufregel steuern können.
Option | Beschreibung |
---|---|
Metadaten vererben | Nicht mehr verwenden, da bereits vererbte Metadaten existieren. |
Nur verlinken | Aktiviert Verlinkt das Dokument in den Ordner und übernimmt die Berechtigung des Zielordners. Deaktiviert Verschiebt das Dokument, hängt alle anderen Orte, an denen sich das Dokument gerade befindet, an und übernimmt die Berechtigung des neuen Ordners. |
Überschreiben erlauben | Aktiviert Erstellt das Dokument mit gleichem Namen und einen Eintrag in der Historie. Deaktiviert Erstellt das Dokument mit gleichem Namen und nummeriert es durch. Das System erstellt keinen Eintrag in der Historie, sondern mehrere Dokumente mit dem gleichen Namen und Nummerierungen. |
Benennt ein Dokument um.
Sie können den Namen fest vorgeben oder sich aus den Inhalten eines Metadatums oder mehrerer Metadaten erstellen.
Definiert den Namen, den das Dokument bei der Umbenennung erhält.
In der Abbildung Beispiel: Mischung aus einer festen Vorgabe und dem Inhalt von 2 Metadaten setzt sich das Feld aus dem festen Wert RE sowie dem jeweiligen Inhalt aus dem Metadatum DocFormSource und acmf_rechnungsNummer zusammen.
Daraus ergibt sich etwa Folgendes:
RE agorum Software GmbH (123456789).
Unterhalb des Feldes befindet sich weitere Option, mit denen Sie das Verhalten der Ablaufregel steuern können.
Option | Beschreibung | Anwendungsbeispiel |
---|---|---|
Dateiendung beibehalten | Aktiviert Belässt die Endung, wie sie ist. Deaktiviert Ändert die Endung. Benutzer müssen die Endung auch beim Namen angeben. |
Sie lesen nur PDFs ein, die Schreibweise der Endung variiert jedoch – mal ist PDF groß- und mal kleingeschrieben. Hängen Sie .pdf an den neuen Namen an, sieht die Endung immer gleich aus, also klein. |
Setzt die wichtigsten Flags für die Revisionssicherheit eines Dokuments.
siehe Flags
Siehe Systemflags verwenden.
Definiert das Ablaufdatum in Tagen. 11 Jahre entsprechen etwa ca. 4015 Tagen.
Erzeugt eine Ausgabedatei mit den Metadaten des Dokuments.
Je nach aktivierten Schnittstellen oder Zusatzmodulen existieren verschiedene Vorlagen.
Diese Vorlage ist standardmäßig enthalten und kann eine beliebig formatierte ASCII-Datei erstellen, etwa eine CSV-, EDI- oder eine Skript-Datei (wscript), die etwa in Windows ausgeführt wird.
Feld | Beschreibung |
---|---|
Vorlage | Definiert die gewünschte Vorlage. |
Kopfzeile | Definiert eine Kopfzeile, nötrig etwa bei XML- oder CSV-Dateien. Syntax mit $ anwendbar, siehe JavaScript-Bibliothek common-templates. |
Inhalt | Definiert den auszugebenden Inhalt. Syntax mit $ anwendbar, siehe JavaScript-Bibliothek common-templates. |
Zeichensatz | Definiert den anzuwendenden Zeichensatz. |
Option: An vorhandene Datei anhängen | Aktiviert Das System gibt immer in derselben Datei aus, schreibt die Kopfzeile nur einmal und hängt den Inhalt an die Datei an. Deaktiviert Das System gibt eine neue Datei aus. Ist eine Datei mit demselben Namen bereits vorhanden, nummeriert das System die Datei. |
Wurzelordner | Definiert den Ausgangsordner. |
Pfad | Definiert den gewünschten Ausgabepfad. |
Name | Definiert den Namen der Datei (siehe Ausgaberegel Umbenennen). |
Optionen | Nicht mehr verwenden. |
Beispiele für Kopfzeile / Inhalt
Hinweis: Fügen Sie bei der Kopfzeile und dem Inhalt zwingend eine Leerzeile [ENTER] ein.
Inhalt für Beispiel-CSV
Kopfzeile
Type;Herkunft;Rechnungsnummer;Rechnungsdatum;Brutto;Netto;MwSt;agorumid [Enter]
Inhalt
${DocFormType};${DocFormSource};${acmf_rechnungsNummer};${acmf_rechnungsDatum:yyyy-MM-dd};${acmf_betragBrutto};${acmf_betragNetto};${acmf_betragMwSt};${id} [Enter]
Inhalt für Beispiel-XML mit Positionen
Kopfzeile
<?xml version = "1.0" encoding="ISO-8859-1"?> [Enter]
Inhalt
<Dokument> <Dokumententyp>${DocFormType}</Dokumententyp> <Rechnungsnummer>${acmf_rechnungsNummer}</Rechnungsnummer> <Rechnungsdatum>${acmf_rechnungsDatum:yyyy-MM-dd}</Rechnungsdatum> <Brutto>${acmf_betragBrutto}</Brutto> <Netto>${acmf_betragNetto}</Netto> <MwSt>${acmf_betragMwSt}</MwSt> <Position> ${{js: if (typeof RgPosition != "undefined") { RgPosition.map(function(Position) { return ' <Positionsnummer>' + Position.acmf_positionsNummer + '</Positionsnummer>\n <Artikelbezeichnung>' + Position.acmf_artikelBezeichnung + '</Artikelbezeichnung>\n <Positionsbetrag>' + Position.acmf_positionsBetrag + '</Positionsbetrag>\n\n'; }).join('\n'); } }} </Position> </Dokument>
Inhalt für Beispiel-Skriptdatei
Das nachfolgende Skript kann auf einem Windows-Rechner ausgeführt werden und die Metadaten in eine Excel-Datei überführen. Als Zeichensatz wählen Sie UTF-16LE.
/* global WScript */ let app = WScript.CreateObject("Excel.Application"); let objExcel = app.WorkBooks.Open('.\\test.xlsx'); let ws = objExcel.WorkSheets(1); objExcel.Application.DisplayAlerts = false; objExcel.Application.Visible = true; ws.Cells(1, 1).Value = "Customer"; ws.Cells(2, 1).Value = "${sag_customer}"; ws.Cells(1, 2).Value = "Job No"; ws.Cells(2, 2).Value = "${sag_jobNo}"; ws.Cells(1, 3).Value = "Project Name"; ws.Cells(2, 3).Value = "${sag_projectName}"; let ws2 = ws; ${{js: let nl = '\n'; function replace(str) { let rep ='\\"'; return str.replace(/"/g, rep); } sag_position.map(function(Position) { return '// Position: ' + Position.sag_posnr + nl + 'ws2 = objExcel.WorkSheets.Add ( null, ws2);' + nl + 'ws2.Cells(1, 1).Value = "Position";' + nl + 'ws2.Cells(1, 2).Value = ' + Position.sag_posnr + ';' + nl + 'ws2.Cells(2, 1).Value = "Tag Number";' + nl + 'ws2.Cells(2, 2).Value = "' + replace(Position.sag_tagNumber) + '";' + nl + 'ws2.Cells(3, 1).Value = "Service";' + nl + 'ws2.Cells(3, 2).Value = "' + replace(Position.sag_service) + '";' +nl + 'ws2.Cells(4, 1).Value = "P&ID No";' +nl + 'ws2.Cells(4, 2).Value = "' + replace(Position.sag_pidNo) + '";' +nl + 'ws2.Cells(5, 1).Value = "Line No";' +nl + 'ws2.Cells(5, 2).Value = "' + replace(Position.sag_lineNo) + '";' +nl + 'ws2.Cells(6, 1).Value = "Location";' +nl + 'ws2.Cells(6, 2).Value = "' + replace(Position.sag_location) + '";' +nl + 'ws2.Cells(7, 1).Value = "Avallable Air Supply Pressure MAX";' +nl + 'ws2.Cells(7, 2).Value = "' + replace(Position.sag_avallableAirSupplyPressure_max) + '";' +nl + 'ws2.Cells(8, 1).Value = "Avallable Air Supply Pressure MIN";' +nl + 'ws2.Cells(8, 2).Value = "' + replace(Position.sag_avallableAirSupplyPressure_min) + '";' +nl + nl + nl + nl ; }).join('\n'); }} //objExcel.SaveAs (".\\test_x.xlsx"); //objExcel.Close;
Um eine Exportdatei zu erstellen, die auch Metadaten aus Positionen enthalten soll und die mithilfe von docform ausgelesen wurden, führen Sie mithilfe von JavaScript eine Iteration durch. Laden Sie die undefined>ZIP-Datei herunter und installieren Sie sie.
Sobald das Skript erfolgreich installiert wurde, kann die fileworkflow-Definition erfolgen. Für einen erfolgreichen Export in eine CSV-Datei benötigen Sie im agorum core fileworkflow zwei Regeln:
Hinweis: Definieren Sie die Regel JavaScript ausführen vor der Regel Ausgabedatei erzeugen.
Legen Sie die Regel zum Ausführen des JavaScripts an (siehe Ablaufregel: JavaScript ausführen).
Der Pfad zur JavaScript-Datei lautet:
Im nächsten Schritt definieren Sie die Parameter:
Parameter | Wert |
---|---|
item | Definiert den internen Namen der Position aus docform. In dem hier aufgeführten Beispiel handelt es sich um die RgPosition, die im docform-Dokumententyp Rechnung deklariert wurde. |
template | Definiert den Platzhalter der Metadaten, die das System in die CSV-Datei exportiert.
|
dates (optional, nur wenn Metadaten vom Datentyp DATE exportiert werden sollen) | Definiert den internen Namen der Metadaten des Datentyps DATE.
|
Tipp: Erstellen Sie im agorum core fileworkflow temporär eine neue Regel, etwa Umbenennen, und wählen Sie in dieser mithilfe des Menüs (Aufruf durch Eingabe $
-Zeichen) das gewünschte Metadatum, wenn Sie unsicher bezüglich der Syntax sind. Kopieren Sie diesen Platzhalter in den Parameter.
Beispiel
Erstellen Sie anschließend die Regel Ausgabedatei erzeugen. Neben den bereits bekannten Angaben wie Kopfzeilen, Ablageort oder Namen der Exportdatei ist der entscheidende Eintrag im Inhalt. Um hier nun auf den output des Skriptes zuzugreifen, muss folgender Eintrag erfolgen:
${output} [Enter]
Einen Zeilenumbruch fügen Sie mit [ENTER] ein, damit jeder Datensatz in eine neue Zeile geschrieben wird, auch nach dem Eintrag der Kopfzeile.
Komplettes Beispiel
Verknüpft das Objekt, mit dem der agorum core fileworkflow aufgerufen wurde, mit einem anderen Objekt, etwa eine Rechnung mit dem zugehörigen Lieferschein.
Definiert eine Suchsyntax, die mit ? beginnt, um das zu verknüpfende Objekt zu finden.
Beispiel für Solr
? acmf_lieferscheinnummer:"${acmf_lieferscheinNummer}" docformsource:"${DocFormSource}" docformtype:"MusterfirmaLieferschein" ishistoryobject:false
Aktiviert
Hängt das gefundene Objekt an das Objekt des agorum core fileworkflows.
Deaktiviert
Hängt das Objekt des agorum core fileworkflows an das gefundene Objekt.
Hinweis: Verwenden Sie statt dieser Ablaufregel die Ablaufregel JavaScript ausführen.
Führt ein Skript aus.
Zugehöriges JavaScript für dieses Beispiel:
/* global folder, object, parameters */ let service = require('filingassistant/service'); // Wenn die Parameter gleich heißen wie erwartet, müssen diese nicht gemapt werden service.create('_AnlageBuchhaltungsJahrUndMonat', folder, parameters);
Feld | Beschreibung |
---|---|
Skript | Definiert das aufzurufende JavaScript. |
Wurzelordner, Pfad und Optionen | siehe Ablaufregel: In Ordner ablegen |
Parameter | Definiert den Namen des Parameters. |
Wert | Definiert den Wert des Parameters (als String). |
JavaScript zum Verarbeiten der Parameter
/* global folder, object, parameters */ let beans = require('common/beans'), service = require('filingassistant/service'); service.create('dyn_Lieferantenakte', folder, { acmf_lieferantenName: beans.get(object, '~DocFormSource'), acmf_lieferantenNummer: '0', acmf_lieferantenStatus: parameters.status });
Die folgenden Beispiele wurden so gesetzt, dass sie von einem String direkt wieder in Java-Objekte gewandelt werden können.
Beispiel-Formate für die einzelnen Datentypen:
JavaScript zum Verarbeiten der Parameter
Das folgende Skript geht davon aus, dass die einzelnen Datentypen so gesetzt werden, dass diese wieder aus einem String in Java-Objekte gewandelt werden können.
/*global parameters, object, folder */ // parameters: sind die Parameter die an das js übergeben werden. In den Paramnetern können nur Strings übergeben werden. // object: ist das Objekt, das am Fileworkflow sitzt // folder: Ist der Ordner, der in der Übergabe als Wurzelordner + Pfad eingestellt wird // parameters sind in diesem Beispiel: // // area - > 'abc' // identifiert -> 'abc' // acmf_bVarSample -> 'true' // acmf_dVarSample - > ${date:yyyy-MM-dd'T'HH:mm:ss.SSSXXX} (Beipsiel: "2016-11-27T16:54:36.000+02:00") // acmf_lVarSample -> ${id} // acmf_doubVarSample - > '16000.0998' // // So würde wieder ein Datum erstellt werden: //let d = new Date(parameters.acmf_dVarSample); // new Date('2016-11-27T16:54:36.000+02:00'); // Jetzt area und identifier und die anderen Metadatenauf das Objekt setzen let beans = require('common/beans'); beans.set(object, { '~identifier:string' : parameters.identifier, '~~area:string' : parameters.area, '~acmf_bVarSample:boolean' : parameters.acmf_bVarSample, '~acmf_lVarSample:long' : parameters.acmf_lVarSample, '~acmf_dVarSample:date' : parameters.acmf_dVarSample, '~acmf_doubVarSample:double' : parameters.acmf_doubVarSample });
JavaScript zum Verarbeiten der Parameter
/* global Packages, sessionController, folder, object, parameters */ let objects = require('common/objects'); let beans = require('common/beans'); let params = {}; for (var key in parameters) { let value = parameters[key]; params[key] = value; } beans.set(object, params);
Hinweis: Sie können einen Workflow 3.0 nicht über diese Ablaufregel starten. Verwenden Sie die Ablaufregel JavaScript ausführen.
Startet einen Workflow.
Feld | Beschreibung |
---|---|
Workflow | Definiert den Workflow. |
Parameter | Definiert den Namen des Parameters. |
Wert | Definiert den Wert des Parameters (als String). |