What is Standard APEX? TOOLBOX FLAT DESIGN CARTOON PEOPLE
About me Freelancer since 2010 Consulting and development Oracle databases APEX BI Blog: APEX-AT-WORK Twitter: @tobias_arnhold - Oracle ACE Associate
What is Standard APEX? A few tips and guidelines based on my experiences with over 100 projects that I have worked with during the last 10 years. Before I will tell you something about Standard I will define what I actually aim for: Build what the customer / end-user needs Application development on time and within the budget Easy to maintain application Standard APEX features Good looking application
What can I give you?
AGILE development Project Manager Customer Boss End-User 95 % of all my projects were AGILE. Everything you do, do it with the people who has to work with your application. Talk and discuss with them. APEX Developer Be a team working with the end-user.
Do not Project manager let the project manager do the customer communication for you. Customer boss talk only with the head of the department or someone who thinks knows it all. Believing believe that they actually know their business process. Especially if several departments are invoked. End-Users talk with just one person on the customer side. Tip: Find the guy who actually understand how it works!
Low Code It is somewhere between no coding and do it all yourself. IN APEX USE APEX Do not reinvent the wheel. Instead: PLACING THE BUSINESS CODE Always think like Database FIRST ALWAYS THINK LIKE THIS Form on table (DML) Interactive Grid (DML) JET Charts (SQL) Universal Theme (CSS) Inside your database business schema Use packages Use views Can I fix it with SQL? Can I fix it with PL/SQL? Can I fix it with CSS? Can I fix it with Javascript? Tip: Think twice if you really need an extra JS framework.
How to start building an application Don t start coding, start talking! 1. Talk with the customer and understand what are his needs? Important question: Ask the customer if somebody already tried to solve it? If the answer is yes more then 2 twice. Leave the room and never come back. EXIT
How to start building an application 2. If you feel it is not enough information to build up the application A: Start with a simple throw away prototype Discuss with the customer the results Repeat the process until you know what he needs B: Important questions you should ask What do you want? Do we have the same target as a team? I can t do it alone. Can I see the legacy application and the data? Can you tell me about specialties inside the application? Do you have program interfaces with other systems? How many? How much data? Update cycle?
How to start building an application 3. You know what the customer needs Build a prototype data model Import some real data Start with the complex stuff not with the base data functionality Build an application package for the business logic and the error logging functionality SQL of complex APEX reports should be saved in views
Things you may shouldn t do 1. Integrate all kind of Javascript frameworks and/or plugins 2. Complex business logic inside APEX 3. View layers based on pages and statements. Example: v_1_emp_report
Example 1: The view nightmare An APEX prototype which I had to finish Starting position: 10 tables 20 pages 60 views Base view for each table defined as: v_100_0_emp v_100_0_dept Detail view looked like this: v_100_1_emp_with_dept v_app_id_page_id_name based on v_100_0_emp and v_100_0_dept
Example 1: The view nightmare I had a few problems with it Code duplication Standard APEX processes can't run inside the view hell Maintainability decreases Costs and development time increases What did I do? I dropped it down to the ground and made it simple. Result: 10 tables 20 pages 10 views Tip: I always use V_ as a name for view including business logic and LOV_ as a source for APEX list of values.
Example 2: JS Performance Leak I came to rescue it No Interactive Grid was available yet. Customer needed to manually update a large table dynamically row by row. Needs: Edit a cell and update dependent rows in the report Context Menu (Right click) Tree functionality Freezed Header
Example 2: JS Performance Leak First solution The first company tried an Javascript library called EasyUI. The proposed to the customer that all features can be fulfilled with it. But a few problems occurred: All communication was done with JSON No standard APEX APEX was not more then a shell anymore Tons of Javascript Complex PL/SQL packages only for the library and the JSON handling had to be added No security / no SSP was used (URL tampering)
Example 2: JS Performance Leak First solution Major problem was: Loading of the report took 15 minutes
Example 2: JS Performance Leak Don t say you can. Show that you can: Prototype it! I said I don t know if it is possible. But I can try making a prototype. I started with the most important question: Can APEX display 8000 rows in a decent time? URL: 192.168.4.2:8080/ords/f?p=GRID_PROTOTYPE:2
Example 3: Customer goes wild You don t understand what they want Migrate a planning tool from Excel to APEX 14 Excel files Base data had to be filled in manually Reporting on different levels The result of all files saved a huge Power Point Keep in mind: Always stick to the standard features of APEX!
Example 3: Customer goes wild Current situation
Example 3: Customer goes wild What we did A1 A2 A1 A2
Example 3: Customer goes wild You don t understand what they want From our perspective Data preparation could be automated (20-30 days per year) We had data integrity Row level security Read and write functionality on column level Better design but similar look and feel towards the old tool Used only standard APEX components (IG, JET Charts)
Example 3: Customer goes wild You don t understand what they want From customer perspective They wanted something new! A dashboard Seeing all important data Easy data editing inside the dashboard We should show off some new design ways Because we are the experts
Example 3: Customer goes wild You don t understand what they want First important question when you create a dashboard: What data on what level is important to make a decision? Look at the Excel! We made some dashboard examples: Look this can APEX do (Examples with JET charts): Is this all APEX can do? Yes. Those are the basic APEX features we work with. We looked at the Internet and found a Dashboard Competition. Mr. Arnhold why didn t you show us? You are right I could have done this but what you see is no Standard. Those examples are prove of concept and includes a lot of risks. Mr. Arnhold why didn t you show us?
Example 3: Customer goes wild Plugin he would have loved to be integrated https://apex.oracle.com/pls/apex/f?p=7777705:1
Example 3: Customer goes wild Plugin he would have loved to be integrated
Example 3: Customer goes wild Plugin he would have loved to be integrated
Dashboard Competition Examples Think twice before you choose something From customer perspective Does it fit the requirements? Does it look good / modern? From developer perspective How complicated is it? JAVASCRIPT! Will your colleagues understand? Security? Required Frameworks? I MADE IT!
Dashboard Competition Examples Think twice before you choose something 192.168.4.2:8080/ords/f?p=304:1
Dashboard Competition Examples Think twice before you choose something 192.168.4.2:8080/ords/f?p=305:1
Dashboard Competition Examples Think twice before you choose something 192.168.4.2:8080/ords/f?p=306:1
Summary What is Standard APEX? Stick to the end-user Logic: SQL, PL/SQL, CSS, JS Use the basic features (IG, JET charts, Form on table, Dynamic Actions) Database Modell Use packages APEX is made to be agile Javascript is not APEX
THE END