Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
What is new in
Domino Designer
Ulrich Krause, midpoints GmbH, DominoCamp 2022
2
About
Lotus, 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
Tools & Resources
… free of charge
3
4
panagenda Advanced Document Properties
Available for free download.
Compatible with Notes 9+.
5
NotesPeek
Using NotesPeek
https://ds_infolib.hcltechsw.com/ldd/dominowiki.nsf/dx/Using_NotesPeek
Download
http://domquery.info/ldd/sandbox.nsf/Threads/2791869F4E1D3FA385256F2C00
432973?OpenDocument
6
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
7
Design Synopsis
You can use “Database
Comparison” to generate a
design synopsis of a database
that is exported to another
database.
The target database contains
documents describing each
design element.
8
Fixlist is back
https://ds-infolib.hcltechsw.com/ldd/fixlist.nsf
9
Domino Designer Documentation
https://help.hcltechsw.com/dom_designer/designer_welcome.html
10
Java Faker
Java Faker is a port of Ruby's faker that generates
fake data.
It's useful when you're developing a new project and
need some pretty data for showcase.
https://github.com/DiUS/java-faker
Aside from LS & Java
11
C API SDK
11.0.1 (first update since v 9.x), but no makefiles
12.0.0 comes with makefiles
12
Aside from LotusScript & Java
13
Aside from LotusScript & Java
C 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://help.hcltechsw.com/domino/12.0.0/admin/wn_dotsredux.html
https://www.openntf.org/main.nsf/project.xsp?r=project/OSGI%20Taskle
t%20Service%20for%20IBM%20Lotus%20Domino/summary
15
Aside from LotusScript & Java
64 Bit Client
Notes Basic Client
Notes Standard Client
Domino Designer
Admin Client
A look in the rearview
mirror
… Domino V10.x / 11.x
16
What is new in Domino Designer 10
NotesHTTPRequest,
The new LotusScript class allows HTTP requests to web servers. For more information, see the section
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 under
https://help.hcltechsw.com/dom_designer/10.0.1/basic/dql_overview.html
17
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
18
What is new in Domino Designer 10
s
https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_CONVERTOHTML_METHO
D_NOTESRICHTEXTITEM.html
https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_HTM
LREFERENCE_CLASS.html
„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 -
19
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 or more
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. domino-db 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
20
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.
21
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
22
23
NotesRegistration class (11.0.1 LS/Java)
Used to register users who have existing Person
documents created by syncing Active Directory
users into the Domino directory. (HCL DirSync)
https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_CONTACTNOTEID_PROPERT
Y_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.”
Create Empty Document Collection (supported)
Returns an empty document collection.
Available since V8
Undocumented since V8
Supported & documented as of V 11.0.1
https://atnotes.de/index.php/topic,53402.0.html
25
New optional parameter “maintainOrder”
(Optional) Boolean maintainOrder.
Specifies that after the intersect / substract
operation is complete, whatever order the
originating view was in when the
NotesEntryCollection 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 calling view.resortView.
https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_NOTESVIEWENTRYCOLLECTION_9327.html 26
New optional parameter “maintainOrder”
27
NotesGPS (V 11 & LotusScript only)
Provides access to user location for
supported 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 28
NotesGPS (V 11 & LotusScript only)
29
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_PLATFORM_FUNCTION.html
@Platform([Specific]) (v12)
30
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 31
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
32
33
Create Views For DQL
Helper Class to handle creation, removal and
update of DQL indexes.
Supports namespace
34
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 SUCCEEDED
35
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 SUCCEEDED
36
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 be usable 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 SUCCEEDED
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 be
used with the field and
Fieldref is whether the field name can be
used directly in DQL terms.
{
"DBName": "devordwrk2.nsf",
"Indexes": [
{
"Indexname": "All",
"Columnname":"Sales_person",
"Columnref": true,
"Fieldref": true
},
...
]
}
https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_LISTINDEXES_METHOD_JAVA.html 37
listIndexes()
Indexname: Anon, Columnname: Subject, Columnref: True, Fieldref: False
Indexname: Samples, Columnname: subject, Columnref: True, Fieldref: False
Indexname: TESTV121, Columnname: Subject, Columnref: True, Fieldref: True
Indexname: view1, Columnname: Subject, Columnref: True, Fieldref: False
Indexname: (TESTV122), Columnname: Subject, Columnref: True, Fieldref: True
Indexname: (TESTV122), Columnname: Subject, Columnref: True, Fieldref: True
Indexname: (TESTV123), Columnname: Subject, Columnref: True, Fieldref: True
Indexname: ($namesearch), Columnname: Subject, Columnref: True, Fieldref: False
Indexname: CatDiscworldCharacters, Columnname: company, Columnref: False, Fieldref: False
Indexname: DiscworldCharacters, Columnname: company, Columnref: True, Fieldref: False
Indexname: Samples, Columnname: category, Columnref: True, Fieldref: False
Indexname: (domino_camp22), Columnname: Categories, Columnref: True, Fieldref: True 38
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-dql-processing
"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 -
39
40
Check NotesViewColumn
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 41
42
httpReq.ResponseCode
43
httpReq.ResponseCode
44
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
Base64 encoding
http://blog.nashcom.de/nashcomblog.nsf/dx/domin
ov10-http-requests-from-Lotus-Script.htm
45
46
PreferJSONNavigator = True
In the 10.0.1 FP2 release of
Notes/Domino two new properties
were introduced in the
NotesHTTPRequest class: PreferUTF8
and PreferJSONNavigator. We are not
going 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 start
setting PreferJSONNavigator = True
before making your request.
https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0068788
NotesJson… (V 10.0.1 LS )
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NOTESJSONNAVIGATOR_CLASS.html 47
createJsonNavigator
CreateJsonNavigator(„“) creates an empty JsonObject
CreateJsonNavigator(„[]“) creates an empty JsonArray
48
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_method
49
Modify element value type
Type property is read-only and cannot be set. Use this code as a workaround.
{
"firstName": "Ulrich",
"lastName": "Krause",
"age": 62,
"developer": true
}
50
getElementByPointer
https://tools.ietf.org/html/rfc6901 51
New in Domino
Designer 12.0.0
52
53
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 54
Transaction methods for LotusScript and Java
Not available on the client
transactionRollback and transactionCommit
can be called only after transactionBegin
Transaction logging must be
enabled on the application
55
Transaction methods for LotusScript and Java
56
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_COMMIT_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_ABORT_TRANSACTION(REPC1258682:00169262):
[1CB8:0002-179C] (8-108 [8]) CLOSE_DB(REPC1258682:00169262):
57
Column properties associated with narrow views
https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_column_styling_in_narrow_views.html
58
New properties to support HCL Nomad
New properties are available in Domino®
Designer to support applications that are used
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 well in a
mobile client, you can hide it.
https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html
59
New properties to support HCL Nomad
If an action or a field does not display well in 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
When there are multiple frames in an application,
choose the sequence in which to navigate them in
Nomad
https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html
61
New properties to support HCL Nomad
You can enable an action to be available in the mobile
actions button in Nomad.
From the Action properties box, select Include 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
62
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 with smaller screen size.
https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_
hide_columns_or_fields_from_smaller_screens.html
63
New in Domino
Designer 12.0.1
64
65
Larger Database Icons
Templates can have database
icons that are up to 64x64
pixels in size.
Previously, database icons
could be a maximum of 32x32
pixels.
66
https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_template_with_larger_application_icons.html
Larger Database Icons
Templates can have database
icons that are up to 64x64
pixels in size.
Previously, database icons
could be a maximum of 32x32
pixels.
67
https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_template_with_larger_application_icons.html
Pimp Your Client (Icon Set Database Download)
– Anett Hammerschmidt –
https://noteshexe.de/new-feature-hcl-notes-12-01/
68
NotesSession.UseDoubleAsPointer
Allows to use a Double to handle a 64-bit
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
Named Documents
69
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_name
ddocumentmethods.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.
Case #CS0305960
https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_excludefieldsfromftsearches.html
DOTS
74
75
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 parallel development
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), their dependencies, how
their services are exposed, etc.
https://www.osgi.org
76
DOTS & OSGi (Bundle)
In OSGi, a single component is called a bundle.
Logically, a bundle is a piece of functionality that has
an independent lifecycle – which means it can be
started, stopped and removed independently.
Technically, a bundle is just a jar file with a
MANIFEST.MF file containing some OSGi-specific
headers.
A bundle can require other bundles and export
packages that can be accessed by other OSGi
components.
77
DOTS & OSGi (Bundle)
DOTS is a generic Domino
add-in task that lets users
create Domino server tasks
by creating a tasklet
container using Java OSGi
plugins.
A tasklet is a lightweight
server add-in task written
in Java and declared as an
OSGi extension point.
78
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 the server tasklet
plugins.
Domino Extension manager library dotsextmgr.dll installed at {dominobin} directory. Responsible for posting
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.
79
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 signing
needed.
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.
Choose an IDE
https://www.jetbrains.com/idea/
https://code.visualstudio.com
https://www.eclipse.org
80
81
Activator
82
Hello World
83
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
84
JavaUserOptionsFile
https://www.eknori.de/2021-06-04/load-jdbc-sql-
driver-at-runtime-in-dots-and-amgr/
85
DOTS Remote Debugging
To remote debug the DOTS tasklet application, use the following notes.ini settings, which are the same 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
86
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 Java classes
and the code can be rewritten.
Java
copy & paste
87
DOTS Documentation
https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0089518&sys_kb_id=2f2251911b9b249ca2f48661cd4bcbba
QueryResultsProces
sor
88
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 89
90
addCollection()
Adds a NotesDocumentCollection or
NotesViewEntryCollection to the
Documents being processed
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDCOLLECTION_METHOD.html
91
Unique name for result set required
A unique name (to the
QueryResultsProcessor
instance) of the input
collection is required
executeToJson()
Processes the input collections in the manner specified by
the Sort Columns, overriding field values 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 92
executeToJson()
Special keys “@nid” for NoteID and
“@DbPath” are output so results can be
acted upon on a document basis.
All results are output under the
“StreamResults” top element key.
{
"StreamResults": [
{
"@nid": "NT0000090A",
"@DbPath": "c:NotesDataanimals.nsf",
"name": "Garfield"
},
{
"@nid": "NT000008FA",
"@DbPath": "c:NotesDataanimals.nsf",
"name": "Lassie"
},
{
"@nid": "NT000008F6",
"@DbPath": "c:NotesDataanimals.nsf",
"name": "Boomer"
}
]
}
93
addColumn()
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDCOLUMN_METHOD.html 94
Method: AddFormula()
Provides Domino formula language to override the data used to generate values for a particular sort column
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 95
Design difference
96
Design difference
97
Method: AddFormula()
http://damienkatz.net/2005/01/formula-engine-rewrite.html
98
https://help.hcltechsw.com/dom_designer/12.0.0/basic/dql_formulalanguage.html
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, intra-
document field searches, and the
ability to leverage an extensive
library of @function calls.
Use the @FL (or @FORMULA,
case insensitive) clause to
encapsulate Formula Language
syntax within DQL terms.
99
100
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 be accessed again
more quickly.
For reuse of complex queries, this
saves significant processing time.
https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_dqlnamedresults.html
[37D8:0046-3FC4] 18.03.2022 07:45:31 Error: writing named foundset "named_rslt_1": Entry already in index
dominocamp2022.t1s1.dde.pptx
Categorized
102
Categorized
103
Categorized
104
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 105
Aggregate functions
106
107
executeToView
Saves sorted
QueryResultsProcessor
results to a "results view"
in a database.
Processes the input
collections in the manner
specified by the Sort
Columns, overriding field
values with formulas
specified via addFormula
calls.
Creates a results view in
a host database and
returns View object.
https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_EXECUTETOVIEW_METHOD.html
108
executeToView
Results views are generated programmatically, so they are
designed to be discarded after use.
Results views contain unique NoteIDs that cannot be
referenced.
Security for results views is implemented at the view level.
109
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 can
request for a hotfix. – HCL support -
NotesQueryResultsProcessor - How it works
110
NotesQueryResultsProcessor - Coming soon ...
111
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptx

More Related Content

dominocamp2022.t1s1.dde.pptx

  • 1. What is new in Domino Designer Ulrich Krause, midpoints GmbH, DominoCamp 2022
  • 2. 2 About Lotus, 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
  • 3. Tools & Resources … free of charge 3
  • 4. 4 panagenda Advanced Document Properties Available for free download. Compatible with Notes 9+.
  • 6. 6 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
  • 7. 7 Design Synopsis You can use “Database Comparison” to generate a design synopsis of a database that is exported to another database. The target database contains documents describing each design element.
  • 10. 10 Java Faker Java Faker is a port of Ruby's faker that generates fake data. It's useful when you're developing a new project and need some pretty data for showcase. https://github.com/DiUS/java-faker
  • 11. Aside from LS & Java 11
  • 12. C API SDK 11.0.1 (first update since v 9.x), but no makefiles 12.0.0 comes with makefiles 12 Aside from LotusScript & Java
  • 13. 13 Aside from LotusScript & Java C 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. 14 Aside from LotusScript & Java DOTS (Domino OSGI Tasklet Service) https://help.hcltechsw.com/domino/12.0.0/admin/wn_dotsredux.html https://www.openntf.org/main.nsf/project.xsp?r=project/OSGI%20Taskle t%20Service%20for%20IBM%20Lotus%20Domino/summary
  • 15. 15 Aside from LotusScript & Java 64 Bit Client Notes Basic Client Notes Standard Client Domino Designer Admin Client
  • 16. A look in the rearview mirror … Domino V10.x / 11.x 16
  • 17. What is new in Domino Designer 10 NotesHTTPRequest, The new LotusScript class allows HTTP requests to web servers. For more information, see the section 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 under https://help.hcltechsw.com/dom_designer/10.0.1/basic/dql_overview.html 17
  • 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 18
  • 19. What is new in Domino Designer 10 s https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_CONVERTOHTML_METHO D_NOTESRICHTEXTITEM.html https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_HTM LREFERENCE_CLASS.html „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 - 19
  • 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 or more 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. domino-db 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 20
  • 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. 21
  • 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 22
  • 23. 23 NotesRegistration class (11.0.1 LS/Java) Used to register users who have existing Person documents created by syncing Active Directory users into the Domino directory. (HCL DirSync) https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_CONTACTNOTEID_PROPERT Y_NOTESREGISTRATION.html
  • 24. 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 V8 Supported & documented as of V 11.0.1 https://atnotes.de/index.php/topic,53402.0.html 25
  • 26. New optional parameter “maintainOrder” (Optional) Boolean maintainOrder. Specifies that after the intersect / substract operation is complete, whatever order the originating view was in when the NotesEntryCollection 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 calling view.resortView. https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_NOTESVIEWENTRYCOLLECTION_9327.html 26
  • 27. New optional parameter “maintainOrder” 27
  • 28. NotesGPS (V 11 & LotusScript only) Provides access to user location for supported 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 28
  • 29. NotesGPS (V 11 & LotusScript only) 29
  • 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 31
  • 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 32
  • 33. 33 Create Views For DQL Helper Class to handle creation, removal and update of DQL indexes. Supports namespace
  • 34. 34 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 SUCCEEDED
  • 35. 35 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 SUCCEEDED
  • 36. 36 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 be usable 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 SUCCEEDED
  • 37. 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 be used with the field and Fieldref is whether the field name can be used directly in DQL terms. { "DBName": "devordwrk2.nsf", "Indexes": [ { "Indexname": "All", "Columnname":"Sales_person", "Columnref": true, "Fieldref": true }, ... ] } https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_LISTINDEXES_METHOD_JAVA.html 37
  • 38. listIndexes() Indexname: Anon, Columnname: Subject, Columnref: True, Fieldref: False Indexname: Samples, Columnname: subject, Columnref: True, Fieldref: False Indexname: TESTV121, Columnname: Subject, Columnref: True, Fieldref: True Indexname: view1, Columnname: Subject, Columnref: True, Fieldref: False Indexname: (TESTV122), Columnname: Subject, Columnref: True, Fieldref: True Indexname: (TESTV122), Columnname: Subject, Columnref: True, Fieldref: True Indexname: (TESTV123), Columnname: Subject, Columnref: True, Fieldref: True Indexname: ($namesearch), Columnname: Subject, Columnref: True, Fieldref: False Indexname: CatDiscworldCharacters, Columnname: company, Columnref: False, Fieldref: False Indexname: DiscworldCharacters, Columnname: company, Columnref: True, Fieldref: False Indexname: Samples, Columnname: category, Columnref: True, Fieldref: False Indexname: (domino_camp22), Columnname: Categories, Columnref: True, Fieldref: True 38
  • 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-dql-processing "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 - 39
  • 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 41
  • 46. 46 PreferJSONNavigator = True In the 10.0.1 FP2 release of Notes/Domino two new properties were introduced in the NotesHTTPRequest class: PreferUTF8 and PreferJSONNavigator. We are not going 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 start setting 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 47
  • 48. createJsonNavigator CreateJsonNavigator(„“) creates an empty JsonObject CreateJsonNavigator(„[]“) creates an empty JsonArray 48
  • 50. Modify element value type Type property is read-only and cannot be set. Use this code as a workaround. { "firstName": "Ulrich", "lastName": "Krause", "age": 62, "developer": true } 50
  • 53. 53
  • 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 54
  • 55. Transaction methods for LotusScript and Java Not available on the client transactionRollback and transactionCommit can be called only after transactionBegin Transaction logging must be enabled on the application 55
  • 56. Transaction methods for LotusScript and Java 56
  • 57. 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_COMMIT_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_ABORT_TRANSACTION(REPC1258682:00169262): [1CB8:0002-179C] (8-108 [8]) CLOSE_DB(REPC1258682:00169262): 57
  • 58. Column properties associated with narrow views https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_column_styling_in_narrow_views.html 58
  • 59. New properties to support HCL Nomad New properties are available in Domino® Designer to support applications that are used 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 well in a mobile client, you can hide it. https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html 59
  • 60. New properties to support HCL Nomad If an action or a field does not display well in a mobile client, you can hide it. https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html 60
  • 61. New properties to support HCL Nomad When there are multiple frames in an application, choose the sequence in which to navigate them in Nomad https://help.hcltechsw.com/dom_designer/11.0.1/basic/wn_new_properties_for_mobile.html 61
  • 62. New properties to support HCL Nomad You can enable an action to be available in the mobile actions button in Nomad. From the Action properties box, select Include 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 62
  • 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 with smaller screen size. https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_ hide_columns_or_fields_from_smaller_screens.html 63
  • 65. 65
  • 66. Larger Database Icons Templates can have database icons that are up to 64x64 pixels in size. Previously, database icons could be a maximum of 32x32 pixels. 66 https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_template_with_larger_application_icons.html
  • 67. Larger Database Icons Templates can have database icons that are up to 64x64 pixels in size. Previously, database icons could be a maximum of 32x32 pixels. 67 https://help.hcltechsw.com/dom_designer/12.0.0/basic/wn_template_with_larger_application_icons.html Pimp Your Client (Icon Set Database Download) – Anett Hammerschmidt – https://noteshexe.de/new-feature-hcl-notes-12-01/
  • 68. 68 NotesSession.UseDoubleAsPointer Allows to use a Double to handle a 64-bit 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
  • 70. 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. 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. 72 Named Documents Documentation (12.0.1) https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_name ddocumentmethods.html
  • 73. 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. Case #CS0305960 https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_excludefieldsfromftsearches.html
  • 75. 75 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 parallel development 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), their dependencies, how their services are exposed, etc. https://www.osgi.org
  • 76. 76 DOTS & OSGi (Bundle) In OSGi, a single component is called a bundle. Logically, a bundle is a piece of functionality that has an independent lifecycle – which means it can be started, stopped and removed independently. Technically, a bundle is just a jar file with a MANIFEST.MF file containing some OSGi-specific headers. A bundle can require other bundles and export packages that can be accessed by other OSGi components.
  • 77. 77 DOTS & OSGi (Bundle) DOTS is a generic Domino add-in task that lets users create Domino server tasks by creating a tasklet container using Java OSGi plugins. A tasklet is a lightweight server add-in task written in Java and declared as an OSGi extension point.
  • 78. 78 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 the server tasklet plugins. Domino Extension manager library dotsextmgr.dll installed at {dominobin} directory. Responsible for posting 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.
  • 79. 79 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 signing needed. 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.
  • 83. 83 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
  • 85. 85 DOTS Remote Debugging To remote debug the DOTS tasklet application, use the following notes.ini settings, which are the same 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
  • 86. 86 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 Java classes and the code can be rewritten. Java copy & paste
  • 89. 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 89
  • 90. 90 addCollection() Adds a NotesDocumentCollection or NotesViewEntryCollection to the Documents being processed https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDCOLLECTION_METHOD.html
  • 91. 91 Unique name for result set required A unique name (to the QueryResultsProcessor instance) of the input collection is required
  • 92. executeToJson() Processes the input collections in the manner specified by the Sort Columns, overriding field values 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 92
  • 93. executeToJson() Special keys “@nid” for NoteID and “@DbPath” are output so results can be acted upon on a document basis. All results are output under the “StreamResults” top element key. { "StreamResults": [ { "@nid": "NT0000090A", "@DbPath": "c:NotesDataanimals.nsf", "name": "Garfield" }, { "@nid": "NT000008FA", "@DbPath": "c:NotesDataanimals.nsf", "name": "Lassie" }, { "@nid": "NT000008F6", "@DbPath": "c:NotesDataanimals.nsf", "name": "Boomer" } ] } 93
  • 95. Method: AddFormula() Provides Domino formula language to override the data used to generate values for a particular sort column 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 95
  • 99. https://help.hcltechsw.com/dom_designer/12.0.0/basic/dql_formulalanguage.html 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, intra- document field searches, and the ability to leverage an extensive library of @function calls. Use the @FL (or @FORMULA, case insensitive) clause to encapsulate Formula Language syntax within DQL terms. 99
  • 100. 100 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 be accessed again more quickly. For reuse of complex queries, this saves significant processing time. https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/wn_dqlnamedresults.html [37D8:0046-3FC4] 18.03.2022 07:45:31 Error: writing named foundset "named_rslt_1": Entry already in index
  • 105. 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 105
  • 107. 107 executeToView Saves sorted QueryResultsProcessor results to a "results view" in a database. Processes the input collections in the manner specified by the Sort Columns, overriding field values with formulas specified via addFormula calls. Creates a results view in a host database and returns View object. https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_EXECUTETOVIEW_METHOD.html
  • 108. 108 executeToView Results views are generated programmatically, so they are designed to be discarded after use. Results views contain unique NoteIDs that cannot be referenced. Security for results views is implemented at the view level.
  • 109. 109 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 can request for a hotfix. – HCL support -

Editor's Notes

  1. https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/whatsnew12.0.html
  2. https://help.hcltechsw.com/dom_designer/beta/12.0.1/basic/whatsnew12.0.html
  3. Feel free to choose an IDE of your choice. No matter if it is IntelliJ, Visual Studio Code or Eclipse. I am using Eclipse. Eclipse 4.6.2 is recommended, but I am using the latest version available.
  4. https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_NOTESQUERYRESULTSPROCESSOR_CLASS.html
  5. https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_EXECUTETOJSON_METHOD.html
  6. https://help.hcltechsw.com/dom_designer/12.0.0/basic/H_ADDFORMULA_METHOD.html