Transcript Anne Pajon

Developing PiMS 1.0
Bill Lin
Bill Lin - Developing PiMS 1.0
850 of 5000 commits in PiMS during last 12
months:
■ Applying Hibernate as the persistence
layer & improve DataModel API(60%)
■ Database Upgrader (15%)
■ Others: testing, defect fixing, web functions
(25%)
PiMS architecture
Java server pages
Generic servlets
Presentation model API
Data Model API
Persistence layer
Database
Applet?
PiMS old DM architecture
DM API
CCPN generated PIMS
(4k lines of code)
Datamodel API
(117k lines of code)
- Before V0.5
CCPN
DataModel
CCPN generated Persistence Api
(2k lines of code)
Database
CCPN
generated
SQL
schema
CCPN
generation
Machine
Main Problems
Were:
■ Generated code was “out of control”
■ Generated code was difficult to understand
■ Generated API was not easy to use
■ Performance Problem
■ Single transaction only
PiMS new DM architecture - After V0.5
Generated**
Datamodel API
(25k lines of code)
PIMS DM API **
(2k lines of code)
Hibernate Persistence Package
Database*
* Same as before
**Most interface same as before
Hibernate
Mapping
files
CCPN*
generated
SQL
schema
CCPN*
DataModel
(CCPN)
generation
Machine
Improvement
■ Generated code is under control
■ The “target” code is provided before generated
■ Generation machine is control by Anne with
CCPN’s help
■ Code can be changed without generation
machine
Improvements
■ Generated code is much easier to
understand
■ Generated code reduced from 117k to 25k
lines
Improvements
■ Generated API is easier to use
■ PiMS DM API code reduced from 4k to 2k lines
with more functions
■ Simplified the way to use API
A simple example:
MetaClass metaClass = version.getModel().
getMetaClass(ccp.api.Target.Status.class.getName());
Collection statuses = version.getAll(metaClass);
Collection<Status> statuses=version.getAll(Status.class);
Improvements
■ Performance is improved a lot
■ Duration of loading 9,000 targets reduced from
“>24 hours” to “<20 mins”
■ Cache is in used now.
■ Multi-transaction is supported now
PiMS future DM architecture
Datamodel Api
PIMS API
Annotation in POJO
Hibernate Persistence Package
Database
Hibernate
Mapping
files
SQL
schema
DataModel
Generation
Machine
?
PiMS future DM architecture
Will be:
■ Less dependence
■ Not rely on CCPN’s generation Machine
■ ObjectDomain Ltd is apparently no longer trading
■ More flexible
■ Annotation within source code will control
mappings, UML and SQL
Database Upgrader
■ Changes to Data Model risk damaging
existing data
■ Upgrader is essential to protect user data
during upgrades
■ PIMS is already in production use by MPSI,
SSPF, YSBL
■ Upgrader has been created for each
version of PiMS: version 0.4, 0.5, 0.51 and
1.0
Others
■ Testing:
■ Found 111 defects in PiMS
■ Fixing:
■ Around 100 defects
■ Web Functions:
■ MRU
■ Leeds Primer Order Forms