XML-Beispielscripts

Dieser Abschnitt enthält die folgenden Beispiele:

JDBC-Subskriptionen

Dieses Beispiel zeigt das XML-Script, um Quellendatenbank- (Masterdatenbank-)
und Spiegeldatenbankinformationen zu definieren und eine JDBC-Subskription mit
Hilfe dieser beiden Datenbanken zu erstellen.
 
Die XML-DTD-Datei, auf die verwiesen wird, wird normalerweise aus dem Klassenpfad
geladen: file:/com/ibm/mobileservices/xmlscripting/mdas3.dtd.
 
Der Befehl <AddJdbcMaster> definiert Quellendatenbankverbindungsinformationen.
Die JDBC-URL, der Treiber, die Benutzer-ID und das Kennwort sind erforderlich.
Der Befehl <AddJdbcMirror> definiert Spiegeldatenbankverbindungsinformationen.
Die JDBC-URL, der Treiber, die Benutzer-ID, das Kennwort und das Synchronisationsfenster
(Replikationshäufigkeit) sind erforderlich.
 
JDBC-Master- und JDBC-Spiegelinformationen müssen definiert werden, bevor eine
JDBC-Subskription auf diese Datenbanken verweisen kann.
 
Der Befehl <AddJdbcSubscription> definiert eine JDBC-Subskription. Wenn
Replicate="TRUE" angegeben ist, wird die Replikation ausgeführt, um
die neuen Spiegeltabellen mit Daten von der Quelle zu füllen, damit
der Spiegel für die Synchronisation mit mobilen Geräten bereit ist.
Wenn Replicate="FALSE" angegeben ist, bleibt die Synchronisation zu diesem Spiegel
blockiert, bis die erste Replikation dieses Spiegels beendet ist.
Der Befehl <AddJdbcSubscription> muss mindestens einen Befehl <AddTable>
enthalten. Die Befehle <AddTable> sollten alle Spalten der Quellentabelle auflisten,
um Replikations- und Synchronisationsoptionen für alle Spalten mit dem Befehl
<AddColumn> anzugeben. Die Befehle <SourceSchema> und <SourceTable> geben eine
Tabelle in der Quellendatenbank an, die subskribiert wird.
Die Befehle <TargetSchema> und <TargetTable> können beliebige eindeutige Elemente
in der Spiegeldatenbank sein. Diese Namen werden auch auf den mobilen Geräten verwendet.
Die Befehle <AddTable> geben möglicherweise Indizes für die Tabellenspalten mit Hilfe
des Befehls <AddIndex> an. Damit das System einfach bleibt, müssen Indexnamen im
gesamten System eindeutig sein.
 
Das unten angegebene Beispiel erstellt eine JDBC-Subskription mit dem Namen 'JDBCSUB_2',
die die Datenbank MPFLEGE als Quelle und S_MP2 als Spiegel verwendet.
In dieser Subskription gibt es nur eine Tabelle, in der mehrere Spalten und ein
aufsteigender Index definiert ist (ein Pluszeichen '+' vor der Indexspalte bedeutet
aufsteigend, ein Minuszeichen '-' bedeutet absteigend).
Für einen Index können wie folgt mehrere Spalten angegeben werden: "+COL1;-COL2;+COL3".
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting/mdas3.dtd">
<Root>
   <AddJdbcMaster>
      <Database>jdbc:db2:MPFLEGE</Database>
      <Driver>COM.ibm.db2.jdbc.app.DB2Driver</Driver>
      <UserId>db2admin</UserId>
      <Password>db2admin</Password>
   </AddJdbcMaster>
 
   <AddJdbcMirror>
      <Database>jdbc:db2:S_MP2</Database>
      <Driver>COM.ibm.db2.jdbc.app.DB2Driver</Driver>
      <UserId>db2admin</UserId>
      <Password>db2admin</Password>
      <SyncWindow>60</SyncWindow>
   </AddJdbcMirror>
   
   <AddJdbcSubscription Replicate="TRUE">
      <Name>JDBCSUB_2</Name>
      <SubAdapter>DSYJDBC</SubAdapter>
      <EncryptionLevel>0</EncryptionLevel>
      <Block>N</Block>
      <MasterDb>jdbc:db2:MPFLEGE</MasterDb>
      <MasterDriver>COM.ibm.db2.jdbc.app.DB2Driver</MasterDriver>
      <MirrorDb>jdbc:db2:S_MP2</MirrorDb>
      <MirrorDriver>COM.ibm.db2.jdbc.app.DB2Driver</MirrorDriver>
      <AddTable>
         <TargetSchema>DSYSAMPLE</TargetSchema>
         <TargetTable>MPPERSON</TargetTable>
         <SourceSchema>DSYSAMPLE</SourceSchema>
         <SourceTable>MPPERSON</SourceTable>
         <DeleteAuth>Y</DeleteAuth>
         <InsertAuth>Y</InsertAuth>
         <UpdateAuth>Y</UpdateAuth>
         <SelectAuth>Y</SelectAuth>
         <WhereClauseMirrorToMobile>STADT=:STADT</WhereClauseMirrorToMobile>
         <WhereClauseMasterToMirror></WhereClauseMasterToMirror>
         <JoinFilter>G</JoinFilter>
                  <Order>1</Order>
         <Encrypt>N</Encrypt>
         <AddColumn>
            <SourceColumn>ID</SourceColumn>
            <TargetColumn>ID</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>Y</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>NAME</SourceColumn>
            <TargetColumn>NAME</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>ADRESSE</SourceColumn>
            <TargetColumn>ADRESSE</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>STADT</SourceColumn>
            <TargetColumn>STADT</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>RUFNR_PRIVAT</SourceColumn>
            <TargetColumn>RUFNR_PRIVAT</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>RUFNR_GESCHÄFTL</SourceColumn>
            <TargetColumn>RUFNR_GESCHÄFTL</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>MOBILTELEFON</SourceColumn>
            <TargetColumn>MOBILTELEFON</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddIndex>
            <Name>IDX_STADT</Name>
            <ColNames>+STADT;</ColNames>
         </AddIndex>
      </AddTable>
   </AddJdbcSubscription>
   
</Root>
 
 
Beispiel zum Entfernen von Tabellen aus einer JDBC-Subskription:
 
Dieses Beispiel entfernt zwei Tabellen aus der Subskription 'JDBCSUB_2'.
(Dabei wird davon ausgegangen, dass in der Subskription viele Tabellen vorhanden sind.)
Die Tabellen einer Subskription werden durch ihr Zielschema und ihre Zielnamen angegeben.
Wenn Tabellen aus einer Subskription ausgeschlossen werden, werden diese Tabellen in der
Spiegeldatenbank gelöscht. Dies führt möglicherweise zu Datenverlust, wenn für diese
Tabellen Synchronisationsdaten anstehen, die noch nicht in die Quellendatenbank
repliziert wurden. Das Attribut Replicate="TRUE" weist das XML-Tool an, vorhandene Daten
zu replizieren, bevor diese Tabellen gelöscht werden. In einigen Fällen ist bei der
Verwaltung bekannt, dass keine Daten repliziert werden müssen. In diesem Fall können Sie
Replicate="FALSE" verwenden, damit das Script schneller ausgeführt wird. Außerdem können
bestimmte Probleme vermieden werden, die eine erfolgreiche Replikation verhindern, wenn
Sie Replicate="FALSE" angeben.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
 
<Root>
   <AlterJdbcSubscription Replicate="TRUE">
      <Name>JDBCSUB_2</Name>
      <JdbcSubscription>
	      <RemoveTable>
	         <TargetSchema>DSYSAMPLE</TargetSchema>
	         <TargetTable>MPPERSON</TargetTable>
	      </RemoveTable>
	      <RemoveTable>
	         <TargetSchema>DSYSAMPLE</TargetSchema>
	         <TargetTable>MPKRANKENAKTE</TargetTable>
	      </RemoveTable>
	   </JdbcSubscription>	      
   </AlterJdbcSubscription>
</Root>
 
Hinzufügen von Tabellen zu einer JDBC-Subskription
Dieses Beispiel zeigt, wie Sie einer vorhandenen Subskription Tabellen hinzufügen.
Der Befehl <Order> weist XML Scripting Tool an, diese Tabelle MPKRANKENAKTE die zweite
Tabelle in dieser Subskription zu machen. Wenn bereits mehr als eine Tabelle vorhanden
ist, werden die anderen Tabellen an die dritte, vierte und fünfte Stelle versetzt. Die
Geräte, die von dieser Änderung betroffen sind, empfangen neue
Konfigurationsinformationen und werden entsprechend angepasst. Wenn weniger als zwei
Tabellen in dieser Subskription vorhanden sind, wird diese Tabelle die letzte Tabelle.
Die Markierung Replicate="FALSE" weist XML Scripting tool an, diese neue Tabelle nicht zu
replizieren, nachdem sie im Spiegel erstellt worden ist. Dadurch bleibt die
Spiegeltabelle leer, und es sind keine Daten für eine Synchronisation vorhanden. Aus
diesem Grund bleibt die Subskription bis zur nächsten erfolgreichen Replikation blockiert
(sie kann nicht synchronisiert werden), bei der diese Tabelle mit Daten von der Quelle
gefüllt wird und für eine Synchronisation vorbereitet wird. Beim Hinzufügen einer neuen
Tabelle zu einer vorhandenen oder neuen Subskription müssen alle Spalten dieser
Quellentabelle mit ihren Synchronisations- und Replikationseinstellungen aufgelistet
werden.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
<Root>
   <AlterJdbcSubscription Replicate="FALSE">      
      <Name>JDBCSUB_2</Name>
      <JdbcSubscription>
	      <AddTable>
	         <TargetSchema>DSYSAMPLE</TargetSchema>
	         <TargetTable>MPKRANKENAKTE</TargetTable>
	         <SourceSchema>DSYSAMPLE</SourceSchema>
	         <SourceTable>MPKRANKENAKTE</SourceTable>
	         <DeleteAuth>Y</DeleteAuth>
	         <InsertAuth>Y</InsertAuth>
	         <UpdateAuth>Y</UpdateAuth>
	         <SelectAuth>Y</SelectAuth>
	         <WhereClauseMirrorToMobile></WhereClauseMirrorToMobile>
	         <WhereClauseMasterToMirror></WhereClauseMasterToMirror>
	         <JoinFilter>G</JoinFilter>
	         <Order>2</Order>
	         <Encrypt>N</Encrypt>
	         <AddColumn>
	            <SourceColumn>SATZ_ID</SourceColumn>
	            <TargetColumn>SATZ_ID</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>Y</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>DATUM</SourceColumn>
	            <TargetColumn>DATUM</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>ZEIT</SourceColumn>
	            <TargetColumn>ZEIT</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>PATIENTEN_ID</SourceColumn>
	            <TargetColumn>PATIENTEN_ID</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>BLUTDRUCK</SourceColumn>
	            <TargetColumn>BLUTDRUCK</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>PULSFREQUENZ</SourceColumn>
	            <TargetColumn>PULSFREQUENZ</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>TEMPERATUR</SourceColumn>
	            <TargetColumn>TEMPERATUR</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>GEWICHT</SourceColumn>
	            <TargetColumn>GEWICHT</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	         <AddColumn>
	            <SourceColumn>BEMERKUNG</SourceColumn>
	            <TargetColumn>BEMERKUNG</TargetColumn>
	            <Subscribe>Y</Subscribe>
	            <Replicate>Y</Replicate>
	            <Key>N</Key>
	         </AddColumn>
	      </AddTable>
	   </JdbcSubscription>	
   </AlterJdbcSubscription>
</Root>
 
Ändern vorhandener Tabellen einer JDBC-Subskription
 
Dieses Beispiel zeigt, wie Sie die Details von vorhandenen Tabellen in vorhandenen
Subskriptionen ändern: Dieses Script modifiziert die WHERE-Klauseln, die eine horizontale
Filterung für die Replikation und Synchronisation ausführen. Weil Replicate="TRUE"
angegeben ist, wird der vorhandene Spiegel in die Quellendatenbank repliziert, bevor eine
Änderung vorgenommen wird. Danach werden Änderungen angewendet, und eine erneute
Replikation wird versucht. Diese zweite Replikation kann fehlschlagen, wenn ein Fehler in
der WHERE-Klausel enthalten ist. In diesem Fall müssen Sie Ihre Änderungen mit einem
weiteren Befehl 'AlterJdbcSubscription' und der Markierung Replicate="FALSE"
zurücknehmen. Sie können die Replikation auch manuell ausführen, indem Sie
dsyreplicate.bat in der Befehlszeile ausführen, nachdem Ihre Änderungen angewendet
wurden.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
<Root>
   <AlterJdbcSubscription Replicate="TRUE">
	   <Name>JDBCSUB_2</Name> 
	   <JdbcSubscription>
	      <AlterTable>
	         <TargetSchema>DSYSAMPLE</TargetSchema>
	         <TargetTable>MPPERSON</TargetTable>
	         <Table>
 <WhereClauseMirrorToMobile>NAME like :PREFIX</WhereClauseMirrorToMobile>
 <WhereClauseMasterToMirror>NAME like 'A%'</WhereClauseMasterToMirror>
	         </Table>
	      </AlterTable>
	   </JdbcSubscription>
   </AlterJdbcSubscription>
</Root>
 
Hinzufügen und Entfernen von Indizes
 
Dieses Beispiel fügt einer vorhendenen Tabelle einen neuen Index (IDX1_a) hinzu und
entfernt einen vorhandenen Index (IDX1_b) aus dieser Tabelle. Weil für den Index
MirrorOnly="TRUE" nicht angegeben ist, wird dieser Index auch auf den Zielgeräten
erstellt, die diese Subskription subskribieren.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
<Root>
   <AlterJdbcSubscription Replicate="FALSE">
	   <Name>JDBCSUB_2</Name>
	   <JdbcSubscription>
	      <AlterTable>
	         <TargetSchema>DSYSAMPLE</TargetSchema>
	         <TargetTable>MPPERSON</TargetTable>
	         <Table>
	            <AddIndex>
	               <Name>IDX1_a</Name>
	               <ColNames>+NAME;</ColNames>
	            </AddIndex>
	            <RemoveIndex>
         			<Name>IDX1_b</Name>
	            </RemoveIndex>
	         </Table>
	      </AlterTable>
	   </JdbcSubscription>
   </AlterJdbcSubscription>
</Root>
 

DataPropagator-Subskriptionen

Der Befehl <AddReplMaster> definiert Quellendatenbankverbindungsinformationen.
  Das System, das Exemplar, die Datenbank und das Kennwort sind erforderlich.
Der Befehl <AddReplMirror> definiert Spiegeldatenbankverbindungsinformationen.
  Die Datenbank, die Benutzer-ID, das Kennwort und das Synchronisationsfenster
(Replikationshäufigkeit) sind erforderlich.
 
Replikationsmaster- (DPropR-) und Spiegelinformationen müssen definiert werden,
bevor eine DPropR-Subskription auf diese Datenbanken verweisen kann.
 
Der Befehl <AddDpropRSubscription> definiert eine DPropR-Subskription für Sync Server.
Der Replikationsmechanismus zwischen der Quellen- und der Spiegeldatenbank muss bereits
über Data Propagator-Tools konfiguriert sein, als ob das XML-Tool oder Sync Server nicht
vorhanden wären. Das XML-Tool setzt an der Stelle fort, an der eine Sync
Server-spezifische Konfiguration benötigt wird. Lesen Sie die Data
Propagator-Dokumentation, um herauszufinden, wie Sie Replikationsquellen und eine
Replikationssubskription konfigurieren, um Ihre Quelle und Ihren Spiegel zu replizieren.
Die Spiegeltabellen müssen bereits erstellt sein, bevor Sie das XML-Tool verwenden
können, um Ihr DPropR-Replikationssystem über die Sync Server-DPropR-Subskription, die
Sie hier erstellen, in Sync Server einzufügen. Der Befehl <AddDProprSubscription> muss
mindestens einen Befehl <AddTable> enthalten. Die Befehle <AddTable> sollten alle
Spalten der Spiegeltabelle auflisten, um Replikations- und Synchronisationsoptionen für
alle Spalten mit dem Befehl <AddColumn> anzugeben. Bei DPropR-Subskriptionen ruft das
XML-Tool Tabellenbeschreibungen von der Spiegeldatenbank ab, anders als bei
JDBC-Subskriptionen, die dazu die Quellendatenbank verwenden. Die Befehle
<SourceSchema> und <SourceTable> geben eine Tabelle in der Quellendatenbank an, die
subskribiert wird.
Die Befehle <TargetSchema> und <TargetTable> geben eine Tabelle in der
Spiegeldatenbank an, die subskribiert wird.
Diese Namen werden auch auf den mobilen Geräten verwendet.
Die Befehle <AddTable> geben möglicherweise Indizes für die Tabellenspalten mit Hilfe
des Befehls <AddIndex> an. Indexnamen müssen im gesamten System eindeutig sein, damit
das System einfach bleibt.
 
Das unten angegebene Beispiel erstellt eine DPropR-Subskription mit dem Namen 'DPSUB1',
die die Datenbank MPFLEGE als Quelle und S_MPFLEGE als Spiegel verwendet.
In dieser Subskription gibt es nur eine Tabelle, in der mehrere Spalten und ein 
aufsteigender Index definiert sind (ein Pluszeichen '+' vor der Indexspalte bedeutet
aufsteigend, ein Minuszeichen '-' bedeutet absteigend).
Für einen Index können wie folgt mehrere Spalten angegeben werden: "+COL1;-COL2;+COL3".
 
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
<Root>
   <AddReplMaster>
      <System>SAD_LPT</System>
      <Instance>DB2</Instance>
      <Database>MPFLEGE</Database>
      <UserId>db2admin</UserId>
      <Password>db2admin</Password>
      <DatabaseAlias>MPFLEGE</DatabaseAlias>
   </AddReplMaster>
 
<AddReplMirror>
      <Database>S_MPFLEGE</Database>
      <UserId>db2admin</UserId>
      <Password>db2admin</Password>
      <SyncWindow>3600</SyncWindow>
   </AddReplMirror>
	
   <AddDproprSubscription Replicate="FALSE">      
      <Name>DPSUB1</Name>
      <SubAdapter>DSYDPROPR</SubAdapter>
      <EncryptionLevel>0</EncryptionLevel>
      <Block>N</Block>
      <MasterSystem>SAD_LPT</MasterSystem>
      <MasterInstance>DB2</MasterInstance>
      <MasterDb>MPFLEGE</MasterDb>
      <MirrorDb>S_MPFLEGE</MirrorDb>
      <AddTable>
         <TargetSchema>DSYSAMPLE</TargetSchema>
         <TargetTable>MPKRANKENAKTE</TargetTable>
         <SourceSchema>DSYSAMPLE</SourceSchema>
         <SourceTable>MPKRANKENAKTE</SourceTable>
         <DeleteAuth>Y</DeleteAuth>
         <InsertAuth>Y</InsertAuth>
         <UpdateAuth>Y</UpdateAuth>
         <SelectAuth>Y</SelectAuth>
         <WhereClauseMirrorToMobile></WhereClauseMirrorToMobile>
         <WhereClauseMasterToMirror></WhereClauseMasterToMirror>
         <JoinFilter>G</JoinFilter>
                  <Order>1</Order>
         <Encrypt>N</Encrypt>
         <AddColumn>
            <SourceColumn>SATZ_ID</SourceColumn>
            <TargetColumn>SATZ_ID</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>Y</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>DATUM</SourceColumn>
            <TargetColumn>DATUM</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>ZEIT</SourceColumn>
            <TargetColumn>ZEIT</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>PATIENTEN_ID</SourceColumn>
            <TargetColumn>PATIENTEN_ID</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>BLUTDRUCK</SourceColumn>
            <TargetColumn>BLUTDRUCK</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>PULSFREQUENZ</SourceColumn>
            <TargetColumn>PULSFREQUENZ</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>TEMPERATUR</SourceColumn>
            <TargetColumn>TEMPERATUR</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>GEWICHT</SourceColumn>
            <TargetColumn>GEWICHT</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
         <AddColumn>
            <SourceColumn>BEMERKUNG</SourceColumn>
            <TargetColumn>BEMERKUNG</TargetColumn>
            <Subscribe>Y</Subscribe>
            <Replicate>Y</Replicate>
            <Key>N</Key>
         </AddColumn>
      </AddTable>
   </AddDproprSubscription>
</Root>

Erstellen einer Gruppe oder eines Benutzers

Der Befehl <AddGroup> definiert eine Gruppe für Sync Server. Benutzer, die Daten mit
Sync Server synchronisieren können, müssen vorhandenen Gruppen zugeordnet werden. Die
Gruppe wird durch ihren Namen angegeben. Sie kann für die Synchronisation aktiviert oder
inaktiviert werden. Für eine Gruppe kann mit Hilfe des Befehls <AddDataFilter>
mindestens ein Datenfilter definiert werden.
Diese Datenfilter werden in WHERE-Klauseln von subskribierten Tabellen verwendet, um eine
horizontale Filterung auszuführen. Für eine Gruppe kann z. B. ein Datefilter mit dem
Namen ':STADT' definiert sein. Die WHERE-Klausel einer Tabelle kann eine Bedingung wie
z. B. MYSCHEMA.MYTABLE.CITYCOLUMN=:STADT angeben. Wenn wir in diesem Fall diese
Gruppe erstellen und ihre Benutzer synchronisieren, könnten wir standardmäßig Zeilen
auswählen, für die MYSCHEMA.MYTABLE.CITYCOLUMN='SAN JOSE' gilt. Beachten Sie, dass
einzelne Benutzer einen Datenfilter ihrer Gruppe außer Kraft setzen können, um einen
anderen Datenfilterwert anzugeben.
Ein Benutzer kann keinen Datenfilter außer Kraft setzen, der von seiner Gruppe nicht zur
Verfügung gestellt wird.
 
Im unten angegebenen Beispiel wird der Benutzer 'nurse_2' erstellt und 'GROUP_2'
zugewiesen. Es setzt den Datenfilter :STADT außer Kraft, um einen spezifischen
Städtenamen für 'nurse_2' anzugeben. Dieser Benutzer setzt allerdings nicht den
Datenfilter ':LAND' außer Kraft. Er übernimmt den Datenfilter ':LAND' von seiner Gruppe
'GROUP_2', wobei der Wert 'USA' ist.
 
Schließlich wird dieser neuen Gruppe 'GROUP_2' ein vorhandenen Benutzer mit dem Namen
'nurse_3' zugeordnet.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
 
<Root>
   <AddGroup>
      <Name>GROUP_2</Name>
      <Description>Testgruppe</Description>
      <Enabled>Y</Enabled>
      <AddDataFilter>
      	<Name>:STADT</Name>
      	<Value>'SAN JOSE'</Value>
      </AddDataFilter>
      <AddDataFilter>
      	<Name>:LAND</Name>
      	<Value>'USA'</Value>
      </AddDataFilter>
      <IncludeSubscriptionSet>      
		<Name>SUBSET_2</Name>
      </IncludeSubscriptionSet>      
   </AddGroup>
 
<AddUser>
      <Name>nurse_2</Name>
      <UserGroup>GROUP_2</UserGroup>
      <Description>Testbenutzer</Description>
      <Password>nurse_2</Password>
      <OverrideDataFilter>
      	<Name>:STADT</Name>
      	<Value>SANTA CLARA</Value>
      </OverrideDataFilter>
   </AddUser>
   
	<AlterUser>
		<Name>nurse_3</Name>
		<User>
			<UserGroup>GROUP_2</UserGroup>
		</User>
   </AlterUser>
</Root>
 
Ein weiteres Beispiel zum Ändern der Details eines Synchronisationsbenutzers:
 
Dieses Script ändert die Beschreibung eines Benutzers mit dem Namen nurse_5, legt ein
neues Kennwort fest und setzt den Datenfilter :DF1 außer Kraft, den der Benutzer von
seiner zugeordneten Gruppe (egal welche) übernimmt.
Wenn für die aktuelle Gruppe des Benutzers kein Datenfilter mit dem Namen :DF1 vorhanden
ist, schlägt dieses Script fehl, und es werden keine Änderungen für diesen Befehl
<AlterUser> angewendet.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting/mdas3.dtd">
 
<Root>
	<AlterUser>
      <Name>nurse_5</Name>
		<User>
    	  <Description>Neue Beschreibung</Description>
	      <Password>nurse5pass</Password>
    	  <OverrideDataFilter>
      		<Name>:DF1</Name>
	      	<Value>-1</Value>
    	  </OverrideDataFilter>
      </User>
   </AlterUser>
</Root>

Subskriptionsgruppen

Der Befehl <AddSubscriptionSet> definiert eine neue Subskriptionsgruppe für die 
Synchronisation. Der Befehl <IncludeSubscription> wird verwendet, um dieser
Subskriptionsgruppe vorhandene Subskriptionen zuzuordnen. In diesem Beispiel ist in
Subskriptionsgruppe SUBSET_2 der Inhalt JDBCSUB_2 und FILESUB_3 enthalten, wobei dieses
Beispiel davon ausgeht, dass JDBCSUB_2 und FILESUB_3 vorhandene Subskriptionen sind. Die
Reihenfolge der Subskriptionen in einer Subskriptionsgruppe ist standardmäßig die
Reihenfolge, in der sie in der XML angezeigt werden. In diesem Beispiel wird JDBCSUB_2 
vor FILESUB_3 synchronisiert. Der Befehl <Order> kann im Befehl
<IncludeSubscription> angegeben werden, um explizit eine relative Reihenfolge
anzugeben.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
<Root>
   <AddSubscriptionSet>
      <Name>SUBSET_2</Name>
      <IncludeSubscription>
      	<Name>JDBCSUB_2</Name>
      </IncludeSubscription>
      <IncludeSubscription>
      	<Name>FILESUB_3</Name>
      </IncludeSubscription>
   </AddSubscriptionSet>
</Root>
 
 
Beispiel zum Ändern einer vorhandenen Subskriptionsgruppe:
 
Dieses Beispiel fügt eine Subskription mit dem Namen 'JDBCSUB_4' (in der Annahme, dass
JDBCSUB_4 bereits vorhanden ist) der Subskriptionsgruppe 'SUBSET_2' hinzu und legt diese
neue Subskription als erste Subskription in dieser Subskriptionsgruppe fest.
 
<?xml version="1.0"?>
<!DOCTYPE Root SYSTEM "file:/com/ibm/mobileservices/xmlscripting
                                                      /mdas3.dtd">
<Root>
   <AlterSubscriptionSet>
      <Name>SUBSET_2</Name>
      <SubscriptionSet>
    	  <IncludeSubscription>
    	  	<Name>JDBCSUB_4</Name>
    	  	<Order>1</Order>
    	  </IncludeSubscription>
      </SubscriptionSet>
   </AlterSubscriptionSet>
</Root>
 

Zugehörige Konzepte

Zugehörige Tasks

Zugehörige Referenzen