Function DE Version 5.00

@ReplicateWithFormulaWithFieldProtection

Database NotesAdmin NotesSystem Replication

Syntax

@ReplicateWithFormulaWithFieldProtection(DBHANDLE1;DBHANDLE2;FORMULA3;FNLIST4;FIELDNAMELIST1;FIELDNAMELIST2);
@ReplicateWithFormulaWithFieldProtection(DBHANDLE1;DBHANDLE2;FORMULA3;FNLIST4;FIELDNAMELIST1;FIELDNAMELIST2;NOTECLASSES5;FNREPLICATIONFLAGS6);
@ReplicateWithFormulaWithFieldProtection(DBHANDLE1;DBHANDLE2;FORMULA3;FNLIST4;FIELDNAMELIST1;FIELDNAMELIST2;NOTECLASSES5;FNREPLICATIONFLAGS6;FNLISTERROR7);

Beschreibung

Repliziert die durch DBHANDLE1 referenzierte Datenbank mit der durch DBHANDLE2 referenzierten Datenbank. Dabei werden nur die Dokumente repliziert, die der Notes-kompatiblen Selection Formula TEXT FORMULA3 entsprechen.
FNLIST4 enthält die Replikationsrechte. Das erste Element gibt die Rechte für die Replikation in der ersten Datenbank an, das zweite Element die Rechte für die zweite Datenbank.
Die Datenbanken müssen keine Repliken voneinander sein!

Über FIELDNAMELIST1 und FIELDNAMELIST2 können Feldnamen angegeben werden, deren Werte in der jeweiligen Datenbank erhalten bleiben sollen. Diese Felder werden bei der Replikation nicht durch gleichnamige Felder aus der jeweils anderen Datenbank überschrieben.

TEXT/TEXTLIST FIELDNAMELIST1:
Gibt die Namen der Felder an, die in den Dokumenten der DB1 erhalten bleiben sollen.
Gleichnamige Felder aus Dokumenten der DB2 werden beim Replizieren nach DB1 nicht übernommen.

TEXT/TEXTLIST FIELDNAMELIST2:
Gibt die Namen der Felder an, die in den Dokumenten der DB2 erhalten bleiben sollen.
Gleichnamige Felder aus Dokumenten der DB1 werden beim Replizieren nach DB2 nicht übernommen.

Es wird eine FNLIST zurückgegeben:

Element   Bedeutung
1   UpdateCount DBHANDLE1
2   CreateCount DBHANDLE1
3   DeleteCount DBHANDLE1
4   UpdateCount DBHANDLE2
5   CreateCount DBHANDLE2
6   DeleteCount DBHANDLE2

FNLIST4:

Bit   HEX   Bedeutung
01   0001   Lesen
02   0002   Schreiben
03   0004   Ändern
04   0008   Löschen

Der optionale Parameter NOTECLASSES NOTECLASSES5 dient zur Einschränkung der Dokumente die in der Selection-Formula TEXT FORMULA3 berücksichtigt werden. Wird kein Parameter5 angegeben wird die Selection-Formula TEXT FORMULA3 auf Documente der NOTECLASS 1 (Documents) angewendet.

NOTECLASSES5:
DEC   BIT   Bedeutung

00000   XX   No Notes   keine Dokumente
00001   01   Documents   Daten-Dokumente
00002   02   Policy-Note   Über-DB-Dokument
00004   03   Form-Note   Masken-Design-Dokumente
00008   04   View-Note   Ansicht-Design-Dokumente
00016   05   Icon-Note   Piktogramm-Dokument
00032   06   Design-Collection-Note   Ansicht-Dokumente
00064   07   ACL-Info-Note   ACL-Info-Dokument
00128   08   Help-Index-Note   
00256   09   Help-Note   Hilfe-DB-Dokument
00512   10   Filter-Note   Macro-Design-Dokumente
01024   11   Feld-Note   Feld-Design-Dokumente
02048   12   Replication-Note   Replikations-Dokumente
04096   13   Privat_Design   Privat-Design-Dokumente

32768   16   Default-Note of Each   Von jedem das Vorgabe-Dokument

32767   01-15   Notes   Alle Dokumente
32766   02-15   All Non-Document-Notes   Alle nicht Daten-Dokumente

(Um mehrere Dokumenten-Klassen anzugeben werden die Werte der betreffenden Klassen addiert oder durch @BitVektor aufgebaut)

FNREPLICATIONFLAGS6:

Bit   HEX   Bedeutung
01   0001   Lokalisieren von Links (Doc;View;DB) in Datenbanken mit unterschiedlicher ReplicaID.

FNLISTERROR7:
Bei Verwendung des optionalen Return-Parameter FNLISTERROR7, wird in diesem eine Error-Statistik zurückgegeben.

Element   Bedeutung
1   Error UpdateCount DBHANDLE1
2   Error CreateCount DBHANDLE1
3   Error DeleteCount DBHANDLE1
4   Error UpdateCount DBHANDLE2
5   Error CreateCount DBHANDLE2
6   Error DeleteCount DBHANDLE2

Beispiel: @ReplicateWithFormulaWithFieldProtection(DBHANDLE1;DBHANDLE2;FORMULA3;FNLIST4;FIELDNAMELIST1;FIELDNAMELIST2;NOTECLASSES5;FNREPLICATIONFLAGS6;FNLISTERROR7);

/*
Beispielscript zur Replikation mit geschützten Feldern.

Dieses Script öffnet zwei Notes-Datenbanken und repliziert ausgewählte Dokumente zwischen
ihnen anhand einer Formel.
Bestimmte Felder können davor geschützt werden, bei der Replikation überschrieben zu werden.

Das Script protokolliert die Anzahl der aktualisierten, erstellten und
gelöschten Dokumente sowie die entsprechenden Fehlerzahlen für beide Datenbanken.
*/

SrcDBPath:="test\\testdb1.nsf";
DstDBPath:="test\\testdb2.nsf";

/* Quell- und Zieldatenbank öffnen. */
SrcDBh:=@OpenDB(SrcDBPath);
DstDBh:=@OpenDB(DstDBPath);

/* Beschriftungen für die Replikations-Ergebniszähler erzeugen. */
RetLabels:=("Number of docs "+@Explode("updated in ;created in ;deleted in ";";")+SrcDBPath+": "):
   ("Number of docs "+@Explode("updated in ;created in ;deleted in ";";")+DstDBPath+": ");

/* Beschriftungen für die Replikations-Fehlerzähler erzeugen. */
RetErrorListsLabels:=("Number of errors while "+@Explode("updating in ;creating in ;deleting in ";";")+SrcDBPath+": "):
   ("Number of errors while "+@Explode("updating in ;creating in ;deleting in ";";")+DstDBPath+": ");

/* Wenn eine der Datenbanken nicht geöffnet werden konnte, den entsprechenden Fehler protokollieren. */
IF(@IsError(SrcDBh;DstDBh)){
   IF(@IsError(SrcDBh)){
      @LogReport(SrcDBh;3);
   }
   IF(@IsError(DstDBh)){
      @LogReport(DstDBh;3);
   }
}ELSE{
   /* Die zu replizierenden Dokumente auswählen. Es werden nur Einträge der Familie "Mustermann" repliziert! */
   Formula:="SELECT Form=\"MySqlAmount\" & @Right(Name;\" \")=\"Mustermann\"";

   /* Reguläre Datendokumente replizieren. */
   NoteClasses:=1;

   /* Standard-Replikationsverhalten verwenden. */
   ReplicationFlags:=0;

   /* Replikationsrechte für Quell- und Zieldatenbank festlegen. Alle Rechte werden gewährt! */
   SrcDB_RghtsBitVector:=@BitVektor(1:2:3:4);
   DstDB_RghtsBitVector:=@BitVektor(1:2:3:4);

   /* Felder festlegen, die in der jeweiligen Datenbank nicht überschrieben werden dürfen. */
   SrcDB_ProtectedFieldsList:="FieldLocalToThisDB";
   DstDB_ProtectedFieldsList:="FieldLocalToThisDB";

   /* Rechte-Definitionen für Quell- und Zieldatenbank zusammenführen. */
   RightsList:=SrcDB_RghtsBitVector:DstDB_RghtsBitVector;

   /* Alle Dokumente replizieren, die der Formel entsprechen, und dabei
      die Listen der geschützten Felder für beide Datenbanken berücksichtigen. */

   Ret:=@ReplicateWithFormulaWithFieldProtection(SrcDBh;DstDBh;Formula;RightsList;SrcDB_ProtectedFieldsList;DstDB_ProtectedFieldsList;NoteClasses;ReplicationFlags;RetErrorLists);

   /* Replikations-Ergebniszähler protokollieren. */
   @LogReport(@Implode(RetLabels+@Text(Ret);@NewLine);3);

   /* Replikations-Fehlerzähler protokollieren. */
   @LogReport(@Implode(RetErrorListsLabels+@Text(RetErrorLists);@NewLine);3);

} /* END IF(@IsError(SrcDBh;DstDBh)) */

/* Quelldatenbank schließen, wenn sie erfolgreich geöffnet wurde. */
IF(!@IsError(SrcDBh)){
   SrcDBh:=@CloseDB(SrcDBh);
}

/* Zieldatenbank schließen, wenn sie erfolgreich geöffnet wurde. */
IF(!@IsError(DstDBh)){
   DstDBh:=@CloseDB(DstDBh);
}