throbber
(i9) United States
`(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
`Email
`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
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket