Inside the JSDO: Mobile and Web

Slides:



Advertisements
Similar presentations
12 October 2011 Andrew Brown IMu Technology EMu Global Users Group 12 October 2011 IMu Technology.
Advertisements

Server Access The REST of the Story David Cleary
Alpha Anywhere Product Roadmap and Overview
Real World Development using OpenEdge Mobile – some advanced features Brian C. Preece Ypsilon Software Ltd
REST support for B2B access to your AppServer PUG Challenge Americas Michael Jacobs : Senior Software Architect Edsel Garcia : Principal Software.
Progress Rollbase for OpenEdge Developers Introduction & Overview April 2014.
Rollbase for OpenEdge Partners
“Using OpenEdge, Corticon, Rollbase and Node.js to create a dynamic, rule- and model- driven Web-UI” Mike Liewehr AKIOMA Software.
Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
Real World Development using OpenEdge/ Rollbase Mobile – the basics Brian C. Preece Ypsilon Software Ltd
.NET Framework V3.5+ & RESTful web services Mike Taulty Developer & Platform Group Microsoft Ltd
REST assured A generic approach to REST EMEA PUG Challenge, Bronco Oostermeyer.
Scelta della tecnologia di presentazione dei dati.
Building a social networking portal on Windows Azure in 1 hour Saranya Sriram Developer Evangelist Microsoft, India.
What’s new in Progress Developer Studio for OpenEdge 11.0?
User Group 2015 Version 5 Features & Infrastructure Enhancements.
What Are My Choices for Building a Modern Web UI?
A New Object Model for WebSpeed and HTTP
The Easiest Way to Write Web Applications Jordi Sastre IT Architect, PSC May 2012.
ARCH12: QA Considerations - OERA ARCH-12: QA considerations for applications following the OpenEdge Reference Architecture SMAT-Team Tobago Thomas Hutegger.
OpenEdge Mobile An Introduction Shelley Chase Progress OpenEdge.
WaveMaker Visual AJAX Studio 4.0 Training Studio Overview.
What's New In Progress Developer Studio for OpenEdge?
© 2009 Progress Software Corporation 1 Click to Edit Master Subtitle Style Overview of OpenEdge® GUI for.NET Release 10.2A Jarmo Nieminen Senior Technical.
DEV-5: Introduction to WebSpeed ® Stephen Ferguson Sr. Training Program Manager.
Going Mobile with OpenEdge ® Basics Paul Guggenheim Paul Guggenheim & Associates.
Presentation. Recap A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer.
DEV-01 What’s New in Progress Dynamics ® Anthony Swindells Progress Fellow.
INT-5: Integrate over the Web with OpenEdge® Web Services
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
WebSphere Portal Technical Conference U.S Creating Rich Internet (AJAX) Applications with WebSphere Portlet Factory.
Telerik Software Academy ASP.NET Web Forms Telerik Software Academy ASP.NET Web Forms.
.  A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate.  Taken advantage of Spring’s multi layer injection.
OpenEdge ® GUI for.NET ™ Modernize your user interface with ABL Shelley Chase OpenEdge Architect Progress Software Corporation Session 113.
Copyright © 2012 UNICOM Systems, Inc. Confidential Information z/Ware Product Overview illustro Systems International A Division of UNICOM Global.
ARCH-07: Implementing the OpenEdge™ Reference Architecture – Part 2
ARCH-7: A Class-Based Implementation of the OpenEdge® Reference Architecture John Sadd Fellow and OpenEdge Evangelist Applied Technology.
ARCH-11: Building your Presentation with Classes John Sadd Fellow and OpenEdge Evangelist Sasha Kraljevic Principal TSE.
DEV-3: Getting Started with OpenEdge® Architect – Part II David Lund Sr. Training Program Manager Mark Hanley Sr. Manager Development Tools.
Page 1 Node.js - What? EMEA PUG Challenge, November 2015, Copenhagen 6-Nov-15 Node.js - What?
A New Object Model for WebSpeed and HTTP
A7: Architecting Your Application in OpenEdge ® 10 Mike Ormerod Applied Architect.
ARCH-7: Integrate this! SonicMQ® and the OpenEdge® Reference Architecture Christian Stiller Technical Architect.
Presentation.
DEV-5: Using ProDataSets™ in OpenEdge ® 10 Cheryl LaBarge Product Readiness.
Welcome to Azure App Services! Amie Seisay
Presentation Title Subtitle DSpace UI Prototype 7 Spring, Angular.js, and the DSpace REST API.
François Briard GS-AIS-HR Database Developers Forum, APEX 6th May 2014 APEX Mobile Application Development 101.
Professional Services NAME Roland de Pijper Principal Consultant Openedge TITLE TECHNICAL EXPERTISE.
Progress Rollbase for OpenEdge Developers Gus Bjorklund, Progress Software Richmond, VA, Raleigh, NC PUG Meetings April 8 and 9, 2014.
Spaso Lazarević Microsoft MVP Nova banka ad Banja Luka Building business application using Visual Studio 2013 LightSwitch.
Submitted by: Moran Mishan. Instructed by: Osnat (Ossi) Mokryn, Dr.
丁建文 國立高雄應用科大資管系副教授 兼任計網中心軟體發展組組長 跨平台行動應用軟體開發技術 : HTML5 & Mobile JavaScript Framework 暨南大學.
Build Hybrid Mobile Apps with Ionic, Angular, & Cordova Brian
Building a SaaS Satellite Application for an Existing OpenEdge Application in Less than 60 mins 29 th June 2016 Dr Ganesh Neelakanta Iyer Ganesh Cherivirala.
Kendo UI Builder A tool to modernize OpenEdge Apps June 2016 Shelley B. Chase.
Case Study: Application Modernization June 27, 2016 Rob Marshall.
Shelley B. Chase Software Fellow, Progress
Office 365 Development July 2014.
Extend Microsoft Dynamics 365 for Retail
Mobile App Trends: lifecycle, functions, and cognitive
Office 365 Development July 2014.
Office Power Hour New developer APIs and features for Apps for Office
ARCH-1: Application Architecture made Simple
C6: Introducing Native Invocation with the OpenEdge® Adapter for Sonic™ ESB Chris James Senior Consultant.
Pablo Castro Software Architect Microsoft Corporation
Office 365 Development.
4/19/2019 1:57 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Mark Quirk Head of Technology Developer & Platform Group
#01# ASP.NET Core Overview Design by: TEDU Trainer: Bach Ngoc Toan
Presentation transcript:

Inside the JSDO: Mobile and Web Shelley Chase, Senior Architect, Progress schase@progress.com November 2014

Inside The JSDO: Mobile and Web 1 2 3 4 5 JSDO JSDO Services Templates Deployment Other Web UI Frameworks

Inside The JSDO: Mobile and Web 1

JSDO – Progress JavaScript Data Object Client-side object Manages session connections Dataset (ProDataSet-like) purposed for disconnected clients Communicates using REST in XMLHttpRequest Session management – Anonymous, Basic and Form Offline/ Online events in the Session object An instance of “Cloud Data Object” – Open source Generic specification and catalog definition “Any client, any datasource”

JSDO with OpenEdge and Rollbase (and node.js, …) Access to the OpenEdge AppServer Business Entity - Dataset or Temp-table CRUD operations (Create, Read, Update, Delete) Invoke Submit JSON Before-Image support Access to Rollbase Server Objects and Views Table “only” Invoke (gets View data)

Runtime Architecture for OpenEdge Mobile Client-side App resides on device OE DB *.html *.js Internet HTTP (REST / JSON) Business Entity JSDO-BE Mapping JSDO ABL Header Data Detail Data Other Data Mobile Device Web Server OpenEdge AppServer PO ProDataSet Server-side n-tier architecture with Business Logic and data

OpenEdge Mobile Services: Business Entity Progress Developer Studio Express Project Wizard Business Entity Wizard Types Read-only CRUD CRUD + Submit JSON Before-Image support Automatically adds mobile annotations Progress.BusinessLogic.Business Entity Dataset or Temp-table schema You can also annotate existing code (persistent procedure or class)

Express Project Wizard: Database Table

Business Entity Wizard: Database Table or ProDataSet/ Temp-table

Business Entity – Generated Class

Business Entity – “Invoke” Methods

Runtime Deployment – OpenEdge AppServer

Runtime Deployment – OpenEdge Web Server (Tomcat)

Create, Read, Update, Delete + INVOKE + SUBMIT CRUD + I + S path: “” /method /method POST GET PUT DELETE PUT PUT Works on a schema: Array [ ] Temp-Table { ttCustomer: [ ] } DataSet { dsCustomer: { ttCustomer: [ ] } DataSet (Complex) { dsCustomer: { ttCustomer: [ ], … ttOrder: [ ] }

JSDO Catalog

JSDO Catalog

JSDO Catalog

JSDO Catalog

JSDO Catalog

JSDO – Progress JavaScript Data Object CRUD + Invoke + Submit add( ) (CREATE) fill( ) (READ) assign( ) (UPDATE) remove( ) (DELETE) method( ) (INVOKE) saveChanges( ) (SUBMIT) Properties autoSort autoApplyChanges caseSensitive name record useRelationships Methods addRecords( ) acceptChanges( ), rejectChanges( ) getData( ) getId( ) getSchema( ) sort( ) subscribe( ) unsubscribe( )

JSDO Operation Mapping Customer Order JSDO Operation Mapping Mobile App OE Web Server OpenEdge AppServer Customer JSDO Customer Catalog Customers.cls fill( ) Read operation ReadCustomers( ) remove( ) save Changes( ) Delete operation DeleteCustomers( ) add( ) saveChanges( ) Create operation CreateCustomers( ) assign( ) saveChanges( ) UpdateCustomers( ) Update operation Now we’re going a little deeper to see the JSDO methods that are called in a Mobile App to do specific operations on the AppServer. We have the familiar architectural structure, but using Customers to give it a more realistic flavor dealing with a specific set of operations. Thus we have a Customers JSDO, an OrderEntry Mobile service, and an ABL Customers.cls. <CLICK> In this case we want get the data for a set of customers from the AppServer to the Mobile App. We are working with the Customers JSDO, and calling the JSDO fill( ) method, which is used to request data. OpenEdge Mobile provides a set of built-in definitions for a set of CRUD operations. One of these operations is the READ operation, and that is represent here as one of the methods that is available in the Customers Resource, of the OrderEntry Mobile service. The JSDO fill( ) operation causes an HTTP Request to be sent to the Customer Resource, Read operation. The Read operation on the Web server - calls the ReadCustomers( ) method - in the Customers.cls class on the AppServer. The ReadCustomers( ) method is an ABL method that was written by a developer to implement the Read operation. In the session on the AppServer business entities we’ll see how the ReadCustomers.cls class is coded. In our example the ReadCustomers( ) method reads the customers from an OpenEdge database, using any filter that may have been provided in the call from the Mobile App. This data is returned back travelling by the same route. The Mobile App handles the returned data in the HTTP Response that was sent by the Read operation. I’ve expanded the display to show all of the built-in operations. This work the same way. We can see the methods that are called in the JSDO for each one. We’ll go into more detail on these methods in the session on the JSDO. The CURD operations for remove( ), add( ) and assign( ) – all operate on the local store, client side only. The saveChanges( ) sends the updates to the server. This completes the set of operations that have been defined. The last two operations are called using Invoke, which provides support for calling all singleton ABL routines, that are not built-in operations. Although getOrderHistory is the same name on both sides, the INVOKE in the JSDO is done by calling the method name in JavaScript. The name of the method in JavaScript does not need to be the same as the business entity name, since the catalog is the one that does the mapping. Note: remove( ) was selected for the JSDO operation since delete is a reserve word in the JSDO. ----------- Summary: The Mobile resource maps to an ABL class singleton object, which provides the ABL routines (methods, in this case) that implement the Mobile operations of that resource. Read/Delete/Create Customers( ) saveChanges( ) Submit operation getCreditHistory( ) GetCreditHistory( ) Invoke operation getOrderHistory( ) GetOrderHistory( ) Invoke operation

Included in Mobile App projects JSDO – Using the JSDO session = new progress.data.Session(); session.login(<url-to-service>, "", ""); session.addCatalog(<url-to-jsdo-catalog>); jsdo = new progress.data.JSDO({ name: 'dsCustomer' }); jsdo.subscribe('AfterFill', onAfterFillCustomers, this); jsdo.fill(); progress.jsdo.3.0.js Progress.data.Session Progress.data.JSDO Included in Mobile App projects

JSDO

1 Inside The JSDO: Mobile and Web Benefits JSDO Leverage Existing Business Logic

Inside The JSDO: Mobile and Web 1 2 JSDO Services

JSDO Services – Generated from JSDO Catalog Access to the JSDO from the Mobile App Builder JSDO - create object CRUD operations Create Read Update Delete Row – like buffer in ABL Invoke operations Custom business logic

Use JSDO Service for Visual Data Mapping

Create JSDO Service from Catalog

Add JSDO Services to UI

Drag-n-drop Data mapping

JSDO Services

1 2 Inside The JSDO: Mobile and Web Benefits JSDO JSDO Services Leverage Existing Business Logic Visual Mapping JSDO Services

Inside The JSDO: Mobile and Web 1 2 JSDO Services 3 Templates

Screen Templates – Reusable UI, corporate look and feel, logos Project Templates Phone App / Tablet App Session-enabled Phone App / Tablet App Express Project UIHelper (dynamic data binding) JSDO Services (generated data mapping) Screen Templates – Reusable UI, corporate look and feel, logos Custom Components – Reusable UI and behavior

UIHelper UI based on HTML (listviews built using <ul> + <li>) JQuery Mobile JQuery Mobile using the Mobile App Builder JavaScript + HTML

UIHelper – Using the UIHelper session = new progress.data.Session(); session.login(<url-to-service>, "", ""); session.addCatalog(<url-to-jsdo-catalog>); jsdo = new progress.data.JSDO({ name: 'dsCustomer' }); jsdo.subscribe('AfterFill', onAfterFillCustomers, this); uihelper = new progress.ui.UIHelper({ jsdo: jsdo }); uihelper.setDetailPage({ name: "custdetail“ }); uihelper.setListView({ name: 'listview', format: '{CustNum}<br>{Name}<br>{State}<br>{Country}', autoLink: true } ); jsdo.fill();

Templates

1 2 3 Inside The JSDO: Mobile and Web Benefits JSDO JSDO Services Leverage Existing Business Logic Visual Mapping Increase Productivity, Quicker Time to Market JSDO Services 3 Templates

1 2 4 3 Inside The JSDO: Mobile and Web JSDO JSDO Services Other Web UI Frameworks Templates

Other Web UI Frameworks Angular.js Sencha Touch Telerik Kendo UI Knockout.js Qooxdoo Dojo Toolkit

Other Web Frameworks – Server side uses Node.js XMLHttpRequest = require("./XMLHttpRequest.js").XMLHttpRequest; require("./progress.jsdo.3.0.js"); session = new progress.data.Session(); session.login(<url-to-service>, "", ""); session.addCatalog(<url-to-jsdo-catalog>); jsdo = new progress.data.JSDO({ name: 'dsCustomer' }); jsdo.subscribe('AfterFill', onAfterFillCustomers, this); jsdo.fill(); function onAfterFillCustomers(jsdo, success, request) { jsdo.eCustomer.foreach(function(customer) { console.log(jsdo.eCustomer.Name); }); }

Other Web Frameworks

1 2 4 3 Inside The JSDO: Mobile and Web Benefits JSDO JSDO Services Leverage Existing Business Logic Visual Mapping Increase Productivity, Quicker Time to Market Flexible JSDO Services 4 3 Other Web UI Frameworks Templates

1 2 3 4 5 Inside The JSDO: Mobile and Web JSDO JSDO Services Templates Deployment Other Web UI Frameworks

Deployment

Deployment

Deployment

Deployment

Deployment

Deployment

Inside The JSDO: Mobile and Web 1 2 3 4 5 JSDO JSDO Services Templates Deployment Other Web UI Frameworks Benefits Leverage Existing Business Logic Visual Mapping Increase Productivity, Quicker Time to Market Flexible Write Once, Deploy Everywhere

Inside The JSDO: Mobile and Web 1 2 3 4 5 JSDO JSDO Services Templates Deployment Other Web UI Frameworks Benefits Leverage Existing Business Logic Visual Mapping Increase Productivity, Quicker Time to Market Flexible Write Once, Deploy Everywhere

Extra Resources Search Rollbase documentation: http://documentation.progress.com/output/Rollbase/index.html Search the Community: OpenEdge 11.4 Production Documentation Mobile App Builder documentation: http://docs.mobile.rollbase.com/ JSDO Examples: http://oemobiledemo.progress.com/jsdo/example001.html http://oemobiledemo.progress.com/jsdo/example007.html

Write Once, Run Anywhere Portability with the Benefits of Native Applications and Web The Easiest Way to Build OpenEdge and Rollbase Applications Supporting Mobile Devices, End-to-end