white star software exchange 2005 – dev-15 dev-15 all dynamic applications john campbell white...
TRANSCRIPT
![Page 1: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/1.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15
DEV-15DEV-15All Dynamic ApplicationsAll Dynamic Applications
John CampbellJohn Campbell
White Star SoftwareWhite Star Software
![Page 2: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/2.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 22
My BackgroundMy Background
• 20 years of Progress
• Written Several Books
• Created TailorPro
• Speaker at many Conferences
• Architect and Developer
![Page 3: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/3.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 33
White Star SoftwareWhite Star Software
• Progress consulting since 1985
• Performance and Disaster Recovery– (That’s Adam)
• Application architecture and development– (That’s me)
• Personal relationship with clients
![Page 4: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/4.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 44
Presentation OverviewPresentation Overview
• Design for migrating existing character application to GUI and Web
• AP Background
• Application Goals
• Design and Architecture
• Technology
![Page 5: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/5.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 55
Background Background
• Tasked to assist in software design and architecture
• Existing application partner
• Medical Practice Scheduling
• 18-year old Character Application
• Need to move to GUI for Windows and Full GUI on the Web
![Page 6: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/6.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 66
Application AssociationApplication Association
• Had worked on early development
• Knew Primary Developer
• Product Knowledge
• Architectural Skills
![Page 7: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/7.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 77
Architecture GoalsArchitecture Goals
• Too Easy to “code and go”
• Hard to revise later
• Good foundation is a key for– Scalability– Flexibility– Maintainability
![Page 8: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/8.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 88
Client ProfileClient Profile
• Medical Scheduling
• Primarily ASP Model
• Some on-site installations
• Needed to support full GUI in web access– Off-site doctors– Off-site data entry
![Page 9: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/9.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 99
Application RequirementsApplication Requirements
• Extremely Rich Application
• Some Highly Complex Browsers
• Complex Business Rules
• Simple Maintenance Screens
• No Compromise of Full GUI
• Run (quickly) Over Internet
![Page 10: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/10.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1010
Long Range GoalsLong Range Goals
• High usability
• Realistic data model
• Ease of Extensibility
• Ease of Maintainability
![Page 11: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/11.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1111
Possible SolutionsPossible Solutions
• No Initial Architectural Restrictions
• We considered the following– Non-Progress– ADM2– DWP– Progress Dynamics®– Self-made
![Page 12: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/12.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15
Application Design Application Design ChoicesChoices
![Page 13: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/13.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1313
Environment ChoicesEnvironment Choices
• Progress– Powerful, Rich Environment– In-house Progress expertise
• AppBuilder based GUI– Allows Local or Web Distribution
• WebClient™ for Web– Acceptable issues
• Dynamic Coding– Small footprint– Single point maintenance
![Page 14: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/14.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1414
Data ManagementData Management
• AppServer™ Enabled
• ProDataSets for data management
• Single server- and client-side apps for– Retrieval– Update– Maintenance
![Page 15: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/15.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1515
ArchitectureArchitecture
• Data retrieval modules separated on server
• Display components data independent
• Specialized uses means small footprint
• Many users do same task
• Reduces overhead of web client download
![Page 16: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/16.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1616
Single ApplicationsSingle Applications
• Data Retrieval
• Data Storage
• Lookup Browser
• Lookup Detail
• Data Entry
![Page 17: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/17.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1717
InterfaceInterface
• Some Static Interface Components for Maintainability
• Dynamic Lookup Browsers, Queries
• Dynamic Detail Screens
• Dynamic Data Entry Screens
![Page 18: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/18.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1818
ObjectivesObjectives
• Partition– DB I/O– Validation– Business Rules– Interface
• Use AB to design – Screens– (Most) Browsers
• Dynamic Screen Objects• Dynamic Data
![Page 19: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/19.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 1919
Validation and Business RulesValidation and Business Rules
• Primary Validation on Client
• Some on server
• Business rules on server
![Page 20: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/20.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2020
Associating Business RulesAssociating Business Rules
• Data Driven
• Screens validation
• Business Rules
• “Hooks” in code
![Page 21: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/21.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2121
Interface ArchitectureInterface Architecture
• Primary (scheduler) Browser
• Secondary (lookup) Browse
• Lookup Detail
• Maintenance Screens
• Toolbar
![Page 22: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/22.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2222
Scheduler BrowserScheduler Browser
• Starting point for all functions– Baseline is Static– Easier visualization – Columns and data dynamic– Individual Cell Colored– Multiple views of data
![Page 23: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/23.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2323
SchedulerScheduler
![Page 24: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/24.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2424
Lookup BrowsersLookup Browsers
• Static Window• Browser Completely Dynamic• Data Context Sensitive• Availability is Data-driven• Designed with AppBuilder• Stored in Repository
– Columns– Query– Key fields
![Page 25: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/25.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2525
LookupsLookups
Dynamic Button if field can be looked up
![Page 26: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/26.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2626
Simple Dynamic BrowserSimple Dynamic Browser
Dynamic sort and search ability
![Page 27: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/27.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2727
Dynamic Browse Code SampleDynamic Browse Code Sampleif not valid-handle(hBrowse) then create browse hBrowse assign height = 5 width = 55 frame = frame BrowseFrame:handle row = 2 column = 5 query = hQuery visible = yes sensitive = yes separators = yes width = 65 allow-column-searching = true triggers: on start-search persistent run StartSearch in this-procedure. on value-changed persistent run Valuechanged in this-procedure. on any-printable persistent run AnyPrintable in this-procedure. on backspace persistent run Backspace in this-procedure. on return persistent run BrowseReturn in this-procedure. end triggers.
![Page 28: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/28.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2828
Dynamic Browse Code SampleDynamic Browse Code Samplefor each tBrowseColumn: /* point to the dynamic temp-table field which corresponds to our static temp-table structure; build the browse column exactly like the temp-table column, which is a proxy for the actual DB Column of the same name */ hTTColumn = hTTBuffer:buffer-field(ColumnName). /* c-race.race-code */ hBRColumn = hBrowse:add-like-column(hTTBuffer:name + "." + hTTColumn:name) no-error. if tBrowseColumn.ColumnLabel <> "" then hBRColumn:label = tBrowseColumn.ColumnLabel. /* let the browse know if we can sort on this column */ hBRColumn:private-data = string(sortable). end. assign fieldrow = hbrowse:row + hBrowse:height-chars + .1 hBrowse:fit-last-column = yes hFillin:row = hBrowse:row + hbrowse:height.
![Page 29: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/29.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 2929
Lookup Detail - DesignLookup Detail - Design
• Static window
• Dynamic Fields
• Designed with App Builder
• Stored in Repository
![Page 30: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/30.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3030
Simple Detail ScreenSimple Detail Screen
![Page 31: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/31.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3131
Lookup Detail - FunctionLookup Detail - Function
• Not updateable
• Context sensitive
• Persistent window– Data changes if browse row changes
![Page 32: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/32.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3232
Maintenance Screens - DesignMaintenance Screens - Design
• Similar to lookup Detail:– Static window– Dynamic fields– Build with AppBuilder + Tool
• Save screen definition data to repository
![Page 33: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/33.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3333
Maintenance Screens - Maintenance Screens - FunctionFunction
• Single Toolbar for all Applications
• Able to associate maintenance screen with a specific browse – Data context sensitive
• Also can run any screen standalone
![Page 34: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/34.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3434
Dynamic sort, search and filter
![Page 35: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/35.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3535
Screen RepositoryScreen Repository
• Location of interface data• Small Tables• Easy to Transfer Data• Simple to identify if already on client
– (Don’t reload)
• Static temp-tables– Clarity– Maintenance
![Page 36: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/36.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3636
Repository StructureRepository Structure
Module
Browse Maint Screen Detail Screen
ProgramProgram
ProgramColumns ProgramFields ProgramFields
![Page 37: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/37.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3737
Screen ScalingScreen Scaling
• Originally None
• Ultimately– Agreed to limit
• Number of Browse Columns• Number of Screen Fields
![Page 38: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/38.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3838
Data ManagementData Management
• Dynamic temp-tables defined for user data
• ProDataSets used for these TTs
• Dynamic query for context-sensitive data
• DataSource set to dynamic query
![Page 39: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/39.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 3939
Data Management Data Management
Menu Choice
Client App Server / DB
Screen Data Request
Screen Paint
Data Selection User Data Request
Data Presentation
Data Update Data Storage
![Page 40: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/40.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4040
1 – Menu Choice
2 – Screen Paint
3 – User Data
4 – Data Update
![Page 41: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/41.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4141
Code SampleCode Sample
/* --------------- get actual table data ------------------ *//* first, create an empty DB buffer structure */create buffer hDBBuffer for table pTableName.
/* create the empty temp-table structure handle */ create temp-table hDataTT.
/* clone the DB structure into the temp table */hDataTT:create-like(pTableName).
/* add the rowid field so we can find the DB record later */hDataTT:add-new-field("fRowid","rowid").
/* set it to undo-able so we can set tracking changes on */hDataTT:undo = yes.
/* create the temp-table with a name of "t" + the table name: tc-race note -- this is critical in the submitchanges.p program -- q.v. */hDataTT:temp-table-prepare("t" + pTableName).
/* get a buffer handle for the temp table */hTTBuffer = hDataTT:default-buffer-handle.
![Page 42: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/42.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4242
Code Sample ContinuedCode Sample Continued/* now create a dataset for the t-t buffer */create dataset hDataSet.hDataset:set-buffers(hTTBuffer). /* Next, create the query to the DB */create query hDbQuery .hDBQuery:set-buffers(hDBBuffer).
/* now, a data-source for the query and tt-buffer */create data-source hDataSource.hDataSource:query = hDBQuery.hTTBuffer:attach-data-source(hDataSource).
/* set an event method to populate each row with the rowid */hTTBuffer:set-callback-procedure("after-row-fill","SetRowid",this-
procedure).
/* create a query for getting records out of the DB */hDBQuery:query-prepare(pQueryPhrase).
/* fill the dataset from the query */hDataSet:fill().
![Page 43: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/43.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4343
Submitting ChangesSubmitting ChangesassignhAfterBuffer = hSaveDataSet:get-buffer-handle(1)hBeforeBuffer = hAfterBuffer:before-buffer.
/* temp-table name = "t" + tablename, so table name is obtained by shaving off the leading "T" */
create buffer hDBTable for table substring(hAfterBuffer:name,2).
/* build a query so we can process the T-T records */ create query hQuery.hQuery:add-buffer(hBeforeBuffer). /* knows about both creates and
deletes */hQuery:query-prepare("for each " + hBeforeBuffer:name).hQuery:query-open().hQuery:get-first().
![Page 44: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/44.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4444
Saving Updated RecordsSaving Updated Recordsdo while not hQuery:query-off-end transaction: case hBeforeBuffer:row-state: when row-modified then do: /* get the rowid of the databse table from the t-t record */ pRowid = hBeforebuffer:buffer-field("frowid"):buffer-value. /* find the DB record */ hDBTable:find-by-rowid(pRowid) no-error. /* see if the "before" T-T and the DB are different */ RecordUnchanged = hBeforeBuffer:buffer-compare(hDBTable). /* if the db record isn't changed, we can save data back */ if RecordUnchanged and hDBTable:available then do: /* but it's the AFTER record which holds the changes */ hAfterBuffer:find-by-rowid(hBeforeBuffer:after-rowid) no-error. /* if everything is OK, then we copy the after to the DB */ hDBTable:buffer-copy(hAfterBuffer). end. end. /* modified */
![Page 45: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/45.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4545
Save Row ChangesSave Row Changes
• Simple method for saving ProDataSet changes
• Seems to work fine if DataSource is buffer, or static query
• Apparently need to have individual code blocks for modified, created and deleted if DataSource is dynamic query
![Page 46: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/46.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4646
Validation ProgramsValidation Programs
• Simple validation on client
• Complex validation on server
• Data driven
![Page 47: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/47.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4747
Validation ProgramsValidation Programs
• Maintenance Screen repository has field for validation program
• Server side program associated with buffer name– Table level validation– Field level– Internal procedures– Code looks for program and internal
procedures according to naming conventions
![Page 48: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/48.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4848
ConclusionConclusion
• Progress offers significant value in application development
• Application partners are choosing it to build new apps with
• Language is unbelievably powerful and flexible
![Page 49: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/49.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 4949
More ConclusionsMore Conclusions
• There are many Progress development paradigms
• Sometimes, you don’t need to use an existing model
• Full development model does not need to be – Complex– All-encompassing
![Page 50: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/50.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 5050
Dynamic CodingDynamic Coding
• Distinct advantage of Progress
• Gives significant versatility
• Can be well written (if documented)
• Highly compact
• Extremely powerful
• Very flexible
![Page 51: White Star Software Exchange 2005 – DEV-15 DEV-15 All Dynamic Applications John Campbell White Star Software](https://reader036.vdocuments.net/reader036/viewer/2022081506/56649ea15503460f94ba4a8c/html5/thumbnails/51.jpg)
White Star SoftwareWhite Star Software Exchange 2005 – DEV-15Exchange 2005 – DEV-15 5151
White Star SoftwareWhite Star Software
Contact us at wss.com
Questions?