Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

Ablaufregeln des agorum core fileworkflows

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:

Ablaufregel erstellen (allgemein)


  1. Öffnen Sie links in der Seitenleiste Weitere Apps und dann fileworkflow Dokumentenregeln.
  2. Klicken Sie rechts eine bereits erstellte Regel / Gruppe an.

    Ergebnis: Die Schaltflächen zum Anlegen einer Ablaufregel finden Sie im linken Bereich oben.

Ablaufregel: In Ordner ablegen


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.

Beispiel: Wurzelordner als Pfad

Feld „Wurzelordner“

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.

Beispiel: Wurzelordner per Suche holen

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).

Feld „Pfad“

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).

Beispiel: Auflistung der möglichen Suchsyntax im Feld Pfad

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

Weitere Optionen

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.

Ablaufregel: Umbenennen


Benennt ein Dokument um.

Sie können den Namen fest vorgeben oder sich aus den Inhalten eines Metadatums oder mehrerer Metadaten erstellen.

Beispiel: Mischung aus einer festen Vorgabe und dem Inhalt von 2 Metadaten

Feld „Neuer Name“

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).

Weitere Optionen

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.

Ablaufregel: Attribute setzen


Setzt die wichtigsten Flags für die Revisionssicherheit eines Dokuments.

Beispiel: Ablaufzeit in Tage (hier 11 Jahre)

Flags

siehe Flags

Systemflags und Systemflags (Administrator) 

Siehe ​​​​​Systemflags verwenden.

Feld „Ablaufzeit (Tage)“

Definiert das Ablaufdatum in Tagen. 11 Jahre entsprechen etwa ca. 4015 Tagen.

Ablaufregel: Ausgabedatei erzeugen


Erzeugt eine Ausgabedatei mit den Metadaten des Dokuments.

Je nach aktivierten Schnittstellen oder Zusatzmodulen existieren verschiedene Vorlagen.

Eigene Vorlage

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.

Beispiel: Ausgabedatei erzeugen

Felder

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;

CSV mit Positionsmetadaten (Sonderfall)

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:

/agorum/roi/Scripting/Customers/ExportCSV.js

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.
  • Es gilt die gleiche Syntax wie auch an anderen Stellen, etwa im fileworkflow.
  • Die Eingabe mehrerer Platzhalter erfolgt mit ; getrennt.
dates (optional, nur wenn Metadaten vom Datentyp DATE exportiert werden sollen) Definiert den internen Namen der Metadaten des Datentyps DATE.
  • Sie können auf eine eventuell angegebene Formatierung, etwa den Export des Jahres ${Rechnungsdatum:yyyy}, in diesem Parameter verzichten.
  • Der Parameter behandelt lediglich die Deklaration, welche Metadaten ein Datum sind. 
  • Trennen Sie die Eingabe mehrerer Metadaten-Namen mit ,.

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

Beispiel: Regel mit JavaScript ausführen

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

Komplettes Beispiel: Ausgabedatei erzeugen

Ablaufregel: Verknüpfen


Verknüpft das Objekt, mit dem der agorum core fileworkflow aufgerufen wurde, mit einem anderen Objekt, etwa eine Rechnung mit dem zugehörigen Lieferschein.

Beispiel: Verknüpfen

Feld „Anderes Objekt“

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

Einstellung „Anderes Objekt ist Anhang“


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.

Ablaufregel: XML-Skript ausführen


Hinweis: Verwenden Sie statt dieser Ablaufregel die Ablaufregel JavaScript ausführen.

Ablaufregel: JavaScript ausführen


Führt ein Skript aus.

Beispiel: JavaScript ausführen

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);

Felder

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).

Beispiel: Zugriff auf die Parameter

Beispiel: Zugriff auf die Parameter


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
});

Beispiele für verschiedene Formate

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:

Beispiel für verschiedene Formate


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
});

Beispiel: Metadaten per JavaScript setzen

Beispiel: Metadaten per JavaScript setzen


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);

Ablaufregel: Workflow starten


Hinweis: Sie können einen Workflow 3.0 nicht über diese Ablaufregel starten. Verwenden Sie die Ablaufregel JavaScript ausführen.

Startet einen Workflow.

Beispiel: Workflow starten

Felder

Feld Beschreibung
Workflow Definiert den Workflow.
Parameter Definiert den Namen des Parameters.
Wert Definiert den Wert des Parameters (als String).