SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
OliverBusse
We4ITGmbH
aveedo.com
@zeromancer1972
oliverbusse.com
2015‑2018
Node.js&
DominoQueryLanguage
DNUGFachgruppentagDevelopment
Essen,20.Februar2019
Agenda
WasistNode.js?
Node.jsinDomino
Sinn&Zweck,Hürden
MeineersteNodeAppmitDomino
DominoQueryLanguage(DQL)
Baustellen
Low‑Code
Fazit
Community
2
WasistNode.js?
Server‑SideJavascriptPlattform
BasierendaufGooglesJavascriptV8Engine
Non‑blockingThread‑>skalierbar
verfügbarfüralleSysteme(Windows,Linux,Mac,ARM,...)
Asynchron
PackageManagement
weitverbreitet
3
Node.jsinDomino
Domino10.0.1
DominoAppDevPack(Linux)
PROTONTask
gRPC(https://grpc.io/about/)
IAM(IdentityAccessManagement)‑Service&Client(preview)
keinBestandteilvonDDE!
4
Node.jsinDomino‑Schema
5
ProtonSetup(1)
ProtonAddinaufServerkopieren
cd /opt/ibm/domino/notes/latest/linux
sudo tar -xvf /tmp/proton-addin-<version>.tgz
ggf.CertifierundKeyringerzeugen(fürIAM)
notes.iniEinträgeeinfügen
# listen on all ip addresses, otherwise define machine's ip
PROTON_LISTEN_ADDRESS=0.0.0.0
# listen on port - free to choose
PROTON_LISTEN_PORT=3002
# use SSL
PROTON_SSL=1
# client certificate authorization, default: anonymous
PROTON_AUTHENTICATION=client_cert
# keyfile, can be the keyfile of SSL enabled HTTP task
PROTON_KEYFILE=proton.kyr
6
ProtonSetup(2)
Taskautomatischmitstarten
ServerTasks=Replica,Router,Update,AMgr,
Adminp,Sched,CalConn,RnRMgr,HTTP,proton
odermanuell
load proton
7
Sinn&Zweck,Hürden
Ergänztbzw.ersetztDAS
EntwicklungvonWeb‑ApplikationenjenseitsXPagesmöglich
Cloud‑ready
DominoistdamitoffenfürFullstackWebDeveloper
Nachwuchs?
Setupsehrkomplex(IAM,DominoalsOAuthProvider)
Unfertig(StandFeb.2019)
esfehlenAssistenten/ScriptsfürAdmins&Entwickler
Dokumentationvorhanden,jedoch"Luftnachoben"
8
MeineersteNodeAppmitDomino
Node.js
npm
domino‑dbPackage
Protonup&running
Editor
9
demo1
DominoQueryLanguage(DQL)
Datenbankenvorbereiten‑>Designcatalog
load updall <database> -e (enable)
load updall <database> -d (refresh)
UPDATE_DESIGN_CATALOG=1
VefügbarfürNode.js,Java,Lotusscript&Konsole*
Java&LS:gleicherServeroderlokaleReplik(10erClient),allerdingsnichtgemischt
Vereinfacht:kombiniertVorteilevonViewIndex&FTSearch
Sehrschnell
*)zumTestengut,liefertaberkeineverwertbareErgebnisse
11
DQL‑Sprachunterschiede
Node.js
const docs = await database.bulkReadDocuments({
query: "form = 'person' and lastname in ('Smith', 'Douglas')",
itemNames: ["lastname", "firstname"]
});
Java
DominoQuery dq = database.createDominoQuery();
DocumentCollection col =
dq.execute("form = 'person' and lastname in ('Smith', 'Douglas')");
Lotusscript
Dim dq As NOTESDOMINOQUERY
Set dq = database.CreateDominoQuery
Dim col As NotesDocumentCollection
Set col = _
dq.Execute(|form = 'person' and lastname in ('Smith', 'Douglas')|)
12
DQL‑Suchoptionen
SuchenachEinzelwerten
form = 'person'
SuchenachMehrfachwerten
lastname in ('Smith', 'Doe')
SuchenachDatumundDatumsbereichen
@dt('2019-02-20') > lastModified > @dt('2019-01-01')
SuchenachWertenundWertebereichen
45 > age > 19
Operatoren
= | > | >= | < | <= | in [all]
and | or | and not | or not
13
DQL‑Strategien
Nutzender"Explain"Funktion
testetnur,fürtnichtsaus
Query Processed:
[form = 'post' and postTags in ('dnug')]
0. AND (childct 2) (totals when complete:)
Prep 0.0 msecs, Exec 12.30 msecs, ScannedDocs 5,
Entries 0, FoundDocs 5
1.form = 'post' NSF document search estimated cost = 100
Prep 2.274 msecs, Exec 0.758 msecs, ScannedDocs 5
Entries 0, FoundDocs 5
1. IN (childct 1) (totals when complete:)
Prep 0.0 msecs, Exec 11.259 msecs, ScannedDocs 802,
Entries 0, FoundDocs 5
2.postTags = 'dnug' NSF document search
estimated cost = 100
Prep 0.201 msecs, Exec 11.180 msecs,
ScannedDocs 802, Entries 0, FoundDocs 5
14
demo2&demo3
Baustellen(Feb2019)
keinRichtext/MIMEundAttachments(Node.js)
wederlesendnochschreibend
Felder,dieimResultsetenthaltenseinsollen,müssen
definiertwerden(Node.js)
GraphQLStandardundgrundsätzlichgut,aberes
fehlteineOptionfür"alleFelder"
Dokumentation(IAM,OAuth)
teilweiseverwirrendundnichteindeutig
ProtonTaskschreibtnichtsindielog.nsf
durchnotes.ini‑SettingsaberaufderKonsole"verbose"zuschalten
ProtonbishernurfürLinux
nochkeinTerminfürWindowsbekannt
16
Low‑Code
BasisfürallesrundumIoT
Think2019DemosvonLuisGuirigaymitAlexasindmitNode‑REDgebaut
visuellesProgrammierenmitJavascript(nichtNode.js!)
läuftselbstaufeinemRaspberryPi:‑)
PluginsohneEnde
DominoV10&DQL
IBMWatsonServices
AmazonAlexa
17
Node‑RED
Fazit
Node.js/ProtonistmomentaneinPoC
AufDQLhabenwirlangegewartet
Low‑CodemitNode‑RED
19
Community
Hilfegibtesaufhttps://openntf.slack.comim
dominonodejsChannel
20
Quellen
WebinarDQL&FAQ:https://www.ibm.com/blogs/collaboration‑solutions/2019/02/04/domino‑
query‑language‑faq
DominoAppDevPackDocumentation:
https://doc.cwpcollaboration.com/appdevpack/docs/en/homepage.html
QuickOverview:https://prominic.net/2018/07/02/node‑js‑domino‑v10‑essentials
Node‑RED:https://nodered.org/
Node‑REDDominoV10Nodes:https://github.com/stefanopog/node‑red‑contrib‑dominodb
Vortrags‑Repository:https://gitlab.com/obusse/dnug_fachgruppe_dev
21
DNUG Development Day 2019
DNUG Development Day 2019

Weitere ähnliche Inhalte

Ähnlich wie DNUG Development Day 2019

Portalentwicklung auf Basis von DotNetNuke
Portalentwicklung auf Basis von DotNetNukePortalentwicklung auf Basis von DotNetNuke
Portalentwicklung auf Basis von DotNetNukeguest6f3e4c
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzKai Donato
 
Einführung in .NET
Einführung in .NETEinführung in .NET
Einführung in .NETAndreas Heil
 
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...BOSTON Server & Storage Solutions GmbH
 
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )grosser
 
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )guest9606ac
 
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreEntity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreNETUserGroupBern
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalabthp4
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
CeBit 2001 Messebericht
CeBit 2001 MesseberichtCeBit 2001 Messebericht
CeBit 2001 MesseberichtThomas Wöhlke
 
Kooperative Angebote von GBV und GDZ im Bereich Digitalisierung
Kooperative Angebote von GBV und GDZ im Bereich DigitalisierungKooperative Angebote von GBV und GDZ im Bereich Digitalisierung
Kooperative Angebote von GBV und GDZ im Bereich DigitalisierungRalf Stockmann
 
Domino Security Present and Future ConnectED Review - ICS.UG 2016
Domino Security Present and Future ConnectED Review - ICS.UG 2016Domino Security Present and Future ConnectED Review - ICS.UG 2016
Domino Security Present and Future ConnectED Review - ICS.UG 2016ICS User Group
 
Good by Server... Hello Client!
Good by Server... Hello Client!Good by Server... Hello Client!
Good by Server... Hello Client!Sandro Sonntag
 

Ähnlich wie DNUG Development Day 2019 (20)

Portalentwicklung auf Basis von DotNetNuke
Portalentwicklung auf Basis von DotNetNukePortalentwicklung auf Basis von DotNetNuke
Portalentwicklung auf Basis von DotNetNuke
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
 
Einführung in .NET
Einführung in .NETEinführung in .NET
Einführung in .NET
 
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
Fische im Rechenzentrum – Was genau ist eigentlich dieses Redfish und wozu br...
 
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
 
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
 
SuperSUSE – die Lösung für dynamisch wachsenden Speicher
SuperSUSE – die Lösung für dynamisch wachsenden SpeicherSuperSUSE – die Lösung für dynamisch wachsenden Speicher
SuperSUSE – die Lösung für dynamisch wachsenden Speicher
 
profil_2017
profil_2017profil_2017
profil_2017
 
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreEntity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalab
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Webpack
WebpackWebpack
Webpack
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
CeBit 2001 Messebericht
CeBit 2001 MesseberichtCeBit 2001 Messebericht
CeBit 2001 Messebericht
 
Kooperative Angebote von GBV und GDZ im Bereich Digitalisierung
Kooperative Angebote von GBV und GDZ im Bereich DigitalisierungKooperative Angebote von GBV und GDZ im Bereich Digitalisierung
Kooperative Angebote von GBV und GDZ im Bereich Digitalisierung
 
Frontend2017
Frontend2017Frontend2017
Frontend2017
 
Domino Security Present and Future ConnectED Review - ICS.UG 2016
Domino Security Present and Future ConnectED Review - ICS.UG 2016Domino Security Present and Future ConnectED Review - ICS.UG 2016
Domino Security Present and Future ConnectED Review - ICS.UG 2016
 
GWT
GWTGWT
GWT
 
Good by Server... Hello Client!
Good by Server... Hello Client!Good by Server... Hello Client!
Good by Server... Hello Client!
 

Mehr von Oliver Busse

HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?Oliver Busse
 
Outlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-inOutlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-inOliver Busse
 
The NERD stuff - opening for Domino to the modern web developer
The NERD stuff - opening for Domino to the modern web developerThe NERD stuff - opening for Domino to the modern web developer
The NERD stuff - opening for Domino to the modern web developerOliver Busse
 
DNUG44 Watson Workspace
DNUG44 Watson WorkspaceDNUG44 Watson Workspace
DNUG44 Watson WorkspaceOliver Busse
 
Paradiesisch - OpenNTF
Paradiesisch - OpenNTFParadiesisch - OpenNTF
Paradiesisch - OpenNTFOliver Busse
 
ISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM BluemixISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM BluemixOliver Busse
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino apiOliver Busse
 
XPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont'sXPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont'sOliver Busse
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
SUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino APISUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino APIOliver Busse
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOliver Busse
 
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarOliver Busse
 
Out of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix developmentOut of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix developmentOliver Busse
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Oliver Busse
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionOliver Busse
 
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...Oliver Busse
 

Mehr von Oliver Busse (20)

HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?HCL Domino Volt - der NSF Killer?
HCL Domino Volt - der NSF Killer?
 
Outlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-inOutlook becomes a Team Player - with a clever add-in
Outlook becomes a Team Player - with a clever add-in
 
The NERD stuff - opening for Domino to the modern web developer
The NERD stuff - opening for Domino to the modern web developerThe NERD stuff - opening for Domino to the modern web developer
The NERD stuff - opening for Domino to the modern web developer
 
DNUG44 Watson Workspace
DNUG44 Watson WorkspaceDNUG44 Watson Workspace
DNUG44 Watson Workspace
 
Paradiesisch - OpenNTF
Paradiesisch - OpenNTFParadiesisch - OpenNTF
Paradiesisch - OpenNTF
 
Find your data
Find your dataFind your data
Find your data
 
ISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM BluemixISBG 2016 - XPages on IBM Bluemix
ISBG 2016 - XPages on IBM Bluemix
 
GraphDb in XPages
GraphDb in XPagesGraphDb in XPages
GraphDb in XPages
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino api
 
XPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont'sXPages on Bluemix - the Do's and Dont's
XPages on Bluemix - the Do's and Dont's
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
SUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino APISUTOL 2015 - Utilizing the OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino API
 
Out of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix DevelopmentOut of the Blue - the Workflow in Bluemix Development
Out of the Blue - the Workflow in Bluemix Development
 
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio Webinar
 
Transformations
TransformationsTransformations
Transformations
 
Out of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix developmentOut of the Blue: Getting started with IBM Bluemix development
Out of the Blue: Getting started with IBM Bluemix development
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsession
 
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
DNUG 38: "Einen Rahmen schaffen: Vorteile durch Frameworks in der Domino-Webe...
 

DNUG Development Day 2019