@ReplicateWithFormulaWithFieldProtection
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);
}
