Tag: Ongedocumenteerd

  • Volgnummer probleempje in IBM Notes

    Een klant had een raar probleem. Een database waar documenten een volgnummer kregen bij het aanmaken, bleek ineens dubbele nummers te krijgen.
    Waar de nummering eerder nog iets in de 18 miljoen was, begon het ineens weer met 16.877.210. En dat herhaalde zich een paar keer.
    Na inspectie van de code bleek de teller bijgehouden te worden in een document. Niet ongebruikelijk, de code klopte ook, en werkte nog steeds goed.
    Maar deze database had ook een replica. Ondanks dat de teller slechts in een database werd gebruikt leek Notes bij het repliceren toch telkens overtuigd dat de replica met het oudere teller document nieuwer was dan de bron database, die wel degelijk nieuwer was.

    Na controle van het replica id hadden we het over het volgnummer dat Notes gebruikt om samen met de datum te bepalen welk document in een replica nieuwer is.
    Een collega Notes specialist die goed met cijfers is zag direct wat het was: de nummering in het volgnummer (sequence number) kan bestaan uit maximaal FFFFFF. Dit is gelijk aan 16.777.215, en daarna begint het tellen weer bij 0.

    In ons geval was het nummer in de originele database dus over de FFFFFF heen gegaan, en had daarmee een lager nummer gekregen dan het replica document, waardoor telkens bij het repliceren het oudere document weer terug werd gerepliceerd waardoor ook de teller voor de documenten weer lager was.

    Door een nieuw teller document aan te maken was het probleem weer opgelost, maar dit was wel de eerste keer dat ik dit zag in een Notes database.

    Leuk die theorie, maar waarom staat het volgnummer bij een nieuw document dan op 00000001 (8 posities), wat in mijn ogen aangeeft dat het tot FFFFFFFF (4.294.967.295) kan gaan en niet tot FFFFFF?
    Dat antwoord kan ik helaas (nog) niet geven, maar een korte test met een code loopje gaf uitsluitsel, na 00FFFFFF begon het nummer weer met 00000001. Of dit een bug is of een bewuste keuze durf ik niet te zeggen.

    Even wat uitleg over het sequence number:

    Als database A een document bevat met een bepaalde UNID en database B bevat een document met het zelfde UNID, zal de replicator concluderen dat deze twee documenten replica kopieën van elkaar zijn.
    In dat geval, gaat de replicator verder met het volgnummer en sequentietijd van de twee documenten te onderzoeken.
    Als het volgnummer en de tijd van aanpassing het zelfde zijn voor beide documenten , dan is er volgens de replicator geen actie vereist omdat de documenten gelijk zijn aan elkaar.
    Aan de andere kant, als een van beide, het volgnummer of de tijd van aanpassing, of beide, verschillen tussen de twee documenten, dan moet de replicator beslissen welke recenter is en het oudere document actualiseren met de inhoud van de meest recente versie.

    Als een document is bijgewerkt maar het andere document niet, wordt het sequentienummer van het eerste document groter dan die van het andere document.
    De replicator behandelt deze zaak door het overschrijven van het andere document met de eerste, waardoor de twee databases weer synchroon zijn.

    Universal Note ID (UNID)=
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    Sequence Time =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    Sequence Number =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    De overige regels zijn:
    Originator ID (OID) =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    OID.File =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    OID.Note =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    Global Note ID (GNID) =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

    Database ID (GNID.File) =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT<00096E86

    Note ID (GNID.NoteID) =
    OF162EE8B9:66439054
    ON2BAE1447:A7A43567
    SDC1257F8F:0067AAFF-SN00000001
    DBC1257738:002ED95E
    NT00096E86

  • notesDatabase.SetOption

    notesDatabase.SetOption

    Hoewel de functie notesDatabase.SetOption wel beschreven wordt in de Designer Help staan enkele waarden voor versie 8.5.1 er nog niet bij, daarom even in dit onderwerp.

    Om de geavanceerde database eigenschappen met Lotusscript aan te passen bestaat de volgende  functie:

    Call notesDatabase.SetOption( optionName% , flag )
    Waarbij optionName% een waarde van het type Integer is.

    Voor flag gebruik je True om de eigenschap aan te vinken, en False om het uit te zetten.

    De volgende waarden zijn toegestaan:

    12 = Geen idee wat dit doet?
    36 = Vrije ruimte niet overschrijven (Don’t overwrite free space)
    37 = Leesmarkeringen niet behouden (Don’t maintain unread marks)
    38 = Speciale antwoordhierarchie niet ondersteunen ( Don’t support specialized response hierarchy)
    41 = Documententabel optimaliseren (Optimize document table map)
    44 = Eigenschap LastAccessed behouden (Maintain LastAccessed property)
    45 = Transactielog uitschakelen (Disable transaction logging)
    46 = Controleren op nieuws niet toestaan (Don’t allow headline monitoring)
    49 = Voorlopig verwijderen toestaan (Allow soft deletions)
    54 = Meer velden in database toestaan (Allow more fields in database)
    65 = LZ1-compressie gebruiken voor bijlagen (Use LZ1 compression for attachments)
    70 = Leesmarkeringen repliceren: Alleen clusterservers (Replicates unread marks: Clustered servers only)
    71 =  Leesmarkeringen repliceren: Alle servers (Replicates unread marks: All servers)
    74 =  Markeer de database als niet beschikbaar. (Out of service enabled)
    75 = Threadhistorie ondersteunen (Support Response Thread History)
    76 = Eenvoudig zoeken niet toestaan (Don’t allow simple search)
    81 = Domino service voor bijlagen en objecten gebruiken (Use Domino Attachment and Object Service)
    82 = Documentgegevens comprimeren (Compress document data)
    85 = Export van viewgegevens uitschakelen (Disable export of view data)

    Onbekende opties

    Ik mis nog een aantal opties zoals de optie om “Weergaven automatisch bijwerken uitschakelen” (Disable automatic updating of views) en “Database-ontwerp comprimeren” (Compress database design) aan of uit te zetten.

  • AddLinkByIds

    Met AddLinkByIds kun je een Weergave of Document koppeling in een RichText veld aanmaken door gebruik te maken van het Replica ID van de doel database en het UNID van de weergave of het document.
    De wel gedocumenteerde AppendDocLink methode heeft echt een Database, Weergave of Document object nodig, deze methode gebruikt dus alleen tekst als parameters.

    AddLinkByIds

    Gedefinieerd in

    NotesRichTextItem

    Syntax

    Call notesRichTextItem.AddLinkByIds( dbReplicaID$, serverHint$, viewUNID$, documentUNID$, comment$ [, HotSpotText$ ])

    Parameters

    serverHint$

    String. Servernaam in Canonical or Common formaat.

    viewUNID$

    String. UniversalID van de weergave. Gebruik een lege string (“”) om een database link te maken of om de “default view” te gebruiken wanneer een document koppeling wordt gebruikt.

    documentUNID$

    String. UniversalID van het document dat je wilt koppelen. Gebruik een lege string (“”) om een weergave of database koppeling te maken.

    comment$

    String. De tekst die verschijnt als de gebruiker de koppeling met de muis selecteert en vast houd (titel of help tekst).

    HotSpotText$

    Optioneel. String. Wanneer opgegeven zal de HotSpotText verschijnen als een informatie blokje met tekst als koppeling, anders wordt de betreffende pictogram afgebeeld (weergave, document of database).

    Tip: het UniversalID van een document is snel te halen uit het Informatievenster van een document.

  • @LocationGetInfo

    Om informatie uit het huidige locatie document van de Notes Client op te halen kun je de formule @LocationGetInfo gebruiken.
    Als parameter geef je de veldnaam op die je wilt uitlezen.

    Enkele voorbeelden:

    @LocationGetInfo([FullName]) : Locatienaam
    @LocationGetInfo([MailServer]) : Homeserver
    @LocationGetInfo([InternetMailAddress]) : e-mail adres
    @LocationGetInfo([NamePreference]) : 0 voor standaard naam, 1 voor alternatieve naam
    @LocationGetInfo([BookmarksFilename]) : standaard bookmark.nsf
    @LocationGetInfo([SametimeServer]) : Sametime Server
    enz…

  • LoadAddressListByIndex en LoadAddressListByName

    LoadAddressListByIndex en LoadAddressListByName zijn twee niet gedocumenteerde @formula commando in IBM Notes om namen uit een adresboek te tonen op het web:

    @DbCommand(“Domino”;[“LoadAddressListByIndex” | “LoadAddressListByName”];”names.nsf”; txtTargetField; strMax; [strIndex | strKey])