SlideShare a Scribd company logo
OPENNTF DOMINO
API
Also Known As ODA
MISSION
Make you more productive
Modernize, Standardize, Improve, Extend
Solve all your problems
Remove all boundaries
TEAM
First commit by Tim Tripcony #codefortim
Multiple Companies
Several IBM Champions
Many consumers
WHY WE STARTED
DateTime objects (Nathan T Freeman’s initial comment)
Out-of-date classes (Vectors)
Out-of-date iteration rules (while loops)
Lack of in-context documentation
Unhelpful parameter names
Avoid recycling
Avoid requirement to handle NotesExceptions
Inbuilt error logging (XPages OpenLog Logger)
Auto-boxing of field data types
Use from SSJS or Java
WHERE WE WENT NEXT
Transactional Processing
Only save if all related documents can be
updated
Sync Helper
Push fields and document-centric formulas to
related documents
MIME Bean
Save Java objects in any field and auto-
handle field limits
WHERE WE WENT NEXT
Event Listeners
Trigger code based on events, e.g. document
save
Email Helper
Easy email creation
Document Scanner
Index document fields
Index Database
Index a whole server
WHERE WE WENT NEXT
Document Sorter
Sort document collections on the fly
Api Path / MetaReplica ID / Mertaversal ID
Serialize database / document locations for
rapid access
At Formula Parser
Better performance than session.evaluate()
WHERE WE WENT NEXT
Better Name Handling
Improved Recycling Performance
Tinkerpop Graph Implementation
Graphs database structure stored in Domino
Framed graphs for quicker setup
Built-in graph classes – Likes, Rates, Task
Proxy Vertexes for e.g. Person documents
WHERE WE WENT NEXT
Multi-threaded processing
Enums throughout
E.g. FTSearch(String, int, FTSortOption,
Set<FTSearchOption>)
New Picker DataProviders
MapPicker, CollectionPicker, NamePicker
XOTS
Scheduled tasklets
Code in NSF, reuse existing XPages code
NSF Data handling via Java
CROSSWORLDS
Native Domino access from WAS Liberty
Potential to be used from other J2EE servers
Code using your preferred web application
language
Access Domino data using ODA APIs
Develop using Java 7 / 8
See
http://www.slideshare.net/DanieleVistalli/introduci
ng-crossworlds-for-ibm-domino
XPAGES IMPLEMENTATION
Install OSGi plugin to server
Install OSGi plugin to Domino Designer
Enable org.openntf.domino.xsp.XspLibrary in Xsp
Properties
XSP PROPERTIES
org.openntf.domino=
godmode: session and database global
objects replaced by org.openntf.domino
versions
marcel: makes the API MIME-friendly
raid: run in debug mode
khan: implement fixes, like appendItemValue()
nsa: create report of applications, modules,
sessions (experimental)
XSP PROPERTIES
xsp.openlog.filepath=openLog.nsf
xsp.openlog.displayError=true
xsp.openlog.genericErrorMessage=Sorry, we hit an
error
xsp.openlog.email=myEmail@myCompany.com
xsp.openlog.debugLevel=2
xsp.openlog.suppressEventStack=false
xsp.openlog.expireDate=30
STRUCTURE
domino – parent project
externals – 3rd party code included
core – org.openntf.domino, main core Domino
code
formula – at formula parser code
xsp – XPages-related code
STRUCTURE – EXTERNALS
guava – Google Guava
javassist – for Java byte-code manipulation
javolution – for high-performance Java and data
structs
jsr305 – annotations for software defect detection
rxjava – reactive extensions for the JVM
tinkerpop – JDBC for graph database
STRUCTURE – CORE
org.openntf.arpa – Name handling
org.openntf.calendars – calendar ranges / multi-
value calendar objects
org.openntf.domino – core classes
org.openntf.domino.annotations – @Annotations
org.openntf.domino.big /
org.openntf.domino.big.impl – prototypes and
multi-NSF solutions
STRUCTURE – CORE
org.openntf.domino.design /
org.openntf.domino.design.impl – new design
note classes
org.openntf.domino.email – email handling
org.openntf.domino.events – classes for event
listeners
org.openntf.domino.exceptions – new Exception
classes
STRUCTURE – CORE
org.openntf.domino.ext – extensions to core
domino classes
org.openntf.domino.graph – deprecated, first-
generation graph database classes
org.openntf.domino.graph2 – graph interface
classes
org.openntf.domino.graph2.annotations –
@Annotations for framed graphs
STRUCTURE – CORE
org.openntf.domino.graph2.builtin – interface
classes for built-in framed graphs
org.openntf.domino.graph2.builtin.social –
implementation classes for social built-in framed
graphs
org.openntf.domino.graph2.workflow – interface
classes for built-in workflow framed graphs
org.openntf.domino.graph2.workflow.impl –
implementation classes for workflow built framed
graphs
STRUCTURE – CORE
org.openntf.domino.graph2.exception –
exception classes for graph implementation
org.openntf.domino.graph2.impl – core graph
implementation classes
org.openntf.domino.helpers – miscellaneous
helper classes
org.openntf.domino.i18n – internationalization
classes
STRUCTURE – CORE
org.openntf.domino.impl – implementations of
core domino classes and extensions
org.openntf.domino.iterators – iterator classes to
avoid Domino-specific iterations
org.openntf.domino.junit – junit testing classes
org.openntf.domino.nsfdata – interface classes for
Domino data-handling
org.openntf.domino.nsfdata.impldxl – classes for
Domino data-handling via DXL
STRUCTURE – CORE
org.openntf.domino.nsfdata.impldxl.item – classes
for handling of Domino field-level data via DXL
org.openntf.domino.nsfdata.structs – classes for
handling of C structures
org.openntf.domino.nsfdata.structs.cd – classes for
handling of Composite Data
org.openntf.domino.schema – interfaces for
database schema definition. Schema functionality
is a work in progress
STRUCTURE – CORE
org.openntf.domino.schema.exceptions –
exception classes for schemas
org.openntf.domino.schema.impl –
implementations of schema classes
org.openntf.domino.schema.types – classes for field
/ data type schemas
org.openntf.domino.session – Session factory classes
org.openntf.domino.thread – multi-thread handling
STRUCTURE – CORE
org.openntf.domino.transactions – classes for
transactional processing
org.openntf.domino.types – various generic classes
org.openntf.domino.utils – various utility classes
org.openntf.domino.utils.xml – various XML-
processing classes
org.openntf.domino.xots – XOTS-related classes
org.openntf.domino.xots.events – XOTS event class
STRUCTURE – XSP
org.openntf.domino.xsp – generic classes
org.openntf.domino.xsp.adapter – factories and
other extensions
org.openntf.domino.xsp.components – adaptive
components
org.openntf.domino.xsp.config – xsp-related
config
org.openntf.domino.xsp.formula – SSJS access to
formulas
STRUCTURE – XSP
org.openntf.domino.xsp.helpers – various helper
classes
org.openntf.domino.xsp.junit – XPages junit runner
org.openntf.domino.xsp.junit.test – XPages junit
tests
org.openntf.domino.xsp.model – model-level
classes
org.openntf.domino.xsp.msg – message-handling
classes
STRUCTURE – XSP
org.openntf.domino.xsp.readers – LogReader class
org.openntf.domino.xsp.script – SSJS classes
org.openntf.domino.xsp.session – XPages Session
factory classes
org.openntf.domino.xsp.xots – XPages XOTS
classes
REFERENCES
https://github.com/OpenNTF/org.openntf.domino

More Related Content

PDF
DanNotes 2013: OpenNTF Domino API
PPTX
SUTOL 2015 - Utilizing the OpenNTF Domino API
PPTX
Utilizing the OpenNTF Domino API
PDF
Engage 2014 OpenNTF Domino API Slides
PDF
Fluentd v0.14 Plugin API Details
PPTX
Go from a PHP Perspective
PDF
Deploying WO on Windows
PPTX
Robotframework
DanNotes 2013: OpenNTF Domino API
SUTOL 2015 - Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Engage 2014 OpenNTF Domino API Slides
Fluentd v0.14 Plugin API Details
Go from a PHP Perspective
Deploying WO on Windows
Robotframework

What's hot (20)

PDF
OpenNTF Domino API (ODA): Super-Charging Domino Development
PDF
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
PPTX
G rpc lection1
PDF
XNA L01–Introduction
PDF
A Taste of Pharo 7.0
PPTX
Exploring Java Heap Dumps (Oracle Code One 2018)
PPTX
Utilizing the open ntf domino api
PPTX
Professional Help for PowerShell Modules
PDF
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
PDF
Functional Programming for Busy Object Oriented Programmers
PDF
Plugin-based software design with Ruby and RubyGems
PPTX
Sql killedserver
PDF
C++ Windows Forms L01 - Intro
PPTX
PowerShell - Be A Cool Blue Kid
PDF
The Parenscript Common Lisp to JavaScript compiler
KEY
PyCon AU 2012 - Debugging Live Python Web Applications
PDF
Get to Know AtoM's Codebase
PPTX
Build, logging, and unit test tools
PDF
Javascript TDD with Jasmine, Karma, and Gulp
PPTX
Taming the resource tiger
OpenNTF Domino API (ODA): Super-Charging Domino Development
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
G rpc lection1
XNA L01–Introduction
A Taste of Pharo 7.0
Exploring Java Heap Dumps (Oracle Code One 2018)
Utilizing the open ntf domino api
Professional Help for PowerShell Modules
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
Functional Programming for Busy Object Oriented Programmers
Plugin-based software design with Ruby and RubyGems
Sql killedserver
C++ Windows Forms L01 - Intro
PowerShell - Be A Cool Blue Kid
The Parenscript Common Lisp to JavaScript compiler
PyCon AU 2012 - Debugging Live Python Web Applications
Get to Know AtoM's Codebase
Build, logging, and unit test tools
Javascript TDD with Jasmine, Karma, and Gulp
Taming the resource tiger
Ad

Similar to OpenNTF Domino API - Overview Introduction (20)

PDF
Getting Started with the OpenNTF Domino API
PDF
JavaScript Miller Columns
PDF
Google App Engine for Java v0.0.2
PPTX
epicenter2010 Open Xml
PPTX
TypeScript - Silver Bullet for the Full-stack Developers
PPT
RomaFramework Tutorial Basics
PPTX
.NET 4 Demystified - Sandeep Joshi
PPTX
java basic for begginers
PPT
Building scalable and language-independent Java services using Apache Thrift ...
PPT
Slot02 concurrency1
PPS
Simplify your professional web development with symfony
PDF
Flink Forward Berlin 2017: Zohar Mizrahi - Python Streaming API
PPTX
Lotus Domino 8.5
PPTX
Terraform modules restructured
PPTX
Terraform Modules Restructured
PPT
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
PPT
Using and Extending Memory Analyzer into Uncharted Waters
PPTX
Java history, versions, types of errors and exception, quiz
PPT
Building scalable and language independent java services using apache thrift
Getting Started with the OpenNTF Domino API
JavaScript Miller Columns
Google App Engine for Java v0.0.2
epicenter2010 Open Xml
TypeScript - Silver Bullet for the Full-stack Developers
RomaFramework Tutorial Basics
.NET 4 Demystified - Sandeep Joshi
java basic for begginers
Building scalable and language-independent Java services using Apache Thrift ...
Slot02 concurrency1
Simplify your professional web development with symfony
Flink Forward Berlin 2017: Zohar Mizrahi - Python Streaming API
Lotus Domino 8.5
Terraform modules restructured
Terraform Modules Restructured
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Using and Extending Memory Analyzer into Uncharted Waters
Java history, versions, types of errors and exception, quiz
Building scalable and language independent java services using apache thrift
Ad

More from Paul Withers (20)

PDF
Engage 2019: Introduction to Node-Red
PDF
Engage 2019: Modernising Your Domino and XPages Applications
PDF
Engage 2019: AI What Is It Good For
PDF
Social Connections 14 - ICS Integration with Node-RED and Open Source
PDF
ICONUK 2018 - Do You Wanna Build a Chatbot
PDF
IBM Think Session 8598 Domino and JavaScript Development MasterClass
PDF
IBM Think Session 3249 Watson Work Services Java SDK
PDF
GraphQL 101
PDF
GraphQL 101
PDF
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
PDF
Social Connections 2015 CrossWorlds and Domino
PDF
ICON UK 2015 - ODA and CrossWorlds
PDF
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
PDF
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
PDF
What's New and Next in OpenNTF Domino API (ICON UK 2014)
PDF
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
PDF
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
PDF
Embracing the power of the notes client
PDF
Beyond Domino Designer
PDF
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
Engage 2019: Introduction to Node-Red
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: AI What Is It Good For
Social Connections 14 - ICS Integration with Node-RED and Open Source
ICONUK 2018 - Do You Wanna Build a Chatbot
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 3249 Watson Work Services Java SDK
GraphQL 101
GraphQL 101
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
Social Connections 2015 CrossWorlds and Domino
ICON UK 2015 - ODA and CrossWorlds
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
What's New and Next in OpenNTF Domino API (ICON UK 2014)
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
Embracing the power of the notes client
Beyond Domino Designer
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages

Recently uploaded (20)

PDF
KodekX | Application Modernization Development
PDF
Empathic Computing: Creating Shared Understanding
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Big Data Technologies - Introduction.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
KodekX | Application Modernization Development
Empathic Computing: Creating Shared Understanding
The AUB Centre for AI in Media Proposal.docx
Per capita expenditure prediction using model stacking based on satellite ima...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Encapsulation_ Review paper, used for researhc scholars
Chapter 3 Spatial Domain Image Processing.pdf
Unlocking AI with Model Context Protocol (MCP)
Network Security Unit 5.pdf for BCA BBA.
MYSQL Presentation for SQL database connectivity
20250228 LYD VKU AI Blended-Learning.pptx
Understanding_Digital_Forensics_Presentation.pptx
Big Data Technologies - Introduction.pptx
A Presentation on Artificial Intelligence
Mobile App Security Testing_ A Comprehensive Guide.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
NewMind AI Monthly Chronicles - July 2025
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication

OpenNTF Domino API - Overview Introduction

  • 2. MISSION Make you more productive Modernize, Standardize, Improve, Extend Solve all your problems Remove all boundaries
  • 3. TEAM First commit by Tim Tripcony #codefortim Multiple Companies Several IBM Champions Many consumers
  • 4. WHY WE STARTED DateTime objects (Nathan T Freeman’s initial comment) Out-of-date classes (Vectors) Out-of-date iteration rules (while loops) Lack of in-context documentation Unhelpful parameter names Avoid recycling Avoid requirement to handle NotesExceptions Inbuilt error logging (XPages OpenLog Logger) Auto-boxing of field data types Use from SSJS or Java
  • 5. WHERE WE WENT NEXT Transactional Processing Only save if all related documents can be updated Sync Helper Push fields and document-centric formulas to related documents MIME Bean Save Java objects in any field and auto- handle field limits
  • 6. WHERE WE WENT NEXT Event Listeners Trigger code based on events, e.g. document save Email Helper Easy email creation Document Scanner Index document fields Index Database Index a whole server
  • 7. WHERE WE WENT NEXT Document Sorter Sort document collections on the fly Api Path / MetaReplica ID / Mertaversal ID Serialize database / document locations for rapid access At Formula Parser Better performance than session.evaluate()
  • 8. WHERE WE WENT NEXT Better Name Handling Improved Recycling Performance Tinkerpop Graph Implementation Graphs database structure stored in Domino Framed graphs for quicker setup Built-in graph classes – Likes, Rates, Task Proxy Vertexes for e.g. Person documents
  • 9. WHERE WE WENT NEXT Multi-threaded processing Enums throughout E.g. FTSearch(String, int, FTSortOption, Set<FTSearchOption>) New Picker DataProviders MapPicker, CollectionPicker, NamePicker XOTS Scheduled tasklets Code in NSF, reuse existing XPages code NSF Data handling via Java
  • 10. CROSSWORLDS Native Domino access from WAS Liberty Potential to be used from other J2EE servers Code using your preferred web application language Access Domino data using ODA APIs Develop using Java 7 / 8 See http://www.slideshare.net/DanieleVistalli/introduci ng-crossworlds-for-ibm-domino
  • 11. XPAGES IMPLEMENTATION Install OSGi plugin to server Install OSGi plugin to Domino Designer Enable org.openntf.domino.xsp.XspLibrary in Xsp Properties
  • 12. XSP PROPERTIES org.openntf.domino= godmode: session and database global objects replaced by org.openntf.domino versions marcel: makes the API MIME-friendly raid: run in debug mode khan: implement fixes, like appendItemValue() nsa: create report of applications, modules, sessions (experimental)
  • 13. XSP PROPERTIES xsp.openlog.filepath=openLog.nsf xsp.openlog.displayError=true xsp.openlog.genericErrorMessage=Sorry, we hit an error xsp.openlog.email=myEmail@myCompany.com xsp.openlog.debugLevel=2 xsp.openlog.suppressEventStack=false xsp.openlog.expireDate=30
  • 14. STRUCTURE domino – parent project externals – 3rd party code included core – org.openntf.domino, main core Domino code formula – at formula parser code xsp – XPages-related code
  • 15. STRUCTURE – EXTERNALS guava – Google Guava javassist – for Java byte-code manipulation javolution – for high-performance Java and data structs jsr305 – annotations for software defect detection rxjava – reactive extensions for the JVM tinkerpop – JDBC for graph database
  • 16. STRUCTURE – CORE org.openntf.arpa – Name handling org.openntf.calendars – calendar ranges / multi- value calendar objects org.openntf.domino – core classes org.openntf.domino.annotations – @Annotations org.openntf.domino.big / org.openntf.domino.big.impl – prototypes and multi-NSF solutions
  • 17. STRUCTURE – CORE org.openntf.domino.design / org.openntf.domino.design.impl – new design note classes org.openntf.domino.email – email handling org.openntf.domino.events – classes for event listeners org.openntf.domino.exceptions – new Exception classes
  • 18. STRUCTURE – CORE org.openntf.domino.ext – extensions to core domino classes org.openntf.domino.graph – deprecated, first- generation graph database classes org.openntf.domino.graph2 – graph interface classes org.openntf.domino.graph2.annotations – @Annotations for framed graphs
  • 19. STRUCTURE – CORE org.openntf.domino.graph2.builtin – interface classes for built-in framed graphs org.openntf.domino.graph2.builtin.social – implementation classes for social built-in framed graphs org.openntf.domino.graph2.workflow – interface classes for built-in workflow framed graphs org.openntf.domino.graph2.workflow.impl – implementation classes for workflow built framed graphs
  • 20. STRUCTURE – CORE org.openntf.domino.graph2.exception – exception classes for graph implementation org.openntf.domino.graph2.impl – core graph implementation classes org.openntf.domino.helpers – miscellaneous helper classes org.openntf.domino.i18n – internationalization classes
  • 21. STRUCTURE – CORE org.openntf.domino.impl – implementations of core domino classes and extensions org.openntf.domino.iterators – iterator classes to avoid Domino-specific iterations org.openntf.domino.junit – junit testing classes org.openntf.domino.nsfdata – interface classes for Domino data-handling org.openntf.domino.nsfdata.impldxl – classes for Domino data-handling via DXL
  • 22. STRUCTURE – CORE org.openntf.domino.nsfdata.impldxl.item – classes for handling of Domino field-level data via DXL org.openntf.domino.nsfdata.structs – classes for handling of C structures org.openntf.domino.nsfdata.structs.cd – classes for handling of Composite Data org.openntf.domino.schema – interfaces for database schema definition. Schema functionality is a work in progress
  • 23. STRUCTURE – CORE org.openntf.domino.schema.exceptions – exception classes for schemas org.openntf.domino.schema.impl – implementations of schema classes org.openntf.domino.schema.types – classes for field / data type schemas org.openntf.domino.session – Session factory classes org.openntf.domino.thread – multi-thread handling
  • 24. STRUCTURE – CORE org.openntf.domino.transactions – classes for transactional processing org.openntf.domino.types – various generic classes org.openntf.domino.utils – various utility classes org.openntf.domino.utils.xml – various XML- processing classes org.openntf.domino.xots – XOTS-related classes org.openntf.domino.xots.events – XOTS event class
  • 25. STRUCTURE – XSP org.openntf.domino.xsp – generic classes org.openntf.domino.xsp.adapter – factories and other extensions org.openntf.domino.xsp.components – adaptive components org.openntf.domino.xsp.config – xsp-related config org.openntf.domino.xsp.formula – SSJS access to formulas
  • 26. STRUCTURE – XSP org.openntf.domino.xsp.helpers – various helper classes org.openntf.domino.xsp.junit – XPages junit runner org.openntf.domino.xsp.junit.test – XPages junit tests org.openntf.domino.xsp.model – model-level classes org.openntf.domino.xsp.msg – message-handling classes
  • 27. STRUCTURE – XSP org.openntf.domino.xsp.readers – LogReader class org.openntf.domino.xsp.script – SSJS classes org.openntf.domino.xsp.session – XPages Session factory classes org.openntf.domino.xsp.xots – XPages XOTS classes