`(12) Patent Application Publication
`Baitalmal et al.
`
`(10) Pub. No.: US 2009/0037337 Al
`(43) Pub. Date: Feb. 5, 2009
`
`US 20090037337A1
`
`(63)
`
`(60)
`
`Related U.S. Application Data
`Continnation-in-part of application No. 12/102,854,
`filed on Apr. 14, 2008.
`Provisional application No. 60/962,877, filed on Jul.
`31,2007.
`Publication Classification
`
`(54) SOFTWARE LICENSING AND
`ENFORCEMENT SYSTEM
`
`(76) Inventors:
`
`Ahmad Baitalmal. Renton, WA
`(US); Daniel J. Koike, North Bend,
`WA (US): Jon K. Collette,
`Normandy Park, WA (US); Casey
`Tompkins, Woodinville, WA (US)
`
`Correspondence Address:
`MORGAN, LEWIS & BOCKIUS, LLP.
`2 PALO ALTO SQUARE, 3000 EL CAMINO
`REAL
`PALO ALTO, CA 94306 (US)
`
`(21) Appl.No.: 12/182,800
`
`(22) Filed: Jul. 30, 2008
`
`(51)
`
`(2006.01)
`
`705/59
`
`Int. Cl.
`G06Q 99/00
`(52)
`U.S. Cl
`(57)
`ABSTRACT
`In an embodiment, a computer implemented method is
`described. The method is performed at one or more servers,
`hosting a marketplace application. A software application is
`received from a vendor for distribution. License terms are
`generated in response to a selection by the vendor from
`options provided by the marketplace application. The license
`terms are associated with the software application. The soft-
`ware application is made available for distribution through
`the marketplace application, in accordance with the license
`terms.
`
`200
`
`Client 21Q-B tAOP mode)
`
`Client 21Q-A (networked mode)
`
`LBrowser ZI2-
`LTCPilP_Comms_ _ 220
`LLQcaJ.Apf^cation _ 214_
`! Local Database 216 _
`I s"tack~2l"g
`l_S ^nchjon izatjo n_App_220
`!_Jraffle Manapeme_nt 222,
`224
`LLicense_Authe n.
`LCQgy_Pj!otJ^a_Sec._226
`
`| [ Local Web Server 228 J
`
`212 |
`1 Browser
`220 |
`1 TCP/IP Comms
`214 |
`1 Local Application
`[_ Local Database 216 |
`1 Stack 218
`|
`I Synchronization App 220 |
`I Traffic Management 222 |
`I License Authen.
`224 |
`Copy Prot, Data Sec. 226
`
`Application Server
`130
`
`Auxiliary
`Services
`250
`
`I LDAP |
`I Gateway
`
`242
`
`User
`Database
`270
`- k
`
`y^280/
`E-Commerce Services
`I Process payment 282 I
`| Authenticate license 2841
`286 |
`| Serve Application
`
`Synchronization, Access & Query
`Engine 260
`Conflict Management
`I Record Increment I
`
`Applications Database
`262
`
`Ex. 2002, Page 1 of 238
`
`
`
`Patent Application Publication
`
`Feb. 5,2009 Sheet 1 of 178 US 2009/0037337 A1
`
`Network 100
`
`Client 11Q-A
`
`User A
`(112-A)
`
`Client
`Application
`114-A
`
`Client 110-B
`
`User B
`(112-B)
`
`Client
`Application
`114-B
`
`• • •
`
`Client 11Q-N
`
`User N
`(112-N)
`
`Client
`Application
`114-N
`
`Network 120
`
`Application
`Server
`130-A
`
`Application
`Server
`130-B
`
`• • •
`
`Application
`Server
`130-N
`
`Figure 1
`
`Ex. 2002, Page 2 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 2 of 178 US 2009/0037337 A1
`
`200
`
`Client 21Q-B (AOP mode)
`
`Client 210-A (networked mode)
`
`_Brgwser 212
`Jr^pTTp^ommsr ~ 225"
`l_Local_Ag|3lication 214
`Local Database 216 _
`
`_ Sta"ck"218
`l_S yn ch ron i za tjo mAgp _220^
`
`Jraffjc Majia^emerit 222
`License Authen. 224
`I Copy Prot, Data Sec. 226
` il
`| | Local Web Server 228 J
`
`Browser 212
`
`TcP/IP^ommsJ"^22Q^
`
`Local Application 214
`
`Local Database 216
`
`Stack 218
`
`Synchronization App 220
`
`' Traffic Management 222
`
`License Authen. 224
`
`[Copy Prot, Data Sec. 226
`
`Network 120
`
`Application Server
`130
`
`I LDAP |
`I Gateway
`
`242
`
`Auxiliary
`Services
`250
`
`Web Server
`Engine
`246
`
`User
`Database
`270
`
`i
`
`r280/
`E-Commerce Services
`Process payment 282
`
`Authenticate license 284
`
`Serve Application
`
`286
`
`Synchronization. Access & Query
`Engine 260
`Conflict Management
`Record Increment
`
`t \
`
`Applications Database
`262
`
`Figure 2
`
`Ex. 2002, Page 3 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 3 of 178 US 2009/0037337 A1
`
`Application
`Database-
`300
`
`Application 1
`Record 1
`
`302
`308
`
`•
`•
`•
`
`Record N
`
`310
`
`Application 2
`Record 1
`
`304
`312
`
`Record N 314
`
`Application M 306
`Record 1 316
`
`App Name 330
`
`App Title
`
`332
`
`App Host
`
`334
`
`App User
`
`336
`
`App Pass
`
`338
`
`Record Metadata
`350
`
`Record Log 352
`
`Record content 1
`354-1
`
`Record N 318
`
`Record content N
`354-N
`
`Application Index 360 |
`[ECRM 370 I
`[Medja Wiki___2Z2 I
`|_phpBB3 SZT"
`^Projects 376
`l_Sugar CRM 378
`i Word press 380
`
`Figure 3
`
`Ex. 2002, Page 4 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 4 of 178 US 2009/0037337 A1
`
`User
`Database-
`400
`
`User Record
`402-1
`
`User Record
`402-2
`
`User Record
`402-N
`
`470
`
`472
`
`Map
`I
`
`User ID
`
`Rules for
`contacts/queries;
`Stored locally or
`in separate
`database
`User-Rule 1
`
`400-1
`
`Contacts
`Sales Opps
`Filter DB info
`Rules
`Tasks
`Appointments
`•
`
`User-Rule 2
`460-2
`
`User Rule N
`460-N
`
`User-Mgmt
`462-1
`User Admin
`rights
`User access
`privileges
`
`User Record 402
`
`User ID
`
`410
`
`User Metadata 412
`
`Query/Contact List
`414
`
`User Client Device
`416
`ID/Type
`User Preferences
`418
`User Authentication
`Information
`420
`User Personal
`422
`Information
`430
`Name
`432
`Phone
`434
`436
`Office
`Department 438
`User Enabled
`424
`Features
`440
`APP 1
`442
`APP N
`444
`EDE
`Devkit
`446
`Schedule events
`448
`User Mgmt 450
`452
`AOP
`454
`Distribute
`456
`Integrate
`
`Figure 4
`
`Ex. 2002, Page 5 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 5 of 178 US 2009/0037337 A1
`
`Sync Engine
`500
`
`Server Side
`
`Sync Data 502
`
`Sync Operations 508
`
`Files 562
`
`App 510
`App Table 512
`App Column 514
`Primary Key 516
`
`Conflict Management
`504
`
`Record Increment
`520
`
`Synch Rules 506
`
`Developer Rules 522
`
`Default Rules 524
`
`Create Acc 54Q
`
`Create DBs 542
`
`Create Acc Dir 544
`
`Install EAS 546
`
`Setup Scheduler
` 548
`Connect to EMS
`Client 550
`
`Setup 552
`
`Schema 554
`
`Files 556
`
`Rules 558
`
`Data 560
`
`Figure 5
`
`Ex. 2002, Page 6 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 6 of 178 US 2009/0037337 A1
`
`Sync Engine
`600
`
`Client Side
`
`Sync Data 602
`
`Sync Operations 608
`
`Files 662
`
`App 610
`
`App Table 612
`
`App Column 614
`
`Primary Key 616
`
`Create Acc 640
`
`Create DBs 642
`
`Create Acc Dir 644
`
`Install EAS 646
`
`Setup Scheduler
` 648
`Connect to EMS
`Server 650
`
`Setup
`
`652
`
`Schema 654
`
`Files
`
`Rules
`
`Data
`
`656
`
`658
`
`660
`
`Figure 6
`
`Ex. 2002, Page 7 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 7 of 178 US 2009/0037337 A1
`
`Application
`Server 700
`
`V.
`
`Memory 710
`Operating System
`Network Communication Module
`LDAP Gateway Module
`
`I Display I
`i m I
`
`CPU(s)
`702
`
`708-
`
`Comms
`Interface
`704
`
`| Input |
`I Device ■
`
`Synchronization, Access & Query Module
`Synchronization Module
`Synchronize Files Module
`Access Database Module
`Search/Query Database Module
`Conflict Management Module
`Record Increment Module
`
`User Database
`E-Commerce Services Module
`Process Payment Module
`Authenticate License Module
`Serve Application Module
`Web Server Engine Module
`Web Development Environment Module
`LAMP (Linux, Apache, MySQL, PHP)
`Module etc.; also
`WAMP (Windows, Apa, MySQL, PHP);
`LAPP (Linux, Apa, PostgreSQL, PHP);
`Tomcat; etc.
`Python Module, Ruby. Ruby on Rails, etc.
`
`Application Database Management Module
`Add/Delete Application Module
`Synch Application Module
`Application Database Access Module
`
`User Database Management Module
`Add/Delete User Module
`Edit User Information Module
`User Authentication Module
`User Permissions Module
`
`Application Database
`
`Auxiliary Services Module(s)
`
`Figure 7
`
`-711
`-712
`■714
`-716
`
`'718
`"719
`"720
`"722
`'724
`
`"726
`-728
`'730
`732
`"734
`"736
`-738
`
`740
`■741
`
`-742
`-744
`-746
`-748
`-750
`
`^ 754
`-756
`_ 758
`_ 760
`_ 762
`
`- 764
`
`-766
`
`Ex. 2002, Page 8 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 8 of 178 US 2009/0037337 A1
`
`Client 800
`
`Display
`806
`
`CPU(s)
`802
`
`808
`
`Network
`Interface
`804
`
`Input
`Device
`804
`
`Memory 810
`
`Operating System
`Network Communication Module
`DNS Support Module
`Receive and Process User Input Module
`Display Module
`Browser Engine Module
`Synchronization, Access & Query Module
`Synchronize Files Module
`Synchronization Module
`Local Copy of Database Module
`Edit Local Database Module
`E-Commerce Client Module
`Download & Enable Application Module
`Authenticate License Module
`Copy Protection and Data Security Mod.
`Local Web Server Engine Module
`Web Development Envt. Module,
`Software Stack
`LAMP (Linux, Apache, MySQL, PHP)
`Module etc.; also
`WAMP (Windows, Apa, MySQL, PHP);
`LAPP (Linux, Apa, PostgreSQL, PHP);
`Tomcat; etc.
`Framework Language Module
`Python Module, Ruby, Ruby on Rails
`AOP Framework Module
`Traffic Management Module
`Local Application Database Module
`Add/Delete Record Module
`Application Database Access Module
`Application Database Query Module
`
`Local User Database Module
`Add Delete User Module
`Edit User Information Module
`User Authentication Module
`User Permissions Module
`Applications database
`User database
`
`Figure 8
`
`Ex. 2002, Page 9 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 9 of 178 US 2009/0037337 A1
`
`900
`\
`
`Users and Groups
`
`User A
`
`Belongs to
`Group A
`
`Memberships
`Table in
`Account
`
`User B
`
`Is an Admin of
`Group A
`
`Administrator
`privileges
`
`Group A
`
`User A's
`information is
`added to the user
`out log table for
`User B.
`
`This determines if
`someone else can
`see User A's data.
`
`E.g. Manager for
`User A can see
`contacts for sales
`reps that report to
`her.
`
`Figure 9
`
`Ex. 2002, Page 10 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 10 of 178 US 2009/0037337 A1
`
`Application Server 1005
`
`r
`^T) Web-based Application
`1006
`
`E.g., http://app1.com
`
`W
`
`Client 1001
`
`®
`
`Network
`120
`
`1000
`/
`
`Browser Engine 1003
`
`E.g., http://app1.com
`
`AOP Framework 1010
`
`®
`®/
`
`®
`
`Web-based
`Application
`1007
`
`Software Stack 1004
`
`a
`
`Operating System 1002
`
`®
`
`Figure 10
`
`Ex. 2002, Page 11 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 11 of 178 US 2009/0037337 A1
`
`1100 ^
`At the client, with AOP running, receive a user input
`
`1102
`
`0
`
`At the client, start a browser application.
`
`i
`
`'
`At the client, receive a user request to visit a web page or web-based
`application.
`0
`[ User request includes a URL. 1
`
`(Optional) At the client, detect if a connection cannot be made to the |
`i web page or web-based application (e.g., the user may be offline and may not i
`I have Internet connection). i
`i i
`
`1108
`
`At the client, local web server responds to request.
`
`&
`
`i®
`
`0
`
`(Optional) At the client, run the web-based application locally on
`the client, using the client operating system.
`
`(Optional) At the client, run open source software (e.g. Software
`Stack) in conjunction with the AOP framework.
`
`) (Optional) At the client, receive a user request to navigate browser
`to a web address
`(e.g., a virtual AOP web address : http://app1 .com.aop)
`Navigate the browser to the local virtual instance of the web page
`corresponding to the virtual AOP web address.
`
`( 9 J (Optional) At the client, detect when a connection can be made to
`aremote web page or server corresponding to the local virtual instance.
`
`_^nchronize_the AOP application vyith Ihejemote web pag_e_qr server^ _
`
`Figure 11
`
`Ex. 2002, Page 12 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 12 of 178 US 2009/0037337 A1
`
`1200
`
`AOP Installation
`
`Download
`Software
`Packages
`1201
`
`G
`
`G:
`
`Download AOP
`Package
`1202
`
`Install Software 1203
`Python and Libraries
`Apache
`MySQL
`PostgreSQL
`Tomcat
`
`c/T)
`(Software stack fi
`download to clientp^^
`
`/Ov Start AOP Install
` 1204
`
`Create an Account
`1205
`
`Connect to Server 1207
`Authenticate user
`Verify AOP permissions
`Process Request
`
`Network
`120
`
`Initialize account 1206
`
`®
`
`-0-
`
`$
`
`AOP App Setup
`1?00
`
`Figure 12
`
`Ex. 2002, Page 13 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 13 of 178 US 2009/0037337 A1
`
`1300 - ^
`At the client, download software packages.
`
`'
`At the client, download an AOP package including an installer for AOP
`framework.
`
`1301
`
`1302
`
`■
`
`At the client, install the software packages.
`
`, 1303
`
`■
`At the client, start AOP package installation.
`
`©
`
`©
`
`©
`
`0
`
`- 1304
`
`, - 1305
`
`1306
`
`1307
`
`1308
`
`At the client, collect (e.g., from user) web application account
`information.
`©
`i Account information includes domain, username and password. !
`i
`
`T
`At the client, initialize account using AOP application.
`
`At the client, connect to a server, authenticate web application account
`information, and verify AOP permissions.
`
`At the client, receive from server information required to complete the
`application setup.
`
`®
`
`©
`
`©
`
`©
`
`At the client, complete the application setup process with the
`application fully synchronized with the web application on the server.
`
`. 1309
`
`Figure 13
`
`Ex. 2002, Page 14 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 14 of 178 US 2009/0037337 A1
`
`Connect to Server
`1403
`Authenticate user
`Verify AOP permissions
`Process Request
`
`Synchronizer
`
`Network
`120
`
`1400
`
`AOP Initialize Account
`
`Download 1408
`Download.Etelos.Com
`-Download packages
`-e.g., EAS, Zend,
`-Famfamfam,
`-phpMyAdmin,
`-phpPGAdmin,
`-WebSvn
`
`0"
`AOP 1401
`
`1405
`
`Vhost
`Write out
`.aopvhost.conf
`Files per domain
`
`Ki>
`
`1406
`
`AOP Ini File
`Configuration
`-Authentication
`-Appname
`-Vhost
`-Database
`-Aliases
`-Domain
`
`Packages 1414
`
`Account 1404
`
`Database
`1408
`
`EMS 1402
`
`Synchronizer I©
`
`Database
`1409
`
`1407
`Host file
`Write out
`aop
`hostfile
`
`Software Stack 1410
`
`Operating System 1412
`
`AOP application and
`FiflUre 14 Software Stack are run
`^ on client Operating
`System
`
`Ex. 2002, Page 15 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 15 of 178 US 2009/0037337 A1
`
`1500 '
`
`At the client, install AOP framework.
`
`r 1501
`
`1
`
`At the client, set up EMS with its own database.
`
`1502
`
`1
`
`At the client, using AOP connect to the server and authenticate user
`permissions.
`
`1503
`
`1
`At the client, create an account inside EMS.
`
`^ 1504
`
`T
`At the client, configure virtual host (vhost) files to enable navigation to
`the application locally.
`
`, 1505
`
`T
`At the client, save the AOP initialization (ini) file with additional
`configuration information.
`
`T
`At the client, modify the host file locally to communicate to the
`operating system that any local domains (e.g. '.aop) are run locally.
`
`o
`
`©
`
`®
`
`®
`
`©
`
`©
`
`©
`
`- 1506
`
`1507
`
`,-1508
`
`-1509
`
`- 1510
`
`T
`At the client, download packages from a server repository (e.g.,
`download.etelos.com) as required by the app configuration.
`
`©
`r
`i
`i
`i
`i Install the packages.
`
`Example packages include EAS, Zend, fam fam fam, phpMyAdmin,
`phpPGAdmin, WebSvn.
`
`Figure 15
`
`Ex. 2002, Page 16 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 16 of 178 US 2009/0037337 A1
`
`1600
`
`AOP Application Installation
`
`Connect to Server 1620
`
`Authenticate user
`Verify permission
`Process Request
`
`Synchronizer
`
`JTI .-O-, ,-0
`Files
`Data
`Schema
`1617
`1615
`1616
`
`AOP Framework 1601
`
`Application 1602
`
`Network
`120
`
`Vhost
`1603
`
`www
`1604
`
`Packages 1607
`
`Account 1608
`
`File Transfer
`e.g. SVN or
`rsync
`1605
`
`Database
`1606
`
`Database
`1610
`
`EMS 1609
`
`Synchronizer
`
`Database
`1611
`
`1618
`
`Software Stack 1613
`
`Operating System 1614
`
`AOP application and
`Software Stack are run
`on client Operating
`System
`
`Figure 16
`
`Ex. 2002, Page 17 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 17 of 178 US 2009/0037337 A1
`
`1700 A
`
`At the client, download and install schema for the database from the
`server.
`
`1701
`
`At the client, download files using file transfer, e.g. SVN or rsync.
`
`At the client, download rules and insert them into the account database.
`
`T
`
`T
`At the client, download application data as part of the initial
`synchronization process.
`
`1702
`
`1703
`
`- 1704
`
`p
`
`3
`
`P
`
`3
`
`Figure 17
`
`Ex. 2002, Page 18 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 18 of 178 US 2009/0037337 A1
`
`1800 Application (AOP) initial data synchronization
`
`Connect to Server 1816
`
`Authenticate user
`Verify permission
`Process Request
`
`Synchronizer
`
`r©-, r©
`Files
`Data
`1817
`1818
`
`AOP Framework 1801
`
`Application 1802
`
`Vhost
`1803
`
`www
`1804
`
`File Transfer
`e.g. SVN or
`rsync 1805
`
`Network
`120
`
`Packages
`
`1807
`
`Account
`
`1808
`
`Synchronizer
`1810
`
`r?)6-
`
`Q
`
`EMS 1809
`
`L
`
`Software Stack
`
`1813
`
`Operating System 1814
`
`Database
`1806
`
`Database
`1811
`
`Database
`1812
`
`Figure 18
`
`Ex. 2002, Page 19 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 19 of 178 US 2009/0037337 A1
`
`1900 ^
`
`1901
`
`1902
`
`1903
`
`At the client, start a synchronization process.
`
`1
`At the client, retrieve synchronization rules from a database and flag
`them for an initial synchronization operation.
`
`'
`At the client, send a synchronization request to the server, with
`authorization to sunchronize.
`
`r v
`
`Synchronize the files using file transfer
`
`0
`
`0
`
`3
`
`1 Data is sent back to initially synchronize up the client application.
`0
`
`1 r r-
`
`Figure 19
`
`Ex. 2002, Page 20 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 20 of 178
`
`US 2009/0037337 A1
`
`2000 ^ How application (AOP) runs
`
`Connect to Server
`2015
`
`Authenticate
`Verify permission
`Process Request
`
`Launch
`Browser with
`Application
`running locally
`2017
`
`AOP Launch
`Interface
`
`Open file request domain.aop
`
`I©
`
`Network
`120
`
`AOP Framework 2001
`
`"O"
`
`Application 2002
`
`Vhost
`2003
`
`www
`2004
`
`File Transfer
`e.g. SVN or
`rsync 2005
`
`Database
`2006
`
`Packaaes 2007
`
`User OFFLINE
`
`Account 2008
`
`EMS 2009
`
`Synch ronizerC^O
`
`E
`
`Software Stack 2012
`
`Operating System 2013
`
`Database
`2010
`
`Database
`2011
`
`©
`
`Figure 20
`
`Ex. 2002, Page 21 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 21 of 178 US 2009/0037337 A1
`
`2100
`
`At the client, start the AOP application running, in response to a user
`selection.
`
`3
`
`At the client, from within the AOP application, start the software stack.
`
`At the client, from within the AOP application, start the EMS.
`
`2101
`
`2102
`
`2103
`
`At the client, from within the AOP application, launch a user interface. r 2104
`
`I The interface includes a desktop interface. ! - 2109
`i i
`
`At the client, list available application URLs in the AOP user interface.
`
`©
`
`© A, the client, detect use, selection en eppllcetlon, end nevlgete ,n e
`browser window to the URL associated with that application.
`
`2105
`
`2106
`
`At the client, using the host file, send the URL and any associated files
`locally.
`
`- 2107
`
`©
`
`At the client, listen with using the Web Server and serve the application
`\ / locally to the browser window.
`! The Web Server includes Apache. I
`
`2108
`
`2110
`
`Figure 21
`
`Ex. 2002, Page 22 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 22 of 178 US 2009/0037337 A1
`
`2200
`
`How the client serves up a local version of the webpage
`
`Browser 2201
`
`inl(aop^)
`Domai
`
`OQ®
`
`0
`
`0®
`
`Host File
`
`2202
`
`'
`Web Server 2203
`(e.g. Apache)
`
`r
`
`vhost file
`
`2204
`
`Application 2205
`
`Vhost
`2206
`
`www
`2207
`
`liXfJ
`Database
`2209
`
`File Transfer
`e.g. SVN or
`rsync 2208
`
`Packages 2209
`
`Figure 22
`
`Ex. 2002, Page 23 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 23 of 178 US 2009/0037337 A1
`
`2300
`
`At the client, determine the IP address of the current domain.
`
`^ 2301
`
`T
`At the client, the OS Network Stack looks at the host file which was
`modified during application (AOP) startup.
`
`, 2302
`
`1
`At the client, address is returned.
`
`, 2303
`The address is 127.0.0.1 I
`i - ,2310
`
`1
`
`The local web server listens at the address.
`
`'
`
`The local web server receives a request.
`
`"
`The local web server compares the domain to the virtual host (vhost)
`configuration file.
`
`The local web server determines the local application web root.
`
`, 2304
`
`,2305
`
`,-2306
`
`- 2307
`
`0
`
`0
`
`0, 1
`1
`
`0
`
`©
`
`0
`
`P
`
`The local application processes the request and loads appropriate tools
`to complete the request..
`The tools include framework, database, etc. I
`i ~
`
`,- 2308
`
`- 2311
`
`P
`
`i
`i
`i
`
`The local web server serves up the local web page.
`
`2309
`
`Figure 23
`
`Ex. 2002, Page 24 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 24 of 178 US 2009/0037337 A1
`
`2400
`
`High Level View of Synchronization
`
`Client 2401
`
`App
`
`2403
`
`n
`7
`
`1
`1
`T
`
`u
`
`DB
`
`2404
`
`1
`2
`▼
`Chanaes Loo 2405
`
`Server 2402
`
`App
`
`2406
`
`I
`4
`T
`
`DB
`
`2407
`
`I
`5
`▼
`Conflicts Loa 2408
`
`Figure 24
`
`Ex. 2002, Page 25 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 25 of 178 US 2009/0037337 A1
`
`2500
`
`At the client, detect changes from the local database for an application.
`0)
`i Perform detection using polling and/or notification. j
`
`2501
`
`2508
`
`Collect changes from the local database in a changes log.
`
`2502
`
`Send the collected changes log from the client to an application server,
`which includes corresponding database for the application.
`
`2503
`
`'
`Synchronize and apply the changes to the server database, keeping
`connection with client alive until the sync operation is finished.
`
`3
`
`'
`Detect conflicts in data on the server, and if any are found grant priority to the
`server.
`
`®
`Resolve conflicting data and store conflict resolution data in a conflict
`
`2504
`
`2505
`
`Send conflict resolution log from the application server to the client.
`
`2506
`
`1
`
`7 JAt the client, apply the conflict resolution log to the client local database.
`
`2507
`
`1
`
`Figure 25
`
`Ex. 2002, Page 26 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 26 of 178 US 2009/0037337 A1
`
`© © ©
`
`TO CO
`03 CD
`0) ^ iS Jg
`Q-Q
`
`0 CD
`I©
`
`©
`
`©
`
`©
`
`>. 92
`
`(Si if) 0 O
`U- O
`C CD — CM
`C 0)
`O
`
`©
`
`©
`
`o CD CM
`-t—< C .03
`O
`
`_±: c/3
`- o
`(D g ■!-
`? o 'P
`o ^
`2 CM
`CD Jr
`00 CL
`
`"si-
`CM
`
`v)
`
`—V CM
`
`>- ^
`
`CO
`CM
`0 L_
`CD
`
`-1—' _> ro
`o m 0 O O
`c 0
`o Q_
`
`CD
`O CD CM ©
`
`w C 0
`o w
`•^3 03 h-
`03 QQ O
`.y CD CD
`"Q. CD ^
`S:a
`
`© 0 ©
`
`Ex. 2002, Page 27 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 27 of 178 US 2009/0037337 A1
`
`2700 ^
`
`^ 2701
`
`Detect changes in an application database, when a user uses the
`application.
`
`3)
`i Chanqes can be on server aoo database or local aoo database. 1
`
`T — -2702
`Listen for changes and push changes to internal log on server.
`
`CO
`i Add a flag if an auto-increment rule is in force. ! -
`L E
`
`3 J
`
`f
`Synchronize data by pulling data from the internal log on server and
`pushing it to an account log on the server.
`
`*
`Push the data from the account log on the server to the outbound log
`on the server.
`
`Keep the synchronizer running fast. ]
`
`»
`Pause the outbound log, and wait for a user to initiate sync with the
`AOP application.
`
`V
`
`r
`i
`
`^ N
`v
`
`2)
`
`Push data to a 'server out process' for outbound processing and add a
`transaction identifier (e.g. "sync block ID") to the data.
`
`^ 2702a
`
`2703
`
`2704
`
`-2705
`
`-2706
`
`0
`
`Figure 27A
`
`Ex. 2002, Page 28 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 28 of 178 US 2009/0037337 A1
`
`9
`At "server out process", perform filter function on data received.
`
`1
`At 'server out process", map data to users.
`
`-
`At "server out process", push user data to user tables.
`
`1
`At "server out process", run a group management rules check.
`
`At "server out process", identify administrator group memberships
`relationships for a user.
`
`At 'server out process", map additional data to administrator users
`based on group administrator of a particular user A.
`
`At the server, sort data by user out tables.
`
`Use one table per user to optimize speed.
`
`j
`
`2707b
`
`2707c
`
`2707d
`
`^ 2707e
`
`/
`
`/
`
`3
`
`s
`
`©
`
`8
`
`©
`
`©
`
`©
`r
`i
`i
`
`IT
`
`©
`
`Figure 27B
`
`Ex. 2002, Page 29 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 29 of 178 US 2009/0037337 A1
`
`At client, receive data at AOP appl ication and push it to "client in
`process" for processing.
`
`J
`At "client in process", perform filter function on data received using auto
`increment rules (flag).
`
`g)
`
`. 3^
`At "client in process", check auto increment flagged column for conflict.
`
`2709
`
`2710a
`
`2710b
`
`10cJ
`
`At "client in process", if there is no conflict found, move to insert the
`data.
`
`3
`
`2710c
`
`, 271Od
`J
`At "client in process", if a conflict is found, leave the data in the sync log
`for the next session.
`
`j
`At "client in process", set auto-increment counter to the maximum plus
`one.
`
`271 Oe
`
`3
`
`10e]
`V J
`
`10fj
`
`3
`
`r- 271 Of
`/
`
`271 Og
`
`- 2711
`
`3
`
`f
`
`2712
`
`-2713
`
`2713a
`
`r
`
`2714
`
`At "client in process", filter the data into insert, update and delete
`ooerations.
`
`At "client in process", sort the data by priority.
`i Insert operations take priority over update operations.
`
`j
`Perform insert operations to push data into the application.
`
`Push update and delete operations into the sync account log.
`
`Process update and delete operations into the database from the log.
`
`3
`i During insertion, disable a trigger on that "connection" like a session,
`| prevent the cycle from doubling back into an infinite loop.
`
`The application has synchronized the received data at the client.
`
`3
`
`®
`Figure 27C
`
`Ex. 2002, Page 30 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 30 of 178 US 2009/0037337 A1
`
`2715
`
`i)
`
`Monitor data in the applications database for changes.
`
`i 2716
`At client, if the database changes, listen and push changes to internal
`log.
`
`\ -2717
`At client, synchronize by pulling data from the log and pushing it to the
`account log.
`
`^18^ At client, push data from the account log to the outbound log.
`
`! Keep the synchronizer running fast. 1
`i Keep the synch i
`
`19) At client, pause the outbound log and wait for the user to initiate sync
`^ with the AOP application.
`
`I
`20) At client, push data to a "client out process" for outbound processing
`and add a transaction identifier (e.g.,"sync block ID") to the data.
`
`2718
`
`-2719
`
`2720
`
`2721a
`
`^la) At "client out process", map data to a synchronization account.
`
`I User information is tied to synchronization account. !
`
`21 b) At "client out process", push data to synchronization account out log.
`
`-2721b
`
` -2722
`^22^) At client, synchronize the out log broadcasts back to the server.
`
`T
`
`©
`
`Figure 27D
`
`Ex. 2002, Page 31 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 31 of 178 US 2009/0037337 A1
`
`^23^ At server, when User A is in table, push data to "server in process"
`
`©
`
`-2723
`
`2324a
`
`24a\ At "server in process", compare user in data and user out data to find
` duplicate transactions.
`-2724b
`
`I
`@At "server in process", analyze identifier (e.g., " eas syncmap id")
`ed by trigger and identifier (e.g., "sync_blockJd") added by sync session.
`
`©At "server in process", if a conflict is detected, the server wins and
`conflicts are deleted.
`
`24d) At "server in process", filter insert, update and delete operations.
`
`24e
`
`24f ]
`
`At "server in process", filter auto increment flags.
`
`At "server in process", insert records with no conflicts.
`
`-2724c
`
`2724d
`
`-2724e
`
`-2724f
`
`24g\ At "server in process", where records have conflicts, increment to end
`and insert.
`
`24h) ^ "server in process", start trigger as new records make round trip
`back to application database.
`
`Example:
`i. eas_sync_map_id = eas_sync_map_id
`ii. ContactIO = contactIO
`v. Email =john@etelos vs email = john.smith@etelos.com
`v. Server would win on this record and delete duplicate entry..
`
`2724g
`
`2724h
`
`T
`
`©
`
`Figure 27E
`
`Ex. 2002, Page 32 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 32 of 178 US 2009/0037337 A1
`
`At server, insert updates.
`
`'
`At server, push updates and deletes to the sync account log.
`
`2725
`
`-2726
`
`,-2727
`®At server, process updates and deletes into the database from the sync
`account log.
`
`2727a
`
`Disable trigger on the session's connection when sync is inserted.
`
`I©
`
`Prevent the cycle from looping.
`
`^28) ^ server, application has sync data, and the synchronization process is
`complete.
`
`-2728
`
`*29) At server, if auto increment conflict (AIC) rules, then take another pass
`^^--tnrough the process to update conflicted records at the "client in process".
`
`Add, process and synchronize records which were previously left out because
`of conflict.
`
`2729
`
`Figure 27F
`
`Ex. 2002, Page 33 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 33 of 178 US 2009/0037337 A1
`
`Auto Increment Conflict Resolution
`
`Before
`
`Synchronize1
`ized
`
`(2) iNew on Server
`
`Synchronized
`
`New on AOP
`
`©
`
`1s' oass
`Synchronized
`
`Synchronized
`
`New for AOP
`(5
`
`New on Server
`
`Synchronized Q^-lew on AOP
`
`2'1d oass
`Synchronized
`
`On Server
`
`Update on Server
`
`(jTjUpdate for AOP Update (t)
`
`Synchronized
`
`New on Server
`
`New on AOP
`
`After
`
`Synchronized
`
`Synchronized
`
`2810
`
`2820
`
`2830
`
`2840
`
`@
`
`Figure 28
`
`Ex. 2002, Page 34 of 238
`
`
`
`Patent Application Publication
`
`Feb. 5,2009 Sheet 34 of 178 US 2009/0037337 A1
`
`2900 A
`1 ) At the start of a synchronization operation, identify data that matches
`on both server and client application (AOP) instance.
`
`, - 2901
`
`©
`
`At the server, determine that new records have been added on the
`server.
`
`^ 2902
`
`At the client, add new records to the client application (AOP).
`
`©
`i Determine that there are more records on client (AOP) than on server.
`
`.2903
`
`2910
`
`At the server, send new records from server to the client application
`(AOP) as new records.
`
`Determine there is a conflict and that identifiers associated with the new
`records already exist.
`
`2904
`
`Pause the process and wait for a second pass before inserting records.
`
`On the second pass, treat the records as an update.
`
`■
`At the client, send new records from client application (AOP) to the server.
`©
`
`■
`^ ©
`6 At the server, add these records and create new identifiers for them,
`incrementing the sequence of identifiers in the database.
`
`© \
`k7 J
`
`1
`At the server, log the changes and package as an update for those
`records.
`
`'
`Process the updated records.
`
`V)
`
`'
`All records match and are in synch with both the web server and the
`client application (AOP).
`
`Figure 29
`
`-2905
`
`-2906
`
`,2907
`
`-2908
`
`-2909
`
`Ex. 2002, Page 35 of 238
`
`
`
`Patent Application Publication Feb. 5,2009 Sheet 35 of 178 US 2009/0037337 A1
`
`3000
`
`Provide on a computer system a local software slack configured to
`provide local web services for dynamic, web-based applications that are executed
`on the computer system when it is offline.
`
`T
`When the computer system is offline, execute on the computer system a first ■
`dynamic, web-based application using the web services provided by the local
`software stack, such that functionality of the first dynamic, web-based application
`when the computer system is offline is substantially similar to functionality of the
`first dynamic, web-based application when the computer system is online.
`f L
`| The first web-based application is a database-driven web-based application. |
`
`i .
`I An architecture of the first dynamic, web-based application is not
`I modified to provide the functionality when the computer system is offline I
`
`In response to detecting a network connection with an application server,
`synchronizing with the application server changes in information associated with
`the first dynamic, web-based application due to its offline execution.
`
`In response to detecting a user instruction, initiating execution of the the first,"K
`dynamic web-based application when the computer system is offline by directing a I
`web browser on the first computer system to a specified universal resource |
`locator (URL) that is associated with first computer system instead of a remote |
`application server. |
`
`| The specified URL is associated with the computer system through a
`| m od i fj£d_h o_st s_fi I eo n_t he firs t_c o_m pjj t et^ s_ys tem.
`
`3002
`
`3004
`
`-3006
`
`■3008
`
`3010
`
`■3012
`
`-3014
`
`| The specified URL is associated with the first computer system through a
`| dynamic narjTiij^s^rv^r ^NS)j_eTOrd_(m aJD^Sjaen/em
`
`•3016
`M"
`
`' The specified URL is associated with the first computer system through a '
`I dynamic naming server (DNS) record on the first computer system.
`
`■3018
`
`L,
`
`-3020
`The local software stack comprises: a web server responsive to browser-
`-y-
`issued commands, a database management system, and a dynamic scripting |
`language |
`
`I The web server is Apache web server, the database management system is"] '
`■3022
`LJf
`| mySQL, and the dynamic scripting language is at least one of PHP, Python,
`I I
`