Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for...
Transcript of Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for...
![Page 1: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/1.jpg)
SAGE Computing ServicesConsulting and customised training workshops
Best Practices in Apex Development
Penny CooksonManaging Director
www.sagecomputing.com.au
![Page 2: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/2.jpg)
Agenda
Managing WorkspacesTemplatesTemplatesWhere to put your codeSecurityDocumenting an Apex applicationg p ppTips and techniques
www.sagecomputing.com.au
![Page 3: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/3.jpg)
Designing the Workspace Structure
Single workspace ith l t f
Multiple workspaces ith ll bwith lots of
applications?with small numbers of applications?
Which developers will work on the applications?applications?What schemas do the applications access?access?Do I need to subscribe to objects in a different application?
www.sagecomputing.com.au
different application?
![Page 4: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/4.jpg)
Recommendations on Naming Standards
Have Them
www.sagecomputing.com.au
![Page 5: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/5.jpg)
Naming StandardsKeep default names for page items where possible, i.e. Pn_COLUMNNAMEAdditional display information use Pn_CONTENTNAME or Pn_CONTENTNAME_DISPApplication items F NAME or APP NAMEApplication items F_NAME or APP_NAMEMeaningful name for Page Validations, e.g checkdates, validate mandatory items_ y_Meaningful name for Page Processes, e.g check _dependencies, clear_state, create_eventMeaningful name for Application Processes, e.g app_check _dependencies, app_clear_state, app create eventpp_ _
www.sagecomputing.com.au
![Page 6: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/6.jpg)
Naming StandardsMeaningful name for Page Computations, that indicates the item being setMeaningful name for Application Computations, that indicates the item being set, e.g set_surname, set f total set app current id e g set surnameset_f_total, set_app_current_id, e.g set_surname, set_totalName Lists of Values for the information being fetched, e.g. ORGANISATIONS_LOV, or if the LOV is for a specific page, ORGANISATIONS_P415_LOVUse a standard alias for an application e g TM for theUse a standard alias for an application, e.g. TM for the timesheet, this can also be used as a prefix to the names of database packagesGive each page an alias
www.sagecomputing.com.au
![Page 7: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/7.jpg)
Some Obvious Stuff
Use the Wizards where possibleGo with the productGo with the productDo not hard code formatting attributesNever reference an application idNever reference an application idhttp://server:port/pls/apex/f?p=TS:CAL:&SESSION.:::::
Do not change OracleDo not change Oracle templates/stylesheets/JavaScript filesDesignate ranges of pages for functional areas ofDesignate ranges of pages for functional areas of the applicationNumber everything in increments > 1Number everything in increments > 1Generate DML using Object Browser
www.sagecomputing.com.au
![Page 8: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/8.jpg)
UI Defaults
Define UI Defaults before creating any pagespagesInitial creation only in 3.2Bi di i l i 4 0Bi directional in 4.0
www.sagecomputing.com.au
![Page 9: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/9.jpg)
Where to Put your Code
In a central location where it can get maximum reusemaximum reuseIn a location that makes application maintenance as easy as possiblemaintenance as easy as possibleAs close as possible to the location where h d ill b dthe code will be executed
www.sagecomputing.com.au
![Page 10: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/10.jpg)
Where Code Will be Executed
Externallye g Web Servicee.g Web Service
PL/SQL inthe Server
JavaScript in the client the Serverin the clientbrowser Apex
dCustom
kApe code code packagesApex code
CustomJ S i t
www.sagecomputing.com.au
JavaScript
![Page 11: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/11.jpg)
Define in Database Packages
PL/SQLpackages inthe Serverthe Server
www.sagecomputing.com.au
![Page 12: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/12.jpg)
www.sagecomputing.com.au
![Page 13: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/13.jpg)
www.sagecomputing.com.au
![Page 14: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/14.jpg)
Manipulating Session State
www.sagecomputing.com.au
![Page 15: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/15.jpg)
Apex JavaScript Code
www.sagecomputing.com.au
![Page 16: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/16.jpg)
Apex JavaScript Code
www.sagecomputing.com.au
![Page 17: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/17.jpg)
Your JavaScript Code
www.sagecomputing.com.au
![Page 18: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/18.jpg)
Your JavaScript CodeHTML Region on Page 0
www.sagecomputing.com.au
![Page 19: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/19.jpg)
Your JavaScript Code
Reference in the Page Templates
Note that if you have multiple Page Templates you will need to reference the library in each one
www.sagecomputing.com.au
![Page 20: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/20.jpg)
Use Shortcuts
Commonly used pieces of code or text
UseTo substitute text into a Javascript routineI HTML i t d ith i i l di th f ht lIn HTML associated with regions, including the source of html regions and header and footer text of any region.In region templates
www.sagecomputing.com.au
In item label attributesItem default values
![Page 21: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/21.jpg)
Example
JavaScript ShortcutPL/SQL Shortcut
www.sagecomputing.com.au
![Page 22: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/22.jpg)
Defining Substitution Strings
You can define substitution strings in the Application DefinitionApplication Definition
R f th b tit ti t i iReference the substitution strings in a template
www.sagecomputing.com.au
![Page 23: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/23.jpg)
Using the Database
sys_parameters tableF ti til tFunction util.getparamCreate application items to store the valuesCreate Computations to populate the application items from the database using pp gthe packaged function Reference the application items in aReference the application items in a templateProvide the values for application or page
www.sagecomputing.com.au
Provide the values for application or page properties
![Page 24: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/24.jpg)
Example
Storing Reference Information in the Database
www.sagecomputing.com.au
![Page 25: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/25.jpg)
Documenting an Apex Application
Apex is Largely Self DocumentingDocument exceptionsDocument exceptionsCommenting pages
Purpose (if its not obvious)Anything weird about the page design /codingModification History
www.sagecomputing.com.au
![Page 26: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/26.jpg)
Documenting an Apex Application
No documentation lower than page levelPrefix page comment with component /itemPrefix page comment with component /item name
You can then search the comments for references to a particular componentp p
www.sagecomputing.com.au
![Page 27: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/27.jpg)
What Every Developer Wants to Hear
Do not comment unnecessarily
The application is stored in Oracle database tables – query them
www.sagecomputing.com.au
![Page 28: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/28.jpg)
Where to Locate Files
#IMAGE_PREFIX#virtual directory where your files arevirtual directory where your files are physically located#WORKSPACE IMAGES##WORKSPACE_IMAGES#files that have been uploaded into the Apex repository#APP IMAGES#_files that have been uploaded into the Apex repository for a specific ApplicationApex repository for a specific Application
www.sagecomputing.com.au
![Page 29: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/29.jpg)
Example
Determining the File Location Dynamically
www.sagecomputing.com.au
![Page 30: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/30.jpg)
Backup
Application backupsPart of your regular database backupPart of your regular database backupAre you sure the DBA backs up the DEV d b ?database?Do you really want to have to grovel to the DBA to get the whole database back?Export the Application dailyp pp yPage backupsExport a page before significant workExport a page before significant workIf you stuff up try export as of 5 mins ago
www.sagecomputing.com.au
![Page 31: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/31.jpg)
Page Zero
Page 0 items appear on all pagesNavigationNavigation BreadcrumbsTask listsContact details Copyright/Privacy text
www.sagecomputing.com.au
![Page 32: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/32.jpg)
Example – Task Lists
Multiple tasks listslistsEach applies to a set of pagesa set of pages
www.sagecomputing.com.au
![Page 33: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/33.jpg)
Example – Task Lists
Avoid Using Page NumbersAvoid Using Page Numbers
www.sagecomputing.com.au
![Page 34: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/34.jpg)
Example – Task Lists
Using aUsing a Page AttributeAttribute
www.sagecomputing.com.au
![Page 35: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/35.jpg)
Example – Task Lists
Get the information you wantGet the information you want from the comment
www.sagecomputing.com.au
![Page 36: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/36.jpg)
Example – Task Lists
Use the property to set the conditionalUse the property to set the conditional processing of the Task List on Page 0
www.sagecomputing.com.au
![Page 37: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/37.jpg)
Common Processing
Page 0 has no processingDefine Computations and Processes at Application Level
Firing of the process is dependent on the page number
Firing of the process is dependent on the page specific informationp g
Fires for large numbers of pagesp g p
Fires for small numbers of pages
www.sagecomputing.com.au
+ a Condition Invoke from specific pages
![Page 38: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/38.jpg)
Custom Styles
Define your styles in your own .css file
Reference your stylesheet in a page template or Page 0
Refer to the style in custom text
www.sagecomputing.com.au
![Page 39: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/39.jpg)
Themes and Templates
Create your own Theme - Even if you don’t think you want to make any changesdon t think you want to make any changesA theme comprises:
Images in the file system A theme specific stylesheet in the file systemImages in the file system A theme specific stylesheet in the file system
A set of Templates
www.sagecomputing.com.au
![Page 40: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/40.jpg)
Themes and Templates
Copy the theme directory structure that most closely matches your requirementsmost closely matches your requirements
www.sagecomputing.com.au
![Page 41: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/41.jpg)
Themes and Templates
Edit the stylesheet for the current Apex versionversion
R l llReplace allinstances ofthe old themename withname with your custom
www.sagecomputing.com.au
name
![Page 42: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/42.jpg)
Themes and Templates
Export the standard Apex theme you are using to a fileusing to a file
R lReplace any references to h i i lthe original theme di t ithdirectory with your custom di t
www.sagecomputing.com.au
directory
![Page 43: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/43.jpg)
Themes and Templates
Export the standard Apex theme you are using to a fileusing to a file
R l llReplace all references to 10 i ht10 with tsage
www.sagecomputing.com.au
![Page 44: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/44.jpg)
Themes and Templates
Import the edited theme file
Edit the theme and changes its nameg
Switch to the new theme
www.sagecomputing.com.au
![Page 45: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/45.jpg)
SecurityDo a security audit before releasing to testUse bind variables to avoid SQL injectionjEscape all uploaded dataUse session state protection
Do not allow application items to be changed from the URLUse checksums on pagesUse checksums on pages
Do not use embedded PL/SQL gateway for internet appsUse runtime only environmentUse runtime only environmentUse 0 session id for public applicationsUse report to check password itemsConsider DB features such as VPD and encryption
www.sagecomputing.com.au
![Page 46: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/46.jpg)
Standard Application
www.sagecomputing.com.au
![Page 47: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/47.jpg)
Creating a Standard Application
Create STANDARD_APPLICATION.Add all common components that can beAdd all common components that can be subscribed toCopy STANDARD APPLICATION toCopy STANDARD_APPLICATION to TEMPLATE_TO_COPYSubscribe the objects in jTEMPLATE_TO_COPY to those in STANDARD_APPLICATIONAdd any components that cannot use subscribe to the TEMPLATE_TO_COPY
li iapplication
www.sagecomputing.com.au
![Page 48: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/48.jpg)
Example
A Standard and Template_to_copy application
www.sagecomputing.com.au
![Page 49: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/49.jpg)
Check Your Application
Use Patrick Wolf’s Apex essentials to check the applicationppwww.oracleapex.info
www.sagecomputing.com.au
![Page 50: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/50.jpg)
SAGE Computing ServicesConsulting and customised training workshops
Questions?Q
Presentations are available from our website:www.sagecomputing.com.au
[email protected]@sagecomputing.com.au
![Page 51: Best Practices in Apex Development - Sage Computing€¦ · Naming Standards Meaningful name for Page Computations, that indicates the item being set Meaningful name for Application](https://reader034.fdocuments.in/reader034/viewer/2022052018/60322d3ffcb32e2c5d169312/html5/thumbnails/51.jpg)
SAGE Computing Services(Unrepentant Marketing)
Register for the Next
Application Express V3.2 course:23rd 25th and 26th November23 ,25 and 26 November
Advanced course:8th – 9th December
Call in at the Sage Computing Services exhibition booth, or contact Penny