Loose coupling of systems is key to future development! Why? Because it will allow us to change the "components" as we go along instead of creating monster big systems that are tied together using all sorts of different technologies. Webservices have been a way to obtain this over the last decade. More recently a special variant has become very popular, namely the JSON based REST service. Imagine you could extend your data out to the world outside your Domino environment? - in an easy way....! And imagine those data could easily be incorporated into other systems via standardized interfaces... Could that extend the value of your current systems further? Could this be a way to use new technologies to modernize your users' experience of working with your systems? Come and take away knowledge about how to open your Domino/XWork based systems up to the world outside using JSON based REST services. They are going to be key to future development in Domino/XWork - whether you want to use data in browser solutions (e.g. based on angular.js or ExtJS) or native mobile apps (built in whatever technology is best).
MVC and IBM XPages - from #DanNotes in Korsør (DK) 28 November 2013John Dalsgaard
Learn how you can improve your coding in IBM XPages by using the Model-View-Controller (MVC) design pattern. This is my advice on how to take advantage of the XPages (i.e. JSF) architecture to prepare for much better applications (separate database access, business rules and view components).
RESTful services on IBM Domino/XWork (ICON UK 21-22 Sept. 2015)John Dalsgaard
Loose coupling of systems is key to future development! Why? Because it will allow us to change the "components" as we go along instead of creating monster big systems that are tied together using all sorts of different technologies. Webservices have been a way to obtain this over the last decade. More recently a special variant has become very popular, namely the JSON based REST service. Imagine you could extend your data out to the world outside your Domino environment? - in an easy way....! And imagine those data could easily be incorporated into other systems via standardized interfaces... Could that extend the value of your current systems further? Could this be a way to use new technologies to modernize your users' experience of working with your systems? Come and take away knowledge about how to open your Domino/XWork based systems up to the world outside using JSON based REST services. They are going to be key to future development in Domino/XWork - whether you want to use data in browser solutions (e.g. based on angular.js or ExtJS) or native mobile apps (built in whatever technology is best).
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014John Dalsgaard
Loose coupling of systems is key to future development! Why? Because it will allow us to change the "components" as we go along instead of creating monster big systems that are tied together using all sorts of different technologies. Webservices have been a way to obtain this over the last decade. More recently a special variant has become very popular, namely the JSON based REST service.
Imagine you could extend your data out to the world outside your Domino environment? - in an easy way....! And imagine those data could easily be incorporated into other systems via standardized interfaces... Could that extend the value of your current systems further? Could this be a way to use new technologies to modernize your users' experience of working with your systems?
Come and take away knowledge about how to open your Domino/XWork based systems up to the world outside using JSON based REST services. They are going to be key to future development in Domino/XWork - whether you want to use data in browser solutions (e.g. based on angular.js or ExtJS) or native mobile apps (built in whatever technology is best).
A powerful web application server (intravision IBM Connect 2013 Update) Febru...Per Henrik Lausten
I gave this presentation at the IBM Connect 2013 Update seminar hosted by Intravision on February 25 at IBM in Copenhagen.
http://per.lausten.dk/blog/2013/02/ibm-connect-2013-update-with-intravision.html
Scaling up and accelerating Drupal 8 with NoSQLOSInet
Drupal 8 can scale well and serve pages fast to many users, especially by offloading parts of the work load from the main SQL database to NoSQL solutions.
This presentation describes the strategies and technologies usable to achieve such gains, including specific configuration, contributed modules and custom coding strategies.
MVC and IBM XPages - from #DanNotes in Korsør (DK) 28 November 2013John Dalsgaard
Learn how you can improve your coding in IBM XPages by using the Model-View-Controller (MVC) design pattern. This is my advice on how to take advantage of the XPages (i.e. JSF) architecture to prepare for much better applications (separate database access, business rules and view components).
RESTful services on IBM Domino/XWork (ICON UK 21-22 Sept. 2015)John Dalsgaard
Loose coupling of systems is key to future development! Why? Because it will allow us to change the "components" as we go along instead of creating monster big systems that are tied together using all sorts of different technologies. Webservices have been a way to obtain this over the last decade. More recently a special variant has become very popular, namely the JSON based REST service. Imagine you could extend your data out to the world outside your Domino environment? - in an easy way....! And imagine those data could easily be incorporated into other systems via standardized interfaces... Could that extend the value of your current systems further? Could this be a way to use new technologies to modernize your users' experience of working with your systems? Come and take away knowledge about how to open your Domino/XWork based systems up to the world outside using JSON based REST services. They are going to be key to future development in Domino/XWork - whether you want to use data in browser solutions (e.g. based on angular.js or ExtJS) or native mobile apps (built in whatever technology is best).
REST services and IBM Domino/XWork - DanNotes 19-20. november 2014John Dalsgaard
Loose coupling of systems is key to future development! Why? Because it will allow us to change the "components" as we go along instead of creating monster big systems that are tied together using all sorts of different technologies. Webservices have been a way to obtain this over the last decade. More recently a special variant has become very popular, namely the JSON based REST service.
Imagine you could extend your data out to the world outside your Domino environment? - in an easy way....! And imagine those data could easily be incorporated into other systems via standardized interfaces... Could that extend the value of your current systems further? Could this be a way to use new technologies to modernize your users' experience of working with your systems?
Come and take away knowledge about how to open your Domino/XWork based systems up to the world outside using JSON based REST services. They are going to be key to future development in Domino/XWork - whether you want to use data in browser solutions (e.g. based on angular.js or ExtJS) or native mobile apps (built in whatever technology is best).
A powerful web application server (intravision IBM Connect 2013 Update) Febru...Per Henrik Lausten
I gave this presentation at the IBM Connect 2013 Update seminar hosted by Intravision on February 25 at IBM in Copenhagen.
http://per.lausten.dk/blog/2013/02/ibm-connect-2013-update-with-intravision.html
Scaling up and accelerating Drupal 8 with NoSQLOSInet
Drupal 8 can scale well and serve pages fast to many users, especially by offloading parts of the work load from the main SQL database to NoSQL solutions.
This presentation describes the strategies and technologies usable to achieve such gains, including specific configuration, contributed modules and custom coding strategies.
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
Des concepts comme encapsulation, réutilisation de composants, data-binding ou templating sont maintenant monnaie courante dans la plupart de frameworks web… mais chacun le fait à ça façon !
Et c’est là que les Web Components débarquent. Un nouveau standard en cours d’élaboration au W3C, qui va permettre d’avoir une approche par composants au développement web.
Dans cette présentation nous parlerons de ce standard en construction, de concepts comme ShadowDOM, Mutation Observers, custom elements, Model-Driven-View, Object.observe()… Nous parlerons aussi des implémentations actuelles, du projet Polymer de Google, des X-Tags de Mozilla et de comment avec AngularJS on peut déjà avoir un bon aperçu de ce que nous attend.
Et ensuite on rentrera dans le détail de comment on peut dès aujourd'hui utiliser des web components avec Polymer, et on illustrera l'approche en utilisant les composants Polymer Paper pour implémenter le look Material Design d'Android L dans des applications web.
JAX-WS is the replacement and next generation to JAX-RPC and makes web services development much easier using annotations and much less configuration. JAX-WS is useful for people building webservices/SOA based infrastructure as JAX-WS makes the web service development much easier and is a big gain for developer productivity.
The session uses a web service for temperature conversion example to build both the client side and Server side artifacts. Also on the server side both Servlet based and EJB3.0 based web service development will be demonstrated. JAXB concepts will be used to demonstrate the examples.
The session uses Eclipse Ganymede and Jboss 5.0. However JAX-WS being the standard, the code will smoothly work on any JavaEE based compliant servers.
Webinar topic: Zettabyte File System (ZFS)
Presenter: Achmad Mardiansyah
In this webinar series, We are discussing Zettabyte File System (ZFS)
Please share your feedback or webinar ideas here: http://bit.ly/glcfeedback
Check our schedule for future events: https://www.glcnetworks.com/schedule/
Follow our social media for updates: Facebook, Instagram, YouTube Channel, and telegram
See you at the next event
Recording available on Youtube
https://youtu.be/yPwxY9rViao
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
Des concepts comme encapsulation, réutilisation de composants, data-binding ou templating sont maintenant monnaie courante dans la plupart de frameworks web… mais chacun le fait à ça façon !
Et c’est là que les Web Components débarquent. Un nouveau standard en cours d’élaboration au W3C, qui va permettre d’avoir une approche par composants au développement web.
Dans cette présentation nous parlerons de ce standard en construction, de concepts comme ShadowDOM, Mutation Observers, custom elements, Model-Driven-View, Object.observe()… Nous parlerons aussi des implémentations actuelles, du projet Polymer de Google, des X-Tags de Mozilla et de comment avec AngularJS on peut déjà avoir un bon aperçu de ce que nous attend.
Et ensuite on rentrera dans le détail de comment on peut dès aujourd'hui utiliser des web components avec Polymer, et on illustrera l'approche en utilisant les composants Polymer Paper pour implémenter le look Material Design d'Android L dans des applications web.
JAX-WS is the replacement and next generation to JAX-RPC and makes web services development much easier using annotations and much less configuration. JAX-WS is useful for people building webservices/SOA based infrastructure as JAX-WS makes the web service development much easier and is a big gain for developer productivity.
The session uses a web service for temperature conversion example to build both the client side and Server side artifacts. Also on the server side both Servlet based and EJB3.0 based web service development will be demonstrated. JAXB concepts will be used to demonstrate the examples.
The session uses Eclipse Ganymede and Jboss 5.0. However JAX-WS being the standard, the code will smoothly work on any JavaEE based compliant servers.
Webinar topic: Zettabyte File System (ZFS)
Presenter: Achmad Mardiansyah
In this webinar series, We are discussing Zettabyte File System (ZFS)
Please share your feedback or webinar ideas here: http://bit.ly/glcfeedback
Check our schedule for future events: https://www.glcnetworks.com/schedule/
Follow our social media for updates: Facebook, Instagram, YouTube Channel, and telegram
See you at the next event
Recording available on Youtube
https://youtu.be/yPwxY9rViao
Level 101 for Presto: What is PrestoDB?Ali LeClerc
Presto is a widely adopted federated SQL engine for federated querying across multiple data sources. With Presto, you can perform ad hoc querying of data in place. For today’s “data hacker”, Presto helps solve challenges around time to discovery and the amount of time it takes to do ad hoc analysis.
In Level 101, you’ll get an overview of Presto, including:
A high level overview of Presto & most common use cases
The problems it solves and why you should use it
A live, hands-on demo on getting Presto running on Docker
Real world example: How Twitter uses Presto at scale
OSMC 2018 | Stream connector: Easily sending events and/or metrics from the C...NETWAYS
Since Centreon 2.8.18, Centreon broker provides a new connector called “Stream connector”. With it, users have the possibility to create an output to any tool of their choice. The topic of this talk is to present this connector and its use through several examples.
AD109 Navigating the Jungle of Modern Web DevelopmentShean McManus
In the beginning, the web was built largely on static HTML pages. While HTML is still the foundation for the modern web page, the explosion of JavaScript libraries, CSS frameworks, development tools, platforms and cloud offerings have made the understanding the universe of modern web development much more challenging. What is Angular? The MEAN stack? What is the difference between HTML and HTML5 or CSS and CSS3? To break it all down I will attempt to provide a clear overview of today's web including a taxonomy of common languages, tools, platforms and libraries. Learn how IBM xPages and IBM Blue Mix fit into this world and how all the terms you hear every day fit into the larger picture of modern web development.
In many organizations, users are still faced with entering multiple passwords and even some configuration data to gain access to their Notes Client, Sametime Client and Connections Plugins.
In this session I will show you how you can provide a secure IBM Notes Client experience without the user entering any configuration data or passwords at all.
Buzzword Bingo for this session: ID Vault, SSO, LTPA, SPNEGO, SAML, Domino Policies, Account Documents, Citrix
Totango is an Analytics platform for Customer Success.
Our data pipeline converts usage information into actionable analytics. The pipeline is managed using Luigi workflow engine, and data transformations are done in Spark.
SUTOL 2016: IBM Connections Deployment Best and Worst Practicespanagenda
A presentation by Christoph Stoettner
Depending on deployment size, operating system and security considerations you have different options to configure IBM Connections. This session will show good and bad examples on how to do it from multiple customer deployments. IBM Champion Christoph Stoettner will describe things he found and how you can optimize your systems. This is valuable information that will help you to be successful in your next IBM Connections deployment project.
Quick introduction on managing RESTful services with Drupal.
1) Drupal is the RESTful server
2) Drupal is the RESTful client managing data in MEAN stack
Code for the demo is at https://github.com/kalinchernev/Drupal-7/tree/master/restful_lecture
Similar to RESTful services on IBM Domino/XWork (SUTOL 11 Nov. 2015 in Prague) (20)
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Hivelance Technology
Cryptocurrency trading bots are computer programs designed to automate buying, selling, and managing cryptocurrency transactions. These bots utilize advanced algorithms and machine learning techniques to analyze market data, identify trading opportunities, and execute trades on behalf of their users. By automating the decision-making process, crypto trading bots can react to market changes faster than human traders
Hivelance, a leading provider of cryptocurrency trading bot development services, stands out as the premier choice for crypto traders and developers. Hivelance boasts a team of seasoned cryptocurrency experts and software engineers who deeply understand the crypto market and the latest trends in automated trading, Hivelance leverages the latest technologies and tools in the industry, including advanced AI and machine learning algorithms, to create highly efficient and adaptable crypto trading bots
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
Tim Combridge from Sensible Giraffe and Salesforce Ben presents some important tips that all developers should know when dealing with Flows in Salesforce.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
Worried about document security while sharing them in Salesforce? Fret no more! Here are the top-notch security standards XfilesPro upholds to ensure strong security for your Salesforce documents while sharing with internal or external people.
To learn more, read the blog: https://www.xfilespro.com/how-does-xfilespro-make-document-sharing-secure-and-seamless-in-salesforce/
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
3. 7th Sutol Conference, November 2015
3
Agenda
● About me
● Webservices
● REST & JSON
● Domino/XWork – out of the box...
● Domino Access Service (DAS)
● Extension Library controls
● Build your own
● Demos
● Round up
4. 7th Sutol Conference, November 2015
4
About me
● Worked with Notes since 1995
version 4.5
● Java since Notes 5.0.7 (2000)
● Large web-apps. (40.000+ users)
● Object Oriented approach since 1999 (yes, in
LotusScript...)
● XPages & mobile apps (Appcelerator Titanium)....
● Certified Principal/advanced administrator and
developer – all versions 4.6 → 9.0
● Developer, project manager, IT manager – own
company (Dalsgaard Data A/S) since 1998.
● IBM Champion for 2015
6. 7th Sutol Conference, November 2015
6
Webservices
● What is a webservice?
● Program to program communication
● Implemementation independent
● ”Contract” about interface
● Traditionally SOAP & XML...
● Very ”verbose” (=not ”light”)
● Needs pre-/post processing to ”extract” data
→ Meet the ”new kid on the block”:
7. 7th Sutol Conference, November 2015
7
REST services using JSON
● REST = REpresentational State Transfer
● JSON = JavaScript Object Notation
● Why?? → Loose coupling...
● Angular, Ext.js, etc.
● Mobile apps/web apps
● Let's take a quick look at these terms:
8. 7th Sutol Conference, November 2015
8
REST
● Wikipedia:
Representational state transfer (REST) is an abstraction of the
architecture of the World Wide Web; more precisely, REST is an
architectural style consisting of a coordinated set of architectural
constraints applied to components, connectors, and data elements,
within a distributed hypermedia system. REST ignores the details of
component implementation and protocol syntax in order to focus on the
roles of components, the constraints upon their interaction with other
components, and their interpretation of significant data elements.....
WHAT?????
9. 7th Sutol Conference, November 2015
9
REST
● Client-server architecture
● Uniform interface separates client from server
● Stateless
● All info in request
● Cacheable communications protocol
● Almost always HTTP
● Uniform interface...
● HTML, URIs, XML, JSON, MIME, meta-data....
● Actually, WWW via HTTP can also be viewed as a REST-based
architecture – so nothing new here that you did not know... :-)
10. 7th Sutol Conference, November 2015
10
”RESTful” web-service
● Architectural style:
● URI structure (base URI)
● Internet media type. JSON – or: XML, Atom, …
● Standard HTTP methods:
● GET
● POST
● PUT
● DELETE
… also known as: CRUD (Create, Read, Update,
Delete) methods
11. 7th Sutol Conference, November 2015
11
”RESTful” web-service
● Designed for networked applications
● Using HTTP as a simple alternative to more
complex mechanisms to connect between
machines:
● WebServices (SOAP, WSDLs etc.)
● CORBA
● RPC
12. 7th Sutol Conference, November 2015
12
”RESTful” web-service
● Example – SOAP:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:body pb="http://www.acme.com/phonebook">
<pb:GetUserDetails>
<pb:UserID>12345</pb:UserID>
</pb:GetUserDetails>
</soap:Body>
</soap:Envelope>
● … must be sent via a request (HTTP POST)
● Example – RESTful web-service:
http://www.acme.com/phonebook/UserDetails/12345
● … just a URL!! (HTTP GET) – simple....
13. 7th Sutol Conference, November 2015
13
JSON
● Wikipedia:
JSON (/ d e sən/ jay-sən), orˈ ʒ ɪ JavaScript Object Notation, is an
open standard format that uses human-readable text to transmit
data objects consisting of attribute–value pairs. It is used primarily
to transmit data between a server and web application, as an
alternative to XML.
Although originally derived from the JavaScript scripting
language, JSON is a language-independent data format. Code for
parsing and generating JSON data is readily available in a large
variety of programming languages.
14. 7th Sutol Conference, November 2015
14
JSON
● A syntax for storing & exchanging data
● An easier to use alternative to XML
● Is a lightweight data interchange format
● Is language independant
● Is ”self-describing” and easy to understand
JSON uses JavaScript syntax, but the JSON format is text only,
just like XML. Text can be read and used as a data format by any
programming language...
15. 7th Sutol Conference, November 2015
15
JSON vs. XML
● XML
<employees>
<employee>
<firstName>John</firstName> <lastName>Doe</lastName>
</employee>
<employee>
<firstName>Anna</firstName> <lastName>Smith</lastName>
</employee>
<employee>
<firstName>Peter</firstName> <lastName>Jones</lastName>
</employee>
</employees>
● JSON
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
17. 7th Sutol Conference, November 2015
17
JSON and JavaScript
● Sample data:
var text = ”{ 'name' : 'SUTOL', 'current' : 2015 }”;
● Create an object:
● var sutol2015 = JSON.parse(text);
● Create text representation of an object:
● var sutol2015Text = JSON.stringify(sutol2015);
● Refer to attributes:
● var name = sutol2015.name;
● Add another attribute:
● sutol2015['venue'] = 'London'
18. 7th Sutol Conference, November 2015
18
Domino/XWork - out of the box
● Webservices (SOAP, XML, etc...)
● Provider (server) – since 7.0
● Consumer (client) – since 8.0
● Written in LotusScript/Java
RESTful service using JSON →
● Domino Access Services (DAS)
● core service - since 9.0.1
● data service - since 8.5.3 UP1 (~DDS)
● calendar service - since 9.0.1
19. 7th Sutol Conference, November 2015
19
Domino Access Services
● Implemented as OSGi plugins/servlets
● Based on Apache Wink
● How to enable & configure
● Web access
● Enable Domino Access Service (DAS)
● Enable for database
● Enable for specific elements
20. 7th Sutol Conference, November 2015
20
Enable web access
● HTTP Server must be started.
● Check console: show tasks
HTTP Server Listen for connect requests on TCP Port:80
● Use internet sites – just do it!
● Activate in server document
● Create Internet site document for domain
● After changes: restart task http
● Check:
● Open the server on the port you saw on the console
● http://server.dom.dk:80/ (leave out port if 80)
21. 7th Sutol Conference, November 2015
21
Check DAS
Open: server.dom.dk/api
● lists services and
their state
22. 7th Sutol Conference, November 2015
22
Enable data service
● On Internet site document (configuration tab):
● Need to refresh http to take effect
● tell http refresh
23. 7th Sutol Conference, November 2015
23
DAS: List all ”services” (db's)
● Open: server.dom.dk/api/data
24. 7th Sutol Conference, November 2015
24
DAS: Open a specific database
● Try: server.dom.dk/reports.nsf/api/data/collections
→ We need to enable DAS for the database
25. 7th Sutol Conference, November 2015
25
DAS: Enable for database
● On the advanced properties of the database:
● Select level in ”Allow Domino Data Service”:
● Important decision:
● Views only or views and documents
26. 7th Sutol Conference, November 2015
26
DAS: Open database again
● Try: server.dom.dk/demo/json.nsf/api/data/collections
27. 7th Sutol Conference, November 2015
27
DAS: Enable for view
● We need to enable DAS for the view first
● Open the view in Domino Designer
● On the view properties – advanced tab
● Enable: ”Allow Domino Data Service operations”:
● Save the view, open it using the url returned
28. 7th Sutol Conference, November 2015
28
DAS: Open a view
● Try: server.dom.dk/.../collections/unid/A892133953...
● Heureka!! - we see a list of all documents!
● Also try: server.dom.dk/.../collections/name/persons
29. 7th Sutol Conference, November 2015
29
DAS: Open a document
● Try: server.dom.dk/.../documents/unid/33735D0BC...
● Requires ”Views and documents” to be set in DB props.
30. 7th Sutol Conference, November 2015
30
DAS: Writing back...
● Remember content type MUST be:
● application/json
● Set ”Content-type” in header of request
● If you get ”405 Method not allowed”
● Enable method in internet site
● By default these are NOT enabled:
● PUT
● PATCH
● DELETE
● Or override header in your request
● ”X-HTTP-Method-Override” : ”POST”
31. 7th Sutol Conference, November 2015
31
DAS: Save existing document
● Use ”PATCH” to change specific fields
● url: …/documents/unid/33735D0BCE799....
● updates only the fields in the request
● Use ”PUT” to change ALL fields
● url: …/documents/unid/33735D0BCE799....
● All fields are replaced with the fields from
request – fields not specified are blanked....
32. 7th Sutol Conference, November 2015
32
DAS: Create / delete document
● Use ”POST” to create a document with
specified fields
● url: …/documents?form=Person
● You MUST add form to url
● Use ”DELETE” to remove the document
entirely
● url: …/documents/unid/33735D0BCE799....
33. 7th Sutol Conference, November 2015
33
DAS: Data service - more...
● See the design of a view:
● //.../collections/name/persons/design
● Compute values on update of document
● //.../documents/unid/33735D0BC...?computewithform=true
● Use ”normal” url actions to control view collection,
e.g.
● //.../collections/name/persons?start=1&count=2
35. 7th Sutol Conference, November 2015
35
Demo...
● Server:
● Local VM with Domino 9.0.1FP2 on CentOS 6.7
● Extension Library (from IBM)
● OpenNTF Domino API installed
● OpenNTF Essentials installed
● A demo database (download from Bitbucket.org)
● Showing an MVC pattern I use
● Added a number of JSON demos
● Is available for download
● Tool for testing:
● Google Chrome Postman
36. 7th Sutol Conference, November 2015
36
DAS: Calendar service
● There is a ”catch” to enabling this service...
● In the internet site document you have to type
”Calendar” as an option.... - it is not predefined
37. 7th Sutol Conference, November 2015
37
DAS: Calendar service
● Built on the new calendar backend classes in
Domino/XWork 9.0.1
● Current user's calendars, email address, and
services
server.dom.dk/api/calendar
● Events from specific calendar
server.dom.dk/demo/cal.nsf/api/calendar/events
● Events from specific calendar (iCal format)
server.dom.dk/.../events?format=iCalendar
● Only shows events that have NOT started yet
38. 7th Sutol Conference, November 2015
38
DAS: Calendar service
● You can also CREATE new events!!!
● Using POST and specifiying all fields under an
”events” object
● Handles the various types: Meeting, appointment,
etc.
● Will send invites to participants of meetings
● Handles notifications
● Actions for complete workflow: Accept, decline,
delegate, etc.
● … and more!
39. 7th Sutol Conference, November 2015
39
DAS: Calendar service
● You can also UPDATE existing events!!!
● Using PUT and specifiying ALL fields under an
”events” object – as it is returned by creating or
getting the event
● Use ”.../events/<exact id as from request>
● including ”....-Lotus_Auto_Generated” !!!
● You should keep all fields – including system fields
● If you don't → Defaults are applied...
● E.g. specifying only start time → end time set to same..!!!
● Failure to follow these guidelines will result in an error
400 ”Bad request”
41. 7th Sutol Conference, November 2015
41
Extension Library
● Comes with the Domino 9.0.x server (and Domino
Designer)
● Just needs to be enabled in XSP properties
● Does NOT require DAS to be enabled
● Provides easy to use controls:
● REST Service (data)
● Remote Service (JSON-RPC)
● Allow you to run serverside code as a REST service...
● Also provide support for:
● NSF and OSGi servlets... - advanced stuff!!
42. 7th Sutol Conference, November 2015
42
Extension Library
● Why would you use it...????
● → Allows further customizations
● Include/exclude certain data columns
● Include/exclude system columns (@....)
● Calculate contents of own columns
● Run code before/after CRUD operations
● Sort and search
● Create ”handles” (variable) to use in XPage as
datasources
43. 7th Sutol Conference, November 2015
43
Ext. Lib. REST Service
● Create a new XPage
● Drag a ”REST Service” component
to it:
● Fill in ”the blanks”
● pathInfo → identifies
the service
● Select service
● Fill in the info
needed for that
type of service
44. 7th Sutol Conference, November 2015
44
Ext. Lib. REST Service
● To call your service you open the XPage with the
REST Service control(s) and add the pathInfo, e.g.:
server.dom.dk/db.nsf/yourpage.xsp/persons
● ...assuming you set pathInfo to ”persons” for one of
the REST Services on the ”yourpage” XPage
45. 7th Sutol Conference, November 2015
45
Ext. Lib. NSF servlet
● You can register a servlet to e.g. give you a
JSON representation of a view
● Extends DefaultServletFactory
● add a factory that maps to a service (e.g. view
name)
● Register in Code/Java/META-INF/services
● file: com.ibm.xsp.adapter.servletFactory
→ Full name of servlet class
● Refer to using url, e.g.:
server.dom.dk/db.nsf/xsp/services/Persons
● Does NOT require DAS to be enabled
46. 7th Sutol Conference, November 2015
46
To come: Extend DAS through
OpenNTF Domino API (ODA)
● This is work in progress by Nathan T. Freeman
● Learn more by attending webinar on 17
November (next week!!) by TLCC:
http://www.tlcc.com/xpages-webinar
… and if you don't use ODA already then you
should start NOW!
48. 7th Sutol Conference, November 2015
48
Build your own...
● Why??
● … using your own MVC – Java objects
● Full control
● Does NOT require DAS to be enabled
● Handy ”ingredients”
● Java
● XPages
● Use an ”XAgent” (or an NSF/OSGi servlet)
● Select a JSON ”package”
● Built-in with XPages
● Or others like GSON – (wrap as plugin!!)
49. 7th Sutol Conference, November 2015
49
Build your own...
● Use cases:
● Generate JSON directly from your Java class
● Consume your JSON POSTs directly by parsing
them to the corresponding Java class
→ Ready to use in your logic
● Control e.g. date formating generally for all Date
fields
● Eg. use ISO datetime format
50. 7th Sutol Conference, November 2015
50
Build your own...
● LotusScript....
● You didn't expect me to say this!
● An option if you have existing systems with
business logic written in LotusScript
● Simple:
● print – correct content-type
● print …. your JSON (as text)
● … but I would not advice to build new this way →
you would like to use a library/package to build your
JSON for you!
● Does NOT require DAS to be enabled
52. 7th Sutol Conference, November 2015
52
Round Up
● What are REST and JSON
● GET, POST, PUT, DELETE – ~CRUD
● Domino Access Services – out of the box
● Data
● Calendar
● Extension Library
● REST Service
● (Remote Service)
● Build own solution
● Java & JSON ”package” - …. & LotusScript ;-)
53. 7th Sutol Conference, November 2015
53
Questions??
● Did you learn something?
● Could you use it?
?
54. 7th Sutol Conference, November 2015
54
Contact info
Please feel free to contact me:
John Dalsgaard
Dalsgaard Data A/S
Solbjergvej 42
Solbjerg
DK-4270 Høng
Phone: +45 4914-1271
Email: john@dalsgaard-data.dk
www.dalsgaard-data.dk
Blog: www.dalsgaard-data.eu
Twitter: @john_dalsgaard, @DalsgaardDataAS
Skype: john_dalsgaard
55. 7th Sutol Conference, November 2015
55
Sources & links
● Wikipedia: Representational state transfer
● Learn REST: A Tutorial
● VIEW Tips: Brad Balassaitis on JSON-RPC
● IBM Domino Access Services 9.0.1
● Wikipedia: JSON / JavaScript Object Notation
● Introducing JSON
● JSON Tutorial
● REST services in Domino - Domino Access Services (PDF)
● Extension Library REST Services (PDF)
● Extension Library on OpenNTF (includes demo db)
● JSON test client: Chrome Postman
● Wrap an existing jar into a plugin
● Demo-DB on Bitbucket.org
56. 7th Sutol Conference, November 2015
56
Sources & links
● For the advanced – check these frameworks....
● Apache Wink (what DAS etc. is build on)
● … and Wink with OpenNTF Extension Library
● Jersey
● Specifikation: Java API for RESTful Services (JAX-RS)