Download presentation
Presentation is loading. Please wait.
Published byNelly Schulz Modified over 5 years ago
1
– JukeBox – transparency, flexibility, speed and comfort!
Brynjar Hasle, Chemistry as
2
Operational requirements:
Slick and consistent User Interface Exceptional development speed (low, that is) Automation of trivial tasks Transparency client-server / appserver Minimal setup Very small client footprint
3
Tools: Dynamic ABL (9.1d+) Static ABL (Stateless AppServer (9.1d+)) (Aia client on webserver) OpenEdge 8.x - 9.1/10.1b RDBMS MS tabstrip and dynTreeView.w (alt. pure4GLtv on PSDN) ResizeLib.p (free download from AbHack! (PSDN)
4
Basic Elements ObjLib.p User...w JBox...w UiLib.p AsLib.p
Client: User...w JBox...w UiLib.p AsLib.p Server: Get data: -getTempTableJoin.p -getFieldList.p getFieldValues.p (FIND) -getTempTable (input <fill>.p) -checkCurrentChanged.p .. + custom query procs Put data: -serverTrans.p -runProc.p -processQuery.p .. + custom BL procs
5
Server, get data (getTempTableJoin.p)
Input: List of buffers and fields, query criteria ++ Hooks for calculated fields (with runtime parameters) Support for persistent procedures for calc.fields (performance!!) Filter on calculated fields Filter on joined buffers (subselect and not exists) Multiple joins to same table Sorting on calculated fields Query count, count distinct Accumulation of totals and subtotals Handling of duplicate field names Validation of query against schema security (table and field level) Returns temp-table handle (and hence the data pluss add. context info – security restrictions, etc)
6
Server, store data (servertrans.p):
Input: - Trans header and trans values Temp-table structure Dynamic FK validation Hooks for custom create, delete, validation / updates (pre & post) Assign defaults (created by / when..) Returns completed temp-table (option) Trans.header: Buffer Operation Field list Opt.val.proc Trans.values: - Field value list
7
Client from OERA perspective
ObjLib.p ”Component Model” User...w ”View” ttObject JBox...w ”View” UiLib.p ”Presenter” ttEvent ttObjectLink ttAttribute AsLib.p ”Service Adapter” ”Common infrastructure”
8
Client in practice.. Browse example
User...w Executes NewBrowse in ObjLib (input coordinates, tables, fields and query definition). NewBrowse Passes tables and fields to server to get the fields and their properties from the database Creates the browse object and registers the object Creates the events (triggers) that JukeBox will handle in event procedures Optionally also calles FillBrowse method to get data Now wait for the user to do something.. User selects row: ”Value-changed” trigger fires and executes the common event handler procedure Event handler picks up the event and checks if the corresponding event procedure (DisplayRecord) is present in User...w. There is no override so we run the standard method for DisplayRecord in UiLib DisplayRecord: Check for uncommitted changes in previous row Refresh query for child objects (linked browsers and queries) Check for linked fieldMap object (viewer) and display the fields Check for linked toolbar object and set its state according to the record (availability) User...w ObjLib.p ObjLib.p AsLib.p User...w ObjLib.p UiLib.p UiLib.p ObjLib.p AsLib.p
9
AsLib.p ”Service Adapter”
Service (server) interface AsLib.p ”Service Adapter” runproc.p ”Service interface” BusinessWorkflow ABL procedure (my.p) Business Entity, Data Access Object, Data Source Object Runproc interface: Used for most custom business tasks Validates session id Get session context Control user access (coming) Unwrap any temp-table parameter
10
More on query service.. Paging implemented by keeping transfer count
Server query always starts from FIRST/LAST Sub-selects done by dynamically adding TT to query: Sub-select processes query “backwards” Index (EACH), timeout and record count check! All records (in query) are processed when Sorting on calculated value Querying distinct values Grand totals involve calculated fields All records are traversed when Doing record count or grand totals Database is checked for read/write access No-access fields are put in exception list Access-rights are returned to enable UI settings Ability to automatically change buffer sequence (!) Client feature
11
Demo: Sport2000 order query
SalesRep Customer Order OrderLine Item FOR EACH Order NO-LOCK ,FIRST Customer OF Order NO-LOCK ,FIRST SalesRep OF Order NO-LOCK ,EACH OrderLine OF Order NO-LOCK ,FIRST Item OF OrderLine NO-LOCK
12
Other Multi language support Multi client (company) support Client cache (user settings and translations, other coming) Deploy mechanism (AppFarm) Document (blob) management (separate lib – 10.0B02+) Coexists well with ADM1/2 and Dynamics (Interface to Dynamics localization and personalization mgrs)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.