Talking about a huge APEX project developed with more than 15 people in one APEX project. The presentation was hold together with Niels de Bruijn in New Orleans at KScope13 on 26th of june 2013.
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Fondsprofiler @ Union Investment - The biggest apex project in the world
1. |
FondsProfiler @ Union Investment
The biggest APEX project in the world?
Niels de Bruijn, Business Unit Manager APEX
Oliver Lemm, Supervisor Competence Center APEX
Kscope 2013, June 26th
2. |
Introduction
Niels de Bruijn
36 year, married, two daughters
living in Ratingen (nearby Düsseldorf)
since 12/2003 @ MT AG (after 2 years @ Oracle)
- Senior Consultant > Supervisor > Business Unit Manager
http://apex.mt-ag.com & http://www.apexsolutions.de
you can find me on Skype, Xing, LinkedIn, Twitter, Facebook
FondsProfiler @ Union Investment2
3. |
Introduction
Oliver Lemm
32 year, married, two daughters
living in Dinslaken
since 02/2007 @ MT AG
- Junior Consultant > Consultant > Senior Consultant
> Supervisor APEX
degree „Angewandte Informatik“ from the university of Duisburg-Essen
architect and lead developer for APEX projects
Blog http://oliverlemm.blogspot.de
Twitter https://twitter.com/OliverLemm
FondsProfiler @ Union Investment3
5. ||
Agenda
FondsProfiler @ Union Investment5
1. About the Project
2. Key Facts
3. Technical Highlights
4. Are you ready for doing big (APEX) projects?
7. |
What is it all about (technically speaking)?
FondsProfiler contains the definition of 960 funds
Intranet application used by 650+ registered active users
FondsProfiler @ Union Investment7
About the Project
Fund Definition
APEX 4.1 /
DB 11gR2
Master Data
Enforcement of
investment
restrictions
Enforcement of
benchmark
definitions
Reporting
9. |
FondsProfiler
A single APEX 4.1 application that consists of:
67 pages,
344 tables,
366 views,
107 packages and
167 LOVs
Development time of 12 months
Going live on 07/16/2012
FondsProfiler @ Union Investment9
Key Facts
10. |
Project Team
Employees of MT AG involved during the development phase:
8 - APEX (including PL/SQL experts)
2 - Data Modeling
4 - Interfaces
3 - Project Leaders
1 - Quality Assurance
1 - Admin
Project type: fixed price
FondsProfiler @ Union Investment10
Key Facts
12. |
Layout, Design, User Interaction
FondsProfiler @ Union Investment - n12
Technical Highlights
13. | FondsProfiler @ Union Investment - n13
Technical Highlights
Implementation strategy for big projects
14. |
Implementation strategy for big projects
FondsProfiler @ Union Investment - n14
Technical Highlights
site-specific-databaselayer concept
predefined standard functions per page
- fetch/save/check
Only a single manual fetch/save process per page
- increased maintainability
Single “save” button per page although multiple regions
Using an acronym for every template-name which is used
15. |
How to handle multiple MRUs on a single page
FondsProfiler @ Union Investment - o15
Technical Highlights
16. |
How to handle multiple MRUs on a single page
FondsProfiler @ Union Investment - o16
Technical Highlights
Multiple MRUs on a single page were necessary
APEX collections were used to keep the changed values before the “Save”
button was clicked
Handle general mru on global page / Page 0
Overloading apex_item package with own JavaScript/CSS
Special functional handling when saving
Using overlay when adding lines
18. |
Which page contains which items and how do these map to the data model?
Which items belong logically together?
- Validation attributes on group level (required?- max. size? - min/max allowed?)
The “Master Table”
FondsProfiler @ Union Investment - o18
Technical Highlights
19. |
Ensuring that project guide lines are followed
FondsProfiler @ Union Investment - o19
Technical Highlights
20. |
Ensuring that project guide lines are followed
Using APEX Repository, Metadata from Database and “Master Table”
APEX
- Branches, Process, item, region, button, page
- Names, Templates, Condition never, help text, alignment, lov
Database
- Save_page, fetch_items, check_data, table and column mapped
Master Table
- Item on page, compare in tables, reference tables contains data
FondsProfiler @ Union Investment - o20
Technical Highlights
21. |
Ensuring that project guide lines are followed
FondsProfiler @ Union Investment - o21
Technical Highlights
APEX Advisor
Project guidelines were documented
- but as usual, nobody follows these, therefore:
- QA-Tool was introduced
- enforces the project specific guide lines
24. |
Validations
FondsProfiler @ Union Investment - n24
Technical Highlights
Each page can be validated by a click on a button
Saving data and checking data had to be separated
Based on Master Table Type and if field is mandatory should be used
> 270 validations are performed
- Simple ones like “is number?” > client-side check
- Complex ones > server-side check by PL/SQL
either page-specific or by using a general package
All checks can also be performed at once!
26. |
Security Concept
FondsProfiler @ Union Investment - o26
Technical Highlights
Combined LDAP/local authentication used
Triggers log every possible change
Authenticated users may see every page
- jQuery renders appropriate fields read-only, depending on security settings
- No server sided security, no checksum performed (accepted behavior)
Lock a set of data based on functional definition
- Lock all pages related to fondsprofil based on time
- Lock automatically the page and the related data
27. |
Querying the whole data model
FondsProfiler @ Union Investment - n27
Technical Highlights
28. |
Querying the whole data model
FondsProfiler @ Union Investment - n28
Technical Highlights
End user can query data model by using Interactive Reports
- Each IR covers a section of business data
- Based on a set of data and the definition of the Master Table another row had
to be selected
Table functions used
30. |
Delta-Reporting
FondsProfiler @ Union Investment - o30
Technical Highlights
Recursive mechanism based on foreign keys
Using Master Table to determine dynamically Label
Comparing two sets of data
Collections were utilized to improve performance
Building a direct link to the related APEX page where the attribute can be
maintained
31. |
Copy-Functionality
Copying a set of data relying on many tables (1-1,1-n,n-m)
Different types of copy
- Using copy as a template
- Using copy as a new version of old data
Master Table defines for each field if the field should be copied based on the
copy type
FondsProfiler @ Union Investment - o31
Technical Highlights
32. ||
Are you ready for doing big (APEX)
projects?
FondsProfiler @ Union Investment32
34. |
Enjoy the rest of the conference!
MT AG
Balcke-Dürr-Allee 9
40882 Ratingen
Telefon: +49 (0) 21 02 309 61-0
Telefax: +49 (0) 21 02 309 61-10
E-Mail: apex@mt-ag.com
apex.mt-ag.com
Editor's Notes
Union Investment:
One of the largest investment company for private and institutional investors in Germany
2.392 Mitarbeiter (30.09.2012)
188 Mrd. € Assets under Management (Stand 30.09.2012)
Head office in Frankfurt
Offices in Luxemburg, Hamburg, Warschau,Hong Kong
- 80% der Funktionalität in oraDIS (Grunddaten Fonds) wurde in FondsProfiler nachgebildet. Dazu kamen die Themen “Benchmarking” (war vorher auf Basis Excel) und die Übergabe von Daten an ein Anlagegrenzprüfungssystem (war vorher MIG 21, jetzt CRIMS, da CRIMS sowohl Pretrade als auch Posttrade-Prozesse unterstützt).
- Eckdaten ohne Schnittstellen
Datenbank (Michael, Peter)
APEX Entwickler (Oliver, Anke, Stephan, Andreas, Martin, Farnoosh, Udo, Jörg)
Schnittstellen (Arne, Katja, Ulf, Hendrik)
Projektleiter (Niels, Sven-Olaf, Jürgen)
QS (Simone)
Infrastruktur (Arnold)
UIT seitig wurden über 1200 fachliche Tests durchgeführt. Im allgemeinen waren hiermit 6-8 Personen beschäftigt, sowie waren in Spitzenzeiten zusätzlich 20-30 weitere Tester involviert. Der Gesamtaufwand für die fachlichen Tests belief sich auf etwa 1200-1300 Personentage.
Ndb
site-specific-layer => Every database object related to a page is encapsulated over site-package/site-view
single fetch/save => even for different tables
Acronym => FPP_xxx for every template
OL
Same look & feel => no standard mru possible
APEX_COLLECTION => handle problem when page submits and not should not save
Overloading apex_item package and rendering defining JavaScript or css
Handling mru on page 0/global page => handle problem with arrays
Overlay for adding line in mru
Using special functional handling for saving/checking
OL
OL
Normalerweise werden die Feld-Eigenschaften auf Itemebene festgelegt. In FondsProfiler kann eine Informationseinheit aus ein oder mehrere Felder bestehen. Daher müssten die Eigenschaften in einer sogenannten Mastertabelle vorgehalten werden.
OL
Normalerweise werden die Feld-Eigenschaften auf Itemebene festgelegt. In FondsProfiler kann eine Informationseinheit aus ein oder mehrere Felder bestehen. Daher müssten die Eigenschaften in einer sogenannten Mastertabelle vorgehalten werden.
OL
Using APEX Repository, Metadata from Database and Mastertable
APEX
Branches, Process, item, region, button, page
Names, Templates, Condition never, help text, alignment, lov
Database
Save_page, fetch_items, check_data, table and column mapped
Mastertable
Item on page, compare in tables
OL
OL
Ndb
Calling single Pages with AJAX from finalisation
Link to single page
Ndb
Highlighting input fields related to error
Ndb
client side -> technical checks with jQuery
Server side -> complex checks and relations with database procedure
Different Attrbutes are related to Master Table
OL
- LDAP Authentication
- All users should be able to call all pages.
Based on Master Table Information the different fields are related and able to maintain
Highlightend fields which are related to user.