DEV-1467 - Darwino
- 1. DEV-1430 Give a New Life to Your Notes/Domino Applications
and Leverage IBM Bluemix, Watson, & Connections
- 2. Disclaimer
2
• Some of the techniques exposed in the session might not be documented by
IBM and thus do engage IBM in anyway
• Some of these techniques might not work after an upgrade of either IBM
Connections cloud or IBM Connections on premises
• USE OF THIS INFORMATION IS ENTIRELY AT YOUR OWN RISK.
TRILOGGROUP AND DARWINO INC BEAR NO RESPONSIBILITY FOR
THE CONSEQUENCES OF RELIANCE ON, OR ANY INACCURACY IN,
ANY INFORMATION CONTAINED IN OR SUBMITTED TO THIS SITE.
THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESS OR IMPLIED.
- 3. About the Speakers
3
• Jesse Gallagher
CTO of I Know Some Guys
Board Member of OpenNTF
• Philippe Riand
CTO of Trilog Group & Darwino Inc.
Former application development chief architect for
IBM Collaboration Services
Chief architect, and inventor, of IBM Domino
XPages
- 4. Who Are We?
4
• Darwino is an application development platform targeting mobile, cloud, and IoT
Darwino is well-integrated with IBM platforms, including IBM Connections, IBM
Domino, IBM Bluemix and IBM Watson
darwino.org, a branch of OpenNTF, is the open source organization
providing the Connections integration code shown in this session
We are in the showcase, booth 630
- 5. Objectives of the Session
5
• Explain the Darwino architecture
• Demonstrate how Darwino can be used in several common
modernization/extension use cases
Reporting
Modernization of an existing Domino app
Mobile apps with offline use
Integrations/extensions with other platforms
- 7. Darwino in a Nutshell
A distributed app-development platform for the rapid creation of collaborative
applications (primarily Mobile, Cloud and IOT).
Facilitates focus on the application logic
Encapsulates services within comprehensive and portable APIs
Incorporates an advanced JSON document store (atop of RDBMS), both
mobile and server
Enables synchronization (aka, replication) from Enterprise systems and
provides a seamless offline capability on devices
Java-based, and uses familiar constructs
Use the UI technology and tools you know and want to use
- 8. Darwino DB – JSON Document Store
NoSQL, JSON document store with binary attachments
Advanced query capabilities
Native multi-tenant, integrated social features…
Two way replication mechanism
Supports Domino-style capabilities
Response documents, document based security…
Granular security model, down to the document level
Implemented on top of existing relational databases
Takes advantage of the existing RDBMS features
Supports JSON natively
Fully transactional, performance and scalability
Full SQL Queries
Compatible with all the Business Intelligence – Reporting tools
- 9. IBM Connect 2017 - Hackathon
9
We won the Hackathon Monday with a Darwino Application
In less than 6 hours, we created an application:
Deployed on IBM Bluemix
Web Application Server, Database…
Fully integrated in IBM Connections Cloud
Authentication, APIs, Community application…
Integrated with IBM Watson Workspace
Created a bot
Provided a mobile experience on top of the web one
Includes offline capability for the Data
- 10. IBM Connect 2017 - Hackathon
10
The team was made of 10 people with different skills
No one had experience with Darwino beyond me!
But I did not code myself
We picked up the technologies/tools already known
by the team members
UI – Bootstrap/Sass, ReactJS, Node.js, Atom
Backend – Java, Eclipse
Mobile – Android SDK
Administration – Bluemix, Connections Cloud. IBM Eclipse Bluemix plugin
Github
Slack
- 13. Darwino/Domino Replication
13
“Native-like” replication with Domino
Two-way
Creation and modification times and replication data (sequence ID) intact
Shared UNIDs (when compatible)
High data fidelity
Customizable data translation
High performance via C API
Maintains the security model
The database ACL is replicated from Domino and applied to the Darwino DB
It maintains the readers/authors fields
- 14. Use Case #1: Reporting and Business Intelligence
Get the value out of your Domino data
14
- 15. Reporting on Domino Data? Really?
15
Reporting has always been a weakness for Domino
No standard data API consumable by market tools
Very limited query capabilities
But Darwino now makes it possible, because the data is replicated within an
RDBMS
The JSON content is leveraging the native RDBMS type
Easy to create SQL views, and other artifacts, dedicated to reporting
The Darwino DB can act as a data warehouse, replicated real time with
Domino
- 16. Endeavour Reporter
Reporting tool developed in conjunction with Construction Management
Systems in Arkansas, US
Designed based on their production needs, previously filled by DomSQL
Built to address the very common need of Domino shops to do SQL-style
reporting with standardized tools
Streamlines the process of creating Darwino tables in a SQL server and
replicating over the data
The data can then be queried directly via PostgreSQL’s native JSON
syntax or via the created views
For further information, contact Jerry Horani - jhorani@vccusa.com
- 18. Use Case #2: App Conversion
18
Give a new life to your existing applications
- 19. The Value of Darwino to Domino Applications
19
Make your existing applications match the current user expectations
Keep Domino apps untouched (keeps data in Domino and leverages existing
business logic, while incrementally enhancing the Darwino app
Reuse existing assets and skills on top of ‘state of the art’ technologies
Developers feel ‘at home’ right from the beginning
Removes many existing Domino barriers (skills, performance, scalability,
capabilities…)
Use the best technologies, based on your skills, needs, and desires…
Provides seamless integration with social services
- 20. The Darwino Development Experience
20
Darwino is independent from the development environment
Works with most popular IDEs, including Eclipse
But command line can also be used
Leverages the existing toolkits, like Android SDK or MOE
Delivered as a maven tree of artifact, and OSGi plugins
Darwino Studio is a set of Eclipse tools to simplify development and integration
Develop for all the platforms from one single IDE
Features an application wizard to get started with a few clicks
Provides a UI code generator
Import the data model from external data sources like Domino
- 21. Example App: frostillic.us Blog
Existing app is a soup-to-nuts XPages application
The data is classic Domino: parent/response documents, categorized views,
reader/author security
It already went through one migration from WordPress data
21
- 23. Use Case #3: Mobile, Offline-Enabled Apps
Android, iOS, and Desktop
23
- 24. Offline Mobile Access
Mobile devices share the same database and business logic
Apps work offline, ”Notes client” style
Use the same application in airplane mode, replicate up afterwards
The data could then replicate back to the Domino database
Target Android, iOS (via Multi-OS Engine), and desktop (via SWT)
- 26. Use Case #4: Integrations
Integrate with the broader IBM Platform
26
- 27. Darwino+Bluemix
Bluemix is a perfect spot for Darwino application
Provides a JEE server and relational databases (DB2, Postgresql…)
Darwino JEE applications deploy smoothly to WebSphere Liberty locally
and on Bluemix
No special coding required
Darwino will detect the Bluemix runtime and find the configuration options
(database, authentication…)
Initial support for syncing data to DashDB for reporting
- 28. Darwino+Connections
28
Seamlessly integrates with IBM Connections both on-premises and cloud
Use IBM Connections as a directory of users
Built-in OAuth support
Access all the Connections services through API helpers
Support for automatically detecting a surrounding Connections Community and
storing data in a unique instance
Support for determining user roles from the surrounding Community
And apply role based security
- 29. Darwino+Watson
29
Darwino includes bean-compatible wrappers for the Watson Java API
The Watson result data is JSON, and so can be stored natively anywhere
within a Darwino document
The Social Analyzer does this to include Watson results in documents
that are then queryable directly
<bean name="toneAnalyzerFactory" class="com.darwino.ibm.watson.ToneAnalyzerFactory">
<property name="url">https://gateway.watsonplatform.net/tone-analyzer/api</property>
<property name="user">${socialanalyzer.toneAnalyzer.user}</property>
<property name="password">${socialanalyzer.toneAnalyzer.password}</property>
</bean>
- 30. Example Application: Social Analyzer
Available on OpenNTF
Demonstrates integration with
Connections Cloud, Watson, Twitter,
DashDB on Bluemix, and Domino
Runs standalone or embedded in
Connections
Community-based instances and
roles
30
Runner-up in the ICS Worldwide Developer Competition
- 32. Things Impractical or “Technically Possible” with Domino
Use Case 1: Reporting
Essentially requires an extra tool, and most have severe limitations
Use Case 2: App Conversion
Modern apps can be written on Domino, but it’s swimming
upstream: wrangling libraries, working around limitations
Use Case 3: Offline Mobile Access
Can’t be done out of the box
Use Case 4: Integrations
Most involve significant extra work to emulate things much easier
in Darwino
32
- 33. The Work You Don’t Have To Do
Standard dev toolchain:
Easily consume third-party dependencies
Modern web server technologies
Built client-side apps or use any Java-compatible framework
Modern client tooling (easy to use npm, bower, etc.)
Straightforward building with Jenkins, etc.
State-of-the-art technologies with active developer communities
33
- 34. The Work You Don’t Have To Do
Darwino-provided:
Cross-platform deployment
Web, desktop, iOS, and Android
Shared UI or native-tailored to each
Consistent data layer and business logic
Including common utility library and services framework to build upon
Advanced NoSQL data store with SQL benefits
Built-in integrations with common environments
34