Projekt

Allgemein

Profil

Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) » Historie » Version 4

[E] Frank S, 02.03.2017 19:22

1 1 [E] Frank S
h1. Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren)
2
3
[[Einlesen externer Dokumente ins DMS]] (Dateien suchen und über Dateinamen verlinken)
4
5
6
7 2 [E] Frank S
h2. Felder und Parameter in Quell-SQL:
8 1 [E] Frank S
9 2 [E] Frank S
Liste der zu importierenden Dokumente
10 1 [E] Frank S
<pre><code>
11
&ControlFields = System-Felder als "Spalte" in SELECT aufnehmen (Status, CimRed, CimYellow, CimGreen, ImportedPDID)
12
:xxx           = Parameter aus "Importieren"
13
*              = Pflichtfelder
14
15
ImportSource   "import" wenn leer                       -> pd_source
16
ImportID     * externe ID                               -
17
ImportFile   * Pfad+Dateiname                           -> pd_dokumentfile / pd_dmsremotefile
18
FileName       Originaler Dateiname                     -> pd_dokumentfile (nicht für FileLinks)
19 4 [E] Frank S
AlternateFile  Anderer Dateiname falls ImportFile nicht existiert
20
                  nur Pfad inkl. "/", nur Dateiname oder Beides
21
                  Dateiname kann * oder ? enthalten, aber es darf nur eine Datei gefunden werden
22 3 [E] Frank S
Recursive      Suche in Unterverzeichnissen von AlternateFile
23 1 [E] Frank S
24
DestTable    * Besitzer                                 -> pd_tablename
25
DestDBRID    * Besitzer                                 -> pd_dbrid
26
DokIdent       wenn leer über Trigger gefüllt           -> pd_dokident
27
28
DokuType       Dokumenttyp                              -> pd_doktype
29
DokuParent     Pfad in Objektablage                     -> pd_parentnodeident
30
                 implizit über DokuType oder explizit über DokuParent
31
                 Pfad siehe Objektablage > NodeID einblenden
32
33
Caption        Bezeichnung im Baum, Dateiname wenn leer -> pd_path
34
Description    Beschreibungstext                        -> pd_txt
35
36
CreateDate     Erstellungsdatum, heute wenn leer        -> pd_date
37
ModifiedDate   Änderungsdatum                           -> pd_modified
38
Preview        als Vorschaudokument                     -> pd_print
39
Hidden         ausgeblendet, import alter/gelöschter Dokumente -> pd_deletable
40
Archive        Dokument sofort archivieren              -> pd_archive
41
RevisionPDID   Dokument revisionieren (über pd_id)      -> pd_revision_id
42
RevisionSID    Dokument revisionieren (über SourceID)   -> pd_revision_id
43
44
LinkFile       Datei nur verlinken [BOOL / VARCHAR = FileName, vorm Verlinken umbenennen/verschieben]
45
DeleteFile     Datei nach Import löschen [BOOL]
46
RenameFile     Datei nach Import umbennen [BOOL = *.imported / VARCHAR = NewFileName, mit Pfad = verschieben]
47
</code></pre>
48
49
50
51 2 [E] Frank S
h2. Parameter in Update-SQL:
52 1 [E] Frank S
53 2 [E] Frank S
Weitere Updates für jedes importierte Dokument (nach dem Import)
54
z.B. manuelle Verschlagwortung und Änderungen an den Zieldatensätzen.
55 1 [E] Frank S
<pre><code>
56
:ImportID
57
:DokuDBRID    (picndoku.dbrid)
58
:DokumentID   (pd_id)
59
&DestTable    (pd_tablename als Makro)
60
:DestTable    (pd_tablename)
61
:DestDBRID    (pd_dbrid)
62
:DokIdent     (pd_dokident)
63
:DokuType     (pd_doktype)
64
:RevisionID   (pd_revision_id)
65
66
Parameter aus "Importieren"
67
Felder aus dem SourceSQL
68
</code></pre>
69
70
Jedes importierte Dokument bekommt automatisch ein Schlüsselwort mit der ImportID, für spätere Suchen und Rückverfolgung.
71
Neue Imports prüfen, ob das Dokument bereit importiert wurde (ImportID existiert).
72
* Bei Problemen entweder die Prüfung deaktivieren (Dropdown am Prüfen- und Importknopf)
73
* oder andere ImportIDs verwenden (Prefix)
74
75
Das Schlüsselwort "ImportID" an der picndoku wird von diesem Importmodul verwendet.
76
ImportID mit z.B. einem anderem Prefix oder an allen anderen Tabellen können frei verwendet werden, um beispielsweise den Dokumentbesitzer (DestTable/DestDBRID) aus einem vorherrigen Tabellenimport zu finden.
77
78
79
80
h2. ImportIDs
81
<pre><code class="sql">
82
-- Alle importierten Dokumente 
83
SELECT pd_id, pd_path FROM picndoku JOIN recnokeyword ON r_dbrid = picndoku.dbrid WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID';
84
85
-- Alles Importierte
86
SELECT * FROM recnokeyword WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID';
87
88
-- "Überall" suchen
89
SELECT DestTable, DestDBRID
90
FROM (
91
  SELECT 'art'::VARCHAR AS DestTable, dbrid AS DestDBRID FROM art
92
  UNION SELECT 'adk', dbrid FROM adk
93
  UNION SELECT 'lifsch', dbrid FROM lifsch
94
  UNION SELECT 'picndoku', dbrid FROM picndoku
95
) AS x
96
JOIN recnokeyword ON x.DestDBRID = r_dbrid AND r_kategorie = 'ImportID' AND r_descr = :ImportID
97
98
-- ID speichern
99
SELECT TSystem.CreateKeyword('ImportID', :TableName, :ImportID, :TableDBRID, NULL, NULL);
100
</code></pre>
101
102
103
104
h2. Beispiele für Quell-SQL und Update-SQL
105
<pre><code class="sql">
106
SELECT
107
  ('TestA' || pd_id)::VARCHAR AS ImportID,
108
  pd_dokumentfile AS ImportFile,
109
  'art' AS DestTable,
110
  art.dbrid AS DestDBRID,
111
  &ControlFields
112
FROM picndoku
113
JOIN art ON ak_nr = 'ART2'
114
WHERE pd_dmsremotefile IS NULL
115
  AND (pd_dokumentfile ILIKE 'C:\%' OR pd_dokumentfile ILIKE 'H:\%')
116
</code></pre>
117
<pre><code class="sql">
118
UPDATE &DestTable SET irgendwas WHERE dbrid = :DestDBRID;
119
120
SELECT CreateRecNoKeyword(:DestTable, :DokIdent, :DokuDBRID);
121
</code></pre>