SlideShare una empresa de Scribd logo
1 de 85
What is new in Notes / Domino
V10 Development
Ulrich Krause, midpoints GmbH
DNUG46
04. – 05.06.2019, Messe Essen
https://www.ibm.com/blogs/collaboration-
solutions/2017/10/25/ibm-announces-investment-notes-
domino-version-10-beyond/
https://dnug.de/domino-2025-jams-und-online-forum/
https://www.heise.de/ix/meldung/dominofor
ever-IBM-Notes-Domino-V10-Weltpremiere-
in-Frankfurt-4183932.html
IBM Domino Community
Client & Server
IBM Domino Community Client
& Server (English only)
Type OS Description Size Part # Download
Client Windows IBM Notes Community Client for Non-Production
10.0.1 Windows English
IBMNotesDesignerAdminCommunityClientforNonProduction
10.0.1Windows.exe
1 GB CNY0UEN Start HERE
Server Windows IBM Domino Community Server for Non-Production
10.0.1 Windows English
IBMDominoCommunityServerforNonProduction10.0.1Windo
ws.exe
665 MB CNXK0EN Start HERE
Server Linux IBM Domino Community Server for Non-Production
10.0.1 Linux English
IBMDominoCommunityServerforNonProduction10.0.1Linux.t
ar
791MB CNXK1EN Start HERE
https://www.ibm.com/account/re
g/us-en/signup?formid=urx-33713
Domino AppDevPack
Domino AppDevPack
https://doc.cwpcollaboration.com/appdevpack/docs/en/homepage.html
New in LotusScript & Java
New Classes in 10.0.0 and 10.0.1
• (Notes)DominoQuery class – DQL support from Lotusscript/Java
• parse, explain, execute queries
• (re)setNamedVariable – to address SQL Insertion security exposure
• (Notes)HTTPRequest – REST support from the Domino backend
• NotesJSON* – (Lotusscript only) to process JSON payloads
• (Notes)ViewEntryCollection intersect and substract methods has new
maintainOrder argument for sorted results
• (Notes)IdVault & (Notes)UserId ( also JavaScript )
NotesHttpRequest
NotesHTTPRequest
NotesSession NotesHTTPRequest
CreateHttpRequest() MaxRedirects
PreferStrings
ResponseCode
Timeoutsec
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTES_HTTPREQUEST_CLASS.html
Get()
Post()
Put()
Patch()
DeleteRessource()
SetHeaderFields()
ResetHeaders()
GetResponseCode()
LotusScript  node.js
Public Class HttpRequestWrapper
Private m_session As NotesSession
Private m_url As String
Private m_class As String
Private m_json As String
Private m_httpRequest As NOTESHTTPREQUEST
%REM
Sub New
%END REM
Public Sub New()
Set m_session = New NotesSession
Set m_httpRequest = _
me.m_session.CreateHttpRequest()
m_httpRequest.preferStrings = True
m_url = BASE_URL_PORT
m_class = CLASS_CUSTOMER
End Sub
https://github.com/eknori/nodejs-restApi
.preferStrings = TRUE
• By DEFAULT, NotesHttpRequest returns variant content as JSON UTF8
byte array.
• Use the preferstrings property to return Unicode rather than UTF8
byte array.
.ResponseCode
Private Function getResponseCode() As String
getResponseCode = m_httpRequest.ResponseCode
End Function
.ResponseCode
Private Function getResponseCode() As String
getResponseCode = m_httpRequest.ResponseCode
End Function
.ResponseCode
Private Function getResponseCode() As String
getResponseCode = m_httpRequest.ResponseCode
End Function
https://www.assono.de/blog/http-status-code-200-oder-401-
fuer-login-seite-jetzt-haben-wir-die-wahl
DOMINO_FORCE401_WITH_HTML_LOGIN_PAGE=1
.getResponseHeaders
Private Function getResponseHeaders() As String
Dim vHeaders As Variant
Dim sHeaders As String
vHeaders = m_httpRequest.getResponseHeaders()
ForAll h In vHeaders
sHeaders = sHeaders+ CStr(h)_
+ Chr(10)+Chr(13)
End ForAll
getResponseHeaders = sHeaders
End Function
Returns Variant array of the response headers.
Each value contains the header field and value.
.setHeaderFields (Authentication)
Dim user As String
Dim password As String
user = "firstname.lastname@tld.de"
password = "#dominoforever"
Call httpReq.SetHeaderField("Authorization", "Basic" + _
EncodeBase64 (user + ":" + password))
.setHeaderFields (Authentication)
Function EncodeBase64 (StrIn As String) As String
Dim session As New NotesSession
Dim stream As NotesStream
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim body As NotesMIMEEntity
Set stream = session.CreateStream
Call stream.WriteText (StrIn)
Set db = session.CurrentDatabase
Set doc = db.CreateDocument
Set body = doc.CreateMIMEEntity
Call body.SetContentFromText (stream, "", ENC_NONE)
Call body.EncodeContent (ENC_BASE64)
EncodeBase64 = body.ContentAsText
Call stream.Close
Set doc = Nothing
End Function
http://blog.nashcom.de/nashcomblog.nsf/dx/domino
v10-http-requests-from-Lotus-Script.htm
Debug_NotesHTTPRequest=1
View  JSON
URL = https://server/db.nsf/view?readviewentries&outputformat=JSON
{
"@timestamp": "20190501T060619,12Z",
"@toplevelentries": "54",
"viewentry": [
{
"@position": "1",
"@unid": "3F9F2640C53800B2C12578090031B03F",
"@noteid": "71356",
"@siblings": "54",
"entrydata": [
{
"@columnnumber": "0",
"@name": "Subject",
"text": {
"0": "CreateReplicaStub"
}
},
{
"@columnnumber": "1",
"@name": "$2",
"textlist": {
"text": [
{
"0": ""
https://www.ibm.com/support/knowledgecenter/e
n/SSVRGU_9.0.1/basic/H_ABOUT_URL_COMMAND
S_FOR_OPENING_SERVERS_DATABASES_AND_VIEW
S.html
View  JSON
URL = https://server/db.nsf/view?readviewentries&outputformat=JSON&Count=10000
without count parameter, only 30 items are returned
&Count=-1 to return ALL view entries
View  JSON Sample
Dim session As New NotesSession
Dim httpreq As NotesHTTPRequest
Dim jsonNav as NotesJSONNavigator
Dim response as Variant
Set httpreq = session.CreateHTTPRequest()
response = httpreq.get("http://my.testapi.com/endpoint")
Set jsonNav = session.CreateJSONNavigator(response)
Dim jsonElem as NotesJSONElement
Set jsonElem = jsonNav.getFirstElement()
View  JSON Sample
Dim session As New NotesSession
Dim httpreq As NotesHTTPRequest
Dim jsonNav as NotesJSONNavigator
Dim response as Variant
Set httpreq = session.CreateHTTPRequest()
response = httpreq.get("http://my.testapi.com/endpoint")
Set jsonNav = session.CreateJSONNavigator(response)
Dim jsonElem as NotesJSONElement
Set jsonElem = jsonNav.getFirstElement()
View  JSON Sample
Dim session As New NotesSession
Dim httpreq As NotesHTTPRequest
Dim jsonNav as NotesJSONNavigator
Dim response as Variant
Set httpreq = session.CreateHTTPRequest()
response = httpreq.get("http://my.testapi.com/endpoint")
Set jsonNav = session.CreateJSONNavigator(response)
Dim jsonElem as NotesJSONElement
Set jsonElem = jsonNav.getFirstElement()
View  JSON Sample (10.0.1 FP2)
Dim session As New NotesSession
Dim httpreq As NotesHTTPRequest
Dim jsonNav as NotesJSONNavigator
Set httpreq = session.CreateHTTPRequest()
httpreq.PreferJSONNavigator = True
Set jsonNav = httpreq.get("http://my.testapi.com/endpoint")
Dim jsonElem as NotesJSONElement
Set jsonElem = jsonNav.getFirstElement()
Technote: Limitations of NotesHTTPRequest and NotesJSONNavigator with future considerations https://www-
01.ibm.com/support/docview.wss?uid=ibm10875724
NotesJsonNavigator
NotesJsonNavigator
NotesSession NotesJSONNavigator
createNotesJsonNavigator()
getElementByName()
getElementByPointer()
getFirstElement()
getNextElement()
getNthElement()
preferUTF8
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESJSONNAVIGATOR_CLASS.html
NotesJsonElement
NotesJsonNavigator NotesJsonElement
Name
Type
Value
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESJSONELEMENT_CLASS.html
Represents a name, value pair in a JSON string.
Get*Element()
NotesJsonArray
NotesJsonElement NotesJSONArray
getNextElement()
getNthElement()
Size
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESJSONARRAY_CLASS.html
Set jsnav = s.CreateJSONNavigator(|{"numbers:" : [1,2,3,4,5]}|)
Set el = jsnav.GetFirstElement()
Set arr = el.value
Set el = arr.GetFirstElement()
MsgBox "First element: " & CStr(el.Value)
value
NotesJsonObject
NotesJSONNavigator NotesJSONObject
getElementByName()
getFirstElement()
getNextElement()
getNthElement()
Size
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESJSONOBJECT_CLASS.html
Set jsnav = s.CreateJSONNavigator(|{"objects":{"object1": {"inner1":"innerval1"},"object2":
{"inner2":"innverval2"}, "object3": {"inner3":"innverval3"}}}|)
Set el = jsnav.Getfirstelement()
Set obj = el.value
Set el = obj.Getelementbyname("object1")
Set el = el.value.GetelementByName("inner1")
MsgBox "object1 = " & CStr(el.Name) & ":" & CStr(el.Value)
NotesJsonNavigator
• To create a new NotesJsonNavigator object, use
createNotesJsonNavigator.
Public Sub NotesJSONNavigator_1
Dim sesssion As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim json As String
Set jsnav = session.CreateJsonNavigator(json)
End Sub
NotesJsonNavigator
NotesJsonNavigator
NSD – DEBUG_LS_DUMP=1
• https://www-01.ibm.com/support/docview.wss?uid=swg21499034
• When enabled, an NSD dump will include a LotusScript Interpreter
section, which shows a stack trace for all LotusScript that was running
at the time NSD was called, for all threads in all Notes/Domino
processes.
NotesJsonNavigator
• Tracked under SPR #DCONBB44T4
• Will be fixed in 10.0.1 FP2
• At least, check json string
Public Sub NotesJsonNavigator_1
Dim session As New NotesSession
Dim jsnav As NotesJsonNavigator
Dim json As String
If (json <> "") then
Set jsnav = session.CreateJsonNavigator(json)
End If
End Sub
NotesJSONNavigator (cont.)
Public Sub NotesJsonNavigator_2
Dim session As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim json As String
json = |{"color": "black"}|
'json = |{"color1": "black","color2": "blue"}|
'json = |{"colors": {"color": "black","color": "blue"}}|
'json = |{"color": "white", "category": "value",
"code": {"rgba": [255,0,0,1],"hex": "#FFF"}}|
'json = |{"numbers:" : [1,2,3,4,5]}|
'json = |[1,2,3,4,5]|
If (json <> "") then
Set jsnav = session.CreateJSONNavigator(json)
End If
End Sub
NotesJsonNavigator ( 10.0.1 FP2 )
• SPR# DCONBB44T4 - LotusScript - Fixed a crash
when using Session.createJSONNavigator.
• SPR# DCONBB2KNR - LotusScript - Fixed a
problem in NotesJSONNavigator package
parsing when parsing empty strings.
Public Sub NotesJsonNavigator_1
Dim session As New NotesSession
Dim jsnav As NotesJsonNavigator
Dim json As String
Set jsnav = session.CreateJsonNavigator(json)
End Sub
NotesJSONNavigator (cont.)
• Issue with special characters in JSON
• Tracked under SPR# VRARB8WkPB.
• Will be fixed in an upcoming release ( not FP1 )
Public Sub NotesJsonNavigator_3
Dim s As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim json As String
json = |{"device":"Apple iPad 2 with Wi-Fi - 16GB"}|
Set jsnav = s.CreateJSONNavigator(json)
json = |{"device":"Apple® iPad® 2 with Wi-Fi - 16GB"}|
Set jsnav = s.CreateJSONNavigator(json)
End Sub
NotesJSONNavigator (cont.)
• 10.0.1.FP2 ?
NotesJSONNavigator (cont.)
• NOT fixed!
NotesJSONNavigator (cont.)
• Issue with CRLF in JSON
• Tracked under SPR# ASHEB95LFR.
• Will be fixed in an upcoming release
Const colors2 = |{
"colors": [
{
"color": "black",
"category": "hue",
"type": "primary",
"code": {
"rgba": [255,255,255,1],
"hex": "#000"
}
},
{
"color": "white",
"category": "value",
"code": {
"rgba": [0,0,0,1],
"hex": "#FFF"
}
}
]
}|
NotesJSONNavigator (cont.)
• Workaround – remove CRLF
Public Function removeCRLF(json As String) As String
removeCRLF = Replace(Replace(json, Chr(13), ""),Chr(10),"")
End Function
Public Sub NotesJsonNavigator_1
Dim session As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim json As String
json = removeCRLF(colors2)
Set jsnav = session.CreateJSONNavigator(json)
End Sub
NotesJSONNavigator 10.0.1 FP2
• SPR# ASHEB95LFR - LotusScript - Fixed a problem where
NotesJSONNavigator was unable to navigate a string which contained
new lines and carriage returns.
NotesJSONNavigator (cont.)
• Issue with JSON larger than 64k
• Tracked under SPR# DCONB8VMAV
• Will be fixed in an upcoming release
public Sub streamBigJson()
Dim session As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim stream As NotesStream
Dim fileName As String
fileName = "c:Tempbig.json“
Set stream = session.CreateStream
stream.Position = 0
Set jsnav = session.CreateJSONNavigator(stream.ReadText)
Call stream.Close
End Sub
NotesJSONNavigator 10.0.1 FP2
• SPR# DCONB8VMAV - LotusScript - Fixed a problem where
NotesJSONNavigator was unable to parse json content that was
greater than 64K.
.getNthElement(index)
Public Sub jsonNavigatorGetNthElement
Dim s As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim json As String
json = |[1,2,3,4,5]|
Set jsnav = s.CreateJSONNavigator(json)
Dim el As NotesJsonElement
Set el = jsnav.GetNthElement(4)
MsgBox "Nth element: " & el.Value
End Sub
.getElementByPointer()
• Retrieves a NotesJSONElement using JSON Pointer syntax* to identify
the element.
Public Sub jsonNavigatorGetElementByPointer()
Dim session As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim el As NotesJSONElement
Set jsnav = session.CreateJSONNavigator(_
|{"color": "white", "cat":"ls","code": {"rgb": [255,0,0,1],"hex": "#FFF"}}|)
Set el = jsnav.GetelementByPointer("/cat")
MsgBox "cat: " + el.Value'
Set el = jsnav. GetelementByPointer("/code/hex")
MsgBox "hex: " + el.Value
Set el = jsnav. GetelementByPointer("/code/rgb/3")
MsgBox "code/rgb/3: " + el.Value
End Sub
* https://www.baeldung.com/json-pointer
NotesJSONArray.getNthElement
„We have documented this bug under SPR #SKSWB89MGH and are currently working on the solution.“ HCL Support.
Public Sub jsonArrayNthElement()
Dim s As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim el As NotesJSONElement
Dim arr As NotesJSONArray
Set jsnav = s.CreateJSONNavigator(|{"numbers:" : [1,2,3,4,5]}|)
Set el = jsnav.GetFirstElement()
Set arr = el.value
MsgBox "Nth element: " & CStr(arr.GetNthElement(4).value)
End Sub
NotesJSONArray.getNthElement()
• SPR #SKSWB89MGH - Fixed an issue where LotusScript function
NotesJsonArray.getNthElement(index) always returned the first
element. (FP1)
NotesJSONArray.Size()
Public Sub jsonArraySize()
Dim s As New NotesSession
Dim jsnav As NotesJSONNavigator
Dim el As NotesJsonElement
Dim arr As NotesJsonArray
Set jsnav = s.CreateJSONNavigator(|{"numbers:" : [1,2,3,4,5]}|)
Set el = jsnav.GetFirstElement()
Set arr = el.value
MsgBox "Size: " & CStr(arr.Size())
End Sub
NotesDominoQuery
NotesDominoQuery
NotesDatabase NotesDominoQuery
CreateDominoQuery() MaxScanDocs
MaxScanEntries
NoViews
RefreshViews
TimeoutSec
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESDOMINOQUERY_CLASS.html
Execute()
Explain()
Parse()
ResetNamedVariables()
SetNamedVariable()
db.CreateDominoQuery()
te amgr run "ec11.nsf" 'dql.java'
JVM: Java Virtual Machine initialized.
AMgr: Start executing agent 'dql.java' in 'ec11.nsf'
Agent Manager: Agent printing: Version: Release 10.0.1 November 29, 2018
Agent Manager: Agent printing: Db Title: singultus's Directory
Agent Manager: Agent error: Exception in thread "AgentThread: JavaAgent"
Agent Manager: Agent error: java.lang.UnsatisfiedLinkError: lotus/domino/local/Database.NcreateDQuery()J
Agent Manager: Agent error: at lotus.domino.local.Database.createDominoQuery(Unknown Source)
Agent Manager: Agent error: at JavaAgent.NotesMain(JavaAgent.java:19)
Agent Manager: Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)
Agent Manager: Agent error: at lotus.domino.NotesThread.run(Unknown Source)
AMgr: Agent 'dql.java' in 'ec11.nsf' completed execution
10.0.1 FP1
SPR# JCORB93PEY
Fixed an issue with DQL where calling Database.createDominoQuery on Linux
resulted in Unsatisfied Link Error.
Getter / Setter in LS & Java
Tracked under SPR# JCORB7ENX8
Getter / Setter in LS & Java (Workaround)
• Put the following entries into the server notes.ini.
sh con QUERY*
[0C38:0009-0ADC] QUERY_MAX_DOCS_SCANNED=13000000
[0C38:0009-0ADC] QUERY_MAX_VIEW_ENTRIES_SCANNED=13000000
• The notes.ini settings are never used for property values in the LS classes.
However, the user can easily get the value from a call to
Session.getEnvironmentValue. ( John Curtis )
• getter / setter not showing DEFAULT = SPR #JCUSB8HQ36
Getter / Setter in LS 10.0.1 FP2
• SPR# JCORB7ENX8 - DQL: Fixed a problem where DominoQuery class
allowed for only a small number of Documents or View Entries to be
scanned. Now MaxScanDocs and MaxScanEntries properties are
Longs, allowing for many more
DesignHarvest
• Programmatically update the DQL Design Catalog
• NSFDesignHarvest is undocumented and maybe changed. Use at own
risk.
Public Const UPDATE_DESIGN_CATALOG = 0
Public Const ADD_TO_DESIGN_CATALOG = 1
Declare Function NSFDesignHarvest (ByVal hDb As Long, ByVal flag As Long) As Integer
DesignHarvest – LS2CAPI
‘DECLARATIONS
Public Const UPDATE_DESIGN_CATALOG = 0
Public Const ADD_TO_DESIGN_CATALOG = 1
Const NNOTES ="nnotes.dll"
Const LIBNOTES ="libnotes.so"
Declare Public Function WIN_NSFDbOpen Lib NNOTES Alias "NSFDbOpen" _
(ByVal dbName As String, hDb As Long) As Integer
Declare Public Function LIN_NSFDbOpen Lib LIBNOTES Alias "NSFDbOpen" _
(ByVal dbName As String, hDb As Long) As Integer
Declare Public Function WIN_NSFDbClose Lib NNOTES Alias "NSFDbClose" _
(ByVal hDb As Long) As Integer
Declare Public Function LIN_NSFDbClose Lib LIBNOTES Alias "NSFDbClose" _
(ByVal hDb As Long) As Integer
Declare Public Function WIN_NSFDesignHarvest Lib NNOTES Alias "NSFDesignHarvest" _
(ByVal hDb As Long, ByVal flag As Long) As Integer
Declare Public Function LIN_NSFDesignHarvest Lib LIBNOTES Alias "NSFDesignHarvest" _
(ByVal hDb As Long, ByVal flag As Long) As Integer
DesignHarvest – LS2CAPI (cont.)
Function NSFDBClose (hDb As Long)
If isDefined("WINDOWS") Then
NSFDbClose = WIN_NSFDbClose(hDb)
ElseIf isDefined("LINUX") Then
NSFDbClose = LIN_NSFDbClose(hDb)
End If
End Function
Function NSFDbOpen( db As String, hDB As Long) As Integer
If isDefined("WINDOWS") Then
NSFDbOpen = WIN_NSFDbOpen(db,hDb)
ElseIf isDefined("LINUX") Then
NSFDbOpen = LIN_NSFDbOpen(db,hDb)
End If
End Function
Function NSFDesignHarvest (hDb As Long, flag As long) As Integer
If isDefined("WINDOWS") Then
NSFDesignHarvest = WIN_NSFDesignHarvest(hDb, flag)
ElseIf isDefined("LINUX") Then
NSFDesignHarvest = LIN_NSFDesignHarvest(hDb, flag)
End If
End Function
DesignHarvest – LS2CAPI (cont.)
Public Function catalogDesign(sDb As String, flag As Long) As Integer
Dim hDb As Long
Dim rc As Integer
If flag > 1 Then flag = 1
If flag < 0 Then flag = 0
rc = NSFDbOpen(sDb, hDb)
If rc = 0 Then
rc = NSFDesignHarvest(hDb, flag)
rc = NSFDbClose(hDb)
End If
catalogDesign = rc
End Function
DQL Explorer
DQL Explorer
• Everything runs in a single .nsf
• Luis Guirigay and Andrew Manby introduce DQL Explorer at Think
2019: https://youtu.be/OMjSND5cPsE
• Scott Good provides a demo that includes some configurations
aspects not shown in the stage demo:
https://youtu.be/Cfw_6Wvk8c8
• The Web application relies on Domino Access Services (DAS) being
enabled on the dqlexplorer.nsf (default), but that means there is a
need to be enable DAS on your server.
DQL Explorer
DQL Explorer
DQL Explorer
DQL Explorer
• https://github.com/icstechsales/dql-explorer
• ANYONE can contribute
• Bug fixes
• Enhancements
• Documentation
• Forking – copying and changing
• EVERYONE benefits
• We NEED to show the power of Domino
• Support concerns, defects are a community thing
NotesViewEntryCollection
NotesViewEntryCollection
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESVIEWENTRYCOLLECTION_9327.html
NotesViewEntryCollection
…
intersect(Doc as Variant, maintainOrder as boolean)
substract(Doc as Variant, maintainOrder as boolean)
…
maintainOrder
(Optional) Boolean. 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 ResortView.
intersect = Removes from a view entry collection any
entries whose associated documents are not also
contained in a second collection.
substract = Removes from a view entry collection any
entries whose associated documents are also contained
in a second collection.
NotesIdVault /NotesUserId
NotesIdVault
NotesIdVault
ServerName
GetUserIdFile()
PutUserIdFile()
SyncUserIdFile()
ResetUserPassword()
IsIdInVault()
GetUserId()
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESIDVAULT_CLASS.html
NotesSession
GetIdVault()
NotesIdVault Wrapper class
• https://openntf.org/XSnippets.nsf/snippet.xsp?id=programmatic-
access-to-idvault-incl.-new-v10-methods-
• The code allows programmatic access to the IDVAULT. It uses the
NotesIdVault class ( new with 901 FP9 ) and also extends the class to
extract an ID from the vault without knowing its password.
• The code also includes new features that come with V10 to archive,
revert archived Ids and to delete Ids that have been archived to
reinforce sync.
.archiveIdFile ( sample code )
Public Sub archiveIdFile
Call me.resetError()
On Error GoTo catch
If (me.m_vault_doc Is Nothing) Then
Call me.getDocumentByKey(me.UserName)
If Not (me.m_vault_doc Is Nothing) Then
Dim idOwner As String
idOwner = TILDE + me.m_vault_doc.IdOwner(0)
me.m_vault_doc.idOwner = idOwner
Call me.m_vault_doc.Save(True, False)
Call me.m_vault_view.Refresh()
Else
Error ERR_DOC_ARCHIVE,_
ERR_DOC_NOT_FOUND_OR_ARCHIVED_MSG + OPERATION_CANCELLED_MSG
End If
End If
NotesUserId
NotesUserId
UserName
getEncryptionKeys
getUserName
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESUSERID_CLASS.html
The NotesUserID class represents the Notes ID file or a Notes ID when it resides within the Domino IDVault.
This object is primarily used to obtain the names of the private encryption keys which are available for use
within the UserID object.
NotesIdVault
Getuserid()
JavaScript
• @UserSecretKeys() Javascript function - This convenience function is
used to obtain secret keys from a user’s ID file.
• @UserId() Javascript function - This function is to return the UserID
object stored for a given user in the ID Vault.
Recommended reading
• Limitations of NotesHTTPRequest and NotesJSONNavigator with future
considerations - https://www-
01.ibm.com/support/docview.wss?uid=ibm10875724
• IBM Notes®/Domino® 10.0.1 Fix Pack 2 Release Notice May 28, 2019 -
http://www-
10.lotus.com/ldd/fixlist.nsf/da28c739cc5024e9852583da006659a7/3501674bb1c
8f1e0852584080063188b?OpenDocument
• IBM Notes®/Domino® 10.0.1 Fix Pack 1 Release Notice March 30, 2019 -
http://www-
10.lotus.com/ldd/fixlist.nsf/WhatsNew/b1df4042fb8a980c852583b40067a7be?O
penDocument
• Upgrading to IBM Notes and Domino 10.x - https://www-
01.ibm.com/support/docview.wss?uid=ibm10881219&aid=1
Recommended reading
• Daniel Nashed, AppDevPack Security Setup explained -
http://blog.nashcom.de/nashcomblog.nsf/dx/appdevpack-security-setup-
explained.htm
• Paul Withers, Domino App Dev Pack: Understanding Scopes -
https://www.intec.co.uk/domino-app-dev-pack-understanding-scopes/
• Oliver Busse, Domino, Proton, IAM, Oauth Part 1-4 -
https://oliverbusse.notesx.net/hp.nsf/blogpost.xsp?documentId=2FEA
• Heiko Voigt, Blog - https://www.sit.de/heikos-blog
• New features for developers in IBM Domino and Domino Designer 10.0.1 -
https://www-01.ibm.com/support/docview.wss?uid=ibm10737063
About: me
• Lotus Notes und Domino seit 1993
• Entwickler / Administrator
• IBM Champion 2010 – 2019
• OpenNTF Contributor
• Let‘s Encrypt 4 Domino ( LE4D )
• Entwickler bei midpoints GmbH

Más contenido relacionado

La actualidad más candente

How to use the new Domino Query Language
How to use the new Domino Query LanguageHow to use the new Domino Query Language
How to use the new Domino Query LanguageTim Davis
 
IBM Domino / IBM Notes Performance Tuning
IBM Domino / IBM Notes Performance Tuning IBM Domino / IBM Notes Performance Tuning
IBM Domino / IBM Notes Performance Tuning Vladislav Tatarincev
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Webpanagenda
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkJohn Dalsgaard
 
HCL Notes and Nomad Troubleshooting for Dummies
HCL Notes and Nomad Troubleshooting for DummiesHCL Notes and Nomad Troubleshooting for Dummies
HCL Notes and Nomad Troubleshooting for Dummiespanagenda
 
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
July OpenNTF Webinar - HCL Presents Keep, a new API for DominoJuly OpenNTF Webinar - HCL Presents Keep, a new API for Domino
July OpenNTF Webinar - HCL Presents Keep, a new API for DominoHoward Greenberg
 
HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview hemantnaik
 
INF107 - Integrating HCL Domino and Microsoft 365
INF107 - Integrating HCL Domino and Microsoft 365INF107 - Integrating HCL Domino and Microsoft 365
INF107 - Integrating HCL Domino and Microsoft 365Dylan Redfield
 
Engage2022 - Domino Admin Tips
Engage2022 - Domino Admin TipsEngage2022 - Domino Admin Tips
Engage2022 - Domino Admin TipsGabriella Davis
 
AD11 Starting with Domino on Docker.pdf
AD11 Starting with Domino on Docker.pdfAD11 Starting with Domino on Docker.pdf
AD11 Starting with Domino on Docker.pdfMartijn de Jong
 
Bewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-Server
Bewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-ServerBewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-Server
Bewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-Serverpanagenda
 
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxdominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxUlrich Krause
 
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehtsZusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehtspanagenda
 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesHoward Greenberg
 
dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...
dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...
dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...Christoph Adler
 
HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...
HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...
HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...Ales Lichtenberg
 

La actualidad más candente (20)

How to use the new Domino Query Language
How to use the new Domino Query LanguageHow to use the new Domino Query Language
How to use the new Domino Query Language
 
IBM Domino / IBM Notes Performance Tuning
IBM Domino / IBM Notes Performance Tuning IBM Domino / IBM Notes Performance Tuning
IBM Domino / IBM Notes Performance Tuning
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Web
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWork
 
HCL Domino V12 - TOTP
HCL Domino V12 - TOTPHCL Domino V12 - TOTP
HCL Domino V12 - TOTP
 
HCL Notes and Nomad Troubleshooting for Dummies
HCL Notes and Nomad Troubleshooting for DummiesHCL Notes and Nomad Troubleshooting for Dummies
HCL Notes and Nomad Troubleshooting for Dummies
 
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
July OpenNTF Webinar - HCL Presents Keep, a new API for DominoJuly OpenNTF Webinar - HCL Presents Keep, a new API for Domino
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
 
60 Admin Tips
60 Admin Tips60 Admin Tips
60 Admin Tips
 
HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview
 
INF107 - Integrating HCL Domino and Microsoft 365
INF107 - Integrating HCL Domino and Microsoft 365INF107 - Integrating HCL Domino and Microsoft 365
INF107 - Integrating HCL Domino and Microsoft 365
 
Engage2022 - Domino Admin Tips
Engage2022 - Domino Admin TipsEngage2022 - Domino Admin Tips
Engage2022 - Domino Admin Tips
 
AD11 Starting with Domino on Docker.pdf
AD11 Starting with Domino on Docker.pdfAD11 Starting with Domino on Docker.pdf
AD11 Starting with Domino on Docker.pdf
 
Bewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-Server
Bewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-ServerBewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-Server
Bewährte Praktiken für HCL Notes/Domino-Sicherheit. Teil 2: Der Domino-Server
 
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxdominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptx
 
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehtsZusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
 
Domino Adminblast
Domino AdminblastDomino Adminblast
Domino Adminblast
 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
 
dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...
dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...
dachnug49 - panagenda Workshop - 100 new things in Notes, Nomad Web & MarvelC...
 
HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...
HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...
HCL Sametime 12.0 – Converting from native Domino Directory to LDAP and Migra...
 
Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012
Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012
Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012
 

Similar a What is new in Notes & Domino Deleopment V10.x

Visual Studio 2010 and .NET 4.0 Overview
Visual Studio 2010 and .NET 4.0 OverviewVisual Studio 2010 and .NET 4.0 Overview
Visual Studio 2010 and .NET 4.0 Overviewbwullems
 
PowerShell Technical Overview
PowerShell Technical OverviewPowerShell Technical Overview
PowerShell Technical Overviewallandcp
 
Capture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninjaCapture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninjaVito Flavio Lorusso
 
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0Thomas Conté
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010Abram John Limpin
 
Debugging & profiling node.js
Debugging & profiling node.jsDebugging & profiling node.js
Debugging & profiling node.jstomasperezv
 
201209 tech days .net 4.5 核心功能及綜覽
201209 tech days .net 4.5 核心功能及綜覽201209 tech days .net 4.5 核心功能及綜覽
201209 tech days .net 4.5 核心功能及綜覽Meng-Ru (Raymond) Tsai
 
MSMDC_CLI363
MSMDC_CLI363MSMDC_CLI363
MSMDC_CLI363mokacao
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration SeminarYoss Cohen
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Servicesukdpe
 
New Features of SQL Server 2016
New Features of SQL Server 2016New Features of SQL Server 2016
New Features of SQL Server 2016Mir Mahmood
 

Similar a What is new in Notes & Domino Deleopment V10.x (20)

Visual Studio 2010 and .NET 4.0 Overview
Visual Studio 2010 and .NET 4.0 OverviewVisual Studio 2010 and .NET 4.0 Overview
Visual Studio 2010 and .NET 4.0 Overview
 
PowerShell Technical Overview
PowerShell Technical OverviewPowerShell Technical Overview
PowerShell Technical Overview
 
Book
BookBook
Book
 
Capture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninjaCapture, record, clip, embed and play, search: video from newbie to ninja
Capture, record, clip, embed and play, search: video from newbie to ninja
 
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
 
php
phpphp
php
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Asp.net tips
Asp.net tipsAsp.net tips
Asp.net tips
 
Windows PowerShell
Windows PowerShellWindows PowerShell
Windows PowerShell
 
A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010
 
Debugging & profiling node.js
Debugging & profiling node.jsDebugging & profiling node.js
Debugging & profiling node.js
 
BizTalk Documenter
BizTalk DocumenterBizTalk Documenter
BizTalk Documenter
 
201209 tech days .net 4.5 核心功能及綜覽
201209 tech days .net 4.5 核心功能及綜覽201209 tech days .net 4.5 核心功能及綜覽
201209 tech days .net 4.5 核心功能及綜覽
 
MSMDC_CLI363
MSMDC_CLI363MSMDC_CLI363
MSMDC_CLI363
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration Seminar
 
前端概述
前端概述前端概述
前端概述
 
Tdd,Ioc
Tdd,IocTdd,Ioc
Tdd,Ioc
 
Visual studio.net
Visual studio.netVisual studio.net
Visual studio.net
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Services
 
New Features of SQL Server 2016
New Features of SQL Server 2016New Features of SQL Server 2016
New Features of SQL Server 2016
 

Más de Ulrich Krause

IBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformIBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformUlrich Krause
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCUlrich Krause
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentUlrich Krause
 
La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!Ulrich Krause
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntfUlrich Krause
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesUlrich Krause
 
Life In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesLife In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesUlrich Krause
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUlrich Krause
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the BasicsUlrich Krause
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPagesUlrich Krause
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the BasicsUlrich Krause
 
Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)Ulrich Krause
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
Dnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basicDnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basicUlrich Krause
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 PerformanceUlrich Krause
 
DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011Ulrich Krause
 

Más de Ulrich Krause (20)

IBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware PlatformIBM Lotus Notes - From PLATO to the Leading Groupware Platform
IBM Lotus Notes - From PLATO to the Leading Groupware Platform
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin development
 
La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPages
 
Life In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesLife In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPages
 
XPages Performance
XPages PerformanceXPages Performance
XPages Performance
 
Ec13 xpages-basic
Ec13 xpages-basicEc13 xpages-basic
Ec13 xpages-basic
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPages
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the Basics
 
Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Dnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basicDnug35 ak-dev.071111-basic
Dnug35 ak-dev.071111-basic
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 Performance
 
DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011
 

Último

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 

Último (20)

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 

What is new in Notes & Domino Deleopment V10.x

  • 1. What is new in Notes / Domino V10 Development Ulrich Krause, midpoints GmbH DNUG46 04. – 05.06.2019, Messe Essen
  • 4.
  • 6.
  • 8. IBM Domino Community Client & Server (English only) Type OS Description Size Part # Download Client Windows IBM Notes Community Client for Non-Production 10.0.1 Windows English IBMNotesDesignerAdminCommunityClientforNonProduction 10.0.1Windows.exe 1 GB CNY0UEN Start HERE Server Windows IBM Domino Community Server for Non-Production 10.0.1 Windows English IBMDominoCommunityServerforNonProduction10.0.1Windo ws.exe 665 MB CNXK0EN Start HERE Server Linux IBM Domino Community Server for Non-Production 10.0.1 Linux English IBMDominoCommunityServerforNonProduction10.0.1Linux.t ar 791MB CNXK1EN Start HERE
  • 10.
  • 14. New Classes in 10.0.0 and 10.0.1 • (Notes)DominoQuery class – DQL support from Lotusscript/Java • parse, explain, execute queries • (re)setNamedVariable – to address SQL Insertion security exposure • (Notes)HTTPRequest – REST support from the Domino backend • NotesJSON* – (Lotusscript only) to process JSON payloads • (Notes)ViewEntryCollection intersect and substract methods has new maintainOrder argument for sorted results • (Notes)IdVault & (Notes)UserId ( also JavaScript )
  • 17. LotusScript  node.js Public Class HttpRequestWrapper Private m_session As NotesSession Private m_url As String Private m_class As String Private m_json As String Private m_httpRequest As NOTESHTTPREQUEST %REM Sub New %END REM Public Sub New() Set m_session = New NotesSession Set m_httpRequest = _ me.m_session.CreateHttpRequest() m_httpRequest.preferStrings = True m_url = BASE_URL_PORT m_class = CLASS_CUSTOMER End Sub https://github.com/eknori/nodejs-restApi
  • 18. .preferStrings = TRUE • By DEFAULT, NotesHttpRequest returns variant content as JSON UTF8 byte array. • Use the preferstrings property to return Unicode rather than UTF8 byte array.
  • 19. .ResponseCode Private Function getResponseCode() As String getResponseCode = m_httpRequest.ResponseCode End Function
  • 20. .ResponseCode Private Function getResponseCode() As String getResponseCode = m_httpRequest.ResponseCode End Function
  • 21. .ResponseCode Private Function getResponseCode() As String getResponseCode = m_httpRequest.ResponseCode End Function https://www.assono.de/blog/http-status-code-200-oder-401- fuer-login-seite-jetzt-haben-wir-die-wahl DOMINO_FORCE401_WITH_HTML_LOGIN_PAGE=1
  • 22. .getResponseHeaders Private Function getResponseHeaders() As String Dim vHeaders As Variant Dim sHeaders As String vHeaders = m_httpRequest.getResponseHeaders() ForAll h In vHeaders sHeaders = sHeaders+ CStr(h)_ + Chr(10)+Chr(13) End ForAll getResponseHeaders = sHeaders End Function Returns Variant array of the response headers. Each value contains the header field and value.
  • 23. .setHeaderFields (Authentication) Dim user As String Dim password As String user = "firstname.lastname@tld.de" password = "#dominoforever" Call httpReq.SetHeaderField("Authorization", "Basic" + _ EncodeBase64 (user + ":" + password))
  • 24. .setHeaderFields (Authentication) Function EncodeBase64 (StrIn As String) As String Dim session As New NotesSession Dim stream As NotesStream Dim db As NotesDatabase Dim doc As NotesDocument Dim body As NotesMIMEEntity Set stream = session.CreateStream Call stream.WriteText (StrIn) Set db = session.CurrentDatabase Set doc = db.CreateDocument Set body = doc.CreateMIMEEntity Call body.SetContentFromText (stream, "", ENC_NONE) Call body.EncodeContent (ENC_BASE64) EncodeBase64 = body.ContentAsText Call stream.Close Set doc = Nothing End Function http://blog.nashcom.de/nashcomblog.nsf/dx/domino v10-http-requests-from-Lotus-Script.htm Debug_NotesHTTPRequest=1
  • 25. View  JSON URL = https://server/db.nsf/view?readviewentries&outputformat=JSON { "@timestamp": "20190501T060619,12Z", "@toplevelentries": "54", "viewentry": [ { "@position": "1", "@unid": "3F9F2640C53800B2C12578090031B03F", "@noteid": "71356", "@siblings": "54", "entrydata": [ { "@columnnumber": "0", "@name": "Subject", "text": { "0": "CreateReplicaStub" } }, { "@columnnumber": "1", "@name": "$2", "textlist": { "text": [ { "0": "" https://www.ibm.com/support/knowledgecenter/e n/SSVRGU_9.0.1/basic/H_ABOUT_URL_COMMAND S_FOR_OPENING_SERVERS_DATABASES_AND_VIEW S.html
  • 26. View  JSON URL = https://server/db.nsf/view?readviewentries&outputformat=JSON&Count=10000 without count parameter, only 30 items are returned &Count=-1 to return ALL view entries
  • 27. View  JSON Sample Dim session As New NotesSession Dim httpreq As NotesHTTPRequest Dim jsonNav as NotesJSONNavigator Dim response as Variant Set httpreq = session.CreateHTTPRequest() response = httpreq.get("http://my.testapi.com/endpoint") Set jsonNav = session.CreateJSONNavigator(response) Dim jsonElem as NotesJSONElement Set jsonElem = jsonNav.getFirstElement()
  • 28. View  JSON Sample Dim session As New NotesSession Dim httpreq As NotesHTTPRequest Dim jsonNav as NotesJSONNavigator Dim response as Variant Set httpreq = session.CreateHTTPRequest() response = httpreq.get("http://my.testapi.com/endpoint") Set jsonNav = session.CreateJSONNavigator(response) Dim jsonElem as NotesJSONElement Set jsonElem = jsonNav.getFirstElement()
  • 29. View  JSON Sample Dim session As New NotesSession Dim httpreq As NotesHTTPRequest Dim jsonNav as NotesJSONNavigator Dim response as Variant Set httpreq = session.CreateHTTPRequest() response = httpreq.get("http://my.testapi.com/endpoint") Set jsonNav = session.CreateJSONNavigator(response) Dim jsonElem as NotesJSONElement Set jsonElem = jsonNav.getFirstElement()
  • 30. View  JSON Sample (10.0.1 FP2) Dim session As New NotesSession Dim httpreq As NotesHTTPRequest Dim jsonNav as NotesJSONNavigator Set httpreq = session.CreateHTTPRequest() httpreq.PreferJSONNavigator = True Set jsonNav = httpreq.get("http://my.testapi.com/endpoint") Dim jsonElem as NotesJSONElement Set jsonElem = jsonNav.getFirstElement() Technote: Limitations of NotesHTTPRequest and NotesJSONNavigator with future considerations https://www- 01.ibm.com/support/docview.wss?uid=ibm10875724
  • 34. NotesJsonArray NotesJsonElement NotesJSONArray getNextElement() getNthElement() Size https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESJSONARRAY_CLASS.html Set jsnav = s.CreateJSONNavigator(|{"numbers:" : [1,2,3,4,5]}|) Set el = jsnav.GetFirstElement() Set arr = el.value Set el = arr.GetFirstElement() MsgBox "First element: " & CStr(el.Value) value
  • 35. NotesJsonObject NotesJSONNavigator NotesJSONObject getElementByName() getFirstElement() getNextElement() getNthElement() Size https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESJSONOBJECT_CLASS.html Set jsnav = s.CreateJSONNavigator(|{"objects":{"object1": {"inner1":"innerval1"},"object2": {"inner2":"innverval2"}, "object3": {"inner3":"innverval3"}}}|) Set el = jsnav.Getfirstelement() Set obj = el.value Set el = obj.Getelementbyname("object1") Set el = el.value.GetelementByName("inner1") MsgBox "object1 = " & CStr(el.Name) & ":" & CStr(el.Value)
  • 36. NotesJsonNavigator • To create a new NotesJsonNavigator object, use createNotesJsonNavigator. Public Sub NotesJSONNavigator_1 Dim sesssion As New NotesSession Dim jsnav As NotesJSONNavigator Dim json As String Set jsnav = session.CreateJsonNavigator(json) End Sub
  • 39. NSD – DEBUG_LS_DUMP=1 • https://www-01.ibm.com/support/docview.wss?uid=swg21499034 • When enabled, an NSD dump will include a LotusScript Interpreter section, which shows a stack trace for all LotusScript that was running at the time NSD was called, for all threads in all Notes/Domino processes.
  • 40. NotesJsonNavigator • Tracked under SPR #DCONBB44T4 • Will be fixed in 10.0.1 FP2 • At least, check json string Public Sub NotesJsonNavigator_1 Dim session As New NotesSession Dim jsnav As NotesJsonNavigator Dim json As String If (json <> "") then Set jsnav = session.CreateJsonNavigator(json) End If End Sub
  • 41. NotesJSONNavigator (cont.) Public Sub NotesJsonNavigator_2 Dim session As New NotesSession Dim jsnav As NotesJSONNavigator Dim json As String json = |{"color": "black"}| 'json = |{"color1": "black","color2": "blue"}| 'json = |{"colors": {"color": "black","color": "blue"}}| 'json = |{"color": "white", "category": "value", "code": {"rgba": [255,0,0,1],"hex": "#FFF"}}| 'json = |{"numbers:" : [1,2,3,4,5]}| 'json = |[1,2,3,4,5]| If (json <> "") then Set jsnav = session.CreateJSONNavigator(json) End If End Sub
  • 42. NotesJsonNavigator ( 10.0.1 FP2 ) • SPR# DCONBB44T4 - LotusScript - Fixed a crash when using Session.createJSONNavigator. • SPR# DCONBB2KNR - LotusScript - Fixed a problem in NotesJSONNavigator package parsing when parsing empty strings. Public Sub NotesJsonNavigator_1 Dim session As New NotesSession Dim jsnav As NotesJsonNavigator Dim json As String Set jsnav = session.CreateJsonNavigator(json) End Sub
  • 43. NotesJSONNavigator (cont.) • Issue with special characters in JSON • Tracked under SPR# VRARB8WkPB. • Will be fixed in an upcoming release ( not FP1 ) Public Sub NotesJsonNavigator_3 Dim s As New NotesSession Dim jsnav As NotesJSONNavigator Dim json As String json = |{"device":"Apple iPad 2 with Wi-Fi - 16GB"}| Set jsnav = s.CreateJSONNavigator(json) json = |{"device":"Apple® iPad® 2 with Wi-Fi - 16GB"}| Set jsnav = s.CreateJSONNavigator(json) End Sub
  • 46. NotesJSONNavigator (cont.) • Issue with CRLF in JSON • Tracked under SPR# ASHEB95LFR. • Will be fixed in an upcoming release Const colors2 = |{ "colors": [ { "color": "black", "category": "hue", "type": "primary", "code": { "rgba": [255,255,255,1], "hex": "#000" } }, { "color": "white", "category": "value", "code": { "rgba": [0,0,0,1], "hex": "#FFF" } } ] }|
  • 47. NotesJSONNavigator (cont.) • Workaround – remove CRLF Public Function removeCRLF(json As String) As String removeCRLF = Replace(Replace(json, Chr(13), ""),Chr(10),"") End Function Public Sub NotesJsonNavigator_1 Dim session As New NotesSession Dim jsnav As NotesJSONNavigator Dim json As String json = removeCRLF(colors2) Set jsnav = session.CreateJSONNavigator(json) End Sub
  • 48. NotesJSONNavigator 10.0.1 FP2 • SPR# ASHEB95LFR - LotusScript - Fixed a problem where NotesJSONNavigator was unable to navigate a string which contained new lines and carriage returns.
  • 49. NotesJSONNavigator (cont.) • Issue with JSON larger than 64k • Tracked under SPR# DCONB8VMAV • Will be fixed in an upcoming release public Sub streamBigJson() Dim session As New NotesSession Dim jsnav As NotesJSONNavigator Dim stream As NotesStream Dim fileName As String fileName = "c:Tempbig.json“ Set stream = session.CreateStream stream.Position = 0 Set jsnav = session.CreateJSONNavigator(stream.ReadText) Call stream.Close End Sub
  • 50. NotesJSONNavigator 10.0.1 FP2 • SPR# DCONB8VMAV - LotusScript - Fixed a problem where NotesJSONNavigator was unable to parse json content that was greater than 64K.
  • 51. .getNthElement(index) Public Sub jsonNavigatorGetNthElement Dim s As New NotesSession Dim jsnav As NotesJSONNavigator Dim json As String json = |[1,2,3,4,5]| Set jsnav = s.CreateJSONNavigator(json) Dim el As NotesJsonElement Set el = jsnav.GetNthElement(4) MsgBox "Nth element: " & el.Value End Sub
  • 52. .getElementByPointer() • Retrieves a NotesJSONElement using JSON Pointer syntax* to identify the element. Public Sub jsonNavigatorGetElementByPointer() Dim session As New NotesSession Dim jsnav As NotesJSONNavigator Dim el As NotesJSONElement Set jsnav = session.CreateJSONNavigator(_ |{"color": "white", "cat":"ls","code": {"rgb": [255,0,0,1],"hex": "#FFF"}}|) Set el = jsnav.GetelementByPointer("/cat") MsgBox "cat: " + el.Value' Set el = jsnav. GetelementByPointer("/code/hex") MsgBox "hex: " + el.Value Set el = jsnav. GetelementByPointer("/code/rgb/3") MsgBox "code/rgb/3: " + el.Value End Sub * https://www.baeldung.com/json-pointer
  • 53. NotesJSONArray.getNthElement „We have documented this bug under SPR #SKSWB89MGH and are currently working on the solution.“ HCL Support. Public Sub jsonArrayNthElement() Dim s As New NotesSession Dim jsnav As NotesJSONNavigator Dim el As NotesJSONElement Dim arr As NotesJSONArray Set jsnav = s.CreateJSONNavigator(|{"numbers:" : [1,2,3,4,5]}|) Set el = jsnav.GetFirstElement() Set arr = el.value MsgBox "Nth element: " & CStr(arr.GetNthElement(4).value) End Sub
  • 54. NotesJSONArray.getNthElement() • SPR #SKSWB89MGH - Fixed an issue where LotusScript function NotesJsonArray.getNthElement(index) always returned the first element. (FP1)
  • 55. NotesJSONArray.Size() Public Sub jsonArraySize() Dim s As New NotesSession Dim jsnav As NotesJSONNavigator Dim el As NotesJsonElement Dim arr As NotesJsonArray Set jsnav = s.CreateJSONNavigator(|{"numbers:" : [1,2,3,4,5]}|) Set el = jsnav.GetFirstElement() Set arr = el.value MsgBox "Size: " & CStr(arr.Size()) End Sub
  • 58. db.CreateDominoQuery() te amgr run "ec11.nsf" 'dql.java' JVM: Java Virtual Machine initialized. AMgr: Start executing agent 'dql.java' in 'ec11.nsf' Agent Manager: Agent printing: Version: Release 10.0.1 November 29, 2018 Agent Manager: Agent printing: Db Title: singultus's Directory Agent Manager: Agent error: Exception in thread "AgentThread: JavaAgent" Agent Manager: Agent error: java.lang.UnsatisfiedLinkError: lotus/domino/local/Database.NcreateDQuery()J Agent Manager: Agent error: at lotus.domino.local.Database.createDominoQuery(Unknown Source) Agent Manager: Agent error: at JavaAgent.NotesMain(JavaAgent.java:19) Agent Manager: Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source) Agent Manager: Agent error: at lotus.domino.NotesThread.run(Unknown Source) AMgr: Agent 'dql.java' in 'ec11.nsf' completed execution 10.0.1 FP1 SPR# JCORB93PEY Fixed an issue with DQL where calling Database.createDominoQuery on Linux resulted in Unsatisfied Link Error.
  • 59. Getter / Setter in LS & Java Tracked under SPR# JCORB7ENX8
  • 60. Getter / Setter in LS & Java (Workaround) • Put the following entries into the server notes.ini. sh con QUERY* [0C38:0009-0ADC] QUERY_MAX_DOCS_SCANNED=13000000 [0C38:0009-0ADC] QUERY_MAX_VIEW_ENTRIES_SCANNED=13000000 • The notes.ini settings are never used for property values in the LS classes. However, the user can easily get the value from a call to Session.getEnvironmentValue. ( John Curtis ) • getter / setter not showing DEFAULT = SPR #JCUSB8HQ36
  • 61. Getter / Setter in LS 10.0.1 FP2 • SPR# JCORB7ENX8 - DQL: Fixed a problem where DominoQuery class allowed for only a small number of Documents or View Entries to be scanned. Now MaxScanDocs and MaxScanEntries properties are Longs, allowing for many more
  • 62.
  • 63. DesignHarvest • Programmatically update the DQL Design Catalog • NSFDesignHarvest is undocumented and maybe changed. Use at own risk. Public Const UPDATE_DESIGN_CATALOG = 0 Public Const ADD_TO_DESIGN_CATALOG = 1 Declare Function NSFDesignHarvest (ByVal hDb As Long, ByVal flag As Long) As Integer
  • 64. DesignHarvest – LS2CAPI ‘DECLARATIONS Public Const UPDATE_DESIGN_CATALOG = 0 Public Const ADD_TO_DESIGN_CATALOG = 1 Const NNOTES ="nnotes.dll" Const LIBNOTES ="libnotes.so" Declare Public Function WIN_NSFDbOpen Lib NNOTES Alias "NSFDbOpen" _ (ByVal dbName As String, hDb As Long) As Integer Declare Public Function LIN_NSFDbOpen Lib LIBNOTES Alias "NSFDbOpen" _ (ByVal dbName As String, hDb As Long) As Integer Declare Public Function WIN_NSFDbClose Lib NNOTES Alias "NSFDbClose" _ (ByVal hDb As Long) As Integer Declare Public Function LIN_NSFDbClose Lib LIBNOTES Alias "NSFDbClose" _ (ByVal hDb As Long) As Integer Declare Public Function WIN_NSFDesignHarvest Lib NNOTES Alias "NSFDesignHarvest" _ (ByVal hDb As Long, ByVal flag As Long) As Integer Declare Public Function LIN_NSFDesignHarvest Lib LIBNOTES Alias "NSFDesignHarvest" _ (ByVal hDb As Long, ByVal flag As Long) As Integer
  • 65. DesignHarvest – LS2CAPI (cont.) Function NSFDBClose (hDb As Long) If isDefined("WINDOWS") Then NSFDbClose = WIN_NSFDbClose(hDb) ElseIf isDefined("LINUX") Then NSFDbClose = LIN_NSFDbClose(hDb) End If End Function Function NSFDbOpen( db As String, hDB As Long) As Integer If isDefined("WINDOWS") Then NSFDbOpen = WIN_NSFDbOpen(db,hDb) ElseIf isDefined("LINUX") Then NSFDbOpen = LIN_NSFDbOpen(db,hDb) End If End Function Function NSFDesignHarvest (hDb As Long, flag As long) As Integer If isDefined("WINDOWS") Then NSFDesignHarvest = WIN_NSFDesignHarvest(hDb, flag) ElseIf isDefined("LINUX") Then NSFDesignHarvest = LIN_NSFDesignHarvest(hDb, flag) End If End Function
  • 66. DesignHarvest – LS2CAPI (cont.) Public Function catalogDesign(sDb As String, flag As Long) As Integer Dim hDb As Long Dim rc As Integer If flag > 1 Then flag = 1 If flag < 0 Then flag = 0 rc = NSFDbOpen(sDb, hDb) If rc = 0 Then rc = NSFDesignHarvest(hDb, flag) rc = NSFDbClose(hDb) End If catalogDesign = rc End Function
  • 68. DQL Explorer • Everything runs in a single .nsf • Luis Guirigay and Andrew Manby introduce DQL Explorer at Think 2019: https://youtu.be/OMjSND5cPsE • Scott Good provides a demo that includes some configurations aspects not shown in the stage demo: https://youtu.be/Cfw_6Wvk8c8 • The Web application relies on Domino Access Services (DAS) being enabled on the dqlexplorer.nsf (default), but that means there is a need to be enable DAS on your server.
  • 72. DQL Explorer • https://github.com/icstechsales/dql-explorer • ANYONE can contribute • Bug fixes • Enhancements • Documentation • Forking – copying and changing • EVERYONE benefits • We NEED to show the power of Domino • Support concerns, defects are a community thing
  • 74. NotesViewEntryCollection https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESVIEWENTRYCOLLECTION_9327.html NotesViewEntryCollection … intersect(Doc as Variant, maintainOrder as boolean) substract(Doc as Variant, maintainOrder as boolean) … maintainOrder (Optional) Boolean. 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 ResortView. intersect = Removes from a view entry collection any entries whose associated documents are not also contained in a second collection. substract = Removes from a view entry collection any entries whose associated documents are also contained in a second collection.
  • 77. NotesIdVault Wrapper class • https://openntf.org/XSnippets.nsf/snippet.xsp?id=programmatic- access-to-idvault-incl.-new-v10-methods- • The code allows programmatic access to the IDVAULT. It uses the NotesIdVault class ( new with 901 FP9 ) and also extends the class to extract an ID from the vault without knowing its password. • The code also includes new features that come with V10 to archive, revert archived Ids and to delete Ids that have been archived to reinforce sync.
  • 78. .archiveIdFile ( sample code ) Public Sub archiveIdFile Call me.resetError() On Error GoTo catch If (me.m_vault_doc Is Nothing) Then Call me.getDocumentByKey(me.UserName) If Not (me.m_vault_doc Is Nothing) Then Dim idOwner As String idOwner = TILDE + me.m_vault_doc.IdOwner(0) me.m_vault_doc.idOwner = idOwner Call me.m_vault_doc.Save(True, False) Call me.m_vault_view.Refresh() Else Error ERR_DOC_ARCHIVE,_ ERR_DOC_NOT_FOUND_OR_ARCHIVED_MSG + OPERATION_CANCELLED_MSG End If End If
  • 79. NotesUserId NotesUserId UserName getEncryptionKeys getUserName https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_NOTESUSERID_CLASS.html The NotesUserID class represents the Notes ID file or a Notes ID when it resides within the Domino IDVault. This object is primarily used to obtain the names of the private encryption keys which are available for use within the UserID object. NotesIdVault Getuserid()
  • 80. JavaScript • @UserSecretKeys() Javascript function - This convenience function is used to obtain secret keys from a user’s ID file. • @UserId() Javascript function - This function is to return the UserID object stored for a given user in the ID Vault.
  • 81. Recommended reading • Limitations of NotesHTTPRequest and NotesJSONNavigator with future considerations - https://www- 01.ibm.com/support/docview.wss?uid=ibm10875724 • IBM Notes®/Domino® 10.0.1 Fix Pack 2 Release Notice May 28, 2019 - http://www- 10.lotus.com/ldd/fixlist.nsf/da28c739cc5024e9852583da006659a7/3501674bb1c 8f1e0852584080063188b?OpenDocument • IBM Notes®/Domino® 10.0.1 Fix Pack 1 Release Notice March 30, 2019 - http://www- 10.lotus.com/ldd/fixlist.nsf/WhatsNew/b1df4042fb8a980c852583b40067a7be?O penDocument • Upgrading to IBM Notes and Domino 10.x - https://www- 01.ibm.com/support/docview.wss?uid=ibm10881219&aid=1
  • 82. Recommended reading • Daniel Nashed, AppDevPack Security Setup explained - http://blog.nashcom.de/nashcomblog.nsf/dx/appdevpack-security-setup- explained.htm • Paul Withers, Domino App Dev Pack: Understanding Scopes - https://www.intec.co.uk/domino-app-dev-pack-understanding-scopes/ • Oliver Busse, Domino, Proton, IAM, Oauth Part 1-4 - https://oliverbusse.notesx.net/hp.nsf/blogpost.xsp?documentId=2FEA • Heiko Voigt, Blog - https://www.sit.de/heikos-blog • New features for developers in IBM Domino and Domino Designer 10.0.1 - https://www-01.ibm.com/support/docview.wss?uid=ibm10737063
  • 83.
  • 84.
  • 85. About: me • Lotus Notes und Domino seit 1993 • Entwickler / Administrator • IBM Champion 2010 – 2019 • OpenNTF Contributor • Let‘s Encrypt 4 Domino ( LE4D ) • Entwickler bei midpoints GmbH

Notas del editor

  1. SPR# DCONB8VMAV - LotusScript - Fixed a problem where NotesJSONNavigator was unable to parse json content that was greater than 64K.