510 likes | 666 Views
PWB513: Building Database and Synchronization Applications with Pocket PowerBuilder. Ian Thain Technical Evangelist / Software Engineer ian.thain@sybase.com August 15-19, 2004. Ian Thain - PocketBuilder Evangelist ITSG Evangelist Team, Sybase Inc. ian.thain@sybase.com.
E N D
PWB513: Building Database and Synchronization Applications with Pocket PowerBuilder Ian Thain Technical Evangelist / Software Engineer ian.thain@sybase.com August 15-19, 2004
Ian Thain - PocketBuilder EvangelistITSG Evangelist Team, Sybase Inc.ian.thain@sybase.com
The Enterprise. Unwired. Industry and Cross Platform Solutions Manage Information Unwire Information Unwire People • Adaptive Server Enterprise • Adaptive Server Anywhere • Sybase IQ • Dynamic Archive • Dynamic ODS • Replication Server • OpenSwitch • Mirror Activator • PowerDesigner • Connectivity Options • EAServer • Industry Warehouse Studio • Unwired Accelerator • Unwired Orchestrator • Unwired Toolkit • Enterprise Portal • Real Time Data Services • SQL Anywhere Studio • M-Business Anywhere • Pylon Family (Mobile Email) • Mobile Sales • XcelleNet Frontline Solutions • PocketBuilder • PowerBuilder Family • AvantGo Sybase Workspace
Agenda • Introduction • Unwired Enterprise • MobiLink • Developing An Application • Demonstrations
Introduction • Over the last 11 years we have seen PowerBuilder grow and develop into the tool it is today. Originally for Client Server, then incorporating Component Development & RAD Thin Client Development. • Also over the last 11 years we have seen increasing developments in DataWindow technology that has seen it appear (or not) as a non-visual DataStore, Java DataWindow and HTML DataWindow • DataWindows EVERYWHERE? Well nearly!
Introduction • "Don't think big…Think Small!!" • Pocket PowerBuilder is now coming to aid corporate development of Pocket PC applications, brining all the benefits • RAD 4 GL and even the DataWindow technology. • So we really can now say, DataWindows EVERYWHERE!!!!
JOLT • Recognizing the emergence of Mobile Development Tools in today’s wireless business environment, CMP Media's Software Development magazine has awarded a 14th Annual Productivity Award to Sybase Pocket PowerBuilder software. Sybase Pocket PowerBuilder was recognized as one of the best products or technologies in the award's Mobile Development Tools. • The awards were announced March 17 at the Santa Clara Convention Center in Santa Clara, California.
Unwired Enterprise • Liquidity + Mobility = Unwired Enterprise • Liquidity - Free flowing information with economic value • Mobility - Freedom to work anytime, anywhere
Enterprise Mobile Applications • Key areas for a mobile application • Usability (including intuitiveness, efficiency, ease of use & reliability) • Innovation (including New Functionality) – maybe from using mobile technologies • BPI (including extending existing systems) – it should fit well into existing business processes • ROI – As always a return on investment is a major factor
Enterprise Mobile Applications • Potential Systems for Mobile Applications • Data Collection • Inventory Management • Customer Relationship Management • Event Tracking • Sales Force Automation • Healthcare • Field Force Automation • Sales Force Automation • Mobile Healthcare
Mobile Smart Client • Mobile Smart Client • Application where client side business logic is executed on device • Persistent data storage on the device • Application can be executed at any time, even without a wireless connection • Integration to the enterprise is typically provided via synchronization • Client application communicates data to the back end via a synchronization server
Different Functionality • Synchronization • Pocket PowerBuilder also surpasses PowerBuilder with the introduction of a MobiLink wizard • Generates PowerScript code (NVO’s) & Windows for within your application, to interact with a MobiLink Server.
Different Functionality • Adaptive Server Anywhere mobile database • Uses full data storage capabilities of Adaptive Server Anywhere on Windows CE client • Database access via ODBC • MobiLink data synchronization • MobiLink bi-directional data synchronization used to integrate with other enterprise databases (Sybase ASE and ASA, Oracle, MS SQL Server, IBM DB2) • New component to manage synchronization properties & maintenance of synchronization
Database Objects • A Database Object in the Remote Database data to be synchronized • Tables can be synchronized • Entirely • Subset of Columns • Subset of Rows • Subset of Columns & Rows
Publication • Define a Publication • The publications determine what information is shared among which database • Keep the number of publications small. • In particular, try not to reference the same table in many different publications. • The work the database server needs to do is proportional to the number of publications. • Keeping the number low and making effective use of subscriptions lightens the load on the database server. • Group publications logically • If there is a table that every remote user requires, such as a price list table, make a separate publication for that table. Make one publication for each table where the data can be partitioned by a column value.
Synchronization User • Define a Synchronization User • MobiLink user name and password to connect to a MobiLink synchronization server
Synchronization Subscription • Define a Synchronization Subscription • The subscriptions determine what information each user receives • A synchronization subscription links a particular MobiLink user with a publication. • It can also carry other information needed for synchronization. • For example, you can specify the address of the MobiLink server and any desired options for a synchronization subscription. • Values for a specific synchronization subscription override those set for MobiLink users.
Remote Database • Located on the mobile device • Can be built with • Sybase ASA • UltraLite • Must contain at least one Publication to define which tables will be synchronized • Must contain at least one Synchronization Subscription to link a Synchronization user with a set of Publications • Typically a subset of a consolidated database • Data specific or that mobile user
Consolidated Database • Central / Master DataStore with which the remote synchronizes with • Can be built with • Sybase ASA • Sybase ASE • Oracle • MS SQL Server • IBM DB2 • Typically an existing Enterprise Database
Consolidated Database • MobiLink uses system tables in the Consolidated database to store • Synchronization scripts • Synchronization progress & status information • Synchronization User information • Automatically created in ASA Database • MobiLink Setup scripts for other Consolidated Databases • MobiLink uses ODBC to connect to the Consolidated DB
Synchronization Scripts • During synchronization MobiLink progresses through a series of events • Each event can be associated with once synchronization script • Synchronization scripts • Direct the data flow during the process • Allow tasks to be performed at various points • Optimize performance • Written in the native SQL of the Consolidated Database • Java • .NET • Can use versioning • Remote must specify the version of the scripts to use
Synchronization Scripts • download_cursor • SELECT ASSESSOR_ID, ASSESSOR_FNAME, ASSESSOR_LNAME, ASSESSOR_EMAIL, ASSESSOR_TEL FROM ASSESSOR WHERE LAST_MODIFIED >= ? AND ASSESSOR_ID = ? • Event parameters are optional only if no subsequent parameters are specified. You must use parameter 1 if you want to use parameter 2. Item Parameter Description 1 last_download TIMESTAMP 2 ml_username VARCHAR(128) • The last_download timestamp is the value obtained from the consolidated database during the last successful synchronization immediately prior to the download phase. • If the current user has never synchronized successfully, this value is set to 1900-01-01.
Synchronization Scripts • upload_Insert • INSERT INTO ASSESSOR ( ASSESSOR_ID, ASSESSOR_FNAME, ASSESSOR_LNAME, ASSESSOR_EMAIL, ASSESSOR_TEL ) VALUES ( ?, ?, ?, ?, ? ) • upload_update • UPDATE ASSESSOR SET ASSESSOR_FNAME = ?, ASSESSOR_LNAME = ?, ASSESSOR_EMAIL = ?, ASSESSOR_TEL = ? WHERE ASSESSOR_ID = ? • upload_delete • etc
MobiLink Server • Connects to the Consolidated Database • Waits for Synchronization requests from Remote DB • Processes data uploaded from the Remote DB • Selects data from the Consolidated Database for download to the remote
dbmlsync • Synchronization is initiated by a client application via the dbmlsync utility from ASA Remote databases • TCP/IP, SSL • HTTP/HTTPS • ActiveSync • Read Database engine transaction log • Builds an upstream with the a summary of the changes to the specific publication since the last synchronization • Applies the downstream from the MobiLink server to the Remote Database
MobiLink – ASA Synchronization Upload dbmlsync Download MobiLink Acknowledge Download ODBC Consolidated Database Remote ASA Database
MobiLink – ASA Synchronization Upload dbmlsync Download MobiLink Acknowledge Download Upload • ASA or UltraLite keep track of all changes since previous synchronization • All changes are sent in a single upload stream • MobiLink applies changes in a single transaction ODBC Consolidated Database Remote ASA Database
MobiLink – ASA Synchronization Upload dbmlsync Download MobiLink Acknowledge Download ODBC • Download • Scripts in the consolidated database determine changes that need to be download • All changes are sent in a single download stream Consolidated Database Remote ASA Database
MobiLink – ASA Synchronization Upload dbmlsync Download MobiLink Acknowledge Download ODBC Acknowledge Download • Optional Consolidated Database Remote ASA Database
MobiLink - Quick Start • Files located in \Samples\MobiLink\Autoscripting • Create and setup consolidated and remote databases • Use Sybase database creation wizard • Create ODBC datasources • Populate databases with ISQL • Run setup script appropriate for consolidated DB
MobiLink - Quick Start • Identify tables and columns for synchronization • Add Publications, ML User and Subscriptions on Remote DB – DB Specific for that ML User • Add Tables and Users for Synchronization on Consolidated DB , (Synchronization Scripts – see next slide)
MobiLink - Quick Start • Write scripts to upload and download data • Use –za switch on the MobiLink Server • and ‘SendColumnNames=on’ on the MobiLink client • to automatically generate scripts for you • Or Use…ulinit (Ultralite Analyzer) • ulinit -c "dsn=IA;uid=DBA;pwd=SQL" -f deleteme.usm -n IA_Pub -s IA_Pub -m default • Write Scripts and hold in creation SQL Batch files for Consolidated DB • You are now synchronizing!
MobiLink - Quick Start @echo off SETLOCAL set DSN=IA set ASA_ANY=%ASANY9% set ASA_CMD=dbmlsrv9.exe dbmlstop -w %DSN% if exist dbmlsrv.mle del dbmlsrv.mle set ML_parms=-v -zs %DSN% -notifier -c dsn=%DSN% -fr -q -x tcpip(port=2460) start %ASA_CMD% %ML_parms% ENDLOCAL
Developing an Application • When developing a Mobile Application always work against the Remote Database • Best to deploy an empty Remote Database and fill with data on the first Sync. • Use PPB to generate Synchronization logic in NVO’s
Developing an Application • DSN on mobile device specifies which ASA Database the app uses [ODBC] uid=dba pwd=sql enginename=PPBDemos databasename=IA_remote databasefile=\Program Files\PPBDemos\IA\IA_remote.db start=\Program Files\Sybase\ASA\dbsrv9.exe -q driver=dbodbc9.dll • Resides on root of the PPC Device
New Features - SIS • Server Initiated Synchronization / Message Push • Server-initiated synchronization allows you to initiate MobiLink synchronization from the consolidated database. • This means you can push data updates to remote databases, as well as cause remote databases to upload data to the consolidated database. • Includes the new ASA 9.0 • Build #1271 includes ‘Server Initiated Sync’ message post to a PPB app. This is an EBF to ASA 9.0.0
New Features - SIS • Notifier on Server • -notifier flag on dbmlsrv9.exe • Uses a config file
New Features - SIS #------------------------------------ # config.notifier #------------------------------------ # This setup file configure and enables two objects: # 1. A UDP gateway called Gate2 # 2. A Notifier called "Simple" # # This file does not contain full descriptions of properties. # Full descriptions are available in %asany%\MobiLink\template.notifier. # # Common settings # verbosity = 2 #
New Features - SIS # Notifier configuration -- Simple # Notifier(Simple).enable = yes Notifier(Simple).isolation = Notifier(Simple).connect_string = Notifier(Simple).poll_every = 3 Notifier(Simple).gui = off Notifier(Simple).begin_connection = Notifier(Simple).begin_poll = Notifier(Simple).shutdown_query = Notifier(Simple).request_cursor = select req_id, gateway, subject, content, \ address, resend_minute, minute_to_live from PushRequest Notifier(Simple).request_delete = delete from PushRequest where req_id = ? Notifier(Simple).end_poll = Notifier(Simple).end_connection =
New Features - SIS # # SMTP gateway configuration -- Gate1 (not enabled by default in this sample) # SMTP(Gate1).enable = no SMTP(Gate1).server = SMTP(Gate1).user = SMTP(Gate1).password = SMTP(Gate1).sender = # # UDP gateway configuration -- Gate2 # UDP(Gate2).enable = yes UDP(Gate2).sender = UDP(Gate2).sender_port = UDP(Gate2).listener_port =
New Features - SIS • Listener Utility on PPC 55#"\Program Files\Sybase\ASA\dblsn.exe" @IA_dblsn.txt
New Features - SIS • Listener Configuration file on PPC #---- SIS_dblsn.txt -------------------------------------------- # This is the default argument file for dblsn.exe #------------------------------------------------------------------------------ # Verbosity level 2 -v2 #------------------------------------------------------------------------------ # Show notification messages in console and log -m #------------------------------------------------------------------------------ # Polling interval of 6 seconds -i 6 #------------------------------------------------------------------------------ # Truncate, then write output to dblsn.log -ot dblsn.log • Resides on root folder of PPC device
New Features - SIS • Message Handler for PPB App • 1024 – 1098 / PBM_Custom01 – PBM_Custom75 # First message handler # - Only applies to messages starting with [shutdown] # - The action is to shut down the MobiLink listener -l " message_start=[shutdown]; action='DBLSN FULL SHUTDOWN' " #------------------------------------------------------------------------------ # Message handler -l " message_start=[1024]; action='post 1024 to IA App'; continue=yes; " #------------------------------------------------------------------------------
New Features - SIS • Example PPB Code
New Features in PPB • Enhancements to MobiLink features
Demonstration Insurance Assessor App (Field Force Automation) Currently a manual procedure Paper Notebooks Camera Input into back office system at EOD Dev Team PB Experience PD Experience PPB App is nearly complete.
Conclusions • Pocket PowerBuilder used along with ASA for CE and MobiLink can create very powerful Smart Client Applications • Data can be synchronized back to the Enterprise Database
Pocket PowerBuilder Code Examples • Pocket PowerBuilder code examples can be found on the CodeXchange, http://pocketpb.codexchange.sybase.com