XML Scripting Tool-DTD

Dieser Abschnitt enthält die XML Scripting-Dokumententypdefinition (Document Type Definition, DTD). Weitere Informationen finden Sie in Einsetzen des XML Scripting Tools.

<!ELEMENT Root ( AddJdbcMaster | AddReplMaster | AddJdbcMirror | 
                  AddReplMirror | AddGroup | AddUser | AddSubscriptionSet | 
                  AddJdbcSubscription |	AddFileSubscription | 
                  AddDproprSubscription |AddUploadSubscription | 
                  AddCustomSubscription | AddAdapter |
                  AddServer | ResetUser | ResetGroup | ResetAll |
                  RemoveJdbcMaster | RemoveReplMaster | RemoveJdbcMirror | 
                  RemoveReplMirror | RemoveGroup | RemoveUser | 
                  RemoveSubscriptionSet | RemoveSubscription | 
                  RemoveAdapter | RemoveServer | AlterUser | 
                  AlterGroup | AlterFileSubscription | AlterJdbcSubscription | 
                  AlterUploadSubscription | AlterDproprSubscription | 
                  AlterSubscriptionSet | AlterJdbcMaster | AlterJdbcMirror |
                  AlterReplMaster | AlterReplMirror | AlterAdapter )*>
 
<!--Ein NULL-Element unter einem Knoten bedeutet, dass der Wert des Knotens null ist.
Dies ist notwendig, damit Null-Werte in die Datenbank eingefügt werden können.
Einige (unten aufgelistete) Elemente lassen es zu, dass Null-Werte angegeben werden.-->
 
<!ELEMENT NULL EMPTY>
 
 
<!--Auf Master- und Spiegeldatenbanken bezogene Befehle:
DB2 Everyplace Sync Server repliziert Daten aus den Masterdatenbanken
(bzw. Quellendatenbanken)
auf die Spiegeldatenbanken und synchronisiert
dann die Spiegeldatenbanken mit den mobilen 
Geräten. Daher muss eine
replizierte Subskriptionsdefinition auf eine Quellen- 
und eine
Spiegeldatenbank verweisen. Es gibt zwei Typen von Spiegeldatenbanken
und Masterdatenbanken, 
je nach Art der Replikationstechnik: JDBC (Java
Database Connectivity) und DPropR (DataPropagator Relational). DPropR-
Master- und 
DPropR-Spiegeldatenbanken werden mit der DB2-Replikation
repliziert. Daher müssen sowohl die Master- 
als auch die Spiegeldatenbanken
DB2-Datenbanken sein. JDBC-Master- und JDBC-Spiegeldatenbanken werden 
 
mit dem Sync Server-JDBC-Replikationssystem repliziert. Die Masterdatenbank
(Quellendatenbank) kann jede beliebige Datenbank sein, 
die über einen gut
funktionierenden JDBC-Treiber verfügt. Die Spiegeldatenbank muss eine
DB2-Datenbank sein. 
Bestimmte Datentypzuordnungen werden für eine
erfolgreiche Replikation (von der Master- zur Spiegeldatenbank) von Sync Server
vorgenommen, 
wenn es sich bei der Masterdatenbank nicht um eine DB2-Datenbank
handelt. Einige Datentypen in der 
Quellendatenbank werden möglicherweise nicht
unterstützt. Bei DPropR-Subskriptionen muss 
die Replikationskonfiguration
zwischen der Quellen- und der Spiegeldatenbank VOR 
Ausführung des XML-Tools
durchgeführt werden, um eine DPropR-Subskription (Befehl AddDproprSubscription)
hinzuzufügen, die das Synchronisieren der Spiegeldatenbank auf mobile Geräte
ermöglicht. Hierzu muss 
der Benutzer in der Steuerzentrale Quellentabellen als
Replikationsquelle definieren, um diese 
replizieren zu können. Dann muss der
Benutzer eine Replikationssubskription erstellen 
(die ein DPropR-Term ist).
DB2e Sync Server erwartet, dass das Apply-Qualifikationsmerkmal für eine 
DPropR-Replikationssubskription dem Namen der Spiegeldatenbank entspricht. 
Nehmen wir z. B. "S_MPFLEGE" in der MPFLEGE-Beispielanwendung. Der
Benutzer sollte den Namen dieser 
Spiegeldatenbank als Apply-Qualifikationsmerkmal
eingeben. Nach erfolgreicher Erstellung der Replikationssubskription kann 
der Benutzer das XML-Tool ausführen, um die Replikationssubskription auf 
Sync Server einzuführen und die Synchronisationsinfrastruktur in der 
Spiegel- und Steuerungsdatenbank zu erstellen. Der Name der Replikations-
subskription sollte dem Namen der 
DPropR-Tabellensubskription von Sync Server
entsprechen, die der Benutzer im XML-Tool verwenden möchte, 
um Komplikationen
zu vermeiden. MDAC (Verwaltungs-GUI von DB2e Sync Server) 
verwaltet die
Erstellung der Replikationssubskription und die Erstellung der Sync Server-
DPropR-Subskription, 
ohne Details dieses Prozesses offenzulegen. Auf diese
Weise kann derselbe 
Subskriptionsname für die Replikationssubskription
und die Sync Server-DPropR- 
Subskription verwendet werden.
-->
 
                  
<!-- Der Befehl AddJdbcMaster fügt die Verbindungsinformationen für eine
JDBC-Master- 
Datenbank (Quellendatenbank) ein. Auf diese Beschreibung wird von
Elementen verwiesen, 
die zu JDBC-Subskriptionen gehören, um die Quellendatenbank
der Subskription festzulegen. Dieser Befehl 
verfügt über die folgenden
untergeordneten Elemente:
"Datenbank" (maximale Länge = 255) ist die JDBC-URL für die Quellendatenbank.
"Treiber" (maximale Länge = 255) ist der JDBC-Treiberklassenname.
"Benutzer-ID" (maximale Länge = 128) ist die ID zum Herstellen einer Verbindung zu
  dieser Datenbank mit JDBC.
"Kennwort" (maximale Länge = 128) ist das Kennwort zum Herstellen einer Verbindung
  zu dieser Datenbank 
mit JDBC.-->
 
<!ELEMENT AddJdbcMaster (Datenbank, Treiber, Benutzer-ID, Kennwort)>
 
 
<!-- Der Befehl AddReplMaster fügt die Beschreibung einer DPropR-
Masterdatenbank (Quellendatenbank) ein. 
Auf diese Beschreibung wird von
Elementen verwiesen, die zu DPropR-Subskriptionen gehören, um die 
Quellendatenbank der Subskription festzulegen. Dieser Befehl 
verfügt über die folgenden untergeordneten Elemente:
"System" (maximale Länge = 128) ist der DB2-Systemname für die Quellendatenbank 
 (wie in der DB2 UDB-Steuerzentrale angezeigt).
"Exemplar" (maximale Länge = 8) ist der DB2-Exemplarname für die Quellendatenbank 
 (wie in der DB2 UDB-Steuerzentrale angezeigt).
"Datenbank" (maximale Länge = 18) ist der DB2-Datenbankname für die Quellendatenbank 
 (wie in der DB2 UDB-Steuerzentrale angezeigt).
"Benutzer-ID" (maximale Länge = 128) ist die ID zum Herstellen einer Verbindung zu
  dieser Datenbank mit JDBC.
"Kennwort" (maximale Länge = 128) ist das Kennwort zum Herstellen einer Verbindung
  zu dieser Datenbank 
mit JDBC.
"Aliasname der Datenbank" (maximale Länge = 18) ist der Aliasname für diese Datenbank.-->
 
<!ELEMENT AddReplMaster (System, Exemplar, Datenbank, Benutzer-ID, Kennwort, 
                                                         Aliasname der Datenbank?)>
	  <!ELEMENT System    (#PCDATA)>
	  <!ELEMENT Exemplar  (#PCDATA)>
	  <!ELEMENT Datenbank (#PCDATA)>
	  <!ELEMENT Benutzer-ID (#PCDATA)>
	  <!ELEMENT Kennwort    (#PCDATA|NULL)*>
<!--Datenbankkennwörter können nicht null sein, Gruppenkennwörter können
jedoch null sein.-->
  <!ELEMENT Aliasname der Datenbank (#PCDATA|NULL)*>
 
 
<!-- Der Befehl AddJdbcMirror fügt die Verbindungsinformationen für eine
JDBC-Spiegeldatenbank ein. 
Auf diese Beschreibung wird von Elementen verwiesen,
die zu JDBC-Subskriptionen gehören, um die 
Spiegeldatenbank der Subskription
festzulegen. Dieser Befehl 
verfügt über die folgenden untergeordneten Elemente:
"Datenbank" (maximale Länge = 255) ist der DB2-Datenbankname für die
Spiegeldatenbank 
 (wie in der DB2 UDB-Steuerzentrale angezeigt).
"Treiber" (maximale Länge = 255) ist der JDBC-Treiberklassenname.
"Benutzer-ID" (maximale Länge = 128) ist die ID zum Herstellen einer Verbindung zu
  dieser Datenbank mit JDBC.
"Kennwort" (maximale Länge = 128) ist das Kennwort zum Herstellen einer Verbindung 
  zu dieser Datenbank mit JDBC.
Der Befehl AddCustomLogic ermöglicht die Zuordnung mindestens einer benutzer-
definierten 
CustomLogic-Implementierungskasse zu dieser Spiegeldatenbank, um das 
Replikationsverhalten anzupassen. Beachten Sie, dass Fehler in der angepassten
Logikimplementierung 
dazu führen, dass die Replikation fehlschlägt. Wenn Sie
dennoch auf eine Replikation bestehen, können versuchte Änderungen an
replizierten 
Subskriptionen blockiert werden.
-->
 
<!ELEMENT AddJdbcMirror (Datenbank, Treiber, Benutzer-ID, Kennwort, 
                            Synchronisationsfenster?, AddCustomLogic* )>
	  <!ELEMENT Treiber     (#PCDATA)>
	  <!ELEMENT Synchronisationsfenster  (#PCDATA|NULL)*>
 
 
<!-- Der Befehl AddReplMirror fügt die Beschreibung einer DPropR-
Spiegeldatenbank ein. 
Auf diese Beschreibung wird von Elementen verwiesen,
die zu DPropR-Subskriptionen gehören, um die 
Spiegeldatenbank der
Subskription festzulegen. Dieser Befehl 
verfügt über die folgenden
untergeordneten Elemente:
"Datenbank" (maximale Länge = 18) ist der DB2-Datenbankname für die Spiegeldatenbank
 (wie in der DB2 UDB-Steuerzentrale angezeigt).
"Benutzer-ID" (maximale Länge = 128) ist die ID zum Herstellen einer Verbindung zu
  dieser Datenbank mit JDBC.
"Kennwort" (maximale Länge = 128) ist das Kennwort zum Herstellen einer Verbindung 
  zu dieser Datenbank mit JDBC.
"Synchronisationsfenster" (ganze Zahl) ist die Zeit in Sekunden, die für die
  Wiederholung der Replikation zwischen Master- 
und Spiegeldatenbank benötigt wird.
Der Befehl AddCustomLogic ermöglicht die Zuordnung mindestens einer benutzer-
definierten 
CustomLogic-Implementierungsklasse zu dieser Spiegeldatenbank, um das 
Replikationsverhalten anzupassen. 
-->
  
<!ELEMENT AddReplMirror (Datenbank, Benutzer-ID, Kennwort, Synchronisationsfenster,
AddCustomLogic*)>
 
 
 
<!--Benutzer und Gruppen in DB2 Everyplace Sync Server:
Sync Server verwendet das Konzept des "Benutzers" (siehe Befehl AddUser), um 
einem Gerät Subskriptionen zuzuordnen, die für das Gerät synchronisiert
werden müssen. 
Ein Benutzer gehört zu einer Gruppe (siehe Befehl AddGroup). 
Eine Gruppe enthält Subskriptionsgruppen (siehe Befehl AddSubscriptionSet). 
Eine Subskriptionsgruppe enthält Subskriptionen (siehe AddXYZSubscription-Befehle).
Subskriptionen definieren die Untergruppe des Datenbankschemas, das mit der
mobilen Datenbank synchronisiert wird.
 
Diese XML-DTD beschreibt, wie diese konzeptuellen Entitäten erstellt und einander
zugeordnet 
werden. Bei LDAP-fähigen Installationen ignoriert das XML-Tool
 
Befehle wie das Hinzufügen oder Entfernen von Benutzern/Gruppen. Die Verwaltung
von Benutzern/Gruppen
wird nicht von Sync Server ausgeführt. 
-->
 
 
<!--Der Befehl AddGroup fügt die Beschreibung einer Gruppe ein. 
"Name" (maximale Länge = 18) ist ein eindeutiger Gruppenname.
"Beschreibung" (maximale Länge = 128) ist eine Textbeschreibung.
"Aktiviert" ist "Y" oder "N". Bei "Y" können die Mitglieder dieser Gruppe
 synchronisieren, 
bei "N" können sie dies nicht.
-->
 
<!ELEMENT AddGroup (Name, Beschreibung?, Aktiviert, 
                          (IncludeSubscriptionSet | AddDataFilter)*) >
	  <!ELEMENT Name (#PCDATA)>
	  <!ELEMENT Beschreibung (#PCDATA|NULL)*>
   <!ELEMENT Aktiviert (#PCDATA)>
 
 
<!--Der Befehl IncludeSubscriptionSet fügt eine Subskriptionsgruppe
(eine logische Gruppierung
von Subskriptionen, die zusammen synchronisiert
werden) in die Gruppe ein, die diesen 
Befehl enthält. 
Eine Gruppe muss nicht-leere Subskriptionsgruppen enthalten, um zu beschreiben,
welche Art von 
Datengruppenelementen (Benutzern) synchronisieren wird, damit eine
Datensynchronisation 
möglich ist. 
"Name" (maximale Länge = 18) ist der Name der zugehörigen Subskriptionsgruppe.
"Reihenfolge" ist eine ganze Zahl, die anzeigt, welche Subskriptionsgruppe an erster
Stelle steht. Wenn nicht anders angegeben, wird die Reihenfolge verwendet, 
in der die Subskriptionsgruppen im Befehl AddGroup erscheinen.
Wenn die durch "Name" angegebene Subskriptionsgruppe nicht vorhanden ist, schlägt
der
Befehl AddGroup fehl, der diese Subskriptionsgruppe aufnehmen will. Die Gruppe
kann nicht 
erstellt werden.
-->
<!ELEMENT IncludeSubscriptionSet (Name, Reihenfolge?)>
 
 
<!--Der Befehl AddDataFilter deklariert einen Datenfilter für die Gruppe, die 
diesen Befehl enthält. Datenfilter ermöglichen das Versenden eines Abschnitts
einer 
Quellentabelle an die mobile Datenbank einer Gruppe oder eines Benutzers.
Sie ermöglichen auch 
eine leicht unterschiedliche Erstellung einer (mobilen)
Zieldatenbank auf der Basis der 
Datenfilter des Benutzers. 
(Siehe auch Befehle ColumnDataFilter und Constrnt). Ein Datenfilter 
besteht aus
einem Namen und einem Wert. 
 
"Name" (maximale Länge = 18) ist ein beliebiger Name, auf den in der eigentlichen 
WHERE-Klausel zum Filtern verwiesen wird (solche WHERE-Klauseln werden 
pro Tabelle in den Subskriptionseinstellungen angegeben). 
 
"Wert" (maximale Länge = 36) gibt den Standardwert an  
(jeder Benutzer kann ihn mit seinen Einstellungen überschreiben). 
 
Die zu synchronisierenden Daten können durch eine Bedingung wie die Folgende
gefiltert werden: 
ACOLUMN IN (SELECT ACOLUMN FROM TABLE :name=wert)' in der 
WHERE-Klausel einer
Subskriptionstabelle (von der Spiegel- zur Zieldatenbank).
 
Wenn der Befehl AddUser den Befehl OverrideDataFilter enthalten soll, MUSS die
Benutzergruppe 
dieselben Datenfilter erstellt haben. Das heißt, Datenfilter
werden 
für Gruppen erstellt und manchmal von Benutzern überschrieben.
 
Der Grund für das Erstellen von Datenfiltern auf Gruppenebene besteht darin,
dass Gruppen 
Subskriptionen enthalten, die diese Datenfilter in ihren
WHERE-Klauseln zum Filtern von Zeilen 
verwenden. Wenn einige Benutzer einen
bestimmten Datenfilter nicht hätten, könnten sie 
eine Subskription, die diesen
Datenfilter verwendet, nicht synchronisieren. Daher 
sind die Abhängigkeiten
so gestaltet, dass eine Gruppe mit einer Subskription, in der 
das Filtern von
Zeilen angegeben wurde (vom Spiegel zum mobilen Gerät), die zugehörigen
Datenfilter 
definiert haben muss und die Benutzer diese Datenfilter übernehmen. 
 
Wenn weitere Datenfilter definiert werden, die von der Subskription nicht
verwendet werden, bleiben diese 
wirkungslos und werden während der
Synchronisation ignoriert. 
 
Datenfilter können in den WHERE-Klauselfiltern (Master zu Spiegel) nicht
verwendet werden, um 
replizierte Zeilen zu filtern. Ursache dafür ist, dass
die Replikation nicht 
im Kontext einer Gruppe aktiv ist. Die Replikation ist
unabhängig von allen Gruppen, daher 
ist ein Gruppendatenfilter nicht relevant
und wird, falls irrtümlich verwendet, wahrscheinlich 
SQL-Fehler während der 
Replikation verursachen.
 
(Siehe auch Befehle ColumnDataFilter und Constrnt).
-->
	<!ELEMENT AddDataFilter (Name, Wert?) >
	<!ELEMENT Wert (#PCDATA|NULL)*>
  
<!ELEMENT OverrideDataFilter (Name, Wert?) >
 
 
<!--Der Befehl AddUser erstellt einen Benutzer. Jede mobile Datenbank muss
einen 
Benutzer für die Synchronisation mit Sync Server haben. 
 
"Name" (maximale Länge = 18) ist der eindeutige Name eines Benutzers.
 
"Benutzergruppe" (maximale Länge = 18) ist der Name einer vorhandenen Gruppe. 
Wenn eine solche Gruppe nicht vorhanden ist, schlägt AddUser fehl, und der
Benutzer kann nicht 
hinzugefügt werden.
 
"Beschreibung" (maximale Länge = 128) ist eine Textbeschreibung des Benutzers.
 
"Kennwort" (maximale Länge = 18) ist das Kennwort, das der Benutzer auf dem 
 
mobilen Gerät für die Synchronisation mit Sync Server angeben muss.
 
Das Element OverrideDataFilter ermöglicht es diesem Benutzer, einen angepassten
Wert für 
einen der Benutzergruppe hinzugefügten Datenfilter bereitzustellen.
Siehe hierzu auch die Beschreibung des 
Befehls AddDataFilter.
-->
<!ELEMENT AddUser (Name, Benutzergruppe?, Beschreibung?, Kennwort?, LDAP-Merkmale?, 
                        (OverrideDataFilter | AddDevice)*) >
	  <!ELEMENT Benutzergruppe (#PCDATA|NULL)*>
 
 
<!--Der Befehl AddDevice fügt eine Gerätebeschreibung für den Benutzer
hinzu. Normalerweise 
werden derartige Beschreibungen von Sync Server während der
Synchronisation 
auf der Basis des Geräts erstellt, das tatsächlich die
Synchronisation ausführt. Dieser Befehl 
wird für bestimmte Anwendungsbeispiele
und Sicherungen bereitgestellt, die 
diese Funktionalität möglicherweise erfordern.
"ID" (maximale Länge = 32) wird vom Server generiert.
 
"Typ" ist eine Zeichenfolge für einen bestimmten Gerätetyp. Die für diesen
Zweck 
verwendeten Zeichenfolgekonstanten sind unten aufgelistet. Der in diesem
Befehl verwendete Gerätetyp 
gehört auch dazu. Diese Gerätetypen sind
ganzen Zahlen in der 
Steuerungsdatenbank zugeordnet. Falls notwendig, können
Benutzer diese Zahlen auch in 
XML verwenden (für den Fall, dass in letzter
Minute ein neuer Gerätetyp hinzukommt und das XML- 
Tool diesen nicht kennt). 
Die folgenden Zeichenfolgen für Gerätetypen sind möglich:
  PALM          oder PALM_M68K
  WINCE         oder WINCE_ARM
  WIN32         oder WIN32_X86
  WIN32UNICODE  oder WIN32UNICODE_X86
  NEUTRINO      oder NEUTRINO_X86
  MIDP
  LINUX         oder LINUX_X86
  EMBEDDEDLINUX oder EMBEDDEDLINUX_X86
  EPOC          oder EPOC_ARM
  EPOCUNICODE   oder EPOCUNICODE_ARM
 
Es sind außerdem einige andere mögliche Varianten auf der Basis der 
Geräteprozessoren definiert worden. Diese werden jedoch noch nicht von
Sync Server verwendet. Wenn also 
z. B. XML als Gerätetyp WIN32_MIPS
angibt, wird dieser Wert 
standardmäßig in WIN32 umgesetzt, da noch nicht
zwischen 
den Prozessoren unterschieden wird. Mögliche Zeichenfolgekonstanten
sind:
  WINCE_SH3
  WINCE_SH4
  WINCE_MIPS
  WINCE_X86
  EPOC_X86
  EPOCUNICODE_X86
  
Das Feld "Aktiviert" besteht aus einem Zeichen, entweder "Y" oder "N".
-->  
<!ELEMENT AddDevice (ID, Typ, Aktiviert)>
  <!ELEMENT ID (#PCDATA) >
 
 
<!--
Bei LDAP-fähigen Installationen werden Benutzer- und Gruppen-
informationen für Sync Server
vom LDAP-Server abgerufen und in der
Steuerungsdatenbank gespeichert, um sie 
Subskriptionsgruppen zuzuordnen.
Bei der Erstellung eines Benutzers mit dem XML-Tool 
müssen die LDAP-Merkmale
des Benutzers angegeben werden, damit
der Benutzer auf dem LDAP-Server
erstellt werden kann. Vor- und Nachname sind obligatorische Angaben. 
Für eine Synchronisation mit Sync Server muss der LDAP-Benutzer außerdem 
zu einer Synchronisationsgruppe gehören. Für die Zuordnung eines Benutzers
zu einer Synchronisationsgruppe kann mindestens ein 
AddToSyncGroup-Befehl
verwendet werden. Synchronisationsgruppen werden in LDAP-spezifischen 
Merkmalen der Sync Server-Installation definiert. 
Der Name einer Synchronisationsgruppe sollte mit "DB2e" beginnen.
Anmerkung: Während der Migration einer Nicht-LDAP-Installation auf eine
LDAP-fähige Installation 
verwendet Sync Server für den Vor- und Nachnamen 
standardmäßig "DSY", um Benutzer auf dem LDAP-Server zu erstellen.
-->
<!ELEMENT LDAP-Merkmale (Vorname, Nachname, AddToSyncGroup*, 
                                               RemoveFromSyncGroup*, E-Mail?, 
Bevorzugte Sprache?, Zweck?)>
	<!ELEMENT Vorname (#PCDATA)>
	<!ELEMENT Nachname (#PCDATA)>
	<!ELEMENT AddToSyncGroup (#PCDATA)>
	<!ELEMENT RemoveFromSyncGroup (#PCDATA)>
	<!ELEMENT E-Mail (#PCDATA)>
	<!ELEMENT Bevorzugte Sprache (#PCDATA)>
	<!ELEMENT Zweck (#PCDATA)>
 
 
<!--Eine Subskriptionsgruppe ist eine logische Zusammenfassung von
Subskriptionen, die 
zusammen synchronisiert werden. Eine Gruppe von Benutzern
synchronisiert mit einer definierten 
Subskriptionsgruppe, nicht mit einzelnen
Subskriptionen. 
"Name" (maximale Länge = 18) ist der Name der Subskriptionsgruppe.
"Beschreibung" (maximale Länge = 128) ist eine Textbeschreibung.
"Kennung" (maximale Länge = 128) - wird nicht verwendet.
"IncludeSubscription" verweist auf eine vorhandene Subskription, die 
in diese
Subskriptionsgruppe aufgenommen werden sollte. Wenn die Subskription nicht
vorhanden ist, 
schlägt die Erstellung dieser Subskription fehl.
-->  
<!ELEMENT AddSubscriptionSet (Name, Beschreibung?, Kennung?, 
     (IncludeSubscription*))>
	<!ELEMENT Signatur (#PCDATA|NULL)*>
 
 
<!--Der Befehl IncludeSubscription wird von den AddSubscriptionSet-Befehlen
verwendet.
"Name" (maximale Länge = 18) ist der Name der vorhandenen Subskription,
die 
eingeschlossen wird. "Reihenfolge" ist eine ganze Zahl, die die Reihenfolge der
Subskription 
im Verhältnis zu anderen Subskriptionen angibt, die ebenfalls in der
übergeordneten 
Subskriptionsgruppe enthalten sind. Die in einer Subskriptionsgruppe
enthaltenen Subskriptionen werden 
in dieser Reihenfolge synchronisiert. Falls
nicht anders angegeben, wird die Reihenfolge der Auflistung
in XML verwendet.
--> 
<!ELEMENT IncludeSubscription (Name, Reihenfolge?)>
 
 
<!--Der Befehl AddJdbcSubscription erstellt eine JDBC-Subskription, um 
relationale Daten einer Spiegeldatenbank mit den mobilen Datenbanken zu
synchronisieren. 
Die Replikation von Master zu Spiegel wird ebenfalls durch
den 
Sync Server-Replikationsmechanismus und nicht durch DPropR ausgeführt.
"Name" (maximale Länge = 18) ist der eindeutige Name der Subskription.
"Beschreibung" (maximale Länge = 128) ist eine Textbeschreibung.
"Unteradapter" (maximale Länge = 18) ist der Name eines vorhandenen Adapters,
den 
diese Subskription verwendet. 
"Verschlüsselungsstufe" ist eine ganze Zahl, die die zu verwendende
Verschlüsselungsstufe angibt.
0 bedeutet keine Verschlüsselung, 1 bedeutet 56-Bit-Verschlüsselung, und
2 bedeutet 128-Bit- 
Verschlüsselung. "Blockieren" ist entweder auf "Y" oder
"N" gesetzt. Bei "Y" kann die Subskription 
nicht synchronisiert werden.
Das Zielgerät wird darüber informiert, dass keine Subskription verfügbar
ist.
 
"Masterdatenbank" (maximale Länge = 255) ist die JDBC-URL-Adresse für die
Masterdatenbank. Die Kombination aus "Masterdatenbank" 
und "Mastertreiber"
verweist auf eine bereits vorhandene Masterdatenbankdefinition, 
die von allen sie verwendenden Subskriptionen gemeinsam benutzt wird.
 
"Mastertreiber" (maximale Länge = 255) ist der JDBC-Treiber, mit dem eine
Verbindung 
zur Masterdatenbank hergestellt wird. Die Datenbankdefinition,
auf die durch den zusammengesetzten Schlüssel 
"Masterdatenbank" und
"Mastertreiber" verwiesen wird, muss bereits definiert worden sein. 
(Siehe Befehl AddJdbcMaster für weitere Informationen).
 
"Spiegeldatenbank" und "Spiegeltreiber" verweisen auf eine bereits vorhandene
Spiegeldatenbankdefinition,
so wie "Masterdatenbank" dies für eine
Masterdatenbank übernimmt.
 
Der Befehl AddTable fügt dieser Subskription Datenbanktabellen hinzu, die 
synchronisiert oder repliziert werden sollen.
 
Anmerkung: Hochladesubskriptionen (die über keine Spiegel verfügen und nur aus 
mobilen Datenbanken in Quellendatenbanken einfügen) werden durch den Befehl
AddUploadSubscription ausgeführt.
 
Achtung: Das Hinzufügen einer Subskription blockiert betroffene Komponenten
des Systems 
(eine betroffene Spiegeldatenbank ist eine Hauptkomponente)
während dieser Operation, wodurch 
sie nicht verwendbar ist. Vermeiden
Sie, dass derartige Operationen häufig vorkommen, während die 
Server aktiv
sind, andernfalls wird die Serverleistung dadurch beeinträchtigt.
 
Das Attribut "Replizieren" wird entweder auf "TRUE" oder "FALSE" gesetzt.
Wenn keine Angabe vorhanden sind, 
wird es standardmäßig auf "TRUE" gesetzt.
Nach dem Erstellen einer Subskription wird eine Replikation 
ausgeführt, um
die neuen Spiegeltabellen zum Synchronisieren mit Daten zu füllen.
Wenn die
Replikation übersprungen wird (Replizieren="FALSE"), wird die 
Subskription
blockiert (für eine Synchronisation nicht verfügbar), bis die 
Replikation
entweder manuell oder im Rahmen einer terminierten Replikation für 
den
betreffenden Spiegel ausgeführt wird. Beim Hinzufügen, Löschen oder Editieren
mehrerer Subskriptionen kann es aus 
Leistungsgründen angebracht sein,
Replizieren="FALSE" zu setzen, um 
Replikationsversuche zu Beginn und am Ende
zu vermeiden, und die Replikation vor und 
nach Änderungen manuell durchzuführen.
In manchen Fällen können auch Fehler in der Subskriptionskonfiguration 
weitere
Replikationen verhindern. Dann muss die Replikation übersprungen werden, 
um in
der Subskription Korrekturen vornehmen zu können.
Zum manuellen Replizieren
kann der Benutzer das Befehlszeilentool "dsyreplicate" verwenden. 
-->
<!ELEMENT AddJdbcSubscription (Name, Beschreibung?, Unteradapter, 
               Verschlüsselungsstufe?, Blockieren?, Masterdatenbank, Mastertreiber, 
               Spiegeldatenbank?, Spiegeltreiber?, (AddTable*))>
  
  <!ATTLIST AddJdbcSubscription Replizieren (TRUE | FALSE) "TRUE">
 
  <!ELEMENT Unteradapter (#PCDATA)>
  <!ELEMENT Verschlüsselungsstufe (#PCDATA)>
  <!ELEMENT Blockieren (#PCDATA)>
  <!ELEMENT Masterdatenbank (#PCDATA)>
  <!ELEMENT Mastertreiber (#PCDATA)>
 	<!ELEMENT Spiegeldatenbank (#PCDATA|NULL)*>
  <!ELEMENT Spiegeltreiber (#PCDATA)>
  
  
<!--AddUploadSubscription erstellt eine Subskription, die Einfügungen aus
einer 
mobilen Datenbank in die Quellendatenbank ermöglicht. Hochladesubskriptionen
haben keine 
zugehörigen Spiegeldatenbanken.
Eine Beschreibung der untergeordneten Felder finden Sie in den Kommentaren zum
Befehl AddJdbcSubscription.
Der Befehl AddTable fügt dieser Subskription
Datenbanktabellen hinzu, die synchronisiert werden müssen.
-->
<!ELEMENT AddUploadSubscription (Name, Beschreibung?, Unteradapter, 
               Verschlüsselungsstufe?, Blockieren?, Masterdatenbank, Mastertreiber, 
               (AddTable*))>
                                
<!--Der Befehl AddDproprSubscription erstellt eine Subskription, um 
relationale Daten einer Spiegeldatenbank mit den mobilen Datenbanken zu
synchronisieren. Die Replikation 
von Master zu Spiegel wird ebenfalls durch
den DB2 DPropR-Replikationsmechanismus ausgeführt. DB2 DPropR 
verwendet das
Konzept einer Replikationssubskription. Dieses Konzept unterscheidet sich von
den 
hier beschriebenen Sync Server-Subskriptionen. Die DPropR-Replikations-
subskription 
muss mit Hilfe der DPropR-Tools konfiguriert werden, bevor die Sync
Server-Subskription 
erstellt werden kann. Verwenden Sie bei der Erstellung der
Replikationssubskription mit den DB2-DPropR-Tools 
denselben Subskriptionsnamen
wie die Sync Server-Subskription, die 
Sie verwenden möchten. Als Apply-
Qualifikationsmerkmal verwenden Sie den Namen der Spiegeldatenbank. 
Der Unterschied zwischen JDBC-Subskriptionen und DPropR-Subskriptionen ist der 
eingesetzte Replikationstyp. Da die DPropR-Replikation zwischen zwei DB2- 
 
Datenbanken ausgeführt wird, muss die Masterdatenbank (Quellendatenbank) eine
DB2-Datenbank sein, während dies bei JDBC-Subskriptionen 
jede Datenbank sein
kann, die mit JDBC kompatibel ist.
 
Die Felder "Name", "Beschreibung", "Unteradapter", "Verschlüsselungsstufe" und
"Blockieren" sind dieselben wie bei
anderen Subskriptionen.
Die für DPropR-Subskriptionen spezifischen Felder lauten:
"Mastersystem" (maximale Länge = 128) ist das DB2-Mastersystem.
"Masterexemplar" (maximale Länge = 8) ist das DB2-Masterdatenbankexemplar.
"Masterdatenbank" (maximale Länge = 18) ist der Name der Masterdatenbank.
Die Kombination aus "Mastersystem", "Masterexemplar" und "Masterdatenbank" bildet 
einen zusammengesetzten Schlüssel, der auf eine vorhandene
Masterdatenbank-
beschreibung verweist, die typischerweise durch den Befehl AddReplMaster
erzeugt wird.
Wenn eine solche Datenbankdefinition nicht vorhanden ist, schlägt
die Erstellung dieser Subskription 
fehl. 
"Spiegeldatenbank" (maximale Länge = 18) ist der Spiegeldatenbankname, der auf
eine 
Spiegeldatenbankdefinition verweist, die normalerweise durch den Befehl
AddReplMirror erstellt wird. 
Wenn eine solche Beschreibung nicht vorhanden ist,
schlägt die Erstellung dieser Subskription fehl. 
Sync Server geht davon aus,
dass das Apply-Qualifikationsmerkmal einer Replikationssubskription 
diesem
Spiegeldatenbanknamen entspricht.
 
Achtung: Das Hinzufügen einer Subskription blockiert betroffene Komponenten
des Systems (eine betroffene Spiegeldatenbank ist eine Hauptkomponente) während 
dieser Operation, wodurch sie für den Server 
nicht verwendbar ist. Vermeiden Sie,
dass derartige Operationen häufig vorkommen, 
während die Server aktiv sind.
Andernfalls 
wird die Serverleistung dadurch beeinträchtigt.
-->                            
<!ELEMENT AddDproprSubscription (Name, Beschreibung?, Unteradapter, 
                               Verschlüsselungsstufe? Blockieren?, Mastersystem, 
                               Masterexemplar, Masterdatenbank, Spiegeldatenbank, 
                               APPLY-Qualifikationsmerkmal, (AddTable*))>
                                  
  <!ATTLIST AddDproprSubscription Replizieren (TRUE | FALSE) "TRUE">
                                  
  <!ELEMENT Mastersystem    (#PCDATA)>
  <!ELEMENT Masterexemplar  (#PCDATA)>
  <!ELEMENT Apply-Qualifikationsmerkmal (#PCDATA)>
  
<!--Der Befehl AddFileSubscription erstellt eine Subskription, um Dateien
aus
dem Quellensystem mit einem mobilen Gerät zu synchronisieren.
Die spezifischen untergeordneten Felder lauten:
"Einheitentypen" ist eine Liste von durch ein Semikolon (";")
getrennten Einheitentypen, an die diese Datei gesendet werden kann.
Dies ist notwendig, da bestimmte Dateiformate für die verschiedenen Einheiten
unterschiedlich sein müssen. Mögliche Einheitentypen sind in den
Kommentaren zu dem Befehl 
AddDevice aufgelistet.
"Quellendateiname" (maximale Länge = 255) ist der Name der
Datei im Quellensystem.
"Zieldateiname" (maximale Länge = 255) ist der Name der Datei im Zielsystem.
-->  
<!ELEMENT AddFileSubscription (Name, Beschreibung?, Unteradapter, Verschlüsselungsstufe?, 
                Blockieren?, Einheitentypen?, Quellendateiname, Zieldateiname?)>
	  <!ELEMENT Quellendateiname  (#PCDATA)>
	  <!ELEMENT Zieldateiname  (#PCDATA|NULL)*>
   <!ELEMENT Einheitentypen (#PCDATA|NULL)*>
 
 
<!--AddCustomSubscription erstellt eine angepasste Subskription.
Das einzige spezifische Feld
lautet "Sonstige" (maximale Länge = 4096),
welches anwendungsspezifische Daten enthält.
-->  
<!ELEMENT AddCustomSubscription (Name, Beschreibung?, Unteradapter?, 
                                    Verschlüsselungsstufe? Blockieren?, Sonstige?)>
  <!ELEMENT Sonstige (#PCDATA|CDATA|NULL)*>
 
  <!ELEMENT Typ (#PCDATA)>
  
  
<!--Der Befehl AddTable ermöglicht es, Tabellen in JDBC-, DPropR- und
Hochladesubskriptionen
einzufügen.
"Zielschema" (maximale Länge = 128) ist das Schema der Tabelle auf dem
Zielgerät.
"Zieltabelle" (maximale Länge = 128) ist der Name der Tabelle auf dem
Zielgerät.
Die Kombination aus Zielschema und Zieltabelle muss für eine
bestehende Subskription eindeutig sein. 
Bei DPropR-Subskriptionen muss Zielschema.Zieltabelle 
in der Spiegeldatenbank
vorhanden sein. Andernfalls schlägt der übergeordnete Subskriptionsbefehl fehl.
 
"Quellenschema" (maximale Länge = 128) ist das Schema der Tabelle in der
Quellendatenbank.
"Quellentabelle" (maximale Länge = 128) ist der Name der Tabelle in der
Quellendatenbank.
Die durch Quellenschema.Quellentabelle angegebene Tabelle muss für 
JDBC- und
Hochladesubskriptionen in der Quellendatenbank vorhanden sein, oder die
Erstellung der 
übergeordneten Subskriptionsbefehle schlägt fehl. 
 
"Löschberechtigung" ist entweder "Y" oder "N", Standardwert ist "Y".
"Einfügeberechtigung" ist entweder "Y" oder "N", Standardwert ist "Y".
"Aktualisierungsberechtigung" ist entweder "Y" oder "N", Standardwert ist "Y".
"Auswahlberechtigung" ist entweder "Y" oder "N", Standardwert ist "Y".
Eine Änderung der Zugriffsrechte hat nicht zur Folge, dass die Tabelle
gelöscht 
und auf der Spiegeldatenbank und den Zielgeräten erneut erstellt wird.
 
"Spiegel-mobil-WHERE-Klausel" (maximale Länge = 1024) ist Teil einer
Integritätsbedingung in einer DB2-SQL- 
Anweisung mit WHERE-Klausel, die
auf dem Spiegel ausgeführt wird, um 
zu synchronisierende Zeilen zu filtern.
Sie muss entweder wahr oder falsch ergeben.
Sie kann Datenfilterparameter
enthalten, die für Gruppen definiert sind 
(siehe Befehl AddDataFilter).
Wenn Datenfilter definiert wurden, werden sie 
durch die benutzerspezifischen
oder benutzergruppenspezifischen Werte ersetzt, 
die synchronisiert werden.
Bei Änderung dieser WHERE-Klausel wird die Tabelle 
gelöscht und auf den
Zielgeräten und in der Spiegeldatenbank erneut erstellt.
 
Beispiel: Eine Anwendung hat zwei Benutzergruppen: eine Gruppe
"Süddeutschland" und 
eine Gruppe "Norddeutschland". Die WHERE-Klausel für eine
Tabelle könnte dann folgendermaßen lauten:
 
BEREICH=:GRUPPE_BEREICH
 
Dann können die Gruppendatenfilter so definiert werden, dass sie für die
Gruppe "Norddeutschland" 
wie folgt lauten:
 
:GRUPPE_BEREICH="NORDDEUTSCHLAND"
 
Die WHERE-Klausel wird für die Gruppe "Süddeutschland" während der
Bearbeitungszeit wie folgt festgelegt:
 
BEREICH="NORDDEUTSCHLAND"
 
Die Benutzer der Gruppe "Norddeutschland" können nur die Zeilen abrufen,
die mit dieser
Integritätsbedingung übereinstimmen.
 
"Master-Spiegel-WHERE-Klausel" (maximale Länge = 1024) ist Teil einer
Integritätsbedingung einer 
WHERE-Klausel, die zum Filtern von Zeilen verwendet
wird, welche 
von der Masterdatenbank zur Spiegeldatenbank repliziert werden.
Da die Replikation nicht im 
Kontext von Benutzern oder Gruppen stattfindet,
können in "Master-Spiegel-WHERE-Klausel" keine 
Datenfilter verwendet werden.
Bei Änderung dieses WHERE-Klausel-Merkmals für eine Tabelle
wird die
Tabelle gelöscht und in der Spiegeldatenbank und auf den 
Zielgeräten erneut
erstellt.
 
"JoinFilter" wird auf "Y", "N" oder die Standardeinstellung "G" (Global) gesetzt. 
Damit wird angegeben, ob das Filtern von Verknüpfungen auf diese Tabelle
angewendet 
werden soll. "Y" bedeutet, die Einstellung ist aktiviert. Wenn das
Problem eines außerhalb des Bereichs liegenden Zeilenfilters 
akzeptabel ist,
sollte "N" (inaktiviert) ausgewählt werden, um die Leistung zu verbessern. 
Wenn
für diesen Befehl keine Angaben erfolgen, wird der Standardwert "G" 
verwendet.
Dies bedeutet, dass die Aktivierung der Funktion zum Filtern von Verknüpfungen 
 
von der globalen Einstellung des Merkmals RowFilter.OutOfScope.Delete abhängt, 
das sich in der Tabelle DSY.PROPERTIES der Sync Server-Steuerungsdatenbank
befindet.
Lautet der zugehörige Wert 1, ist das Merkmal aktiviert. Lautet 
der
Wert 0, ist es inaktiviert.
 
"Tabellenbereich" ist ein optionales Feld für den DB2-Tabellenbereich, das in 
der Spiegeldatenbank verwendet werden kann, in die die Quellendatenbank
repliziert wird. Da die 
Standardgröße der Tabellenbereichsseiten in der
Spiegeldatenbank manchmal nicht groß genug ist, 
um replizierte Daten aufzunehmen,
ist es in diesem Fall notwendig, die zugehörige 
Spiegeltabelle in einem
anderen Tabellenbereich zu erstellen. Bei Änderung des Tabellenbereichs 
einer Tabelle wird die Tabelle gelöscht und auf dem 
Zielgerät und in der
Spiegeldatenbank erneut erstellt. 
 
 
"Reihenfolge" ist eine ganze Zahl, die die Reihenfolge dieser Tabelle 
innerhalb
der Subskription angibt. Falls nicht anders angegeben, wird die Reihenfolge der
Auflistung 
verwendet. Der Index der ersten Tabelle ist 1, der zweiten 2 usw.
Bei Verwendung 
im Befehl AlterTable, um die Reihenfolge einer Tabelle zu ändern,
müssen Sie 
den neuen Reihenfolgeindex für diese Tabelle angeben. Wenn Ihre
Tabelle
z. B. innerhalb der Tabellen für die Subskription den dritten Platz 
einnehmen
soll, geben Sie 3 an. Wenn die angegebene Folgenummer 
größer ist als die Anzahl
vorhandener Tabellen,
wird Ihre Tabelle als letzte Tabelle in die Subskription
eingefügt 
(unter der Voraussetzung, dass keine andere Tabelle mit einem noch 
 
höheren Index vorhanden ist). Wenn die Folgenummer 0 oder negativ ist, wird die
Tabelle als 
erste Tabelle eingefügt. Für Tabellen können unterschiedliche
Reihenfolgen angegeben werden.
Sie können z. B. Tabelle A mit der Folgenummer
3, 
Tabelle B mit der Folgenummer 1 und Tabelle C mit der Folgenummer 2 angeben.
Auf diese Weise kann 
die Reihenfolge von Tabellen in vorhandenen Scripts einfacher
geändert werden, ohne dabei 
Blöcke von AddTable-bezogenem Text versetzen zu müssen.
Andererseits wird das 
XML-Script bei Verwendung gemischter Reihenfolgen schwer
lesbar. Deshalb wird davon abgeraten. Am 
besten verwenden Sie die Tabellen in
der Reihenfolge, wie Sie bei der Erstellung einer Subskription angezeigt werden.
 
Bei Änderung der Tabellenreihenfolge erhalten die Zielgeräte, die noch nicht 
über diese Änderung informiert wurden, eine vollständige Beschreibung der
gesamten 
Tabellenanzahl. Die Neuanordnung wird dann wie gewünscht durchgeführt.
Dabei werden keine Tabellen in der Spiegeldatenbank oder auf den Zielgeräten
gelöscht oder erneut erstellt.
 
"Verschlüsseln" ist entweder "Y" oder "N". Standardwert ist "N". Gibt an,
ob die Tabellendaten 
auf dem Gerät verschlüsselt werden sollten oder
nicht. Dies ist ein Unterschied zur Verschlüsselung
auf Subskriptionsebene,
die die Verschlüsselungsstufe angibt, die bei der 
Synchronisation während der
Verbindung benutzt wird. Bei Änderung dieses Attributs wird die Tabelle
gelöscht und 
auf dem Zielgerät und in der Spiegeldatenbank erneut erstellt. 
 
AddColumn nimmt Spalten in einer bestimmten Tabelle auf 
 
(siehe Kommentare für den Befehl AddColumn). Beim Hinzufügen/Entfernen/Ändern
von Spalten 
wird die Tabelle gelöscht und auf dem Zielgerät 
und in der
Spiegeldatenbank erneut erstellt. 
 
AddIndex nimmt Indizes in einer bestimmten Tabelle auf 
(siehe Kommentare für den Befehl AddIndex). Beim Ändern der Indexgruppe einer 
Tabelle wird die Tabelle NICHT gelöscht und auf dem 
Zielgerät und in der
Spiegeldatenbank erneut erstellt. 
 
AddCustomLogic ordnet eine benutzerdefinierte Java-Klasse zu, um 
Sync Server für Synchronisation und/oder Replikation zusätzliche 
Logikfunktionalität für diese Tabelle zur Verfügung zu stellen. 
Eine Replikation ist in manchen Fällen Voraussetzung für das Editieren
einer Subskription.
Bei Änderung der CustomLogic-Begriffsbestimmungen für
eine Tabelle wird die 
Tabelle NICHT gelöscht und auf dem Zielgerät und in
der Spiegeldatenbank erneut erstellt. 
-->
 
<!ELEMENT AddTable (Zielschema, Zieltabelle, Quellenschema, Quellentabelle, 
              Löschberechtigung, Einfügeberechtigung, Aktualisierungsberechtigung,
              Auswahlberechtigung, 
              Spiegel-mobil-WHERE-Klausel?, Master-Spiegel-WHERE-Klausel?, 
              JoinFilter?, Tabellenbereich?, Reihenfolge?, Verschlüsseln?,  
                      (AddColumn | AddIndex | AddCustomLogic)*)>
	  <!ELEMENT Zielschema  (#PCDATA)>
	  <!ELEMENT Zieltabelle  (#PCDATA)>
	  <!ELEMENT Quellenschema  (#PCDATA)>
	  <!ELEMENT Quellentabelle (#PCDATA)>
	  <!ELEMENT Löschberechtigung  (#PCDATA)>
	  <!ELEMENT Einfügeberechtigung  (#PCDATA)>
	  <!ELEMENT Aktualisierungsberechtigung  (#PCDATA)>
	  <!ELEMENT Auswahlberechtigung  (#PCDATA)>
	  <!ELEMENT Spiegel-mobil-WHERE-Klausel  (#PCDATA|NULL)*>
	  <!ELEMENT Master-Spiegel-WHERE-Klausel  (#PCDATA|NULL)*>
	  <!ELEMENT Reihenfolge  (#PCDATA|NULL)*>
	  <!ELEMENT Verschlüsseln  (#PCDATA)>
	  <!ELEMENT Tabellenbereich  (#PCDATA|NULL)*>
   <!ELEMENT JoinFilter  (#PCDATA)>
 
 
<!--Die AddColumn-Befehle werden verwendet, um Spalten in eine zu 
synchronisierende oder zu replizierende Tabelle aufzunehmen.
 
"Quellenspalte" (maximale Länge = 512) ist der Spaltenname in der
Quellentabelle. 
Bei JDBC- und Hochladesubskriptionen müssen Spalten
mit diesem Namen in 
der Quellentabelle vorhanden sein. Andernfalls
schlägt die Erstellung der übergeordneten Subskription 
fehl. Bei
DPropR-Subskriptionen muss die Spalte in der Spiegeldatenbank 
vorhanden
sein. D. h., bei Aktivierung des XML-Tools muss auf diese Quellen-
und Spiegeldatenbanken 
Zugriff bestehen.
 
"Zielspalte" ist der Name der Spalte auf dem mobilen Gerät. 
Dieser
Name muss unter den Spalten der übergeordneten Tabelle eindeutig sein.
 
"Subskribieren" ist entweder "Y" oder "N". Standardwert ist "N". Bei
"Y" wird 
die Spalte synchronisiert.
 
"Replizieren" ist entweder "Y" oder "N". Standardwert ist "N". Bei "Y" 
wird die Spalte zwischen Master- und Spiegeldatenbank repliziert. 
Eine Spalte kann nur dann synchronisiert werden, wenn sie auch
repliziert wird.
 
"Schlüssel" ist entweder "Y" oder "N". Standardwert ist "N". Gibt an,
ob 
diese Spalte Teil einer eindeutigen Schlüsselintegritätsbedingung ist.
 
"Constrnt" ist eine DB2 Everyplace-Integritätsbedingung, die auf der 
(mobilen) Zieldatenbank bei der Erstellung der Spalte unter Verwendung
von SQL-DDL eingesetzt wird. 
Z. B. soll die folgende Integritätsbedingung
für die zugehörige Spalte vorhanden sein:
 
Constraint CK_ENABLED prüfen(ENABLED in('N','Y'))
Hierzu muss der Benutzer in XML
<Constrnt>in('N','Y')</Constrnt> angeben.
 
Mit ColumnDataFilter wird in SQL-DDL ein Standardwert bereitgestellt,
während 
eine Spalte in einer (mobilen) Zieldatenbank erstellt wird.
Da eine solche Datenbank 
zu einem bestimmten "Gerätebenutzer" gehört,
kann dieser Datenfilter auch solche 
Datenfilter enthalten, die für Gruppen
erstellt und von Benutzern überschrieben wurden 
(AddDataFilter und
OverrideDataFilter). 
Um z. B. eine Spalte so zu erstellen, dass ihr
Standardwert vom 
Standort des Benutzers des spezifischen Geräts abhängt,
könnte die SQL-DDL folgendermaßen lauten: 
STADT varchar(50) not null with default "ISTANBUL" 
Damit dies vielgestaltig für jeden Benutzer an verschiedenen 
Standorten
einsetzbar ist, muss der Administrator beispielsweise folgende Angaben
machen: 
<ColumnDataFilter>:CITY</ColumnDataFilter> als Datenfilter für 
diese Spalte. Der Datenfilter muss für alle Gruppen und Benutzer gültig
(erstellt) sein, 
die die Subskription synchronisieren, zu der die
Spalte 
gehört.
-->  
<!ELEMENT AddColumn (Quellenspalte, Zielspalte, Subskribieren, 
                      Replizieren, Schlüssel, Constrnt?, ColumnDataFilter?) >
	  <!ELEMENT Quellenspalte  (#PCDATA)>
	  <!ELEMENT Zielspalte     (#PCDATA)>
	  <!ELEMENT Subskribieren  (#PCDATA)>
	  <!ELEMENT Replizieren    (#PCDATA)>
	  <!ELEMENT Schlüssel      (#PCDATA)>
	  <!ELEMENT Constrnt       (#PCDATA|NULL)*>
   <!ELEMENT ColumnDataFilter  (#PCDATA|NULL)*>
 
<!--Der Befehl AddIndex erstellt Indexbeschreibungen für
Zieltabellen.
Indexnamen müssen innerhalb des Gesamtsystems eindeutig
sein, unabhängig von 
Subskription oder Spiegel. Wenn Sie das Attribut
MirrorOnly auf "TRUE" setzen, wird
der Index nur in der Spiegeldatenbank
erstellt. Er wird nicht 
auf dem Zielgerät erstellt. Das Attribut
MirrorOnly ist standardmäßig auf "FALSE" gesetzt,
sofern keine anderen
Angaben gemacht werden.
 
Der Befehl ColNames listet die Indexspalten auf. Die
Spaltennamen sind die
Zielnamen, die im Befehl AddTable verwendet
werden. Die Namen enden mit 
einem Semikolon (;). Ein Pluszeichen (+)
vor einem Spaltennamen gibt einen aufsteigenden 
Index, ein
Minuszeichen (-) einen absteigenden Index an.
 
Der Befehl AddIndex lautet folgendermaßen:
         <AddIndex>
            <Name>MYINDEX</Name>
            <ColNames>+MYCOLNAME1;+MYCOLNAME2;</ColNames>
         </AddIndex>
 
-->
<!ELEMENT AddIndex (Name, Spaltennamen)>
<!ATTLIST AddIndex MirrorOnly (TRUE | FALSE) "FALSE">
 
	  <!ELEMENT Spaltennamen   (#PCDATA)>
 
 
<!--
Mit dem Befehl AddCustomLogic wird eine benutzerdefinierte Klasse
einer 
Subskriptionstabelle oder einer Spiegeldatenbank zugeordnet, um 
dem Synchronisations- und/oder Replikationsprozess angepasste
Logikfunktionalität 
hinzuzufügen.
 
"PolicyType" ist eine der folgenden Konstante (ohne die Anführungszeichen):
  "BeforeTableSyncInPolicy"
  "AfterTableSyncInPolicy"
  "BeforeTableReplicatePolicy"
  "AfterTableReplicatePolicy"
  "BeforeDbReplicatePolicy"
  "AfterDbReplicatePolicy"
  "TableReplicatePolicy"
  "TableSyncInPolicy"
 
"Klassenname" ist der vollständig qualifizierte Name der Java-Klasse,
die die
angepasste Logik implementiert. Diese Klasse muss im Klassenpfad
von 
Sync Server und den Verwaltungstools enthalten sein.
 
"Aktiviert" ist entweder "Y" oder "N".
-->
<!ELEMENT AddCustomLogic (Richtlinientyp, Klassenname, Aktiviert)>
  <!ELEMENT Richtlinientyp 	(#PCDATA)>
 
  
<!ELEMENT AddAdapter (Name, Beschreibung?, Dateiattribute?, 
                          Befehlsattribute?, Kennung?, Klassenname?)>
	  <!ELEMENT Dateiattribute (#PCDATA|NULL)*>
	  <!ELEMENT Befehlsattribute (#PCDATA|NULL)*>
	  <!ELEMENT Klassenname (#PCDATA|NULL)*>
 
 
<!--Der Befehl AddServer erstellt eine neue Serverbeschreibung. Server
müssen für das System definiert
werden, damit es ordnungsgemäß arbeitet.
Wenn ein Sync Server startet, aktualisiert er den Datensatz über sich selbst. 
Wenn ein Server abstürzt, ohne dass er den Datensatz als "offline"
aktualisieren konnte, werden dadurch 
möglicherweise Probleme beim Editieren
der Subskriptionen verursacht. 
Das Verwaltungstool lehnt die Anwendung von
Änderungen möglicherweise ab, da es glaubt, es könne nicht mit einem aktiven
Server kommunizieren und daher die Anwendung von Änderungen 
unbekanntes
Verhalten hervorrufen würde. 
Vor dem Ausführen von Änderungen blockieren Verwaltungstools 
zugehörige Systemteile und übertragen die Aktualisierungen an die 
aktiven Server,
die nicht als "offline" markiert sind. Wenn ein Server nicht als "offline" markiert
ist und nicht antwortet, 
ist es nicht sicher, Änderungen anzuwenden. Solche
Änderungen werden 
abgelehnt.
-->  
 
<!ELEMENT AddServer (Name, Host-IP, Port, Beschreibung?, synchronisationsfähig?, 
                                             replikationsfähig?, Blockieren?)>
   <!ELEMENT Host-IP (#PCDATA)>
	  <!ELEMENT Port (#PCDATA)>
	  <!ELEMENT synchronisationsfähig (#PCDATA)>
	  <!ELEMENT replikationsfähig (#PCDATA)>
	  <!ELEMENT Blockieren (#PCDATA)>
	  <!ELEMENT Status (#PCDATA)>
 
 
<!--ResetUser führt dazu, dass die Gerätedaten eines Benutzers
gelöscht werden. 
"Name" ist der Benutzername.
Das Zurücksetzen eines Benutzers führt dazu, dass das Zielgerät beim
nächsten Synchronisationsversuch 
eine vollständige Aktualisierung ausführt.
-->  
<!ELEMENT ResetUser (Name)>
 
 
<!--ResetGroup führt dazu, dass die Gerätedaten aller Benutzer einer Gruppe 
gelöscht werden. "Name" ist der Gruppenname.
-->  
<!ELEMENT ResetGroup (Name)>
 
 
<!--ResetAll führt dazu, dass die Gerätedaten aller Benutzer im
System 
gelöscht werden. 
-->  
<!ELEMENT ResetAll EMPTY>
 
 
<!--Es folgen Remove-Befehle-->
 
<!--
   RemoveJdbcMaster entfernt Datensätze von einem JDBC-Masterdatenbanksystem, 
   das von Subskriptionen gemeinsam verwendet werden kann. Es ist normalerweise
   nicht notwendig, 
diese Datensätze zu entfernen. In einigen Fällen könnte
   dies jedoch für die Testautomation 
nützlich sein. Wenn eine Subskription
   auf eine Master- oder Spiegeldatenbank
verweist, kann sie nicht entfernt
   werden, und ein Fehler wird abgesetzt.
-->
<!ELEMENT RemoveJdbcMaster (Datenbank, Treiber)>
 
 
<!--
   RemoveReplMaster entfernt Datensätze von einem DPropR-Masterdatenbanksystem, 
 
   das von Subskriptionen gemeinsam verwendet werden kann. Wenn eine Subskription
   auf eine Master- oder Spiegeldatenbank 
verweist, kann sie nicht entfernt werden,
   und ein Fehler 
wird abgesetzt.
-->
<!ELEMENT RemoveReplMaster (System, Exemplar, Datenbank)>
 
 
<!--
   RemoveJdbcMirror entfernt Datensätze von einem JDBC-Spiegeldatenbanksystem, 
 
   das von Subskriptionen gemeinsam verwendet werden kann. Wenn eine Subskription
   auf eine Master- oder Spiegeldatenbank 
verweist, kann sie nicht entfernt werden,
   und ein Fehler 
wird abgesetzt.
-->
<!ELEMENT RemoveJdbcMirror (Datenbank, Treiber)>
 
 
<!--
   RemoveReplMirror entfernt Datensätze von einem DPropR-Spiegeldatenbanksystem, 
   das von Subskriptionen gemeinsam verwendet werden kann. Wenn eine Subskription
   auf eine Master- oder Spiegeldatenbank 
verweist, kann sie nicht entfernt werden,
   und ein Fehler 
wird abgesetzt.
-->
<!ELEMENT RemoveReplMirror (Datenbank)>
 
 
<!--RemoveGroup entfernt eine Gruppe und alle zugehörigen Daten aus dem System.
Die betreffenden Benutzer in dieser Gruppe gehören danach keiner 
Gruppe mehr an.-->
<!ELEMENT RemoveGroup (Name)>
 
                      
<!--RemoveUser entfernt einen Benutzer und alle zugehörigen Gerätedaten
 vom 
System. Einmal entfernt kann ein Benutzer nicht länger synchronisieren.
-->
<!ELEMENT RemoveUser (Name)>
 
 
<!--RemoveServer entfernt einen Serverdatensatz aus dem System. Dies kann
 z. B. 
nützlich sein, wenn ein Servername geändert wird und der alte Name
 nicht mehr 
gültig ist.
-->
<!ELEMENT RemoveServer (Name)>
 
                   
<!--RemoveDevice ist als ResetDevice eigenständig implementiert und daher 
  an dieser Stelle nicht enthalten.-->
 
 
<!--RemoveSubscriptionSet entfernt eine Subskriptionsgruppe aus dem System 
  und benachrichtigt Server, die online sind, über die Änderung. Wenn ein Server, der 
  online sein sollte, nicht antwortet, können keine Änderungen ausgeführt werden.
-->
<!ELEMENT RemoveSubscriptionSet (Name)>
 
 
<!--RemoveSubscription entfernt eine Subskription aus dem System 
und
 benachrichtigt Server, die online sind, über die Änderung. Wenn ein Server, der 
 online sein sollte, nicht antwortet, können keine Änderungen ausgeführt
 werden. 
Das Entfernen einer Subskription blockiert betroffene Komponenten
 des Systems 
(eine betroffene Spiegeldatenbank ist eine Hauptkomponente)
 während dieser 
Operation, wodurch sie für den Server nicht verwendbar ist.
 Vermeiden Sie, dass derartige 
Operationen häufig vorkommen, während die
 Server aktiv sind, andernfalls wird die 
Serverleistung dadurch beeinträchtigt.
-->
<!ELEMENT RemoveSubscription (Name)>
 
  <!--Das Attribut "Replizieren" ist nur für replizierte Subskriptionen, 
                                                z. B. JDBC, relevant.-->
  <!ATTLIST RemoveSubscription Replizieren (TRUE | FALSE) "TRUE">
  
  <!--Wenn StopOnError auf "FALSE" gesetzt ist, wird die Subskription
   aus der Steuerungsdatenbank entfernt, auch wenn auf die Quellen- und/
   oder Spiegeldatenbank kein 
Zugriff besteht oder ein Fehler aufgetreten
   ist, der die Replikation und/oder 
das Bereinigen von Quellen- oder
   Spiegeldatenbank verhindert. 
Die Quellen- und/oder Spiegeldatenbank
   muss danach möglicherweise bereinigt 
werden. Dies ist in Test- oder
   Entwicklungsumgebungen nützlich, in denen 
Quellen- und Spiegeldatenbanken
   keine Relevanz für den Entwickler haben oder bereits 
gelöscht wurden.-->
  <!ATTLIST RemoveSubscription StopOnError (TRUE | FALSE) "TRUE">
 
 
<!--RemoveAdapter entfernt einen Adapterdatensatz aus der Datenbank,
  ist aber nur für bestimmte Testcases nützlich und wird die meiste Zeit nicht
  benötigt.
-->
<!ELEMENT RemoveAdapter (Name)>
 
 
<!--Blockiert eine Subskription und benachrichtigt dann die
 Server entsprechend, die online sind. 
Blockierte Subskriptionen können nicht
 synchronisiert werden.-->                                  
 
<!ELEMENT BlockSubscription (Name)>
<!ELEMENT UnblockSubscription (Name)>
 
 
<!-- Es folgen Alter-Befehle -->
 
<!-- 
	Die Befehlsgruppe AlterXYZ wird zum Suchen von Informationen und Ändern 
   bestimmter Teile daraus verwendet. Die <AlterXYZ>-Befehle enthalten
   die eindeutige Kennung 
für einen zu ändernden Datensatz sowie die Liste 
   der Merkmale,	die für diesen Datensatz geändert werden sollen.
	Die Struktur eines AlterUser-Befehls könnte z. B. wie folgt aussehen:
	<AlterUser>
		<Name>benutzername</Name> //Gibt an, welcher Benutzer geändert wird.
		<User>
			//Listet neue Werte auf, die eingegeben werden sollen.
		<User>
	<AlterUser>
-->
 
<!--Der Befehl AlterJdbcMaster ermöglicht das Ändern von Verbindungs-
  informationen für 
eine JDBC-Masterdatenbank. In den meisten Fällen muss 
  nur das Kennwort geändert werden. Die Benutzer-ID sollte nicht geändert
  werden, wenn eine 
vorhandene JDBC-Subskription diesen Master verwendet,
  da diese Benutzer-ID 
manchmal als Schemaname verwendet wird.
-->
<!ELEMENT AlterJdbcMaster (Datenbank, Treiber, JDBC-Masterdatenbank)>
<!ELEMENT JdbcMaster (Datenbank?, Treiber?, Benutzer-ID?, Kennwort?)>
 
<!--AlterJdbcMirror wird zum Ändern der Verbindungsmerkmale einer JDBC- 
 Spiegeldatenbank verwendet. Es besteht die Möglichkeit, der Spiegeldatenbank
 mindestens eine angepasste 
Logikimplementierungsklasse hinzuzufügen oder
 diese zu entfernen. Zum Ändern vorhandener 
Logikbeschreibungen entfernen
 Sie die alte Beschreibung und fügen eine neue Beschreibung hinzu.
-->
<!ELEMENT AlterJdbcMirror (Datenbank, Treiber, JDBC-Spiegeldatenbank)>
<!ELEMENT JdbcMirror (Datenbank?, Treiber?, Benutzer-ID?, Kennwort?, Synchronisationsfenster?, 
 (AddCustomLogic | RemoveCustomLogic)*)>
 
<!--AlterReplMaster ermöglicht das Editieren vorhandener Daten der DPropR- 
Masterdatenbank.-->
<!ELEMENT AlterReplMaster (System, Exemplar, Datenbank, Replikationsmaster)>
<!ELEMENT Replikationsmaster (System?, Exemplar?, Datenbank?, Benutzer-ID?, 
                                          Kennwort?, Aliasname der Datenbank?)>
 
<!--AlterReplMirror ermöglicht das Editieren vorhandener Daten der DPropR- 
Spiegeldatenbank. Es besteht die Möglichkeit, der Spiegeldatenbank mindestens 
eine angepasste Logikimplementierungsklasse hinzuzufügen oder
diese zu entfernen. Zum Ändern vorhandener 
Logikbeschreibungen entfernen
Sie die alte Beschreibung und fügen eine neue Beschreibung hinzu.
-->
<!ELEMENT AlterReplMirror (Datenbank, Replikationsspiegel)>
<!ELEMENT Replikationsspiegel (Datenbank?, Benutzer-ID?, Kennwort?, Synchronisationsfenster?, 
                       (AddCustomLogic | RemoveCustomLogic)*)>
 
 
<!--Mit AlterAdapter kann die Beschreibung eines Adapters geändert werden. 
Dies ist allerdings sehr selten erforderlich.
-->
<!ELEMENT AlterAdapter (Name, Adapter)>
<!ELEMENT Adapter (Name?, Beschreibung?, Dateiattribute?, 
                          Befehlsattribute?, Kennung?, Klassenname?)>
 
 
<!--Mit dem Befehl AlterFileSubscription können neue Einstellungen für eine 
Dateisubskription aufgelistet werden. Synchronisationsanforderungen an die
Server, die online sind, werden 
während der Durchführung von Änderungen für kurze Zeit
blockiert.
Der Befehl zum Zurücksetzen, der ein LEERER Befehl ist, weist XML
Scripting Tool an,
die Dateisubskription so zu markieren, dass sie an die
Geräte zurückgesendet wird. 
Dies ist in der Regel bei einer Modifikation der
Datei erforderlich. Normalerweise erkennt Sync Server 
Änderungen an den
zugeordneten Dateien nicht automatisch.
Eine Dateisubskription muss zurück-
gesetzt werden, damit die Geräte eine 
neue Version der Datei empfangen können.
-->
<!ELEMENT AlterFileSubscription (Name, Dateisubskription)>
<!ELEMENT FileSubscription (Name?, Beschreibung?, Unteradapter?, Verschlüsselungsstufe?, 
                             Gerätetypen?, Quellendateiname?, Zieldateiname?, 
                                                                      Zurücksetzen?)>
 
<!ELEMENT Zurücksetzen EMPTY>
 
<!--Mit dem Befehl AlterGroup können neue Einstellungen für eine
Synchronisationsgruppe 
aufgelistet werden. Neue Subskriptionsgruppen
können mit diesem Befehl in diese Gruppe eingefügt 
oder vorhandene
aus der Gruppe ausgeschlossen werden. Datenfilter können 
hinzugefügt
oder entfernt werden. Die Gruppe kann aktiviert oder inaktiviert werden.
Name und 
Beschreibung können bei Bedarf ebenfalls geändert werden.
-->
<!ELEMENT AlterGroup (Name, Gruppe)>
<!ELEMENT Gruppe (Name?, Beschreibung?, Aktiviert?, 
                        (IncludeSubscriptionSet | ExcludeSubscriptionSet 
                          | AddDataFilter | RemoveDataFilter)* )>
                         
<!ELEMENT ExcludeSubscriptionSet (Name)>
 
<!--Zum Ändern eines Datenfilters muss dieser zunächst entfernt und
anschließend erneut hinzugefügt werden.
<!ELEMENT RemoveDataFilter (Name) >
 
<!--Mit dem Befehl AlterUser können neue Einstellungen für einen
Synchronisationsbenutzer 
aufgelistet werden. Der Benutzer kann mit
diesem Befehl einer neuen Gruppe zugeordnet werden oder, falls 
für die
Benutzergruppe <NULL/> angegeben wurde, 
aus der aktuellen Gruppe
entfernt werden.
 
Der Benutzer kann überschriebene Datenfilterwerte hinzufügen oder
entfernen. Name, Kennwort 
und Beschreibung können bei Bedarf ebenfalls
geändert werden.
Der Befehl "LDAP-Merkmale" ist nur in LDAP-fähigen
Umgebungen gültig. 
Dieser Befehl listet die LDAP-spezifischen Merkmale
eines Benutzers auf.
-->
<!ELEMENT AlterUser (Name, Benutzer?)>
<!ELEMENT Benutzer (Name?, Benutzergruppe?, Beschreibung?, Kennwort?, LDAP-Merkmale?,  
                  (OverrideDataFilter | RemoveDataFilter)* )>
 
<!ELEMENT AlterLDAPProperties (Vorname?, Nachname?, E-Mail?, 
                                            Bevorzugte Sprache?, Zweck?)>
-->
 
<!--AlterSubscriptionSet wird normalerweise zum Hinzufügen von
 Subskriptionen zu 
einer Subskriptionsgruppe bzw. zum Entfernen
 von Subskriptionen verwendet.-->                          
<!ELEMENT AlterSubscriptionSet (Name, Subskriptionsgruppe?)>
<!ELEMENT SubscriptionSet (Name?, Beschreibung?, 
                                 (IncludeSubscription | ExcludeSubscription)* )>
 
<!ELEMENT ExcludeSubscription (Name)>
 
<!--Der Befehl AlterJdbcSubscription wird normalerweise zum Hinzufügen/
Entfernen von Tabellen
einer JDBC-Subskription verwendet. Wenn Sie die
Spiegel- oder Masterdatenbanken 
einer Subskription ändern möchten, müssen
Sie eine neue Subskription erstellen, anstatt die 
vorhandene zu ändern.
Beachten Sie, dass das JDBC-Verbindungskennwort einer Datenbank mit den 
Befehlen AlterJdbcMirror und AlterJdbcMaster geändert werden kann. Der
Befehl AlterTable 
kann zum Ändern der Synchronisations- und Replikations-
merkmale einer zugeordneten Tabelle verwendet werden.
Ferner kann er zum
Hinzufügen und Entfernen von Indizes für eine Tabelle verwendet werden. 
-->
<!ELEMENT AlterJdbcSubscription (Name, JDBC-Subskription)>
  <!ATTLIST AlterJdbcSubscription Replizieren (TRUE | FALSE) "TRUE">
 
<!ELEMENT JdbcSubscription (Name?, Beschreibung?,
                             Verschlüsselungsstufe?, Blockieren?,  
                            (AddTable | RemoveTable | AlterTable)*)>
                         
<!ELEMENT AlterUploadSubscription (Name, Hochladesubskription)>
<!ELEMENT UploadSubscription (Name?, Beschreibung?,  
                              Verschlüsselungsstufe?, Blockieren?, 
                              (AddTable | RemoveTable | AlterTable)*)>
                                
<!ELEMENT AlterDproprSubscription (Name, DproprSubscription)>
<!ELEMENT DproprSubscription (Name?, Beschreibung?, 
                              Verschlüsselungsstufe?, Blockieren?, 
                              (AddTable | RemoveTable | AlterTable)*)>
                              
<!ELEMENT RemoveTable (Zielschema, Zieltabelle)>
<!ELEMENT AlterTable (Zielschema, Zieltabelle, Tabelle)>
<!ELEMENT Tabelle (Zielschema?, Zieltabelle?, Quellenschema?, Quellentabelle?, 
                 Löschberechtigung, Einfügeberechtigung, Aktualisierungsberechtigung,
                 Auswahlberechtigung, 
                 Spiegel-mobil-WHERE-Klausel?, Master-Spiegel-WHERE-Klausel?, 
                 Verknüpfungsfilter?, Tabellenbereich?, Reihenfolge, Verschlüsseln?,
                 (AddIndex | AddCustomLogic |
                  RemoveIndex | RemoveCustomLogic)*)>
                      
<!ELEMENT RemoveIndex (Name)>
<!ELEMENT RemoveCustomLogic (Richtlinientyp)>
 

Zugehörige Konzepte