std.IndexDataChanged
Dieser Job teilt dem Indexserver mit, dass sich die Indexdaten eines Objekts geändert haben.
|
Der Job ist ein serverinterner Folgejob und wird im Allgemeinen nicht von außen aufgerufen. Es gibt zwei Auslöserpfade:
Der Job ändert die Indexdaten nicht selbst — diese wurden bereits durch den vorangehenden Schreibvorgang geschrieben. Sowohl das Server-Event Die geänderten Metadaten werden dem Job nicht als Parameter übergeben (siehe Eingabeparameter — nur |
1. Eingabeparameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
|
INT |
Ja |
|
|
INT |
Ja |
Aktion, die mit dem Objekt ausgeführt wurde (siehe Aktions-IDs unten) |
|
INT |
Ja |
ID des Objekts |
|
INT |
Ja |
Typ des Objekts |
|
STRING |
Ja |
Information, die in die DB-Tabelle |
|
STRING |
Ja |
Eindeutiger Schlüssel für die DB-Tabelle |
2. Aktions-IDs
| ID | Beschreibung | ID | Beschreibung |
|---|---|---|---|
1 |
Elektronische Signatur |
28 |
Objekt wiederhergestellt |
2 |
Objekt angelegt |
29 |
Objekt endgültig gelöscht |
3 |
Indexdaten geändert |
30 |
Kenntnisnahme bestätigt |
4 |
Dokument geändert |
31 |
Objektinfo |
5 |
Dokument archiviert |
32 |
Besitzer des Objektes gewechselt |
6 |
Dokument gelöscht |
33 |
Variante aktiviert |
7 |
Dokument ausgegeben |
34 |
Variante deaktiviert |
8 |
Dokumentstatus geändert |
35 |
Variante gelöscht |
9 |
Dokumentstatus geändert |
36 |
Variante angelegt |
10 |
Dokument erzeugt |
37 |
Typenlosem Objekt Typ zugewiesen |
11 |
Verknüpfung über Notizen |
38 |
Dokument aus Ablage verschoben |
12 |
Verknüpfung aufgelöst |
39 |
Verweiskopie erstellt |
13 |
SQL-Abfrage |
40 |
Benutzerinfo |
14 |
SQL-Kommando |
41 |
Retentionzeit gesetzt |
15 |
Elektronische Signatur |
42 |
Dokument dearchiviert |
16 |
Signiertes Dokument gelöscht |
43 |
Dokumenttyp geändert |
17 |
Version angelegt |
44 |
Vorschauanmerkung erstellt |
18 |
Version gelöscht |
45 |
Vorschauanmerkung geändert |
19 |
Wiederhergestellt aus Version |
46 |
Vorschauanmerkung gelöscht |
20 |
Volltextanfrage |
47 |
Kenntnisnahme durch Passwort bestätigt |
21 |
Dokument verschoben |
48 |
Freigabe erstellt |
22 |
Register verschoben |
49 |
Freigabe geändert |
23 |
Ordner zusammengeführt |
50 |
Freigabe gelöscht |
24 |
Ordner zusammengeführt |
51 |
Aus Kopie erstellt |
25 |
Register zusammengeführt |
52 |
Aus einem Standort entfernt |
26 |
Register zusammengeführt |
53 |
Status 'aktive Variante' geändert |
27 |
Objekt zum Löschen vorgemerkt |
54 |
Weitere Variante angelegt |
3. Übliche Aktionen (Beispiel)
In der Praxis tritt bei diesem Job nur ein kleiner Teil der oben gelisteten Aktionen auf. Beispielhaft die in einer Produktivumgebung tatsächlich beobachteten Werte mit dem Job, der sie typischerweise auslöst:
| Action | Bedeutung | Auslösender Job |
|---|---|---|
3 |
Indexdaten geändert |
dms.XMLUpdate, dms.XMLImport (Update-Zweig) |
2 |
Objekt angelegt |
dms.XMLInsert, dms.XMLImport (Insert-Zweig) |
9 |
Dokumentstatus geändert |
Statuswechsel beim Ablegen bzw. Zurückschreiben eines Dokumentes (std.StoreInWork, std.StoreInCacheByID usw.) |
7 |
Dokument ausgegeben |
Anforderung eines Dokumentes zur Bearbeitung (std.StoreInCache mit schreibendem |
| Die Werte wurden per Job-Monitoring beobachtet. Da der enaio® Windows Client den Job selbst aufruft (siehe Hinweis am Seitenanfang), kann eine so beobachtete Ausführung sowohl aus dem serverinternen Pfad der XML-Jobs als auch direkt aus dem Client stammen. |
4. Auslösung durch die DMS-XML-Jobs
Ob ein XML-Job den Folgejob auslöst, hängt allein davon ab, ob im übergebenen XML mindestens ein <Field> enthalten ist (verifiziert an enaio® 12.0):
| Fall | Ausgelöst | Action |
|---|---|---|
dms.XMLUpdate, Feld mit geändertem Wert |
ja |
|
dms.XMLUpdate, Feld mit identischem Wert |
ja |
|
dms.XMLUpdate ohne jedes Feld ( |
nein |
— |
dms.XMLImport, Update-Zweig, identische Werte |
ja |
|
dms.XMLImport, Insert-Zweig |
ja |
|
ja |
|
| Der Server vergleicht die übergebenen Werte nicht mit dem Bestand. Ein identisch übertragener Wert zählt als Schreibvorgang und löst den Folgejob samt Historieneintrag in osobjhist aus. Stumm bleibt nur ein Request ganz ohne Feld — unveränderte Felder aus dem XML weglassen ist damit die einzige Möglichkeit, den Historieneintrag zu vermeiden. |
5. Als Hook verwenden
Ein eigenes Server-Event für Indexdatenänderungen existiert nicht. Für die serverseitige Reaktion auf eine Indexdatenänderung stehen zwei Wege offen:
-
KernelBeforeJobbzw.KernelAfterJoban diesen Job binden (siehe Indexdatenänderung abfangen). Beide Skripte laufen hier erst nach der Änderung. -
OnObjectHistoryEntry(5011) verwenden. Das Event ist nicht job-gebunden und feuert bei jedem Historieneintrag.
Ein Hook an dms.XMLUpdate deckt nur den API-Pfad ab und verpasst jede Änderung, die der enaio® Windows Client vornimmt. Nur std.IndexDataChanged liegt auf beiden Schreibpfaden.
|