Preface
Purpose
Audience
Organization
Using this manual
References to ABL compiler and run-time features
References to ABL data types
References to JavaScript classes and data types
Typographical conventions
Examples of syntax descriptions
Long syntax descriptions split across lines
Complex syntax descriptions with both required and optional elements
OpenEdge messages
Obtaining more information about OpenEdge messages
OpenEdge Mobile Overview
Run-time architecture
Supported Mobile App types
Client access to the AppServer using Mobile services
Access to AppServer classes and procedures using JavaScript objects
Access to Mobile services with user login sessions
Loading the JSDO catalog
Single sign-on to the AppServer
Development architecture and tools
Creating Mobile projects
Building Mobile services
Publishing Mobile services
Building Mobile Apps
Building Mobile Apps without the Mobile App Builder
Deployment options
Example: A Simple Mobile App
Setting preferences
Logging into the Mobile App Builder
Creating a new Mobile OpenEdge project
Connecting to the OpenEdge Database
Creating an include file
Creating a new Business Entity
Adding the Business Entity as a Mobile resource
Creating the Mobile App
Customizing App page UI
Adding a page event to start a login session
Adding JSDO Services to the Mobile App
Building and testing the Mobile App
Troubleshooting
Developer Studio
Mobile App Builder
Web Browser
General
Creating Mobile Services
Getting started with OpenEdge Mobile development
Starting up Developer Studio for Mobile development
Configuring and managing OpenEdge servers from Developer Studio
OpenEdge servers for Mobile development
Creating an OpenEdge Mobile project
Creating and testing a Mobile service
Coding AppServer services for OpenEdge Mobile
Singleton classes and procedures as Mobile resources
Coding ABL routines to implement a Mobile resource
Creating an ABL class with the New Business Entity wizard
Using existing ABL code with the Define Service Interface wizard
Coding the ABL for Mobile operations
Sample Business Entity with before-image support
Sample Business Entity without before-image support
Creating Mobile resources
Using the New Business Entity wizard
Using the Define Service Interface wizard
Creating and Modifying Mobile services
Using the New Mobile Service wizard
Modifying and deleting Mobile services
Publishing Mobile services for testing
URIs for accessing Mobile Web applications, services, and resources
Mobile URIs for Mobile App access
Mobile URIs for testing access from REST clients
Using a REST client to invoke a Mobile operation
Creating Mobile Apps using JSDOs
Creating a Mobile App from Developer Studio
Getting started with the Mobile App Builder
JSDO overview
Supporting OpenEdge classes and objects
How a JSDO maps to a Mobile resource
How JSDO local memory works
Table and field references
Working records
Record IDs
Methods of a JSDO and the JSRecord object
Asynchronous and synchronous execution
Comparing asynchronous and synchronous execution
Named events for asynchronous execution
Managing JSDO event subscriptions
Handling asynchronous and synchronous execution results
General error handling for Mobile operations
Properties of a JSDO
Requirements for using a JSDO
Creating a JSDO for a Mobile resource
Accessing built-in CRUD and submit operations
Read operation
Associated ABL routine: Read
Client JavaScript code: Read
Create operation
Associated ABL routine: Create
Client JavaScript code: Create
Update operation
Associated ABL routine: Update
Client JavaScript code: Update
Delete operation
Associated ABL routine: Delete
Client JavaScript code: Delete
Submit operation
Associated ABL routine: Submit
Client JavaScript code: Submit
Accessing non-built-in invoke operations
Asynchronous vs. synchronous method execution
Invocation method example
ABL invoke routine: GetCreditLimit( )
Client JavaScript code: Invoking GetCreditLimit( )
Managing user login sessions
Requirements for creating a user login session
Choosing the Web server authentication model
Whether to enable cookies
Choosing appropriate URIs for the App type and its deployment location
Using default Web pages to support Mobile App login
Handling changes in session online status
Using protected Web resources
Getting started with other HTML coding tools
Using the UIHelper class
Using a custom template
Publishing Mobile Apps for testing
Using JSDO Services in the Mobile App Builder
Setting up the sample Mobile service
Creating the JSDO Services for the Mobile service
Loading the JSDO catalog for the Mobile service
Selecting the Mobile resource from the JSDO catalog
Updating the JSDO Service settings for the resource
Adding a login session to access the JSDO
Adding the login code manually
Login code with user authentication
Building the sample UI
Steps for using JSDO Services
Using the Instance JSDO Service
Using the Read JSDO Service
Using the Read Service with a refresh button or field value change
Invoking the Read Service on a Page show event
Using the Row JSDO Service
Using the Create JSDO Service
Using the Create JSDO Service with the sample app
Using the Update JSDO Service
Using the Delete JSDO Service
Deleting a user-selected record
Deleting a newly added record (undo)
Using Invoke JSDO Services
Updating Invoke Services with response parameters
Invoking a custom read operation
Mapping the response for an Invoke Service
Disabling a list item based on a response value
Error handling
Error handling for the Update Service
Error handling for the Read Service
Deploying Mobile Applications
Deployment overview
Packaging and deploying Mobile services
Packaging and Deploying iOS Apps
Packaging iOS Apps
Testing the IPA directly on an iOS device
Deploying iOS Apps
Apple Developer
iOS Provisioning Portal
Certificates
App IDs
Devices
Provisioning Profiles
Packaging and Deploying Android Apps
Packaging Android Apps
Testing the APK directly on an Android device
Deploying Android Apps
Versioning your Mobile App
Package name
Signing your application
Packaging and Deploying Mobile Web Apps
Packaging Mobile Web Apps with Mobile services
Packaging Mobile Web Apps without Mobile services
Deploying Mobile Web Apps
Security considerations
Web server authentication models
Configuring features for an authentication model
Enabling SSO for a Web application
Defining user roles for a Web application
Setting access controls based on user roles
Cross-origin resource sharing (CORS)
SSL connections
Mobile device security
ABL to JavaScript Data Type Mapping
JavaScript data type overview
Data type mapping between JavaScript and ABL
JSDO Class and Object Reference
JSRecord object
progress.data.JSDO class
progress.data.Session class
progress.ui.UIHelper class
request object
JSDO Properties, Methods, and Events Reference
_errorString property
_id property
acceptChanges( ) method
acceptRowChanges( ) method
add( ) method
addCatalog( ) method
addItem( ) method
addRecords( ) method
afterCreate event
afterDelete event
afterFill event
afterInvoke event
afterSaveChanges event
afterUpdate event
assign( ) method (JSDO class)
assign( ) method (UIHelper class)
async property
authenticationModel property
autoApplyChanges property
autoSort property
batch property
beforeCreate event
beforeDelete event
beforeFill event
beforeInvoke event
beforeSaveChanges event
beforeUpdate event
caseSensitive property
catalogURIs property
clearItems( ) method
clientContextId property
connected property
data property
display( ) method
fill( ) method
find( ) method
findById( ) method
fnName property
foreach( ) method
getData( ) method
getErrorString( ) method
getFormFields( ) method
getFormRecord( ) method
getId( ) method
getListViewRecord( ) method
getSchema( ) method
invocation method
jsdo property
JSDOs property
jsrecord property
jsrecords property
lastSessionXHR property
login( ) method
loginHttpStatus property
loginResult property
loginTarget property
logout( ) method
name property
offline event
online event
onOpenRequest property
paramObj property
ping( ) method
pingInterval property
record property
rejectChanges( ) method
rejectRowChanges( ) method
remove( ) method
response property
saveChanges( ) method
services property
serviceURI property
setDetailPage( ) method
setFieldTemplate( ) method
setItemTemplate( ) method
setListView( ) method
setSortFields( ) method
setSortFn( ) method
showListView( ) method
sort( ) method
subscribe( ) method (JSDO class)
subscribe( ) method (Session class)
success property
table reference property (JSDO class)
table reference property (UIHelper class)
unsubscribe( ) method (JSDO class)
unsubscribe( ) method (Session class)
unsubscribeAll( ) method
useRelationships property
userName property
xhr property
OpenEdge® Development: Mobile Applications
xhr property