Dokumentimporter
Search…
⌃K

Beispiele / Tipps

In diesem Kapitel stellen wir anhand von Anforderungen diverse Praxisbeispiele von Dokumentimport-Definitionen vor. Ebenfalls sammeln wir hier Beispiele, welche helfen sollen, komplexere Anforderungen umzusetzen.

Beispiel 1

Anforderung | Beispiel 1
Lösung | Beispiel 1
In einem Verzeichnis liegen PDF Dateien mit folgendem Dateiaufbau: 39851_1429374_1430126.pdf Anhand der ersten Nummer (bis zum _) soll eine Primärverknüpfung zur Adresse erstellt werden. Die zweite Nummer (nach dem _) soll eine allgemeine Verknüpfung zu einem bestehenden Dokument setzen. Das Stichwort soll in CAS genesisWorld folgendermassen gesetzt werden: Order [letzte Nummer des Dateinamen] Beispiel: Order 1430126 Das Dokument mit den Teilnehmern "Alle öffentlich" angelegt. Als Kategorie soll zudem "Order" gesetzt werden, die letzte Nummer des Dokumentennamen soll als Nummer beim Dokument hinterlegt werden.
Nach dem Archivieren soll das Ursprungsdokument gelöscht werden.
Mit folgender Definition kann der gewünschte Import umgesetzt werden:
<?xml version="1.0" encoding="utf-8" ?>
<DocumentImporter>
<Directory name="c:\Projects\Artwin\DocImportDir\">
<Actions>
<Action type="DeleteFile" event="OnSuccess"/>
<Action type="MoveFile" event="OnFailure">".\\Error\\"</Action>
</Actions>
<DocumentFields>
<DOCDATE>GetFileDate()</DOCDATE>
<DOCNUMER>GetFileName().Split('_', '.')[2]</DOCNUMER>
<KEYWORD>"Order " + GetFileName().Split('_', '.')[2]</KEYWORD>
<CATEGORY>"Order"</CATEGORY>
<OWNERNAME>"Alle (öffentlich)"</OWNERNAME>
</DocumentFields>
<Version type="NewDocument"/>
<Links>
<Link object="ADDRESS" attribute="ITDDOCADR">
<Filter>"ADRNUMBER = '" + GetFileName().Split('_', '.')[0] + "'"</Filter>
</Link>
<Link object="DOCUMENT" attribute="Verbindung">
<Filter>"DOCNUMBER = '" + GetFileName().Split('_', '.')[1] + "'"</Filter>
</Link>
</Links>
</Directory>
</DocumentImporter>

Beispiel 2

Anforderung | Beispiel 2
Lösung | Beispiel 2
In einem Verzeichnis liegen PDF Dateien mit folgendem Dateiaufbau: 39851_Dokumentenspezifikation.pdf Anhand der ersten Nummer (bis zum _) soll eine Primärverknüpfung zu einem Projekt erstellt werden. Dabei ist zu berücksichtigen, dass auf Grund der Primärverknüpfung auch eine Verknüpfung zur Adresse erstellt wird. Das Stichwort soll in CAS genesisWorld folgendermassen gesetzt werden: Dokumentenspezifikation vom [Importdatum] Als Typ soll "Spezifikation" und der Status "aktiv" gesetzt werden. Als Teilnehmer wird die Gruppe "Projektteam" gesetzt mit dem Fremdzugriffsrecht "persönlich". Nach dem Archivieren soll das Ursprungsdokument in den Archivordner verschoben werden.
Mit folgender Definition kann der gewünschte Import umgesetzt werden:
<?xml version="1.0" encoding="utf-8" ?>
<DocumentImporter>
<Directory name="c:\Projects\Artwin\DocImportDir\">
<Actions>
<Action type="MoveFile" event="OnSuccess">".\\Archiviert\\"</Action>
<Action type="MoveFile" event="OnFailure">".\\Error\\"</Action>
</Actions>
<DocumentFields>
<KEYWORD>"Dokumentenspezifikation vom " + DateTime.Now.ToShortDateString()</KEYWORD>
<GWSTYPE>"Spezifikation"</GWSTYPE>
<GWSSTATUS>"aktiv"</GWSSTATUS>
<OWNERNAME>"Projektteam"</OWNERNAME>
<FOREIGNEDITPERMISSION>-1</FOREIGNEDITPERMISSION>
</DocumentFields>
<Version type="NewDocument"/>
<Links>
<Link object="PROJECT" attribute="ITDDOCPRJ">
<Filter>"PRJNUMBER = '" + GetFileName().Split('_')[0] + "'"</Filter>
</Link>
</Links>
</Directory>
</DocumentImporter>

Beispiel 3

Anforderung | Beispiel 3
Lösung | Beispiel 3
Es werden mehrere Verzeichnisse über den Importer überwacht, Beispiel:
Ordner "ANG" Ordner "AUF" Ordner "REC" Der Dateinamen Aufbau ist in allen Verzeichnissen identisch: tu54596_45652.pdf Die ersten zwei Kürzel stehen für den Benutzer. Beim Archivieren des Dokumentes soll dieser direkt als Teilnehmer gesetzt werden (in dem Beispiel "tu"). Die darauffolgende Nummer bis zum _ dient als Verknüpfungsfeld zur Adresse (allgemeine Verknüpfung). Das Stichwort soll in CAS genesisWorld folgendermassen gesetzt werden: Beim Ordner "ANG" = Angebot [letzte Nummer aus Dateiname] vom [Dokumentendatum] Zusätzlich soll eine eigenes DB Feld (ART_DOKTYP/Varchar 50) mit dem Wert "Angebot" befüllt werden. Die weiteren Ordner sollen identisch aufgelöst werden, die Werte aber jeweils angepasst werden AUF = Auftrag, REC = Rechnung. Nach dem Archivieren soll das Ursprungsdokument jeweils in den Archivordner verschoben werden.
Mit folgender Definition kann der gewünschte Import umgesetzt werden:
<?xml version="1.0" encoding="utf-8" ?>
<DocumentImporter>
<Directory name="c:\Projects\Artwin\DocImportDir\ANG\">
<Actions>
<Action type="MoveFile" event="OnSuccess">".\\Archiviert\\"</Action>
</Actions>
<Code>
string TranslateInitial(string value)
{
if(value == "tu")
return "Testuser";
return value;
}
</Code>
<DocumentFields>
<KEYWORD>"Angebot " + GetFileName().Split('_', '.')[1] + " vom " + GetFileDate().ToShortDateString()</KEYWORD>
<OWNERNAME>TranslateInitial(GetFileName().Substring(0, 2))</OWNERNAME>
<ART_DOKTYP>"Angebot"</ART_DOKTYP>
</DocumentFields>
<Version type="NewDocument"/>
<Links>
<Link object="ADDRESS" attribute="VERBINDUNG">
<Filter>"ADRNUMBER = '" + GetFileName().Split('_')[0].Remove(0, 2) + "'"</Filter>
</Link>
</Links>
</Directory>
<Directory name="c:\Projects\Artwin\DocImportDir\AUF\">
<Actions>
<Action type="MoveFile" event="OnSuccess">".\\Archiviert\\"</Action>
</Actions>
<DocumentFields>
<KEYWORD>"Auftrag " + GetFileName().Split('_', '.')[1] + " vom " + GetFileDate().ToShortDateString()</KEYWORD>
<OWNERNAME>GetFileName().Substring(0, 2)</OWNERNAME>
<ART_DOKTYP>"Auftrag"</ART_DOKTYP>
</DocumentFields>
<Version type="NewDocument"/>
<Links>
<Link object="ADDRESS" attribute="VERBINDUNG">
<Filter>"ADRNUMBER = '" + GetFileName().Split('_')[0].Remove(0, 2) + "'"</Filter>
</Link>
</Links>
</Directory>
<Directory name="c:\Projects\Artwin\DocImportDir\REC\">
<Actions>
<Action type="MoveFile" event="OnSuccess">".\\Archiviert\\"</Action>
</Actions>
<DocumentFields>
<KEYWORD>"Rechnung " + GetFileName().Split('_', '.')[1] + " vom " + GetFileDate().ToShortDateString()</KEYWORD>
<OWNERNAME>GetFileName().Substring(0, 2)</OWNERNAME>
<ART_DOKTYP>"Rechnung"</ART_DOKTYP>
</DocumentFields>
<Version type="NewDocument"/>
<Links>
<Link object="ADDRESS" attribute="VERBINDUNG">
<Filter>"ADRNUMBER = '" + GetFileName().Split('_')[0].Remove(0, 2) + "'"</Filter>
</Link>
</Links>
</Directory>
</DocumentImporter>

Beispiel 4

Anforderung | Beispiel 4
Lösung | Beispiel 4
In einem Verzeichnis liegen PDF Dateien mit folgendem Dateiaufbau: 39851_Dokumentenspezifikation.pdf Anhand der ersten Nummer (bis zum _) soll eine bewertete Verknüpfung zu einem eigenen Objekt erstellt werden. Das Stichwort soll in CAS genesisWorld folgendermassen gesetzt werden: Dokumentenspezifikation [Nummer], die ersten 5 Zeichen werden zudem ins Feld Nummer des Dokumentes geschrieben. Als Teilnehmer wird "Alle öffentlich" gesetzt. Falls bereits ein Dokument mit der gleichen Nummer bestehen sollte, wird das Dokument als Version eingecheckt. Nach dem Archivieren soll das Ursprungsdokument gelöscht werden.
Mit folgender Definition kann der gewünschte Import umgesetzt werden:
<?xml version="1.0" encoding="utf-8" ?>
<DocumentImporter>
<Directory name="c:\Projects\Artwin\DocImportDir\">
<Actions>
<Action type="DeleteFile" event="OnSuccess"></Action>
</Actions>
<DocumentFields>
<KEYWORD>"Dokumentenspezifikation " + GetFileName().Split('_')[0]</KEYWORD>
<DOCNUMBER>GetFileName().Substring(0,5)</DOCNUMBER>
<OWNERNAME>"Alle (öffentlich)"</OWNERNAME>
</DocumentFields>
<Version type="NewVersionOrDocument">
<Filter>"DOCNUMBER = '" + GetFileName().Split('_')[0] + "'"</Filter>
</Version>
<Links>
<Link object="TASK" attribute="Verbindung">
<Filter>"TSKNUMBER = '" + GetFileName().Split('_')[0] + "'"</Filter>
</Link>
</Links>
</Directory>
</DocumentImporter>

Tipps

Wir haben in diesem Abschnitt einige Tipps und Parametern zusammengetragen, welche weitere Möglichkeiten aufzeigen.

Anforderung Teilnehmer/Rechte übernehmen

Anforderung | Teilnehmerrechte
Lösung Teilnehmerrechte
Dokumente sollten zu Projekten primärverknüpft werden. Dabei sollen die Teilnehmer sowie die Fremdzugriffsrechte aus dem bestehenden CRM-Projekt übernommen werden. Die Projektnummer steht an erster Stelle des Dateinamen und im CRM steht die dazugehörige Nummer im Standardfeld (PRJNUMBER).
Mit folgender Definition im Bereich der DocumentFields kann das gewünschte Ergebnis erzielt werden:
<OWNERNAME>GetStringOfRecord("PROJECT","OWNERNAME", "PRJNUMBER = '" + GetFileName().Split('_', '(')[0] + "'")</OWNERNAME>
<FOREIGNEDITPERMISSION>GetStringOfRecord("PROJECT","FOREIGNEDITPERMISSION", "PRJNUMBER = '" + GetFileName().Split('_', '(')[0] + "'")</FOREIGNEDITPERMISSION>

Anforderung Datum aus dem Dateinamen lesen

Anforderung | Datum auslesen
Lösung | Datum auslesen
Der Dateiname enthält ein Datum, welches ausgelesen und in ein Datums-Feld geschrieben werden soll. Beispiel: Muster_21092015.pdf
Mit folgender Definition im Bereich der DocumentFields kann das gewünschte Ergebnis erzielt werden.
<DOCDATE>DateTime.ParseExact(GetFileName().Split('_', '.')[1], "ddMMyyyy", System.Globalization.CultureInfo.InvariantCulture);</DOCDATE>

Weiteres Beispiel

Anforderung | Datum auslesen 2
Lösung | Datum auslesen 2
Der Dateiname enthält ebenfalls ein Datum, welches ausgelesen und in das Datums-Feld geschrieben werden soll. In dem Beispiel ist das Datum aber nicht immer durch ein eindeutiges Trennzeichen ermittelbar und das Datum enthält "-" Zeichen dazwischen: Beispiel: 11411_Muster_KG-22-04-21.xlsm oder 18023_Muster1_GmbH_22-04-21.xlsm
Mit folgender Definition im Bereich der DocumentFields kann das gewünschte Ergebnis erzielt werden. Weitere Beispiele der Formatzeichenfolgen sind auf der .NET Webseite zu finden.
<DOCDATE>DateTime.ParseExact(System.IO.Path.GetFileNameWithoutExtension(GetFileName()).Substring(System.IO.Path.GetFileNameWithoutExtension(GetFileName()).Length-8, 8).Replace("-", ""), "ddMMyy",System.Globalization.CultureInfo.InvariantCulture)</DOCDATE>
Wenn das obige Datum im Stichwort verwendet werden möchte, kann dies folgendermassen umgewandelt werden:
<KEYWORD>"Dokument vom " +System.IO.Path.GetFileNameWithoutExtension(GetFileName()).Substring(System.IO.Path.GetFileNameWithoutExtension(GetFileName()).Length-8, 8).Replace("-", ".")</KEYWORD>

Anforderung Wert aus Verknüpfung auslesen

Anforderung | Wert aus Verknüpfung
Lösung | Wert aus Verknüpfung
Beim Archivieren soll der Firmenname aus der verknüpften Adresse gezogen und ins Feld Schlagworte (NOTES) geschrieben werden. Im Dateiname ist die Kundennummer enthalten, Beispiel: 12232_Dokument.pdf
Mit der Funktion GetStringOfRecord kann ein Datenobjekt und ein dazugehöriges Feld ermittelt werden. Dabei kann neben der Quelle auch ein Filter hinterlegt werden, wenn beispielsweise nur im Bereich der Firmen gesucht werden soll.
<NOTES>GetStringOfRecord("ADDRESS", "COMPNAME", "ADRNUMBER = '" + GetFileName().Split('_')[0] + "' and gwiscompany = 1 and gwiscontact=0")</NOTES>