Archive for: ‘Dezember 2012’

Rückblick 2012

31. Dezember 2012 Posted by motzet-online.de

see the english version here Konferenzen 22. bis 23. März: BLUG in Antwerpen, eine sehr sehr beeindruckende Konferenz mit vielen guten Beiträgen vgl. dazu meine beiden Reviews hier im Blog: Teil 1 ...

Einen guten Rutsch und ein gutes neues Jahr

31. Dezember 2012 Posted by Ralf Petter

Ein arbeitsreiches und spannendes Jahr mit vielen neuen Entwicklungen im Bereich der IT liegt hinter uns. Ein Jahr in dem ich sehr viel neues von vielen Leuten in der "Yellowbubble" lernen durfte und hoffe, dass auch der eine oder andere aus meinen Blog etwas lernen konnte.

Daher bedanke ich mich bei allen Lesern meines Blogs für das Interesse und die guten Kommentare und wünsche allen meinen Lesern eine schöne Silvesterfeier, Gesundheit und viel Glück und Erfolg im neuen Jahr.
Quelle Openclipart.org

[EN] 2013 #SocBiz Prediction: “Web Experience Management is Becoming the New ERP”

30. Dezember 2012 Posted by StefanP.

And another prediction for 2013, this time from Douglas Heise,  Product Marketing Director at CoreMedia:

Web Experience Management is Becoming the New ERP

In the traditional enterprise software world, people use enterprise resource planning (ERP) tools to integrate and optimize the flow of business data across and between organizations. Now, with the Web becoming a primary platform for business, WCM has an opportunity to play a similar role for a new generation of online businesses.

In order to fulfill this role, however, Web CMSs will need to do a much better job of integrating with backend data systems and other consumer facing tools, including marketing automation, lead generation, social communities and analytics. Business users are forced to deal with an ever-growing array of separate tools for managing online experiences. Now is the time to unite these tools under a common WCM infrastructure.

via 2013 Web Content Management Trends: The Post PC World is Here.


Serverumzug – fast fertig

30. Dezember 2012 Posted by motzet-online.de

So nebenbei haben wir seit Anfang Dezenber den Umzug unseres Servers von Weißenburg nach Nürnberg vorangetrieben. Seit heute ist (fast) alles fertig, noch einige kleine Nacharbeiten, aber dann haben w ...

Zeitgeist 2012 – Das Jahr im Rückblick

29. Dezember 2012 Posted by Alexander Kluge


[EN] 2013 #SocBiz Prediction: From Punk Rock to Mainstream?

29. Dezember 2012 Posted by StefanP.

This time the 2013 predictions from Tom Petrocelli, Senior Analyst investigating the Social Enterprise:

If the enterprise social applications market was a music genre, it would be punk rock. Everything about it just seems faster and louder. As I look ahead to 2013, I expect a continuation of 2012. In other words, the enterprise application market will continue to mutate rapidly under the effects of social, mobile and cloud.

Social collaboration, social marketing, social channels merge with enterprise apps

The Social Enterprise is a way of doing business. Technology only exists to enable that. Social Enterprise can’t exist as a separate category for long. It will fold into enterprise business applications as a feature set more than a product category. This is good since it represents the best way to harness the real advantages of the Social Enterprise in a way that generates real business results.

via Prediction: More Change for Enterprise Applications in 2013.


Erste Eindrücke vom Browserplugin und iNotes

28. Dezember 2012 Posted by Ralf Petter

Nachdem ich im letzten Post bereits die ersten Eindrücke zum Notesclient festgehalten habe möchte ich jetzt auch meinen Eindruck zweier Features die wir zwar nicht verwenden, die aber sehr viele Entwicklungsressourcen im Notes Entwicklungsteam gebunden haben anschauen.

1. Das Browserplugin

Erstens das Browserplugin macht von der Qualität einen viel besseren Eindruck als ich erwartet hätte. Es läuft soweit alles wie designed und sieht auch sehr gut aus.

 
Für Firmen die sehr viel mit xPages machen und Ihre Anwendungen hauptsächlich für den Browserclient ausrichten kann das eine mögliche Migrationshilfe sein. Man muss dann nicht mehr vom Browser in ein anderes Fenster wechseln, wenn man von einer xPages Anwendung in eine klassische Notesanwendung wechseln möchte.


Ein Problem, dass Anwender am Browserplugin hassen werden ist mir aber gleich aufgefallen. modale Dialoge blockieren nicht nur den geöffneten Tab, sondern blockieren das gesamte Browserfenster. Das heißt sobald das Notesplugin blockiert, kann man in anderen Browsertabs nicht mehr arbeiten. Es werden sogar andere Browserfenster in denen ebenfalls ein Tab mit einem Notesplugin offen ist gesperrt. Wie gesagt die Anwender werden diese Einschränkung wirklich hassen, da sie es von Webanwendungen nicht gewohnt sind.

Ebenfalls problematisch finde ich, dass der Notesclient und das Browserplugin nicht harmonieren. Wenn der Notesclient geöffnet ist, kann ich das Browserplugin nicht verwenden. Wenn ich im Browser einmal auf eine Notesfunktionalität zugegriffen habe, dann kann ich den Richclient erst wieder starten, wenn der Browser mit allen Tabs und Fenstern geschlossen wird. Wenn das Browserplugin installiert ist und der Notesclient offen funktioniert der Zugriff auf das "notes://" Protokoll nicht mehr und man erhält nur die Meldung dass der Notesclient bereits offen ist. Das ist für Endanwender sicher nicht zu verstehen.

Eine Kleinigkeit ist, dass die Druckfunktion des Browsers nicht funktioniert. Wenn man im Browser auf drucken geht, dann wird nur eine leere Seite gedruckt. Erst wenn man über das Notesmenü druckt, dann klappt das Drucken.

Offene Fragen zum Browserplugin sind aber für mich nach wie vor:
  • Größe des Plugins (Bei der Beta Version 150 MB!) 
  • Ich habe praktisch genau den gleichen Aufwand für das Deployment, wenn ich dem Benutzer bereits Einstellungen vorgeben möchte. Wobei ich noch nicht getestet habe, ob Policys beim Browserplugin überhaupt funktionieren. 
  • Teilweise sind Fehlermeldungen irreführend, da Sie für den Browserclient nicht passen und nur im Kontext mit dem Richclient sinn machen.
  • Sämtliche mit Notes 8 eingeführte Powerfeatures des Richclient sind im Browserplugin nicht verfügbar.
  • Warum bringt die IBM ein Feature, dass die Migration zu Cloud Diensten von nicht IBM Anbietern so stark erleichtert.

 2. iNotes

Wow iNotes sieht so gut aus, das man teilweise meint man verwendet einen nativen Client. Das ist wirklich eine starke Demonstration was mit Webtechnologien heutzutage möglich ist.

Auch die Performance ist wirklich großartig. Der Wechsel zwischen verschiedenen Bereichen geht blitzschnell und beinahe verzögerungsfrei aber leider leidet auch iNotes an Inkonsistenzen im UI. Statt den Follow Up Fähnchen von denen es im Client schon zwei verschiedene Versionen gibt, werden in iNotes plötzlich Sterne verwendet.  Wobei nicht nur die Symbole unterschiedlich sind, sondern auch noch der beschreibende Text. Fällt das bei der IBM niemanden auf, oder glaubt die IBM das es für die Benutzer leicht zu verstehen ist, dass ein Feature im Rich Client ein komplett anderes Design als in iNotes hat.

Die Icons des Richtexteditors sind ebenfalls in iNotes komplett anders als im Richclient und auch anders als die im Browserplugin verwendeten.

iNotes hat Icons die offensichtlich noch dem Notes 8.x Design entsprechen und dadurch überhaupt nicht zur neuen Farbgebung passen.

während das Browserplugin bereits die Icons des Notes 9 Social Edition Client spendiert bekommen hat.




Ein Bug ist mir auch noch aufgefallen. Die Startseite von iNotes lässt sich bei mir nicht customizen. Aber das sollte bis zur finalen Version erledigt sein.

Mein Resumee zum Browserplugin und iNotes  das beides Features sind die nicht nicht aktiv einsetze und daher auch nur oberflächlich angeschaut habe ist, dass beide Features trotz aller Kritik einen sehr guten Eindruck hinterlassen. Vor allem iNotes ist für Leute die einen Browser verwenden müssen eine tolle Sache. Auch wenn ich auf jeden Fall jedem Poweruser den Richclient ans Herz legen sollte.








Notes 9 als Anwender; erster Blick Hui, zweiter Blick leider Pfui.

28. Dezember 2012 Posted by Ralf Petter

Endlich über die Weihnachtsfeiertage bin ich auch mal dazu gekommen mir die Beta von Notes 9 Social Edition im Detail anzusehen. Vorweg schicken möchte ich, dass ich Notes seit über 12 Jahren sowohl als Anwender als auch als Administrator und auch als Entwickler verwendet habe und auch nach wie vor verwende. Ich stehe Notes prinzipiell sehr positiv gegenüber und war auch immer ein Verfechter des Standardclients auch wenn die ersten Versionen des Standardclients sehr buggy waren. Ich war aber speziell ab der 8.5.1 der Meinung, dass Notes auf einen sehr guten Weg war. Die neuen Features wurden immer stabiler und auch die Performance wurde langsam besser. Als ich dann gehört habe, dass bei Notes 8.5.4 bzw. jetzt Notes 9 nocheinmal Verbesserungen am UI gemacht würden, war ich begeistert.

Für den Test habe ich eine komplett neue Umgebung installiert, ohne irgendeine Übernahme von Altdaten, damit sollten die besten Voraussetzungen geschaffen sein, dass Notes 9 sein volles Potential ausspielen kann.

Der Startschirm von Notes sieht auch wirklich sehr gut aus. Die reduzierte Farbwahl und die Fonts sehen wirklich sehr stimmig aus.



Auch die Mailansicht sieht auf den ersten Blick sehr ansprechend aus und erzeugt ein starkes ich will das so bald wie möglich auf meinem Arbeitsrechner haben .



Aber all diese Dinge haben auch schon in 8.5.3 schon ziemlich gut ausgesehen und leider hat die IBM es versäumt das wichtigste zu machen. Die Dinge in Notes die bisher schon total veraltet und vom Design inkosistent waren auf das Design von 8.5.3 oder 9 zu heben. In diesem Bereich versagt Notes 9 völlig. Eher ist es so, dass neue Inkosistenzen dazu gekommen sind.

Und bei diesen Dingen im alten Design handelt es sich nicht etwa um wirklich selten verwendete Features. Hier ein paar Beispiele:


Der Öffnen Dialog eine sehr of verwendete Funktion sieht immer noch weitgehend wie in Notes 7 aus. Die Fensterdekorationen und auch der Hinweis für die Vergrösserung des Fensters sind für Windows 7 vollkommen untypisch. Die Icons passen überhaupt nicht zum Rest des Clients. Die Knöpfe sehen ziemlich nach Windows 98 aus.

Übrigens im Designer wurde der selbe Dialog gegen einen neuen ausgetauscht, der nicht nur eine Windows 7 Fensterdekoration sondern auch die richtigen Knöpfe und auch ganz andere Icons für die Anwendungen und Ordner verwendet. Man muss aber sagen, dass auch diese Icons noch im 8.x Gewand sind und von der Farbe nicht zu Notes 9 passen :-( Wie viel Aufwand wäre es wohl gewesen diesen Dialog ohne Workingset Rubrik auch im Client zu verwenden.


Super konsistent sind auch die Beschreibungen ("On My Computer" vs. "local").


Fast noch schlimmer, der Passwortdialog von Lotus Notes der ebenfalls schon lange nicht mehr neu designed wurde.



Dieser Dialog ist die erste Visitenkarte die jeder Anwender bei der Verwendung von Notes bekommt. Leider vermittelt dieser Dialog und vor allem auch der Schlüsselring ein für das Jahr 2012 unerträgliches Windows 98 Feeling.

Alle Dialogboxen in Notes verwenden total unterschiedliche UI Widgetsets.Hier mal eine kurze Zusammenstellung was die UI Designer der IBM so an verschiedenen Buttonstilen zu bieten haben.

 
 


Es kann doch nicht sein, dass ein und die selbe Awendung vier verschiedene Stile für normale Schaltflächen in Dialogen (In normalen Notesmasken wird natürlich wieder eine andere Optik benützt) verwenden muss. Bevor man das bereits gute Design der Notes PIM CA's wieder komplett überarbeitet wäre es doch mal an der Zeit gewesen, eventuell alte Dialoge an das aktuelle Design anzupassen. Übrigens wenn man für die Schaltflächen die Widgets vom Operating System verwenden würde, wie in den Eclipseteilen der Anwendung, dann hätte man automatisch immer einheitliche Schaltflächen und diese würden auch immer automatisch nativ aussehen.

Das selbe gilt natürlich für alle anderen UI Elemente genauso. z.B. für die Checkboxen.

Einmal richtig, wie es unter Windows 7 aussehen soll.

Dann wieder im Stil von Windows 98 und das nicht etwa an einer ganz anderen Stelle sondern im selben Einstellungsdialog von Notes 9!

Ebenfalls unverständlich die schon unter Notes 8 wie ein Fremdkörper wirkende Follow Up Ansicht, die bei uns in der Firma sehr gerne verwendet wird, wurde nicht aktualisiert. Wie viel Aufwand wäre das wohl gewesen (hochgerechnet mit testen und übersetzen vielleicht 1 Mannwoche).


So passen halt weder die Schriftarten, noch die Aktionsleiste noch die Spaltenköpfe noch das generelle Design der Ansicht zum neuen bzw. auch nicht zum 8.x.x Inbox design.

Das in der Maildatenbank für die Follow Up Funktion unterschiedliche Symbole für die Darstellung der selben Priorität verwendet werden, ist da nur noch die Spitze des Eisbergs.

z.B. im Dialog zur Erstellung eines Follow Ups
 z.B. in der Inbox View


Sollte doch normal eine Bildressource sein und dann überall gleich aussehen oder nicht?

Auch uralte Bugs bei der Fontauswahl wie z.B. SPR KSOR/USEJ3 im Standardclient sind in Notes 9 noch immer nicht gefixt.

Man könnte diesen Rant jetzt ewig fortsetzen, aber das erspare ich mir. Als Resumee bleibt Notes 9 sieht auf den ersten Blick fantastisch aus, aber leider hat die IBM wieder nur die Komponenten die bereits unter Notes 8 Standard sehr gut ausgesehen haben verbessert. Die anderen Komponenten sehen nach wie vor wie in Notes 7 aus und werden berechtigter Weise von Endbenutzern sehr häufig kritisiert.

 P.S. Ich bin nach wie vor der Meinung, dass IBM Notes eine gute Software ist, aber leider wird nie dieser letzte Aufwand betrieben um die ganzen Ecken und Kanten abzuschleifen die derzeit verhindern, dass Notes eine von Anwendern gliebtes Programm wird.





[EN] 2013 #SocBiz Prediction: “Mobile is the new normal”

28. Dezember 2012 Posted by StefanP.

And another expert looking forward into 2013. This time Brett Caine, senior vice president and general manager for the Citrix Online Services division:

The number of work-at-home employees is increasing dramatically and not just day-extenders. For the first time we are seeing companies implement work-at-home policies and practices that make it possible to work from home as a full member of the team. Everyone wants flexibility, more and more ask for it and the millennials will demand it. …

Casual Fridays will become Work-from-Home Fridays

The tablet generation has already redefined the workplace. This on-the-go generation is not defined by four walls and a desktop computer. They are mobile. Mobile is the new normal. It’s not the exception. … In return, we will have a more dynamic workforce and work environment instead of the same old stagnant cube nation.

via Why The Simmering Social Revolution In The Workplace Will Boil Over In 2013 – Forbes.


Wie kann ich programmatisch private Gestaltungselemente auf Aktualität prüfen?

28. Dezember 2012 Posted by Manfred Meise

Wir setzen eine Anwendung mit privaten Ansichten und Ordnern ein, die regelmäßig weiterentwickelt wird und produktive Datenbanken durch Schalonenaktualisierung anpasst. Hierbei werden die privaten Kopien der Ansichten und Ordner nicht automatisch aktualisiert. Bei der Konzeption einer "selbstgestrikten" Aktualisierungslogik stößt man schnell auf die Frage: "Wie kann ich erkennen, ob die private Kopie des Gestaltungselementes aktuell ist?"

Vergleich von Zeitstempeln


a) Einsatz von NotesView

Die Idee:
Man öffnet die Ansicht und hat Zeitstempel (Erstelldatum; letzte Änderung) des jeweiligen gemeinsamen Gestaltungselementes und der privaten Kopie.. Klingt gut, ist es aber nicht!

So erhält man mit
 
Dim view as NotesView
set view = db.getView ("Meine Ansicht")


jeweils die gemeinsame Ansichtsvorlage, wenn die private Kopie nicht existiert, jedoch die private Kopie des Ansicht, wenn diese exisiert. Somit kann man im Regelfall (wenn die private Kopie NICHT existiert) nicht auf die gemeinsame Vorlage zu Vergleichszwecken zugreifen.

Ergebnis:
Nicht prakttikabel !

b) Einsatz von NotesDatabase.Views

Die Idee:
Man arbeitet alle Ansichten (gemeinsame Vorlagen und private Kopien) einer Datenbank ab und muss die jeweiligen Exemplare (Vorlage  / Kopie) einander zuordnen, um sie zu vergleichen.. Das muß doch gehen!

So durchsucht folgendes Skript die Datenbank nach Ordnern mit dem AliasNamen "F2-DE" und listet jeweils die Universal-ID der Gestaltungselemente auf:
 
Sub
Initialize
 
 Dim s                         As New NotesSession
 Dim db                         As NotesDatabase
 Dim view                 As NotesView
 Dim vViewNames        As Variant
 
 Set db = s.Currentdatabase
 
 ForAll v In db.Views
         Set view = v
         vViewNames = view.Aliases
         If Not IsEmpty (vViewNames) then
                 If vViewNames(0) = "F2-DE" Then    
                         If Not IsEmpty (view.Readers) Then
                                 MessageBox |Private Kopie des Ordners "F2" gefunden: | & view.Universalid
                         Else
                                 MessageBox |Gemeinsame Vorlage des Ordner "F2" gefunden: | & view.Universalid
                         End If
                 End If
         End If
 End ForAll
End
Sub


Interessant und noch nicht vollständig erforscht: Dieses Skript findet sogar private Kopien von Ordnern (in Datenbank gespeichert), welche der Domino Designer nicht anzeigt! Nach anfänglicher Begeisterung über diesen Lösungsansatz, habe ich dieses Skript gegen eine große produktive Datenbank laufen lassen und musste feststellen, dass jeweils beim Zugriff auf ein Ansichtsobjekt die Ansichtsindizes aktualisiert werden, um nur auf unwesentliche Merkmale der Ansicht zuzugreifen. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen. In meinen Testfällen habe ich teilweise 15 Sekunden warten müssen, bevor ich mein Ergebnis hatte.

Ergebnis:
Zu langsam für den Produktionsbetrieb!

b) Einsatz von NotesNoteCollection>

Die Idee:
Man kann doch die Gestaltungselemente sammeln und auf diese als NotesDocument zugreifen!. So erhalte ich Informationen zum Gestaltungselement, ohne den Indexer zu triggern!

Schon häufig habe ich mit der NotesNoteCollection Klasse auf Gestaltungslemente (Ansichten, Felder, Agenten, Teilmasken) zugegriffen und hierfür u.A. auch eine Selektionsformel einsetzen können, nach Elementen mit speziellen Attributen zu suchen. So würde ich mit den Werten des "$Flags" Items auf bestimmte Ansichts-/Ordner-Typen zugreifen und mit Auswertung des "$Readers" Felders den Eigentümer einer privaten Kopie identifizieren können.

siehe dieses Codebeispiel ...

Beim Einsatz dieses Skriptes gegen eine große produktive Datenbank ist dieses schneller als das zuvor, jedoch immer noch zu langsam, da eine Datenbanksuche angestoßen wird.. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen.

Ergebnis:
Besser, doch noch zu langsam für den Produktionsbetrieb! Vorteil: Ich kann die Namen der Ansichten/Ordner ermitteln, die ich behandeln möchte.


Einsatz eines Namensschemas


Nach intensiven Tests habe ich alle oben beschriebenen Lösungsansätze verworfen und mich für die Variante entschieden (welche in diesem Beitrag nicht näher beschrieben ist):
  • Ich führe ein Namensschema (speziell für Ansichten, die lokal statt in der Datenbank gespeichert werden) ein und ändere die Namen der Gestaltungselemente, wenn ich diese aktualisiere
  • Ich akzeptiere, durch Einführung eines Versionskennzeichens für die gesamte Anwendung, dass ich ggf. Elementen aktualisiere, deren Gestaltung sich zur Vorversion nicht geändert haben

Ergebnis:
Sehr performant, da keinerlei Prüfungen

Dieser Artikel ist Teil der Artikelserie
:  Gestaltungsaktualisierung privater Ansichten und Ordner stellt eine echte Herausforderung dar

Wie kann ich programmatisch private Gestaltungselemente auf Aktualität prüfen?

28. Dezember 2012 Posted by Manfred Meise

Wir setzen eine Anwendung mit privaten Ansichten und Ordnern ein, die regelmäßig weiterentwickelt wird und produktive Datenbanken durch Schalonenaktualisierung anpasst. Hierbei werden die privaten Kopien der Ansichten und Ordner nicht automatisch aktualisiert. Bei der Konzeption einer "selbstgestrikten" Aktualisierungslogik stößt man schnell auf die Frage: "Wie kann ich erkennen, ob die private Kopie des Gestaltungselementes aktuell ist?"

Vergleich von Zeitstempeln


a) Einsatz von NotesView

Die Idee:
Man öffnet die Ansicht und hat Zeitstempel (Erstelldatum; letzte Änderung) des jeweiligen gemeinsamen Gestaltungselementes und der privaten Kopie.. Klingt gut, ist es aber nicht!

So erhält man mit
 
Dim view as NotesView
set view = db.getView ("Meine Ansicht")


jeweils die gemeinsame Ansichtsvorlage, wenn die private Kopie nicht existiert, jedoch die private Kopie des Ansicht, wenn diese exisiert. Somit kann man im Regelfall (wenn die private Kopie NICHT existiert) nicht auf die gemeinsame Vorlage zu Vergleichszwecken zugreifen.

Ergebnis:
Nicht praktikabel !

b) Einsatz von NotesDatabase.Views

Die Idee:
Man arbeitet alle Ansichten (gemeinsame Vorlagen und private Kopien) einer Datenbank ab und muss die jeweiligen Exemplare (Vorlage  / Kopie) einander zuordnen, um sie zu vergleichen.. Das muĂź doch gehen!

So durchsucht folgendes Skript die Datenbank nach Ordnern mit dem AliasNamen "F2-DE" und listet jeweils die Universal-ID der Gestaltungselemente auf:
 
Sub
Initialize

Dim
s                         As New NotesSession
Dim
db                         As NotesDatabase
Dim
view                 As NotesView
Dim
vViewNames        As Variant

Set
db = s.Currentdatabase

ForAll
v In db.Views
      Set view = v
      vViewNames = view.Aliases
      If Not IsEmpty (vViewNames) then
              If vViewNames(0) = "F2-DE" Then    
                      If Not IsEmpty (view.Readers) Then
                              MessageBox |Private Kopie des Ordners "F2" gefunden: | & view.Universalid
                      Else
                              MessageBox |Gemeinsame Vorlage des Ordner "F2" gefunden: | & view.Universalid
                      End If
              End If
      End If
End
ForAll
End
Sub


Interessant und noch nicht vollständig erforscht: Dieses Skript findet sogar private Kopien von Ordnern (in Datenbank gespeichert), welche der Domino Designer nicht anzeigt! Nach anfänglicher Begeisterung über diesen Lösungsansatz, habe ich dieses Skript gegen eine große produktive Datenbank laufen lassen und musste feststellen, dass jeweils beim Zugriff auf ein Ansichtsobjekt die Ansichtsindizes aktualisiert werden, um nur auf unwesentliche Merkmale der Ansicht zuzugreifen. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen. In meinen Testfällen habe ich teilweise 15 Sekunden warten müssen, bevor ich mein Ergebnis hatte.

Hinweis:
Es ist darauf zu achten, NICHT auf die gemeinsame Vorlage der Ansicht/des Ordners zuzugreifen, da dieses einen Laufzeitfehler 4005 "Index is not to be generated on server" verursacht. Somit ist stets z.B. mit isEmpty(view.Readers) zu prüfen, dass auf eine private Kopie zugegriffen wird (die Prüfung anderer Attribute ist nicht möglich).

Ergebnis:
Zu langsam fĂĽr den Produktionsbetrieb!

b) Einsatz von NotesNoteCollection>

Die Idee:
Man kann doch die Gestaltungselemente sammeln und auf diese als NotesDocument zugreifen!. So erhalte ich Informationen zum Gestaltungselement, ohne den Indexer zu triggern!

Schon häufig habe ich mit der NotesNoteCollection Klasse auf Gestaltungslemente (Ansichten, Felder, Agenten, Teilmasken) zugegriffen und hierfür u.A. auch eine Selektionsformel einsetzen können, nach Elementen mit speziellen Attributen zu suchen. So würde ich mit den Werten des "$Flags" Items auf bestimmte Ansichts-/Ordner-Typen zugreifen und mit Auswertung des "$Readers" Felders den Eigentümer einer privaten Kopie identifizieren können.

siehe dieses Codebeispiel ...

Beim Einsatz dieses Skriptes gegen eine groĂźe produktive Datenbank ist dieses schneller als das zuvor, jedoch immer noch zu langsam, da eine Datenbanksuche angestoĂźen wird.. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Ă–ffnen der Datenbank einsetzen.

Ergebnis:
Besser, doch noch zu langsam für den Produktionsbetrieb! Vorteil: Ich kann die Namen der Ansichten/Ordner ermitteln, die ich behandeln möchte.


Einsatz eines Namensschemas


Nach intensiven Tests habe ich alle oben beschriebenen Lösungsansätze verworfen und mich für die Variante entschieden (welche in diesem Beitrag nicht näher beschrieben ist):
  • Ich fĂĽhre ein Namensschema (speziell fĂĽr Ansichten, die lokal statt in der Datenbank gespeichert werden) ein und ändere die Namen der Gestaltungselemente, wenn ich diese aktualisiere
  • Ich akzeptiere, durch EinfĂĽhrung eines Versionskennzeichens fĂĽr die gesamte Anwendung, dass ich ggf. Elementen aktualisiere, deren Gestaltung sich zur Vorversion nicht geändert haben

Ergebnis:
Sehr performant, da keinerlei PrĂĽfungen

Dieser Artikel ist Teil der Artikelserie
:  Gestaltungsaktualisierung privater Ansichten und Ordner stellt eine echte Herausforderung dar

Wie kann ich programmatisch private Gestaltungselemente auf Aktualität prüfen?

28. Dezember 2012 Posted by Manfred Meise

Wir setzen eine Anwendung mit privaten Ansichten und Ordnern ein, die regelmäßig weiterentwickelt wird und produktive Datenbanken durch Schalonenaktualisierung anpasst. Hierbei werden die privaten Kopien der Ansichten und Ordner nicht automatisch aktualisiert. Bei der Konzeption einer "selbstgestrikten" Aktualisierungslogik stößt man schnell auf die Frage: "Wie kann ich erkennen, ob die private Kopie des Gestaltungselementes aktuell ist?"

Vergleich von Zeitstempeln


a) Einsatz von NotesView

Die Idee:
Man öffnet die Ansicht und hat Zeitstempel (Erstelldatum; letzte Änderung) des jeweiligen gemeinsamen Gestaltungselementes und der privaten Kopie.. Klingt gut, ist es aber nicht!

So erhält man mit
 
Dim view as NotesView
set view = db.getView ("Meine Ansicht")


jeweils die gemeinsame Ansichtsvorlage, wenn die private Kopie nicht existiert, jedoch die private Kopie des Ansicht, wenn diese exisiert. Somit kann man im Regelfall (wenn die private Kopie NICHT existiert) nicht auf die gemeinsame Vorlage zu Vergleichszwecken zugreifen.

Ergebnis:
Nicht praktikabel !

b) Einsatz von NotesDatabase.Views

Die Idee:
Man arbeitet alle Ansichten (gemeinsame Vorlagen und private Kopien) einer Datenbank ab und muss die jeweiligen Exemplare (Vorlage  / Kopie) einander zuordnen, um sie zu vergleichen.. Das muß doch gehen!

So durchsucht folgendes Skript die Datenbank nach Ordnern mit dem AliasNamen "F2-DE" und listet jeweils die Universal-ID der Gestaltungselemente auf:
 
Sub
Initialize

Dim
s                         As New NotesSession
Dim
db                         As NotesDatabase
Dim
view                 As NotesView
Dim
vViewNames        As Variant

Set
db = s.Currentdatabase

ForAll
v In db.Views
      Set view = v
      vViewNames = view.Aliases
      If Not IsEmpty (vViewNames) then
              If vViewNames(0) = "F2-DE" Then    
                      If Not IsEmpty (view.Readers) Then
                              MessageBox |Private Kopie des Ordners "F2" gefunden: | & view.Universalid
                      Else
                              MessageBox |Gemeinsame Vorlage des Ordner "F2" gefunden: | & view.Universalid
                      End If
              End If
      End If
End
ForAll
End
Sub


Interessant und noch nicht vollständig erforscht: Dieses Skript findet sogar private Kopien von Ordnern (in Datenbank gespeichert), welche der Domino Designer nicht anzeigt! Nach anfänglicher Begeisterung über diesen Lösungsansatz, habe ich dieses Skript gegen eine große produktive Datenbank laufen lassen und musste feststellen, dass jeweils beim Zugriff auf ein Ansichtsobjekt die Ansichtsindizes aktualisiert werden, um nur auf unwesentliche Merkmale der Ansicht zuzugreifen. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen. In meinen Testfällen habe ich teilweise 15 Sekunden warten müssen, bevor ich mein Ergebnis hatte.

Hinweis:
Es ist darauf zu achten, NICHT auf die gemeinsame Vorlage der Ansicht/des Ordners zuzugreifen, da dieses einen Laufzeitfehler 4005 "Index is not to be generated on server" verursacht. Somit ist stets z.B. mit isEmpty(view.Readers) zu prüfen, dass auf eine private Kopie zugegriffen wird (die Prüfung anderer Attribute ist nicht möglich).

Ergebnis:
Zu langsam für den Produktionsbetrieb!

b) Einsatz von NotesNoteCollection>

Die Idee:
Man kann doch die Gestaltungselemente sammeln und auf diese als NotesDocument zugreifen!. So erhalte ich Informationen zum Gestaltungselement, ohne den Indexer zu triggern!

Schon häufig habe ich mit der NotesNoteCollection Klasse auf Gestaltungslemente (Ansichten, Felder, Agenten, Teilmasken) zugegriffen und hierfür u.A. auch eine Selektionsformel einsetzen können, nach Elementen mit speziellen Attributen zu suchen. So würde ich mit den Werten des "$Flags" Items auf bestimmte Ansichts-/Ordner-Typen zugreifen und mit Auswertung des "$Readers" Felders den Eigentümer einer privaten Kopie identifizieren können.

siehe dieses Codebeispiel ...

Beim Einsatz dieses Skriptes gegen eine große produktive Datenbank ist dieses schneller als das zuvor, jedoch immer noch zu langsam, da eine Datenbanksuche angestoßen wird.. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen.

Ergebnis:
Besser, doch noch zu langsam für den Produktionsbetrieb! Vorteil: Ich kann die Namen der Ansichten/Ordner ermitteln, die ich behandeln möchte.


Einsatz eines Namensschemas


Nach intensiven Tests habe ich alle oben beschriebenen Lösungsansätze verworfen und mich für die Variante entschieden (welche in diesem Beitrag nicht näher beschrieben ist):
  • Ich führe ein Namensschema (speziell für Ansichten, die lokal statt in der Datenbank gespeichert werden) ein und ändere die Namen der Gestaltungselemente, wenn ich diese aktualisiere
  • Ich akzeptiere, durch Einführung eines Versionskennzeichens für die gesamte Anwendung, dass ich ggf. Elementen aktualisiere, deren Gestaltung sich zur Vorversion nicht geändert haben

Ergebnis:
Sehr performant, da keinerlei Prüfungen

Dieser Artikel ist Teil der Artikelserie
:  Gestaltungsaktualisierung privater Ansichten und Ordner stellt eine echte Herausforderung dar

Wie kann ich programmatisch private Gestaltungselemente auf Aktualität prüfen?

28. Dezember 2012 Posted by Manfred Meise

Wir setzen eine Anwendung mit privaten Ansichten und Ordnern ein, die regelmäßig weiterentwickelt wird und produktive Datenbanken durch Schalonenaktualisierung anpasst. Hierbei werden die privaten Kopien der Ansichten und Ordner nicht automatisch aktualisiert. Bei der Konzeption einer "selbstgestrikten" Aktualisierungslogik stößt man schnell auf die Frage: "Wie kann ich erkennen, ob die private Kopie des Gestaltungselementes aktuell ist?"

Vergleich von Zeitstempeln


a) Einsatz von NotesView

Die Idee:
Man öffnet die Ansicht und hat Zeitstempel (Erstelldatum; letzte Änderung) des jeweiligen gemeinsamen Gestaltungselementes und der privaten Kopie.. Klingt gut, ist es aber nicht!

So erhält man mit
 
Dim view as NotesView
set view = db.getView ("Meine Ansicht")


jeweils die gemeinsame Ansichtsvorlage, wenn die private Kopie nicht existiert, jedoch die private Kopie des Ansicht, wenn diese exisiert. Somit kann man im Regelfall (wenn die private Kopie NICHT existiert) nicht auf die gemeinsame Vorlage zu Vergleichszwecken zugreifen.

Ergebnis:
Nicht praktikabel !

b) Einsatz von NotesDatabase.Views

Die Idee:
Man arbeitet alle Ansichten (gemeinsame Vorlagen und private Kopien) einer Datenbank ab und muss die jeweiligen Exemplare (Vorlage  / Kopie) einander zuordnen, um sie zu vergleichen.. Das muß doch gehen!

So durchsucht folgendes Skript die Datenbank nach Ordnern mit dem AliasNamen "F2-DE" und listet jeweils die Universal-ID der Gestaltungselemente auf:
 
Sub
Initialize

Dim
s                         As New NotesSession
Dim
db                         As NotesDatabase
Dim
view                 As NotesView
Dim
vViewNames        As Variant

Set
db = s.Currentdatabase

ForAll
v In db.Views
      Set view = v
      vViewNames = view.Aliases
      If Not IsEmpty (vViewNames) then
              If vViewNames(0) = "F2-DE" Then    
                      If Not IsEmpty (view.Readers) Then
                              MessageBox |Private Kopie des Ordners "F2" gefunden: | & view.Universalid
                      Else
                              MessageBox |Gemeinsame Vorlage des Ordner "F2" gefunden: | & view.Universalid
                      End If
              End If
      End If
End
ForAll
End
Sub


Interessant und noch nicht vollständig erforscht: Dieses Skript findet sogar private Kopien von Ordnern (in Datenbank gespeichert), welche der Domino Designer nicht anzeigt! Nach anfänglicher Begeisterung über diesen Lösungsansatz, habe ich dieses Skript gegen eine große produktive Datenbank laufen lassen und musste feststellen, dass jeweils beim Zugriff auf ein Ansichtsobjekt die Ansichtsindizes aktualisiert werden, um nur auf unwesentliche Merkmale der Ansicht zuzugreifen. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen. In meinen Testfällen habe ich teilweise 15 Sekunden warten müssen, bevor ich mein Ergebnis hatte.

Hinweis:
Es ist darauf zu achten, NICHT auf die gemeinsame Vorlage der Ansicht/des Ordners zuzugreifen, da dieses einen Laufzeitfehler 4005 "Index is not to be generated on server" verursacht. Somit ist stets z.B. mit isEmpty(view.Readers) zu prüfen, dass auf eine private Kopie zugegriffen wird (die Prüfung anderer Attribute ist nicht möglich).

Ergebnis:
Zu langsam für den Produktionsbetrieb!

b) Einsatz von NotesNoteCollection>

Die Idee:
Man kann doch die Gestaltungselemente sammeln und auf diese als NotesDocument zugreifen!. So erhalte ich Informationen zum Gestaltungselement, ohne den Indexer zu triggern!

Schon häufig habe ich mit der NotesNoteCollection Klasse auf Gestaltungslemente (Ansichten, Felder, Agenten, Teilmasken) zugegriffen und hierfür u.A. auch eine Selektionsformel einsetzen können, nach Elementen mit speziellen Attributen zu suchen. So würde ich mit den Werten des "$Flags" Items auf bestimmte Ansichts-/Ordner-Typen zugreifen und mit Auswertung des "$Readers" Felders den Eigentümer einer privaten Kopie identifizieren können.

siehe dieses Codebeispiel ...

Beim Einsatz dieses Skriptes gegen eine große produktive Datenbank ist dieses schneller als das zuvor, jedoch immer noch zu langsam, da eine Datenbanksuche angestoßen wird.. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen.

Ergebnis:
Besser, doch noch zu langsam für den Produktionsbetrieb! Vorteil: Ich kann die Namen der Ansichten/Ordner ermitteln, die ich behandeln möchte.


Einsatz eines Namensschemas


Nach intensiven Tests habe ich alle oben beschriebenen Lösungsansätze verworfen und mich für die Variante entschieden (welche in diesem Beitrag nicht näher beschrieben ist):
  • Ich führe ein Namensschema (speziell für Ansichten, die lokal statt in der Datenbank gespeichert werden) ein und ändere die Namen der Gestaltungselemente, wenn ich diese aktualisiere
  • Ich akzeptiere, durch Einführung eines Versionskennzeichens für die gesamte Anwendung, dass ich ggf. Elementen aktualisiere, deren Gestaltung sich zur Vorversion nicht geändert haben

Ergebnis:
Sehr performant, da keinerlei Prüfungen

Dieser Artikel ist Teil der Artikelserie
:  Gestaltungsaktualisierung privater Ansichten und Ordner stellt eine echte Herausforderung dar

Wie kann ich programmatisch private Gestaltungselemente auf Aktualität prüfen?

28. Dezember 2012 Posted by Manfred Meise

Wir setzen eine Anwendung mit privaten Ansichten und Ordnern ein, die regelmäßig weiterentwickelt wird und produktive Datenbanken durch Schalonenaktualisierung anpasst. Hierbei werden die privaten Kopien der Ansichten und Ordner nicht automatisch aktualisiert. Bei der Konzeption einer "selbstgestrikten" Aktualisierungslogik stößt man schnell auf die Frage: "Wie kann ich erkennen, ob die private Kopie des Gestaltungselementes aktuell ist?"

Vergleich von Zeitstempeln


a) Einsatz von NotesView

Die Idee:
Man öffnet die Ansicht und hat Zeitstempel (Erstelldatum; letzte Änderung) des jeweiligen gemeinsamen Gestaltungselementes und der privaten Kopie.. Klingt gut, ist es aber nicht!

So erhält man mit
 
Dim view as NotesView
set view = db.getView ("Meine Ansicht")


jeweils die gemeinsame Ansichtsvorlage, wenn die private Kopie nicht existiert, jedoch die private Kopie des Ansicht, wenn diese exisiert. Somit kann man im Regelfall (wenn die private Kopie NICHT existiert) nicht auf die gemeinsame Vorlage zu Vergleichszwecken zugreifen.

Ergebnis:
Nicht praktikabel !

b) Einsatz von NotesDatabase.Views

Die Idee:
Man arbeitet alle Ansichten (gemeinsame Vorlagen und private Kopien) einer Datenbank ab und muss die jeweiligen Exemplare (Vorlage  / Kopie) einander zuordnen, um sie zu vergleichen.. Das muĂź doch gehen!

So durchsucht folgendes Skript die Datenbank nach Ordnern mit dem AliasNamen "F2-DE" und listet jeweils die Universal-ID der Gestaltungselemente auf:
 
Sub
Initialize

Dim
s                         As New NotesSession
Dim
db                         As NotesDatabase
Dim
view                 As NotesView
Dim
vViewNames        As Variant

Set
db = s.Currentdatabase

ForAll
v In db.Views
      Set view = v
      vViewNames = view.Aliases
      If Not IsEmpty (vViewNames) then
              If vViewNames(0) = "F2-DE" Then    
                      If Not IsEmpty (view.Readers) Then
                              MessageBox |Private Kopie des Ordners "F2" gefunden: | & view.Universalid
                      Else
                              MessageBox |Gemeinsame Vorlage des Ordner "F2" gefunden: | & view.Universalid
                      End If
              End If
      End If
End
ForAll
End
Sub


Interessant und noch nicht vollständig erforscht: Dieses Skript findet sogar private Kopien von Ordnern (in Datenbank gespeichert), welche der Domino Designer nicht anzeigt! Nach anfänglicher Begeisterung über diesen Lösungsansatz, habe ich dieses Skript gegen eine große produktive Datenbank laufen lassen und musste feststellen, dass jeweils beim Zugriff auf ein Ansichtsobjekt die Ansichtsindizes aktualisiert werden, um nur auf unwesentliche Merkmale der Ansicht zuzugreifen. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen. In meinen Testfällen habe ich teilweise 15 Sekunden warten müssen, bevor ich mein Ergebnis hatte.

Hinweis:
Es ist darauf zu achten, NICHT auf die gemeinsame Vorlage der Ansicht/des Ordners zuzugreifen, da dieses einen Laufzeitfehler 4005 "Index is not to be generated on server" verursacht. Somit ist stets z.B. mit isEmpty(view.Readers) zu prüfen, dass auf eine private Kopie zugegriffen wird (die Prüfung anderer Attribute ist nicht möglich).

Ergebnis:
Zu langsam fĂĽr den Produktionsbetrieb!

b) Einsatz von NotesNoteCollection>

Die Idee:
Man kann doch die Gestaltungselemente sammeln und auf diese als NotesDocument zugreifen!. So erhalte ich Informationen zum Gestaltungselement, ohne den Indexer zu triggern!

Schon häufig habe ich mit der NotesNoteCollection Klasse auf Gestaltungslemente (Ansichten, Felder, Agenten, Teilmasken) zugegriffen und hierfür u.A. auch eine Selektionsformel einsetzen können, nach Elementen mit speziellen Attributen zu suchen. So würde ich mit den Werten des "$Flags" Items auf bestimmte Ansichts-/Ordner-Typen zugreifen und mit Auswertung des "$Readers" Felders den Eigentümer einer privaten Kopie identifizieren können.

siehe dieses Codebeispiel ...

Beim Einsatz dieses Skriptes gegen eine groĂźe produktive Datenbank ist dieses schneller als das zuvor, jedoch immer noch zu langsam, da eine Datenbanksuche angestoĂźen wird.. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Ă–ffnen der Datenbank einsetzen.

Ergebnis:
Besser, doch noch zu langsam für den Produktionsbetrieb! Vorteil: Ich kann die Namen der Ansichten/Ordner ermitteln, die ich behandeln möchte.


Einsatz eines Namensschemas


Nach intensiven Tests habe ich alle oben beschriebenen Lösungsansätze verworfen und mich für die Variante entschieden (welche in diesem Beitrag nicht näher beschrieben ist):
  • Ich fĂĽhre ein Namensschema (speziell fĂĽr Ansichten, die lokal statt in der Datenbank gespeichert werden) ein und ändere die Namen der Gestaltungselemente, wenn ich diese aktualisiere
  • Ich akzeptiere, durch EinfĂĽhrung eines Versionskennzeichens fĂĽr die gesamte Anwendung, dass ich ggf. Elementen aktualisiere, deren Gestaltung sich zur Vorversion nicht geändert haben

Ergebnis:
Sehr performant, da keinerlei PrĂĽfungen

Dieser Artikel ist Teil der Artikelserie
:  Gestaltungsaktualisierung privater Ansichten und Ordner stellt eine echte Herausforderung dar

Wie kann ich programmatisch private Gestaltungselemente auf Aktualität prüfen?

28. Dezember 2012 Posted by Manfred Meise

Wir setzen eine Anwendung mit privaten Ansichten und Ordnern ein, die regelmäßig weiterentwickelt wird und produktive Datenbanken durch Schalonenaktualisierung anpasst. Hierbei werden die privaten Kopien der Ansichten und Ordner nicht automatisch aktualisiert. Bei der Konzeption einer "selbstgestrikten" Aktualisierungslogik stößt man schnell auf die Frage: "Wie kann ich erkennen, ob die private Kopie des Gestaltungselementes aktuell ist?"

Vergleich von Zeitstempeln


a) Einsatz von NotesView

Die Idee:
Man öffnet die Ansicht und hat Zeitstempel (Erstelldatum; letzte Änderung) des jeweiligen gemeinsamen Gestaltungselementes und der privaten Kopie.. Klingt gut, ist es aber nicht!

So erhält man mit
 
Dim view as NotesView
set view = db.getView ("Meine Ansicht")


jeweils die gemeinsame Ansichtsvorlage, wenn die private Kopie nicht existiert, jedoch die private Kopie des Ansicht, wenn diese exisiert. Somit kann man im Regelfall (wenn die private Kopie NICHT existiert) nicht auf die gemeinsame Vorlage zu Vergleichszwecken zugreifen.

Ergebnis:
Nicht praktikabel !

b) Einsatz von NotesDatabase.Views

Die Idee:
Man arbeitet alle Ansichten (gemeinsame Vorlagen und private Kopien) einer Datenbank ab und muss die jeweiligen Exemplare (Vorlage  / Kopie) einander zuordnen, um sie zu vergleichen.. Das muß doch gehen!

So durchsucht folgendes Skript die Datenbank nach Ordnern mit dem AliasNamen "F2-DE" und listet jeweils die Universal-ID der Gestaltungselemente auf:
 
Sub
Initialize

Dim
s                         As New NotesSession
Dim
db                         As NotesDatabase
Dim
view                 As NotesView
Dim
vViewNames        As Variant

Set
db = s.Currentdatabase

ForAll
v In db.Views
      Set view = v
      vViewNames = view.Aliases
      If Not IsEmpty (vViewNames) then
              If vViewNames(0) = "F2-DE" Then    
                      If Not IsEmpty (view.Readers) Then
                              MessageBox |Private Kopie des Ordners "F2" gefunden: | & view.Universalid
                      Else
                              MessageBox |Gemeinsame Vorlage des Ordner "F2" gefunden: | & view.Universalid
                      End If
              End If
      End If
End
ForAll
End
Sub


Interessant und noch nicht vollständig erforscht: Dieses Skript findet sogar private Kopien von Ordnern (in Datenbank gespeichert), welche der Domino Designer nicht anzeigt! Nach anfänglicher Begeisterung über diesen Lösungsansatz, habe ich dieses Skript gegen eine große produktive Datenbank laufen lassen und musste feststellen, dass jeweils beim Zugriff auf ein Ansichtsobjekt die Ansichtsindizes aktualisiert werden, um nur auf unwesentliche Merkmale der Ansicht zuzugreifen. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen. In meinen Testfällen habe ich teilweise 15 Sekunden warten müssen, bevor ich mein Ergebnis hatte.

Hinweis:
Es ist darauf zu achten, NICHT auf die gemeinsame Vorlage der Ansicht/des Ordners zuzugreifen, da dieses einen Laufzeitfehler 4005 "Index is not to be generated on server" verursacht. Somit ist stets z.B. mit isEmpty(view.Readers) zu prüfen, dass auf eine private Kopie zugegriffen wird (die Prüfung anderer Attribute ist nicht möglich).

Ergebnis:
Zu langsam für den Produktionsbetrieb!

b) Einsatz von NotesNoteCollection>

Die Idee:
Man kann doch die Gestaltungselemente sammeln und auf diese als NotesDocument zugreifen!. So erhalte ich Informationen zum Gestaltungselement, ohne den Indexer zu triggern!

Schon häufig habe ich mit der NotesNoteCollection Klasse auf Gestaltungslemente (Ansichten, Felder, Agenten, Teilmasken) zugegriffen und hierfür u.A. auch eine Selektionsformel einsetzen können, nach Elementen mit speziellen Attributen zu suchen. So würde ich mit den Werten des "$Flags" Items auf bestimmte Ansichts-/Ordner-Typen zugreifen und mit Auswertung des "$Readers" Felders den Eigentümer einer privaten Kopie identifizieren können.

siehe dieses Codebeispiel ...

Beim Einsatz dieses Skriptes gegen eine große produktive Datenbank ist dieses schneller als das zuvor, jedoch immer noch zu langsam, da eine Datenbanksuche angestoßen wird.. Ein echter Performance-Killer, wollte ich diese Logik in einem Datenbank-Script beim Öffnen der Datenbank einsetzen.

Ergebnis:
Besser, doch noch zu langsam für den Produktionsbetrieb! Vorteil: Ich kann die Namen der Ansichten/Ordner ermitteln, die ich behandeln möchte.


Einsatz eines Namensschemas


Nach intensiven Tests habe ich alle oben beschriebenen Lösungsansätze verworfen und mich für die Variante entschieden (welche in diesem Beitrag nicht näher beschrieben ist):
  • Ich führe ein Namensschema (speziell für Ansichten, die lokal statt in der Datenbank gespeichert werden) ein und ändere die Namen der Gestaltungselemente, wenn ich diese aktualisiere
  • Ich akzeptiere, durch Einführung eines Versionskennzeichens für die gesamte Anwendung, dass ich ggf. Elementen aktualisiere, deren Gestaltung sich zur Vorversion nicht geändert haben

Ergebnis:
Sehr performant, da keinerlei Prüfungen

Dieser Artikel ist Teil der Artikelserie
:  Gestaltungsaktualisierung privater Ansichten und Ordner stellt eine echte Herausforderung dar