OPENNTF WEBINARS
April, 2022 OpenNTF Webinar
What's New in Domino Designer

AGENDA• Welcome – Howard Greenberg and Graham Acres• Presentation – Ulrich Krause, midpoints GmbH
• Q and A - All

THANKS TO THE OPENNTF SPONSORS• HCL made a contribution to help our organization• Funds these webinars!
• Contests like Hackathons• Running the organization• Prominic donates all IT related services• Cloud Hosting for OpenNTF• Infrastructure management for HCL Domino and AtlassianServers• System Administration for day-to-day operation

HCL NOTES UI CONTEST• OpenNTF is co-sponsoring HCL Notes UI Contest withGroupWave• The new application should work within Notes Client
V12.0.1 and Nomad for mobile devices (both iOS andAndroid• Entries will be judged on usability, compatibility, and technicaldesign• The jury consists of HCL Ambassadors and HCL employees• Winners announced at Engage in May!
• More info at https://www.groupwave.be/contest/

THIS IS OUR COMMUNITY• Join us and get involved!
• We are all volunteers• No effort is too small• If your idea is bigger than you can do on your own, we
can connect you to a team to work on it• Test or help or modify an existing project• Write guides or documentation• Add reviews on projects / stars on Snippets

OPENNTF BOARD UPDATES• Community Projects• Catalog of User Group Presentations• Led by Oliver Busse• Channel on slack.openntf.com #presentation-project• The Future of OpenNTF• How to Evolve OpenNTF• We want your input!
• Blog and video posted soon
• Feedback via Discord

UPCOMING EVENTS• Engage 2022 – Bruges, Belgium – NOW May 23-25, 2022
• https://engage.ug/

NEXT WEBINAR – ONE TOUCH SETUP• Watch https://www.openntf/org/webinars for more
information• June: OpenNTF Annual General MeetingASKING QUESTIONS• First Question – Will this be recorded?

• Yes, view on YouTube!!!
• https://www.youtube.com/user/OpenNTF• Use the Questions Pane in GoToWebinar• We will get to your questions at the end of
the webinar• The speakers will respond to your questions
verbally• (not in the Questions pane)• Please keep all questions related to the
topics that our speakers are discussing!!!
• Unrelated Question => post at:• http://openntf.slack.com/

WHAT'S NEW IN
DOMINO DESIGNER
Ulrich Krause

What is new in
Domino Designer
Ulrich Krause, midpoints GmbH, openntf 04/2022

AboutLotus, IBM, HCL Notes und Domino since 1993
Developer / Administrator / Consultant

IBM Champion 2010 - 2019
HCL Ambassador 2019 - 2022
Let‘s Encrypt For Domino (LE4D)
https://www.midpoints.de/de-solutions-LE4D
Working with midpoints GmbH, Germany

2

Tools & Resources… free of charge3panagenda Advanced Document Properties

Available for free download.
Compatible with Notes 9+.

4NotesPeek

Using NotesPeek
https://ds_infolib.hcltechsw.com/ldd/dominowiki.nsf/dx/Using_NotesPeek

Download
http://domquery.info/ldd/sandbox.nsf/Threads/2791869F4E1D3FA38525
6F2C00432973?OpenDocument

5

Database Comparison

For complete information on all options and how to
get started, open the application and select Help > >About This Application and Help > > Using This
Application .
https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_databasecompare.html

6Design Synopsis

You can use “Database
Comparison” to generate adesign synopsis of a databasethat is exported to anotherdatabase.
The target database contains
documents describing each
design element.

7Fixlist is backhttps://ds-infolib.hcltechsw.com/ldd/fixlist.nsf

https://domino-ideas.hcltechsw.com/ideas/DOMINO-I-2023

8

Domino Designer Documentation

https://help.hcltechsw.com/dom_designer/designer_welcome.html

9Java Faker

Java Faker is a port of Ruby's faker thatgenerates fake data.
It's useful when you're developing a new projectand need some pretty data for showcase.

https://github.com/DiUS/java-faker

10

Aside from LS & Java
11

Aside from LotusScript & JavaC API SDK

11.0.1 (first update since v 9.x), but no makefiles
12.0.0 comes with makefiles

12Aside from LotusScript & JavaC API SDK

11.0.1 (first update since v 9.x), but no makefiles
12.0.0 comes with makefiles

https://www.eknori.de/2021-02-07/capi-sdk-11-0-1-for-hcl-notes-domino-released/https://www.eknori.de/2021-02-10/onemk-makefiles-made-easy/

13

Aside from LotusScript & JavaC API SDK

11.0.1 (first update since v 9.x), but no makefiles
12.0.0 comes with makefiles

https://www.eknori.de/2021-02-07/capi-sdk-11-0-1-for-hcl-notes-domino-released/https://www.eknori.de/2021-02-10/onemk-makefiles-made-easy/

14

Aside from LotusScript & Java

DOTS (Domino OSGI Tasklet Service)https://www.openntf.org/main.nsf/project.xsp?r=project/OSGI%20
Tasklet%20Service%20for%20IBM%20Lotus%20Domino/summary

https://help.hcltechsw.com/domino/12.0.0/admin/wn_dotsredux.html

15

Aside from LotusScript & Java64 Bit Client
Notes Basic Client

Notes Standard Client
Domino Designer
Admin Client16A look in the rearview mirror… Domino V10.x / 11.x
17What is new in Domino Designer 10

NotesHTTPRequest,
The new LotusScript class allows HTTP requests to web servers. For more information, see thesection LotusScript Classes A - Z in the IBM Domino Designer Basic User Guide and Reference.
Domino Query Language (DQL)

Is a new facility that runs in Domino core that allows for a terse, shorthand syntax for finding
documents according to a wide variety of complexity of terms.
It leverages existing design elements without the need to write detailed code to access them.

DQL can be executed in the LotusScript and Java Query method on the (Notes) Database object
or via the domino-db node.js API.
For more information, see the Domino Query Language documentation, currently underhttps://help.hcltechsw.com/dom_designer/10.0.1/basic/dql_overview.html

18What is new in Domino Designer 10

NotesRichTextItem,
New method convertToHtml to convert a RichTextItem to an HTML string
After this method is called, the getHTMLReferences method can be called.
The HTMLReference class was created to represent the data contained within an HTML reference

19What is new in Domino Designer 10s„Unfortunately, the documentation for this was a
mistake, as it was a method under development
years ago.
It is unsupported and will be removed going forward.”- James Cooper/USA/PNPHCL -https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_
HTMLREFERENCE_CLASS.html

https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_CONVERTOHTML_METHOD_NOTESRICHTEXTITEM.html

20What is new in Domino Designer 10.0.1

Domino AppDev Pack
A server-side component called Proton. An administrator installs and configures Proton on one ormore Domino servers.
A Node.js module called domino-db. A developer adds this module to a Node.js application.
domino-db uses Proton to perform bulk operations on documents in a server database. dominodb uses the Domino Query Languge (DQL) to select target documents for most operations.
A Node.js based service called IAM (Identity and Access Management). An administrator can
deploy it aside Domino to enable remote applications to access Domino resources through
RESTFul APIs with standard OAuth2.0 authorization flows. It is a Preview feature.

For details, see the App Dev Pack documentation.
https://doc.cwpcollaboration.com/appdevpack/docs/en/homepage.html

21

What is new in Domino Designer 10.0.1

New or enhanced LotusScript and Java classes
The NotesHTTPRequest LotusScript class, introduced in release 10.0, supports additional
methods and properties.
A new class, DominoQuery, is used to compile, tune, and run Domino Query Language queries.
Available for LotusScript and Java.

The following new LotusScript classes support JSON: NotesJSONArray, NotesJSONElement,
NotesJSONNavigator, and NotesJSONObject.

22What is new in Domino Designer V 11.x

New properties to support Domino -based mobile clients such as HCL Nomad
New LotusScript classes NotesGPS and NotesGPSPosition
New methods and properties for NotesJsonNavigator, NotesJsonArray, NotesJsonObject classes
New methods for (Notes)DominoQuery classes
New properties for NotesViewColumn class
Domino Query Language enhancements.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_designer_11.0.html
https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_designer_11.0.1.html

23NotesRegistration class (11.0.1 LS/Java)

Used to register users who have existing Person
documents created by syncing Active Directoryusers into the Domino directory. (HCL DirSync)
https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_CONTACTNOTEID_PROPERTY_NOTESREGISTRATION.html

24NotesRegistration class (11.0.1 LS/Java)

reg.RegisterNewUser does not
return contactNoteId
Mike O‘Brien HCL: „I see that it could
be convenient to have it be returned
after registering a brand new person.
Thanks, we will look into this.”25Create Empty Document Collection (supported)

Returns an empty document collection.

Available since V8
Undocumented since V8Supported & documented as of V 11.0.1

https://atnotes.de/index.php/topic,53402.0.html

26

New optional parameter “maintainOrder”(Optional) Boolean maintainOrder.
Specifies that after the intersect / substract
operation is complete, whatever order theoriginating view was in when theNotesEntryCollection was created will remain
in force for subsequent entry processing.
That is, either the default view order will be
used or that last set by callingview.resortView.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_NOTESVIEWENTRYCOLLECTION_9327.html

27

New optional parameter “maintainOrder”

28

NotesGPS (V 11 & LotusScript only)

Provides access to user location forsupported platforms.
Currently supported for HCL Nomad
beginning with Release 1.0.4.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_NOTESGPS_CLASS.html

29NotesGPS (V 11 & LotusScript only)30

@Platform([Specific]) (v12)https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_PLATFORM_FUNCTION.html

31NotesDominoQuery (V10 LS/Java)

LotusScript / Java class to compile, tune,
and run Domino Query Language queries.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NOTESDOMINOQUERY_CLASS.html#reference_fzc_syh_cgb

32Create Views For DQL - Best Practice

Do not create manually. Use dql.createIndex(viewName, field)
Omit the optional parameters IsVisible & Nobuild
Programmatically update if needed (dql.removeIndex() & dql.createIndex())
Check with dql.listIndexes()
Use a prefix to identify the views/indexes for use with DQL & to avoid conflict with existing views.

https://domino-ideas.hcltechsw.com/ideas/DDXP-I-818

33

Create Views For DQL

Helper Class to handle creation, removal
and update of DQL indexes.
Supports namespace34

createIndex()

Index domino_camp22 on ec11.nsf successfully populated, and cataloged for field Subject - index will be usable for all DQL terms and sorting using the field name Subject
ec11.nsf harvested, 0 catalog documents removed, 18 view designs or aliases cataloged out of 17 total with 4 field-usable columns 50.870 msecs and LastModified of
16.03.2022 08:13:13
CREATE INDEX operation of Index domino_camp22 on ec11.nsf SUCCEEDED35

removeIndex()

ec11.nsf harvested, 0 catalog documents removed, 17 view designs or aliases cataloged out of 16 total with 4 field-usable columns 48.70 msecs and LastModified of
16.03.2022 09:27:19
DELETE INDEX operation of Index domino_camp22 on ec11.nsf SUCCEEDED36

updateIndex()

DELETE INDEX operation of Index domino_camp22 on ec11.nsf SUCCEEDED
Index (domino_camp22) (using hidden view) on ec11.nsf successfully populated, and cataloged for field Categories - index will beusable for all DQL terms and sorting using the field name Categories
ec11.nsf harvested, 0 catalog documents removed, 18 view designs or aliases cataloged out of 17 total with 5 field-usable columns
68.542 msecs and LastModified of 16.03.2022 09:35:21
CREATE INDEX operation of Index domino_camp22 on ec11.nsf SUCCEEDED37

listIndexes()

Lists the indexes that are optimized for
Domino DQL query terms.
Results are returned in JSON format,
with the following structure:
Columnref is whether DQL'viewname'.columnname syntax can beused with the field andFieldref is whether the field name canbe used directly in DQL terms.

{}

https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_LISTINDEXES_METHOD_JAVA.html"DBName": "dev\\ordwrk2.nsf","Indexes": [{"Indexname": "All","Columnname":"Sales_person","Columnref": true,"Fieldref": true
},
...
]

38

listIndexes()

Indexname: Anon,
Indexname: Samples,
Indexname: TESTV121,
Indexname: view1,
Indexname: (TESTV122),
Indexname: (TESTV122),
Indexname: (TESTV123),
Indexname: ($namesearch),
Indexname: CatDiscworldCharacters,
Indexname: DiscworldCharacters,
Indexname: Samples,
Indexname: (domino_camp22),

Columnname: Subject,
Columnname: subject,
Columnname: Subject,
Columnname: Subject,
Columnname: Subject,
Columnname: Subject,
Columnname: Subject,
Columnname: Subject,
Columnname: company,
Columnname: company,
Columnname: category,
Columnname: Categories,

Columnref: True,
Columnref: True,
Columnref: True,
Columnref: True,
Columnref: True,
Columnref: True,
Columnref: True,
Columnref: True,
Columnref: False,
Columnref: True,
Columnref: True,
Columnref: True,

Fieldref: False
Fieldref: False
Fieldref: True
Fieldref: False
Fieldref: True
Fieldref: True
Fieldref: True
Fieldref: False
Fieldref: False
Fieldref: False
Fieldref: False
Fieldref: True

39

NotesViewColumn

properties missing in documentation
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NOTESVIEWCOLUMN_CLASS.html

See: “Identifying view columns used by DQL Processing”
https://doc.cwpcollaboration.com/appdevpack/docs/en/domino-query-language.html#identifying-view-columns-used-by-dqlprocessing"Show responses in a hierarchy“ must be set to OFF (it is default to on)„The pain of remembering all settings is why we created CreateIndex.“– John Curtis -40

Check NotesViewColumn

41NotesHttpRequest

LotusScript class used to make
HTTP requests to web servers.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_NOTES_HTTPREQUEST_CLASS.html

42httpReq.ResponseCode43httpReq.ResponseCode44httpReq.ResponseCode

DOMINO_FORCE401_WITH_HTML_LOGIN_PAGE=1

https://www.assono.de/blog/http-status-code-200-oder-401-fuer-login-seite-jetzt-haben-wir-die-wahl

45Base64 encoding

http://blog.nashcom.de/nashcomblog.nsf/dx/dominov10-http-requests-from-Lotus-Script.htm

46PreferJSONNavigator = True

In the 10.0.1 FP2 release ofNotes/Domino two new properties
were introduced in theNotesHTTPRequest class:PreferUTF8 andPreferJSONNavigator. We are notgoing to change the default behavior,so if you are fine using the class as it
is in a previous release you may
continue.
However, if you have experienced
any of the issues mentioned in the
KB article, it is recommended to startsetting PreferJSONNavigator = True
before making your request.
https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0068788

47

NotesJson… (V 10.0.1 LS )https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NOTESJSONNAVIGATOR_CLASS.html

48

createJsonNavigator

CreateJsonNavigator(„“) creates an empty JsonObject
CreateJsonNavigator(„[]“) creates an empty JsonArray49

appendArray(){"":"LotusScript","":"Java","":"c/c++"}["LotusScript","Java","c/c++"]
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_APPENDELEMENT_METHOD_NJN.html#reference_appendelement_method50Modify element value typeType property is read-only and cannot be set. Use this code as a workaround.
{"firstName": "Ulrich","lastName": "Krause","age": 62,"developer": true}51

getElementByPointerhttps://tools.ietf.org/html/rfc6901

52

New in Domino Designer
12.0.053

54

Transaction methods for LotusScript and Java

New LotusScript and Java methods
are provided for the Database class
to record database transactions

https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_database_transaction_methods.html

55

Transaction methods for LotusScript and Java

Not available on the client

Transaction logging must be
enabled on the applicationtransactionRollback and transactionCommit
can be called only after transactionBegin
56

Transaction methods for LotusScript and Java57

Transaction methods for LotusScript and Java

[1CB8:0002-179C] (4-108 [4]) OPEN_DB(serv04!!transact.nsf):[1CB8:0002-179C] (OPEN_SESSION: 3 ms)[1CB8:0002-179C] (Opened: REPC1258682:00169262) 3 ms. [134+290=424][1CB8:0002-179C] (5-108 [5]) DB_BEGIN_TRANSACTION(REPC1258682:00169262):[1CB8:0002-179C] (6-108 [6]) UPDATE_NOTE(REPC1258682:00169262-NT00000000,00000005):[1CB8:0002-179C] (7-108 [7]) DB_ABORT_TRANSACTION(REPC1258682:00169262):[1CB8:0002-179C] (8-108 [8]) CLOSE_DB(REPC1258682:00169262):[1CB8:0002-179C] (4-108 [4]) OPEN_DB(serv04!!transact.nsf):[1CB8:0002-179C] (OPEN_SESSION: 3 ms)[1CB8:0002-179C] (Opened: REPC1258682:00169262) 3 ms. [134+290=424][1CB8:0002-179C] (5-108 [5]) DB_BEGIN_TRANSACTION(REPC1258682:00169262):[1CB8:0002-179C] (6-108 [6]) UPDATE_NOTE(REPC1258682:00169262-NT00000000,00000005):[1CB8:0002-179C] (7-108 [7]) DB_COMMIT_TRANSACTION(REPC1258682:00169262):[1CB8:0002-179C] (8-108 [8]) CLOSE_DB(REPC1258682:00169262):
58

Column properties associated with narrow views

https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_column_styling_in_narrow_views.html

59

New properties to support HCL Nomad

New properties are available in Domino®
Designer to support applications that areused with the mobile client HCL Nomad.
These features are supported as of Nomad
for iOS 1.0.6 and Nomad for Android 1.0.
If a column in a view does not display wellin a mobile client, you can hide it.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html

60

New properties to support HCL Nomad

If an action or a field does not display wellin a mobile client, you can hide it.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html

61

New properties to support HCL Nomad

When there are multiple frames in an
application, choose the sequence in whichto navigate them in Nomad

https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html

62

New properties to support HCL Nomad

You can enable an action to be available inthe mobile actions button in Nomad.
From the Action properties box, selectInclude action in Mobile Actions button.
For more information see Nomad
documentation
https://help.hcltechsw.com/nomad/1.0/mobile_actions_menu_button.html

https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html

63

Hide columns or fields from smaller-resolution screens

The new onSize event,@RelayoutWindow command, and@ResolutionWidth and@ResolutionHeight formulas allow you
to hide columns and fields when they
are displayed in smaller-resolution
screens.
These new design elements are
particularly useful for applications
accessed through mobile devices withsmaller screen size.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/
wn_hide_columns_or_fields_from_smaller_screens.html

64New in Domino Designer
12.0.165

66

Larger Database Icons

Templates can have databaseicons that are up to 64x64
pixels in size.
Previously, database icons
could be a maximum of
32x32 pixels.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_template_with_larger_application_icons.html

67

Larger Database Icons

Templates can have databaseicons that are up to 64x64
pixels in size.
Previously, database icons
could be a maximum of
32x32 pixels.

Pimp Your Client (Icon Set Database Download)– Anett Hammerschmidt –https://noteshexe.de/new-feature-hcl-notes-12-01/

https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_template_with_larger_application_icons.html

68NotesSession.UseDoubleAsPointerAllows to use a Double to handle a 64bit pointer argument for a C API call.
A workaround was previously available
through the Domino notes.ini setting
LS64BITCCALLOUTPointerSupport=1.
However, the notes.ini approach had
the downside of applying to all
LotusScript agents on the server.

https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_usedoubleaspointer.html

69Named Documents
70

Named Documents (12.0.1)

New methods are provided with the Database class to create and manage a new type of document
referred to as a named document.
A named document has a name rather than a NoteID and does not appear in the Notes client or in any
view.
A named document is designed for programmatic access and is a functional replacement for profile
documents which have been used previously.

71Named Documents (12.0.1)

db.getNamedDocument(String Name, Optional String username) As NotesDocument
https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/H_GETNAMEDDOCUMENT_METHOD.html

SPR # MAVACCAE8N: https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0097119

72

Named Documents Documentation (12.0.1)

https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_
nameddocumentmethods.html

73Exclude fields from full-text search indexes

To generate more useful full-text search
results and to save space, you can exclude
fields in an application that aren't relevant
for full-text searches.
Add FT_DEBUG_DISABLE_DB_RULES=0
to the server notes.ini. You must restart
the server for the change to take effect.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_excludefieldsfromftsearches.html

74

Exclude fields from full-text search indexes

75Exclude fields from full-text search indexes

AMgr: Start executing agent 'qry' in 'ftdemo.nsf'
Agent Manager: Agent printing: initial query.
Full Text message: Index does not exist. (No such file or directory)
03/26GTR search error for "/local/notesdata/ftdemo.ft/ftgi": Index does not exist.: Full text index not
found for this database
Agent Manager: Agent error: NotesException: Domino Query execution error: Full text index not found
for this database - error during planning and tree generation idNumber > 20 AND idNumber < 30 (Callhint: FTSearchExt, Core call #0)******************
Agent Manager: Agent error:
at lotus.domino.local.DominoQuery.execute(Unknown Source)
Agent Manager: Agent error:
at JavaAgent.NotesMain(JavaAgent.java:35)
Agent Manager: Agent error:
at lotus.domino.AgentBase.runNotes(Unknown Source)
Agent Manager: Agent error:
at lotus.domino.NotesThread.run(Unknown Source)
AMgr: Agent 'qry' in 'ftdemo.nsf' completed execution
76

DOTS
77

DOTS & OSGi (12.0.0)

OSGi (Open Service Gateway Initiative) is a Java framework for developing and deploying modular
software programs and libraries.
The OSGi framework provides a dynamic modular architecture which has been used in many
applications such as Eclipse Equinox, Apache Felix, etc.
Modularity enables programmers to do functionality testing in isolation and engage in paralleldevelopment efforts during a given sprint or project. This increases efficiency throughout the entire
software development life-cycle.
OSGi is only a thin runtime that governs how bundles are loaded/stopped (lifecycle), theirdependencies, how their services are exposed, etc.
https://www.osgi.org

78

DOTS & OSGi (Bundle)

In OSGi, a single component is called a bundle.
Logically, a bundle is a piece of functionality thathas an independent lifecycle – which means it canbe started, stopped and removed independently.
Technically, a bundle is just a jar file with a
MANIFEST.MF file containing some OSGi-specificheaders.
A bundle can require other bundles and export
packages that can be accessed by other OSGi
components.

79

DOTS & OSGi (Bundle)

DOTS is a generic
Domino add-in task thatlets users create Domino
server tasks by creating atasklet container using
Java OSGi plugins.
A tasklet is a lightweight
server add-in task written
in Java and declared as
an OSGi extension point.

80

DOTS Components

Domino Server task ndots.exe installed at {dominobin} directory. Launches a JVM and invokes code
located in launcher.jar to launch the OSGi container.
The OSGi framework located in {dominobin}/osgi-dots/rcp/eclipse contains the core plugins to run
the OSGi framework.
The com.ibm.dots plugin located in {dominobin}/osgi-dots/shared/eclipse/plugins, is part of the
DOTS framework. This plugin is essential to communicate between the DOTS server task and theserver tasklet plugins.
Domino Extension manager library dotsextmgr.dll installed at {dominobin} directory. Responsible forposting the events to the tasklet container for further processing by the triggered tasklets.
dotssec.jar file installed at {dominobin}/osgi-dots directory acts as a DOTS security hook.
launcher.jar file installed at {dominobin}/osgi-dots directory. Responsible for launching the OSGi
framework.

81

DOTS Benefits

Multi platform support
Built-in mechanism to access server task user arguments.
Command line options.
Easy deployment. Just drop a single .jar file into the file system.
Tasklet run in the context of the server. No design element signingneeded.
No limitations like in the Agent Manager. DOTS tasks can run every
second and as long as needed.
Better tooling with Eclipse IDE and its first-class Java and plugins
editors and Java.
Source Control Management.
Shared bundles. Can be used in different plugins.

82Choose an IDE

https://www.eclipse.org

https://code.visualstudio.com

https://www.jetbrains.com/idea/

83

Activator

84

Hello World

85

DOTS Configuration

To launch the DOTS container, use the following command from the Domino serverconsole: „load
dots” and to stop a running DOTS container use „tell dots quit“.
The JVM loaded by DOTS supports JavaOptionsFile notes.ini setting for any user-specific JVM
options.
The JVM loaded by DOTS uses the default max and min heap values of 1024MB and 64MB
respectively.
You can customize heap size values by using the notes.ini setting DOTSJavaMaxHeapSize and
DOTSJavaMinHeapSize. For example:
DOTSJavaMinHeapSize =128M

DOTSJavaMaxHeapSize = 2048M

The following notes.ini variables from prior versions of DOTS are no longer available in Domino V12
DOTS_DEBUGADDRESS
DOTS_DEBUGSUSPEND
DOTS_JavaOptionsFile

86JavaUserOptionsFile

https://www.eknori.de/2021-06-04/loadjdbc-sql-driver-at-runtime-in-dots-and-amgr/

87

DOTS Remote Debugging

To remote debug the DOTS tasklet application, use the following notes.ini settings, which are thesame used for other Java applications
JavaEnableDebug=1
JavaDebugOptions=transport=dt_socket,server=y,suspend=n

The address should be the random port allocated by the JVM.
Adding address attribute (e.g. address=8000) in JavaDebugOptions may interfere with other JVM
load and will lead to a crash.
The issue is being tracked under SPR# NBALC3LAVJ

88

DOTS Migrating existing (agent) code

Simple actions & @formula
No way. But such agents do not have complex code. It should be easy to rewrite them in Java
LotusScript
As with agents, LotusScript cannot be transferred to DOTS. LotusScript classes have equivalent Javaclasses and the code can be rewritten.
Javacopy & paste

89

DOTS Documentation

https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0089518&sys_kb_id=2f2251911b9b249ca2f48661cd4bcbba

90

QueryResultsProcessor
91

NotesQueryResultsProcessor (V12)Contained by NotesDatabase
Aggregates, computes, sorts, and formats
collections of Documents

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NOTESQUERYRESULTSPROCESSOR_CLASS.html

92addCollection()

Adds a NotesDocumentCollection orNotesViewEntryCollection to theDocuments being processed

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDCOLLECTION_METHOD.html

93Unique name for result set required

A unique name (to theQueryResultsProcessor
instance) of the input
collection is required

94

executeToJson()Processes the input collections in the manner
specified by the Sort Columns, overriding fieldvalues with formulas specified via addFormula
calls, and returns JSON output to a
NotesJsonNavigator object.
The JSON syntax produced by
QueryResultsProcessor execution conforms to
JSON RFC 8259

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_EXECUTETOJSON_METHOD.html

95executeToJson(){"StreamResults": [{"@nid": "NT0000090A","@DbPath": "c:\\Notes\\Data\\animals.nsf","name": "Garfield"},{"@nid": "NT000008FA","@DbPath": "c:\\Notes\\Data\\animals.nsf","name": "Lassie"},{"@nid": "NT000008F6","@DbPath": "c:\\Notes\\Data\\animals.nsf","name": "Boomer"}]

Special keys “@nid” for NoteID and“@DbPath” are output so results canbe acted upon on a document basis.
All results are output under the“StreamResults” top element key.

}96

addColumn()

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDCOLUMN_METHOD.html

97

Method: AddFormula()

Provides Domino formula language to override the data used to generate values for a particular sortcolumn and an input collection or set of collections.
Since input collections can be created from different databases, design differences can be adjusted
using addFormula() to produce homogenous values in the output

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDFORMULA_METHOD.html

98Design difference99Design difference100Method: AddFormula()

http://damienkatz.net/2005/01/formula-engine-rewrite.html

101Use formula Language in DQL – search terms
Beginning in HCL Domino® 12,
Formula Language can be used in
Domino Query Language (DQL)
search terms.
Formula Language provides full
expression
handling,
intradocument field searches, and theability to leverage an extensive
library of @function calls.
Use the @FL (or @FORMULA,
case insensitive) clause toencapsulate Formula Language
syntax within DQL terms.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/dql_formulalanguage.html

102

New methods for DQL named results

Executes a query string passed
in according to set parameters
and returns named results in a
database where they can beaccessed again more quickly.
For reuse of complex queries,
this saves significant processingtime.

[37D8:0046-3FC4] 18.03.2022 07:45:31 Error: writing named foundset "named_rslt_1": Entry already in index
https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_dqlnamedresults.html

103

Categorized105

Categorized106

Categorized107

Aggregate functions

Aggregate function names begin with double @@ signs and are case insensitive.
They cannot be nested one within another.
Their numeric output can be either integer or floating-point values.
@@avg(colname) Returns the sum all values of col1 within the current category divided by the
number of documents.
@@sum(colname) Returns the sum of all values of col2 within the current category.
@@max(colname) Returns the maximum numeric value of col3 within the current category.

@@min(colname) Returns the minimum numeric value of col4 within the current category.
@@count() Returns the count of documents within the current category

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDCOLUMN_METHOD.html

108Aggregate functions

109

executeToView

Saves sorted
QueryResultsProcessor
results to a "resultsview" in a database.
Processes the input
collections in themanner specified by
the Sort Columns,
overriding field values
with formulas specified
via addFormula calls.
Creates a results viewin a host database andreturns View object.

https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_EXECUTETOVIEW_METHOD.html

110executeToView

Results views are generated programmatically, so they aredesigned to be discarded after use.
Results views contain unique NoteIDs that cannot bereferenced.
Security for results views is implemented at the view level.

111Known Issues - SPR # MAVACCJG6J

In line with SPR # MAVACCJG6J, a fix for that issue
has been identified. It is subject to changes, but it has
been submitted to version 12.0.2.
If you need an immediate fix, just let me know so I canrequest for a hotfix. – HCL support -112

NotesQueryResultsProcessor - How it works

113NotesQueryResultsProcessor - Coming soon ...

114

QUESTIONS?
Use the GoToWebinar Questions Pane
Please keep all questions related to the
topics that our speakers are discussing!!!
Unrelated Question => post at:
http://openntf.slack.com/