Import-Skripte

enaio® import-export 12.0 »

Beim Importieren von Dokumenten können an verschiedenen Zeitpunkten Skripte eingebunden werden. Diese Skripte, Java Script oder VB Skript, werden beim Import ausgeführt.

Folgende Skripte stehen im Import zur Verfügung:

  • Datensatzskripte: nach einem importieren Datensatz
  • Objekttypskripte: vor dem Import der Daten eines Objekttyps
  • Feldskripte: vor jedem Einlesen eines Feldwerts aus der Importdatei

Informationen zum Scripting finden Sie in der Entwicklerdokumentation.

Die Skripte werden im Script-Editor erstellt. Sie können ein vorliegendes Skript laden oder über den Zwischenspeicher in den Script-Editor kopieren und dort editieren.

Für Objekttypskripte - und für Feldskripte ist ein minimales Skript als Default vorbelegt, dass jederzeit projektspezifisch erweitert werden kann.

Wenn Sie den Skriptinhalt löschen und auf Wiederherstellen klicken, können Sie das Beispielskript in der jeweils ausgewählten Skriptsprache neu einlesen.

Mit Objekttypskripten können Sie entscheiden, ob das aktuell vorliegende Objekt ins System importiert werden soll. Feldskripte geben Ihnen die Möglichkeit direkt die Felddaten zu ändern.

Debugging von Skripten im Dokumentenimport

JavaScript im Dokumentenimport kann ebenso wie JavaScript im Dokumentenexport, JavaScript in der Automatischen Aktion 'Skript ausführen' und JavaScript in der Automatische Aktion 'SQL-Kommando ausführen' über den Konfigurationsdialog für Automatische Aktionen debugged werden.

Beim Ausführen der automatischen Aktionen aus enaio® start steht das Debugging nicht zur Verfügung. Dort werden die Skripte nur ausgeführt.

Beim Ausführen des Imports über den Konfigurationsdialog für Automatische Aktionen werden nur die Datensatzskripte automatisch im Debugger angehalten. Der Modus ... mit Debugger kann für die Konfiguration und für das Starten gewählt werden. Im Modus Konfigurieren mit Debugger werden die Objekttypskripte und die Feldskripte beim Testen des Skriptes automatisch im Debugger angehalten. Im Modus Starten mit Debugger werden nur die Datensatzskripte automatisch angehalten.

Informationen zum Debugging finden Sie in der Entwicklerdokumentation.

VB-Skript

In den verschieden VB-Skripttypen stehen folgende globale Daten zur Verfügung:

Feldskripte

Variable: sOrgValue

Datentyp: String

Funktion:

Aktueller Feldwert aus der Importdatei, der in diesem Skript geändert und wieder zurückgegeben werden kann.

Rückgabewert: rc.result(string)

Datentyp: String

Funktion:

Feldwert, der durch das Skript modifiziert als Feldinhalt für das aktuelle Objekt zurückgegeben wird.

Objekttypskripte

Variable: sFieldValues

Datentyp: String

Funktion:

Liste der Feldwerte aus der Importdatei.

Die Liste hat die Form: Feld1="Wert1";Feld2="Wert2";...;

Anhand dieser Feldwerte kann im Script entschieden werden, ein Objekt dieses Typen anzulegen.

Rückgabewert: rc.result(boolean)

Datentyp: Boolean

Funktion:

Der Rückgabewert gibt an, ob das aktuelle Objekt dieses Objekttypen beim Import angelegt werden soll oder ob dieser Objekttyp beim Importlauf ausgelassen werden soll.

Datensatzskripte

Variable: arrObject

Datentyp: Array

Funktion:

Informationen zu allen von diesem Datensatz betroffenen DMS-Objekten. Die Anzahl der Elemente im Array wird durch Anzahl der zuvor ausgewählten DMS-Objekte bestimmt. Das erste Array-Element zeigt somit (typischerweise, es sei denn die Objektverarbeitungsreihenfolge wurde modifiziert) Informationen zur Verarbeitung des Ordners, das zweite Informationen zum Register (so Register verwendet werden), das dritte Dokumentinformationen.

Jeder Eintrag in dem Array entspricht einem Importobjekt und hat folgende Form:

<OrdnerTyp>#<OrdnerID>/<RegisterTyp>#<RegisterID>/<ObjektTyp>#<ObjektID>:<Aktion>

Für die Aktion sind folgende Werte möglich:

0=keine Aktion, 1=Update, 2=Insert, 3=Delete, 4=Fehler

Beispiele:

  Beispiel 1: Ordner: 1#123/0#0/1#123:1

  Beispiel 2: Register: 1#123/6488065#20/6488065#20:2

  Beispiel 3: Dokument im Register: 1#123/6488065#20/65537#1024:2

  Beispiel 4: Dokument direkt im Ordner: 1#123/0#0/65537#1024:2

  Beispiel 5: Dokument in Workflow-Ablage: 0#0/0#0/65537#1024:2

  Beispiel 6: Typenloses Dokument in Workflow-Ablage: 0#0/0#0/19660800#1024:2

Wurden in einem Datensatz ein Ordner, ein Register und ein Dokument importiert, enthält das Array mit obigen Beispieldaten folgende Werte:

arrObjects(0) = 1#123/0#-1/1#123:1

arrObjects(1) = 1#123/6488065#20/6488065#20:2

arrObjects(2) = 1#123/6488065#20/65537#1024:2

 

Variable: strFieldValues

Datentyp: String

Funktion:

String mit allen in diesem Datensatz importierten Feldern.

Feldwerte des Datensatzes, Format:

<Feld1Name>="<Feld1Wert>";<Feld2Name>="<Feld2Wert";<…>;

Beispiel:

ProjektNr="1234";Verantwortlich="Hans Meier";bilddatei="c:\import\datei1.tif";

Enthält ein Feldwert das doppelte Anführungszeichen, wird diesem Zeichen ein weiteres doppeltes Anführungszeichen vorangestellt.

 

Variable: RecordsetError.RecordInvalid

Datentyp: Boolean

Funktion:

Rückgabewert zur Steuerung, ob ein Datensatz als erfolgreich oder fehlerhaft gelten soll (Default: FALSE)

Beispiel für ein Datensatz-Skript:

Dieses beispielhafte Skript gibt einem importierten Dokument die Eigenschaft 'archivierbar'.

const  server=new rc.com.ActiveXObject("OxSvrSpt.server");
const session = server.Login("<login>", "<password>", "<ip-address>", "4000", pwNotEncrypted)
let x = strFieldValues;
let  sFullObjectActionInfo,  sFullObjectInfo , sObjectInfo;
let vArray, sAction;
let  sObjectType, sObjectID;

//Alle Objekte durchsuchen
for( let i=0; i< arrObjects.length; i++)
{
 
   sFullObjectActionInfo = arrObjects[i];
 
  //Action trennen
   vArray=sFullObjectActionInfo.split(":");
   sFullObjectInfo = vArray[0];
   sAction = vArray[1];
 
   // Dokument trennen
   vArray=sFullObjectInfo.split( "/");
   sObjectInfo = vArray[2];
 
   // Object ID und Typ trennen;
   vArray=sObjectInfo.split("#");
   sObjectType = vArray[0];
   sObjectID = vArray[1];
 
  //Testen auf Objekttyp
  if( sObjectType == "<objecttype-id>")
  {
 
     // Objekt auf archivierbar setzen
     const  job = session.NewJob("dms.XMLUpdate");
     let strXML = "<DMSData><Archive><ObjectType id=\"" +  sObjectType + "\"><Object object_id=\""+  sObjectID + "\"></Object></ObjectType></Archive></DMSData>";
     const bomArray = new Uint8Array([0xEF,0xBB,0xBF]);
     const xmlArray = rc.lib.stringToByteArray(strXML,"utf-8");
     const mergedArray = new Uint8Array(bomArray.length + xmlArray.length);
     mergedArray.set(bomArray);
     mergedArray.set(xmlArray,bomArray.length);
     job.InputParameters.AddNewIntegerParameter("OutputUnicode",1);
     job.InputParameters.AddNewByteParameter("XML",  mergedArray);
     job.InputParameters.AddNewIntegerParameter("Flags", 0);
     job.InputParameters.AddNewStringParameter("Options", "Archivable=1");
     job.Execute();
   }

'login', 'password', 'ip-address' und 'object-type-id' sind konfigurationsspezifische Daten. 'pwNotEncrypted=0' für die unverschlüsselte Übergabe eines Passworts.