Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: BlueMoony am 11.06.03 - 15:00:11
-
Hi Leute,
kann man die Replizierparameter überhaupt per Code ändern??
Muss nämlich den Haken bei "Zugriffskontrollisten" in Erweitert wegmachen "wenn Computer -beliebiger Server- und Empfängt von -Beliebiger Server-".
Oder kann es sein das es schon so etwas gibt?? In einer Library oder so??
Danke schon mal für Beiträge!!!
Gruß
Dominic alias Bluemoony
Hier mal den Screenshot damit ihr wisst was ich meine:
-
Kann man überhaupt auf die Replizierparameter per code zugreifen????????????
Sorry Leute, aber gibts wirklich keinen der auf diese Frage antworten kann??´
Gruß
BlueMoony
-
... ich denke mit LS wirst du hier nicht direkt weiter kommen, sondern eventuell mit der NotesAPI - post doch mal an Eknori, der ist Spezialist bei NotesAPI...
ata
-
:)Uaahhh :)
Riesigen Dank dass du geantwortet hast.
Habe gleich bei Eknori gepostet.
Oder ist er hier in diesem Board vertreten.
Sorry für die dumme Frage aber ich bin neu hier.
Gruß
BlueMoony
-
... den gibt es hier - gottseidank - ;)
ata
-
Hallo BlueMoony
ich antworte mal hier zentral ( hast ja mitlerweile schon an verschiedensten Stellen gepostet ). Zunächst mal was grundsätzliches ( betrifft jetzt nicht unbedingt dich ) Auch ich kann mir keine Lösungen so mal eben aus dem Ärmel schütteln. Zudem mache ich das hier freiwillig. Deshalb habe ich überhaupt kein Verständnis dafür, wenn ich so Sachen lesen muß, wie " ich habe doch schon gestern zweimal gemailt und immer noch keine Lösung für mein Problem".
Das mit den Replizierparametern ist sicherlich mit API lösbar. Das müsste ich aber auch erst einmal rauskramen und mich durch die API Dokumentation durchwühlen. Im Netzt habe ich zumindest keinen Ansatz dazu gefunden; hast du ja mit Sicherheit auch schon nach gesucht, gell ?
Wer mich hierbei unterstützen möchte, kann ja mal in der API Referenz ( kann man bei Lotus runterleden ) suchen und die Calls posten, die man zur Lösung des Problems braucht. Die müssen dann "nur" noch nach LS "übersetzt" werden, da die API ja bekanntlich auf C/C++ beruht.
Wie du siehst wird sich da nicht gleich heute oder morgen eine Lösung finden. Ich werde mir das aber auf meine ToDo Liste schreiben und sehen, wie und wann ich das umgesetzt bekomme.
Von wie vielen Datenbanken reden wir denn eigentlich, daß man das nicht manuell machen kann ( und wenn ich da einen Azubi dransetzen würde ( kleiner Beitrag zum Thema: Was anfangen mit Praktikanten/Azubis ? );D )
eknori
-
Hab die API Docu gerade mal durchsucht: Ergebnis: Sieht schlecht aus !!
Es gibt eine Function NSFDbReplicaInfoSet
STATUS LNPUBLIC NSFDbReplicaInfoSet(
DBHANDLE hDB,
DBREPLICAINFO far *ReplicationInfo);
Description :
This function sets the given database's DBREPLICAINFO structure.
Use this function to set specific values, such as the replica ID, in the header data of a database. To create a new replica copy of a given database, for example, you must first create the new database using the NSFDbCreate, then get the replica ID of the source database via NSFDbReplicaInfoGet, then set this replica ID into the new database via NSFDbReplicaInfoSet.
You may also use NSFDbReplicaInfoSet to set values such as the replication flags in the header of the database. See the symbolic value REPLFLG_xxx for specific replication settings.
Diese Function verwendet die Structure DBREPLICAINFO mit den values REPLFLG_xxx
REPLFLG_xxx kann folgende Werte haben
#define REPLFLG_DISABLE 0x0004 /* Disable replication */
#define REPLFLG_UNREADIFFNEW 0x0008 /* Mark unread only if newer note */
#define REPLFLG_IGNORE_DELETES 0x0010 /* Don't propagate deleted notes when
replicating from this database */
#define REPLFLG_HIDDEN_DESIGN 0x0020 /* UI does not allow perusal of Design */
#define REPLFLG_DO_NOT_CATALOG 0x0040 /* Do not list in catalog */
#define REPLFLG_CUTOFF_DELETE 0x0080 /* Auto-Delete documents prior to cutoff date */
#define REPLFLG_NEVER_REPLICATE 0x0100 /* DB is not to be replicated at all */
#define REPLFLG_ABSTRACT 0x0200 /* Abstract during replication */
#define REPLFLG_DO_NOT_BROWSE 0x0400 /* Do not list in database add */
#define REPLFLG_NO_CHRONOS 0x0800 /* Do not run chronos on database */
#define REPLFLG_IGNORE_DEST_DELETES 0x1000 /* Don't replicate deleted notes
into destination database */
#define REPLFLG_MULTIDB_INDEX 0x2000 /* Include in Multi Database indexing */
#define REPLFLG_PRIORITY_LOW 0xC000 /* Low priority */
#define REPLFLG_PRIORITY_MED 0x0000 /* Medium priority */
#define REPLFLG_PRIORITY_HI 0x4000 /* High priority */
#define REPLFLG_PRIORITY_SHIFT 14 /* Shift count for priority field */
#define REPLFLG_PRIORITY_MASK 0x0003 /* Mask for priority field after shifting*/
#define REPLFLG_PRIORITY_INVMASK 0x3fff /* Mask for clearing the field */
#define REPLFLG_USED_MASK (0x4|0x8|0x10|0x40|0x80|0x100|0x200|0xC000|0x1000|0x2000|0x4000)
Hier findet man zwar einen Parameter REPLFLG_IGNORE_DELETES, der das Flag für die Weitergabe von Löschvorgängen toggled; das ist ja einer der Parrameter aus der Gruppe, wo auch das ACL Flag steht. Allerdings gibt es wohl keine Möglichkeit, eben diese ACL Flag zu setzen oder zu löschen.
Auch die API beinhaltet nicht immer ALLE Möglichkeiten, die auch die GUI bietet. Mache Sachen lassen sich selbst mit der API programmtechnisch nicht realisieren.
Was aber nicht heißt, daß es nicht doch evtl. einen undokumentierten Parameter gibt, mit dem das dann unter Zuhilfenahme der o.a. function möglich ist, das Flag zu setzen oder zu löschen.
Hilft jetzt nicht wirklich weiter, weiß ich. Aber mehr kann ich da momentan auch nicht für dich tun, sorry.
eknori
-
@Eknori
Also als erstes mal ein dickes Danke für deine Antworten.
Für dein erstes Posting:
Ich weiß natürlich das man sich so eine Lösung nicht aus dem Ärmel schütteln kann und ich wollte nicht so erscheinen als ob ich eine Antwort erzwingen wollte. (Ich weiß du hast das nicht gemeint ;-))
Aber ich habe im Internet gesucht wie wild und habe sämtliche Dokumentationen durchgeforstet. Dabei habe ich deine Lösung des zweiten Postings auch gefunden, aber es ist wie du geschrieben hast es scheint nichts zu geben um dieses Acl-Flag zu setzen.
Dann habe ich auf der Lotus Developer Site nachgeschaut und dort gab es schon seit Anfang 2002 Postings über fast das selbe Problem wie ich, deshalb dachte ich wow, wenn das schon so lange her ist, dann hat bestimmt jemand in diesem Board das Problem auch schon gehabt und kann mir bestimmt weiter helfen.
Deshalb hat es mich auch gewundert als keine Antwort kam. Ich habe sicher ein zu schnell reagiert, das tut mir auch leid aber ich wollte nicht das es so ankommt.
Es handelt sich um ca. 3200 Adressbücher und Journale.
Ich schreibe gerade einen Automatismus um Anmeldungen für einen XTND- Server (Synchronisation zwischen Palms und Notes) auf einem schnellen Wege abzuarbeiten. Ich muss aber in den Replizierparametern dieses ACL-Flag auf false setzen, ansonsten müsste man manuell die 3200 Adressbücher und 3200 Journale öffnen und dieses Flag setzen.
So und jetzt zu was anderem:
Zufälligerweiße bin ich Azubi und ich glaube schon, dass wenn meine Abteilung mich hier nicht hätte, dann wären einige faule Säcke hier ganz schön am Ar*** ;-), das nur so zur Anmerkung. ;)
Sorry nochmal für meine Aufdringlichkeit
und
Vielen Dank nochmal für deine Postings!!!
Gruß
BlueMoony
-
So ich habe eine Möglichkeit gefunden die Replizierparameter anzusprechen:
Set doc = ntDB.GetDocumentByID("FFFF0800")
Set item = doc.Getfirstitem("$ReplClassMasks")
Dieses Dokument ("FFFF0800") bezieht sich auf die Replizierparameter einer DB.
Das Item "$ReplClassMasks" enthält als Wert die Summe aller ReplFlags. Mit dem richtigen Wert kann man die angehakten Flags ändern.
Natürlcih sind noch andere Items vertreten mit denen andere Replparameter ändern kann.
Gruß@all
Dominic alias BlueMoony
-
yoo, zu dem gleichen Ergebnis bin ich dann auch gekommen, nachdem mich Julian mit der Nase drauf gestubst hat:
Ulrich -
Hmm, I'm not sure. You might try taking a look at the Icon note and the
Replication Formula note in the database (db.GetDocumentByID("FFFF0010") and
db.GetDocumentByID("FFFF0800")). One of those might have a field that
controls that flag.
I know that the Icon note has a field that does something with setting and
clearing the replicated local security properties ($LSECFlags), and the
Replication Formula note has fields like $ReplClassMasks that does something
with controlling the note classes that get replicated (ACL might be a note
class in this case). You can see a list of the fields in those notes, with
some vague descriptions of what they are, in the stdnames.h header file that
ships with the Notes API -- search for "Replication formula note item names"
and "Icon note item names" in that file.
If those are the things that control the ACL flag, you might be able to set
the flag before you replicate the database, then replicate the database, and
then reset the flag after you're done.
- Julian