+ All Categories
Home > Documents > EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best...

EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best...

Date post: 09-Jul-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
76
Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional - IBM Social Business and Collaboration Solutions IBM Deutschland GmbH EntwicklerCamp 2015
Transcript
Page 1: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

Entwicklung für iNotes: Best Practices und typische AnforderungenMatthias Schneider

Leading Technical Sales Professional - IBM Social Business and Collaboration SolutionsIBM Deutschland GmbH

EntwicklerCamp 2015

Page 2: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Wer bin ich?

Page 3: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Agenda

Verse Wie anpassbar ist iNotes? Grundlagen iNotes umbauen – Wo fange ich an Anforderungsbeispiele:

─ “Ich brauch einen zusätzlichen Knopf in den Vorgaben!”

─ “Neue Mails sollen automatisch vorbefüllt werden!”

─ “Ich will das in Rot und mit meinem Logo!”

Best Practices

Page 4: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Verse vs. iNotes?

Page 5: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

5 © 2015 IBM Corporation

Verse

Domino als Dreh- und Angelpunkt – Der Zugriff erfolgt über den Client Ihrer Wahl!

Page 6: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Verse ist perspektivisch die nächste Evolutionsstufe für Web-basierte PIM-Funktionen der IBM.

Verse bietet keine “klassische” Ordner-basierte Inbox sondern führt dynamisch, auf Basis von IBM Content Analytics und Anwender-Vorgaben, Informationen aus Mail und weiteren Kommunikationskanälen zusammen.

Verse kann als “Cockpit” für iNotes dienen – ähnlich wie der ActivityStream in Kombination mit Connections.

Verse und iNotes schließen sich nicht aus! Nicht alle Anwendungsfälle passen auf den Verse-Filteransatz. Nicht jeder iNotes-Anwender ist “Wissensarbeiter”.

Bis zur Verfügbarkeit von Schnittstellen / APIs für Verse wird es noch etwas dauern.

iNotes und Verse nutzen Domino, dessen Abwärtskompatibilität legendär ist.

Deshalb: iNotes bleibt – gerade auch mit dem Plugin für Anwendungen - weiter eine wichtige Client-Option.

Verse vs. iNotes?

Page 7: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Alles was zum Browser geht, wird über Designelemente gesteuert – eigentlich wie bei Notes...

Aber... Es gibt grundlegende Unterschiede zu “normalen” Domino Webanwendungen oder XPages─ Die Verarbeitung erfolgt bei iNotes hybrid, d.h. nicht nur über das Template gesteuert

─ Nutzung einer eingeschränkten Liste an Domino Web-Kommandos und einigen speziellen URL-Argumenten

─ Verwendung von Tags zur Steuerung der Felder, die über ein POST von der jeweiligen Seite übertragen werden dürfen

─ Verwendung spezieller Server-seitiger Formeln

─ Weitgehender Verzicht auf Agenten (Wie wir sehen werden, kann ich die aber verwenden.)

Wie anpassbar ist iNotes?

Page 8: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Wie anpassbar ist iNotes?

Unser Ziel vom letztjährigen Workshop: Verstehen, was ich anfassen muss, um das gewünschte Verhalten zu erzielen

Unsere Ziele diesmal: ─ Wie fange ich an?

─ Welche Fallstricke muss ich kennen, damit ich Aufwände sauber planen kann?

─ Wie schinde ich mit simplen Änderungen schnell Eindruck?

─ Wo sage ich besser nein?

Page 9: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Unser Beispiel aus dem letzten Jahr

Page 10: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Unser Beispiel aus dem letzten Jahr

Page 11: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Was machen wir diesmal?

Umgang mit “Classic” FormsKomplexitätmittel

Page 12: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Was machen wir diesmal?

Vorbefüllungen von Mails – plus Eingriff in StandardfunktionenKomplexitätmittel

Page 13: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Was machen wir diesmal?

Anpassungen von Logo und Farben Komplexitätgering

Page 14: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

mail\JUser.nsf

iNotes\Forms9.nsf

Domino ServeriNotes\Forms9_x.nsf

Browser

Referenzen

mail9.ntfForms9_x.ntf

Design-Container in iNotes

Page 15: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

15 © 2015 IBM Corporation

Muss ein Extension Forms-Template verwenden, das der Dienst bereitstellt Anpassungen sind limitiert

Extension Forms Files in IBM SmartCloud Notes

Page 16: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Generelle Anpassungswege für iNotes

Policies Aktivieren/Abschalten von Funktionsbereichen Anpassen spezieller Masken (Custom_*), die genau dafür gedacht sind

─ Anpassen von Einträgen in der Menüleiste

─ Anpassen von Spalten in Ansichten

─ Hinzufügen zentraler Header-Bereiche

─ Anpassen des Banner-Logos

─ Hinzufügen von Fonts zum Richtext-Editor

Bearbeiten von Skins und Stylesheets Anpassen weiterer Masken

Page 17: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

iNotes Mail Policies Shared Mail Policies Shared Des ktop Policies Other Policies

• User UI Mode• Functional Areas• Functional Area at Login• Maximum Attachment Size• Mail Threads• Remote Image Display• Browser Cache Management• Logout Scrubbing• Allowing Attachments• Instant Messaging Features• Default Spell Check Dictionary• iNotes ActiveX• Enabling Feeds• Widget Enablement• Lotus Quickr Integration• Calendar Subscriptions• Offline Settings• Refresh Inbox automatically• Enable Unread Count• Auto Update Unread Count• Enable Scroll Hints• Disable Warning on opening

Attachments• Filter out Images from Emails• Proxy Servlet Name/URL Pairs• Show Preferences• Allow Archiving on the Server• Allow local Archiving● Initial Sidebar Display State ● iNotes Display Language● Extensions Forms File● Docs / Connections integration

• Mail Basics• Follow up• Attention Indicators• Message Recall• Calendar Basics• Calendar Display• Notices• Scheduling• Automatic Processing• Rooms and Resources• Mail and Calendar• Disclaimer Text• Disclaimer Position

• Right Double-click to close• Mark Documents read on Preview• Save sent Mail• Sign sent Mail• Encrypt sent Mail• Mail Notification• Internet Mail Format• Prefix each Line with a Char• Wrap Lines at a certain Length• Widgets

Security Password ExpirationPassword QualityCertificate ExpirationNotes ID VaultiNotes Proxies

ArchiveServer-based

ArchivingProhibit ArchivingProhibit private

Archiving Criteria

Page 18: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Aktivieren/Abschalten von Funktionsbereichen

Policies INI Parameter: iNotes_WA_Areas

─ Achtung: Falls die Policy abweichend gesetzt ist, greift diese!

─ Format: iNotes_WA_Areas = ABCDEF– A = Willkommen– B = Mail– C = Kalender– D = ToDo– E = Kontakte– F = Notebook

─ Beispiel:– iNotes_WA_Areas = 010010 deaktiviert alle Funktionen außer Mail + Kontakte

Page 19: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

19 © 2015 IBM Corporation

Einige Einstellungen sind verfügbar in den SCN Administration Account Settings

System Settings – IBM SmartCloud Notes Manche Einstellungen für Profildokumente sind geschützt

Policies in der SmartCloud Notes

Page 20: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Aktivieren/Abschalten von Funktionsbereichen

URL-Argumente─ &PresetFields

– Beispiel: http://nd85.pscbln.de.ibm.com/mail/dadminis.nsf/iNotes/Calendar/?OpenDocument&PresetFields=h_SkinTypeOverride;h_Blank,s_CalView;2,s_CalDate;20090301

http://nd85.pscbln.de.ibm.com/mail/dadminis.nsf/iNotes/Mail/?OpenDocument&PresetFields=h_SkinTypeOverride;h_Blank,s_ViewLabel;Sent,s_ViewName;%28$Sent%29

– Dokumentation:iNotes Web Access Deployment Guide (Google ist dein Freund...)

─ &Layout– Beispiel:

http://nd85.pscbln.de.ibm.com/mail/dadminis.nsf/iNotes/Contacts/?OpenDocument&layout=BN!H*MS!H*OF!H*LO!H*SW!H*LP!C

– Dokumentation:http://www-10.lotus.com/ldd/dominowiki.nsf/dx/iNotes_Programmatic_URL_Usage

Page 21: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Seit 8.5 alles in Ajax?

Der “Full Mode” verwendet nun die mit 8.0.1 eingeführte “Lite”-Architektur Tabbed UI über Widgets Ausnahmen bestätigen die Regel: Einige Masken nutzen immer noch die

“Classic”-Architektur● “Full Mode”-Kalender, Kontakte, ToDo, Notebook-Einträge● “Lite Mode”-Kalender und Kontakt-Einträge● Homepage● Vorgaben

Masken etc., die die “Lite”-Architektur neu verwenden, haben ein “_Lite” im Namen

Page 22: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

“Echtes” Anpassen: Wie fange ich an?

Domino installieren – am besten 9.0.1 mit aktuellem Fixpack Werkzeugkasten installieren

─ Domino Designer

─ ggf. Tools wie TeamStudio oder Ytria

─ Firefox mit Firebug, Safari, IE

Forms9_x.nsf anlegen─ Änderungen hier lassen das Standard-Design unangetastet

Doku (Wiki) lesen Beispiele ausprobieren

─ Diese und die letzten EntwicklerCamp-Sessions...

Loslegen!

Page 23: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Firefox─ Firebug

IE─ Developer Toolbar (in IE9 und später: F9) oder Visual Studio

Safari─ Develop-Menü

Chrome─ Developer Tools

“Obfuscation-Tabelle”─ ObfuscationList.txt in Shared Resources\Files

Debugging

Page 24: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Log Messages für die iNotes Konsole● Beispiel: AAA.EVI.sr(level, “”,"message”);

– Level:● 0 = error● 1 = warning● 2 = info● 3 = detail

Logging

Page 25: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Aufbau einer Webseite in iNotes

Alle Masken/Teilmasken verwenden Passthru-HTML Spezielle Tags werden durch den Server interpretiert:

─ Skin einfügen

─ Skin-Komponenten einfügen

─ Teilmasken einfügen

─ Berechnete Blöcke (@formulas)

─ Ermittlung persistenter und berechneter Items

“Full Mode” verwendet nun die die “Lite Mode”-Architektur─ Kombination von Skin-Komponenten (geladen durch den Server) und Widgets (Client)

─ mehr AJAX (“Lazy Loading” etc.)

Page 26: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

...oder vereinfacht dargestellt:

Backend-Code kümmert sich um die Domino-Welt

Frontend-Code baut die HTML-Seitenstruktur

Stylesheets machen alles bunt

Der Rest - gefühlte 80% von iNotes – sind weitgehend kryptisches JavaScript

Page 27: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Der zentrale Einstieg: Teilmaske Custom_JS_Lite in der Forms9_x.nsf

Teilmaske mit jeder Menge (verständlichem) JavaScript: Hier lassen sich viele typische Anpassungen zentral einpflegen

Statische externe Script-Datei, die in alle wesentlichen Seiten eingebunden ist

Die Scriptseite wird im Server abgelegt – Änderungen erfordern mindestens ein “tell http inotes flushforms”

Hier können Sie auch eigene Funktionen, die von verschiedenen Seiten aus aufrufbar sein sollen, ablegen

– Hinweis: Code, der Anwender- oder Session-spezifischen Formeln enthält, gehört in die l_SessionInfo / f_SessionInfo / s_SessionInfo

Page 28: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Custom_Scene_Actions_Lite Hinzufügen, Entfernen oder Anpassen von Aktionen

Custom_Scene_PostLoad_Lite Ausführung nach Initialisierung jedes Widgets

Custom_Scene_PreSubmit_Lite Ausführung, bevor eine Aktion an den Server zur Ausführung übergeben wird

API_TimeZones_Lite Hinzufügen von Zeitzonen

API_SetPortalMailViewColumns_Lite Festlegen der in Mail-Ansichten anzuzeigenden Spalten

API_GetWhoAndAltWhoColNamesForView_Lite

Festlegen der anzuzeigenden Spalte bei aktivierten alternativen Namen

Callbacks and Functions

Der zentrale Einstieg: Teilmaske Custom_JS_Lite in der Forms9_x.nsf

Page 29: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

API_GetSelectedDocs_Lite Rückgabe eines String-Arrays mit den UNIDs ausgewählter Dokumente

API_IsView_Lite “Ja” für Ansichten

API_GetMailfilePath_Lite Rückgabe des URL-Pfades mit “.nsf”

Helpers

addActionsLite Hinzufügen neuer Menüs oder Untermenüs zur Aktionsleiste

removeActionsLite Entfernen von Menüs oder Untermenüs

repositionActionsLite Positionsänderungen

checkActionIDs Anzeige der IDs von Menü-Elementen – sehr entwicklerfreundlich!

checkActionPositions Anzeige von Positionsnummern

Mehr in der Custom_ActionsHelper Teilmaske:_te

Sinnvolle Funktionen in Custom_JS_Lite

Page 30: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Hilfreich für den Entwickler: Aufruf der folgenden Funktionen führt zur Anzeige von ID oder Position der Menü-Einträge

checkActionIDs( s_MenuID ) - Neue Architektur─ Anzeige der Menü-ID bei MouseOver

checkActionPositions(s_TopBranchId) - “Classic”-Masken─ Anzeige der Positionsnummer neben dem Menü-Eintrag

“Bau mir da mal bitte einen Knopf ein”

Page 31: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Custom_Welcome Anpassbarkeit der Panel-Auswahl

Custom_JS_Edit Hinzufügen neuer Fonts zum Richtext-Editor

Custom_Masthead Hinzufügen eines zentralen Header-Bereiches

Custom_CSS Hinzufügen von CSS-Styles

Custom_Banner_Lite Banner anpassen

Custom_Page_Dictionary 1 NotesVariablen für die Nutzung in Custom_CSS

Custom_xxx_Dictionary 2 Einbinden neuer Notes-Felder und -Variablen

Custom_LazyLoad_Subforms 2 Hinzufügen von Code zur LazyLoad-Tabelle

Custom_Logout 2 Ausführbarer Code bei Logout

Custom_About 2

Custom_SessionInfo 3

Classic_Custom_SessionInfo 4

Anzeige der Version der Forms-Datei sowie weiterer Daten in der iNotes Konsole

Hinzufügen von Informationen zum SessionInfo-Objekt

1 Neu in 8.5.1 3 Neu in 8.5.32 Neu in 8.5.2 4 Neu in 9

Zusätzliche Masken / Teilmasken zum Anpassen

Page 32: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

8.5.2

Keine Design-Vererbung der Extension Forms-DatenbankAblage von Agenten in der Extensions Forms-Datenbank möglich

Neue Teilmasken: Custom_xxx_DictionaryCustom_LazyLoad_SubformsCustom_LogoutCustom_About

8.5.3

Aktualisieren von Menü-Einträgen möglichPolicy für Extensions Forms-DatenbankCustom_SessionInfoiNotes_WA_RunQOAgentsForNewLiteForm

9.0

Classic_Custom_SessionInfoCustom_Masthead verbirgt automatisch Standard-HeaderStandard-Header anpassbar über Custom_Scene_Actions_Lite

Änderungen in 8.5.x und 9.0

Page 33: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Simples Überschreiben von Strings (statt Anpassen von Standard-Files):Einfach dwa_xx.properties zu den Extension Forms Ressourcen hinzufügen und den zu ersetzenden String dort aufnehmen

Simples Überschreiben von Teilmasken!!Gleichnamige Teilmasken in der Extension Forms werden anstelle der Standard-Quellen verwendet

Anpassung des Verhaltens bei Namens-LookupsHinzufügen einer Teilmaske “Template_NameLookupCard” (für On-Premises) oder “Template_NameLookupCard_SaaS” (für SmartCloud Notes Web). Hier kommt der HTML-Code rein, der das Format beschreibt. Beispiele finden sich in “Template_NameLookupCard” und “Template_NameLookupCard_SaaS” in der Forms9.nsf

Änderungen in 9.0.1

Page 34: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

34 © 2015 IBM Corporation

Umbenennen von Forms85_x.nsf in Forms9_x.nsf Ausführung eines Agenten, der das Feld $FormsTemplateFile im Datenbank-

Icon ändert:– "iNotes/Forms9.nsf"

(http://www-10.lotus.com/ldd/nd85forum.nsf/5f27803bba85d8e285256bf10054620d/ed3a 7d9fde2383a28525754a006d6c39?OpenDocument )

Von 8.5 nach 9...

Page 35: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

35 © 2015 IBM Corporation

Gut zu wissen...

http://www-01.ibm.com/support/docview.wss?uid=swg21659371

Page 36: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Anpassungen des “Ultra-light Mode”

Styles:─ m_StyleSheet_xxx

─ iphone.css und standard.css – für 8.5 und älter

Keine Verwendung von Skins Layout und Code werden in m_xxx Masken und Teilmasken kombiniert Grafiken liegen in mxxx Dateien in Shared Resources\Files

Page 37: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Neue Ressourcen referenzieren

Hinzufügen zur Extension Forms Datenbank─ Ablegen unter Shared Resources\Files

─ src="/iNotes/Forms9_x.nsf/LotusSoftware.png"

─ background-image:url(@{s_EFF}/act-hyper-hover-images.gif?OpenFileResource&MX);

Ablage auf dem Domino Server─ <Domino data directory>\domino\html

─ src="/file.html"

Ablage auf einem externen Server─ src=”http://www.server.com/file.gif'

Page 38: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Noch mehr Anpassbarkeit...

Gradient Fills (=Vektorgrafiken bei modernen Browsern)─ Spezielle Parameter in dwa.properties

Konsolidierte Icons─ Eine Bilddatei enthält verschiedene Icons

─ Icons werden über die x, y-Koordinaten im Style ausgewählt

─ Dateien: basicicons.gif, commonactionicons.gif, commonactionicons.gif,mailoutlineicons.gif, viewactionicons.gif

Page 39: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

iNotes Code/Forms

Geladen durch InsertNotesSubForm Browser-spezifisch ;-((

─ xxxCode – IE

─ xxxCode_Gecko – Mozilla

─ xxxCode_Safari – Safari

f_xx – genutzt durch “Full Mode” l_xx – genutzt durch “Lite” und “Full Mode” INI-Einstellungen iNotes_WA_Debug_SubForms=1 – Namen der

Teilmasken werden auf der Serverkonsole beim Laden angezeigt

Page 40: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

<InsertNotesSubForm Name=SubFormName>─ Der Name kann ein berechneter Wert sein

– <InsertNotesSubForm Name=@{...}>

– Bedingungen über @If sind möglich– optional="yes" für optionale Teilmasken

<NotesDictionary>…</NotesDictionary>─ Block, der NotesVar und NotesField Tags enthalten kann

Spezielle Tags auf Serverseite

Page 41: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

<NotesField Name=ItemName>─ Definition von persistenten Feldern

– Type=Text|TextList|RichText|Mime|Number|NumberList| Time|TimeList

– InitialValue=

• Prüfung, falls das Item im Dokument nicht existiert– Value=

• Prüfung wenn die Seite generiert und gespeichert wird

─ Beispiel:

– <NotesField Name=Subject>

<NotesVar Name=ItemName>─ Definition eines nur zur Anzeige berechneten Items

─ Gleiche Element-Attribute wie bei einem Notes-Feld

Alle diese Tags unterstützen ein includeif={@formula} Attribut für Bedingungen

Spezielle Tags auf Serverseite

Page 42: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

...bringen Sie das neue NotesField in der Teilmaske xxxDictionary unter ...bauen Sie das HTML-Gegenstück in den Teilmasken xxxRead bzw. xxxEdit

ein ...mit Zuweisung des Feldwertes zum entsprechenden HTML-Item ...für Bearbeiten-Masken: Fügen Sie eventuell Initialisierungs- und Validierungs-

Routinen hinzu

Details hierzu im Wiki: ─ Manipulating Data in iNotes Lite forms

Manipulating Data in Domino Web Access (developerWorks)

Um ein neues Feld hinzuzufügen...

Page 43: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

QueryOpen/QuerySave Agenten

Lotus iNotes verwendet diese in der Kernanwendung nicht Für die Nutzung ist ein Eintrag in der NOTES.INI erforderlich:

iNotes_WA_QueryAgents=1 Zwei Notes Variablen steuern das Einbetten von Agenten:

─ $$QueryOpenAgent

─ $$QuerySaveAgent

─ Beispiel:

– <NotesVar NAME={$$QuerySaveAgent} INITIALVALUE={“YourAgent”}>

Ab 8.5.2 können Agenten auch in der Extension Forms-DB liegen

Page 44: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Jetzt wird es konkret!

Was brauchen Sie für die folgenden Übungen?─ Domino 9.x

─ Designer 9.x

─ Browser

─ Übungsunterlagen + Code Snippets

Page 45: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

“Ich will die Vorgaben erweitern!”

Komplexitätmittel

Page 46: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

“Ich will die Vorgaben erweitern!”

Fallstricke: “Classic” Design – kein Ajax, keine Custom_JS_Lite Browser-spezifische Masken, d.h. im Extremfall wird alles 3 Mal eingebaut

(IE, Gecko, Safari) Vor 9.0.1 zwingend Anpassung des Standard-Designs (Forms9.nsf) nötig Mit 9.0.1 wird alles gut – oder zumindest besser

Page 47: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Wo fange ich an?

Page 48: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Das Domino Backend

Interne Signatur

Externe Signatur

Automatisch einfügen

Änderungen speichern

Page 49: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Das Web Frontend

Interne Signatur Externe Signatur

Automatisch einfügenÄnderungen speichern

Page 50: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Das Seiten-Design verstehen

Page 51: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Alter Code

Neuer Code

Best Practice: Änderungen nachvollziehbar halten!

Page 52: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Page 53: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Textmuster anpassen und hinzufügen

Page 54: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

“Mein Mail soll automatisch - und auf Wunsch - vorbefüllt werden”

Komplexitätmittel

Page 55: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Fallstricke: Ajax, Custom_JS_Lite als Einstieg Trotzdem: Browser-spezifische Masken, d.h. im Extremfall wird alles 3 Mal

eingebaut (IE, Gecko, Safari) Jede Menge JavaScript Aber: Mit 9.0.1 muss auch hier zumindest kein Standard-Design (Forms9.nsf)

mehr angefasst werden

“Mein Mail soll automatisch - und auf Wunsch - vorbefüllt werden”

Page 56: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Wo fange ich an?

Page 57: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Das Web Frontend

iNotes Signatur...für den Fall dass Notes und iNotes unterschiedliche Signaturen verwenden dürfen

Page 58: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Was passiert beim Hinzufügen des Standard-Footers?

Page 59: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Was passiert beim Hinzufügen des Standard-Footers?

Alter Code

Page 60: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Funktionen parametrisierbar machen

Falls du von irgendwo einen Parameter bekommst, leg den in das Standard-Feld und mach weiter wie gehabt.

Hol dir die Signatur aus denVorgaben per Agent aus dem Profildokument

Page 61: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Funktionen parametrisierbar machen

Ausblenden derStandard-Signaturoption

Page 62: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Was passiert beim Erstellen des Mails?

Die Funktion GuH(..) fügt den eigentlichen Footer hinzu – entweder automatisch oder auf Wunsch des Nutzers

Page 63: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Die eigentliche Footer-Funktion

Prüfe ob du über das Menü (Mehr > Extern / Intern) aufgerufen wurdest. Wenn ja, nimm die zuvor in der Funktion Gno(...) abgelegte Signatur und mach weiter wie gehabt.

Wenn Du keine übergebene Signatur findest, bist du wahrscheinlich nicht über dieses Menü aufgerufen worden sondern sollst einfach nur ein neues Mail erstellen. In dem Fall ruf den Agenten nochmal auf und hol dir die im Profildokument abgelegte Standard-Signatur.

Was diese Funktion künftig zusätzlich tun soll:

Page 64: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

...der endgültige Code

Page 65: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Frustriert, abgeschreckt...? Es geht auch anders!

Quelle: Computerwoche

Page 66: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

oder

“Ich will da mein Logo und die Firmenfarben!”

Komplexitätgering

Page 67: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Fallstricke: Es gibt zwei Möglichkeiten:

─ Nutzung der dafür gedachten Teilmasken Custom_Masthead und Custom_CSS in der Forms9_x.nsf

─ In diesem Fall wird eine zusätzliche Header-Leiste eingeblendet und die Navigation angepasst

─ Übernahme und Anpassung der Standard-Teilmasken Common_Masthead und Common_CSS

─ Bei dieser Option ist der Aufwand vergleichbar gering und die Möglichkeiten vielfältiger

“Ich will da mein Logo und die Firmenfarben!”

Dieser Weg ist im Wiki ausführlich dokumentiert!

Page 68: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Wo fange ich an?

Page 69: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Phase 1: Platz schaffen

Page 70: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Phase 2: Beispielcode für ein Banner finden

Page 71: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

...mit kleinen Änderungen

...und anpassen

Page 72: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Phase 3: Die Linieneigenschaften finden

Page 73: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

...und anpassen

Page 74: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Elementare Anpassungen sind auch ohne Entwicklung möglich● Richtlinien, Herausgreifen der gewünschten Funktionsblöcke, ...

Logo, Farbgebung etc. sind schnell und einfach anpassbar

Unkritisch ist alles, was über die Custom_*-Teilmasken eingebaut werden kann – genau dafür sind die da!

Dokumentieren Sie Ihre Änderungen!

Zusammenfassung und Best Practices

Page 75: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Mit 9.0.1 wird es wesentlich einfacher, Änderungen fast beliebiger Komplexität in iNotes einzubauen und dabei das Standarddesign beizubehalten

Durch die Möglichkeit, Änderungen an zentraler Stelle und unabhängig vom Standarddesign abzulegen, reduzieren sich Deployment-Risiken und Projektaufwände massiv

Behalten Sie trotzdem den Prüf-Aufwand bei Upgrades, Fixpacks etc. im Auge! Hier können Tools weiterhelfen, die Änderungen zwischen Forms9.nsf (ALT) und Forms9.nsf (NEU) erkennen.

Zusammenfassung und Best Practices

Page 76: EntwicklerCamp 2015 Entwicklung für iNotes: Best Practices ... · Entwicklung für iNotes: Best Practices und typische Anforderungen Matthias Schneider Leading Technical Sales Professional

© 2015 IBM Corporation

Fragen?


Recommended