450 likes | 637 Views
CERN’s Project Management Platform. Jurgen De Jonghe CERN / IT-AIS jurgen.de.jonghe@cern.ch. Projects, Timeline. ATLAS Detector 500 MCHF CORE Cost, 150 institutes in 35 countries. 1999. LHC 3.3 BCHF expenditure 12 years. 2002. CNGS 75 MCHF expenditure CERN & Gran Sasso. 2003.
E N D
CERN’s Project Management Platform Jurgen De Jonghe CERN / IT-AIS jurgen.de.jonghe@cern.ch
Projects, Timeline • ATLAS Detector • 500 MCHF CORE Cost, • 150 institutes • in 35 countries 1999 • LHC • 3.3 BCHF expenditure • 12 years 2002 • CNGS • 75 MCHF expenditure • CERN & Gran Sasso 2003 • EGEE • 50 MCHF, • 70 partners • 800 project members 2004 2005 CERN wide strategic planning
Concepts * WBS * WorkUnits * * Deliverables Resources • WBS: Work Breakdown Structure, hierarchical list of all the activities to be performed to complete the project. • Workunits: The “Leaves” of the WBS tree. Activity small in size/duration, under responsibility of one person. • use Resources (money, people) • to produce Deliverables
Agenda • Intro: CERN’s Project Management Platform • In-Depth 1: DB infrastructure to track project evolution • In-Depth 2: Excel Upload in a JEE environment
Tracking: what is the aim ? • Answer questions • What was changed by whom and when? • What are the emerging project trends? • Who is currently using the system? • How did the application’s data look in the past?
Tracking: requirements • Easy to use, transparent • Robust • Performant • Support Workflow: approval before acceptance of new data • Collaborative: inform project stakeholders of changes • Storage overhead (less important)
XML File for Database Description Tables Views <?xml version="1.0"?> <!DOCTYPE database SYSTEM "http://jakarta.apache.org/turbine/dtd/database.dtd"> <database name="PPT_EVM" tableTableSpace="tabppt" indexTableSpace="idxppt"> <table name="DOMAIN_LISTS" javaName="DomainLists“ tracking=“true” audit=“true”> <storage initial="50K" next="100K" maxExtents="20"/> <column name="ID" javaName="Id" primaryKey="true" required="true" size="6" type="DECIMAL" sequenceName="S_DOMLIST_ID“/> <column name="CODE" javaName="Code" required="true" size="12" type="VARCHAR“/> <column name="DESCR" javaName="Description" size="60" type="VARCHAR“/> … <foreign-key foreignTable="DOMAIN_LISTS"> <reference foreign="ID" local="PARENT_ID"/> </foreign-key> </table> </database> • Jakarta ‘torque’ + ‘velocity’ templates • Scripts for tracking are generated as pl/sql packages • ANT is used to build Triggers & Stored Procedures
Administrative Information Services Tracking: timeline 10:00 11:30 12:00 Insert into shop(id, descr) values (1, ‘Shop 1’); 10:00 User1 11:30 User2 Update shop set descr = ‘Produkt shop’ where id = 1; 12:00 User3 Update shop set descr = ‘Product shop’ where id = 1; Jurgen De Jonghe CERN/IT-AIS
Tracking: explicit authorization Administrative Information Services Jurgen De Jonghe CERN/IT-AIS Insert into shop(id, descr) values (1, ‘Shop 1’); 10:00 10:30 11:30 12:00 12:30 13:30 14:00 10:00 User1 10:30 PowerUser Authorise; 11:30 User2 Update shop set descr = ‘Produkt shop’ where id = 1; 11:45 PowerUser Reject; 12:00 User3 Update shop set descr = ‘Product shop’ where id = 1; 12:30 PowerUser Authorise; 13:30 User4 Delete shop where id = 1; 14:00 PowerUser Authorise;
Tracking: summary so far Administrative Information Services • Each insert, update or delete on tracked object creates a new version (= row) in the database • Tracking can be with or without authorization • Each version can be in status: new, authorized or rejected • Two timelines: • First timeline shows time when each version was really created and shows all user actions, including rejected actions and delete attempts. • Second timeline shows only authorized versions (as user will normally see it). Jurgen De Jonghe CERN/IT-AIS
Tracking: how does it work? Administrative Information Services SHOP_SRC SELECT ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID INSERT SHOP ‘instead of’ trigger Source Table ID DESCR View for last authorised version UPDATE SHOP_MIR DELETE ID DESCR Mirror Table Jurgen De Jonghe CERN/IT-AIS
Tracking: Usage Statistics About 1 million transactions for slightly less than 2 million versions
Agenda • Intro: CERN’s Project Management Platform • In-Depth 1: DB infrastructure to track project evolution • In-Depth 2: Excel Upload in a JEE environment
Excel Upload: Why Spring Webflow • Definition of the flow in one XML file – the decision-states, action-states (executed code) and the view-states (JSPs shown to the end user) • Possibility to conduct our flow according to the results of the action’s execution (not only in case of error or success) • Simple integration into our Spring Application Framework
JAXB: Java Architecture for XML Binding • Easy to use ( SAX, DOM) • Customizable • Standard • Validation & Round-tripping
Tracking: DB Implementation Administrative Information Services SHOP_CHANGES SHOP_SRC SHOP_PAST ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID ID DESCR ID ID_PREV ID_CHANGED … VERSION IS_CURRENT_VERSION ‘Back to the past’ view SHOP_ALL Versions View Source Table ID DESCR View for last version SHOP SHOP_MIR ID DESCR ID DESCR View for last authorised version Mirror Table Jurgen De Jonghe CERN/IT-AIS
Tracking: All Versions Administrative Information Services 10:00 10:30 11:30 12:00 12:30 13:30 14:00 SELECT * FROM SHOP_ALL WHERE ID = 1; Jurgen De Jonghe CERN/IT-AIS
Tracking: DB Implementation Administrative Information Services SHOP_CHANGES SHOP_SRC SHOP_PAST ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID ID DESCR ID ID_PREV ID_CHANGED … VERSION IS_CURRENT_VERSION ‘Back to the past’ view SHOP_ALL Versions View Source Table ID DESCR View for last version SHOP SHOP_MIR ID DESCR ID DESCR View for last authorised version Mirror Table Jurgen De Jonghe CERN/IT-AIS
Tracking: Changes Administrative Information Services 10:00 10:30 11:30 12:00 12:30 13:30 14:00 SELECT * FROM SHOP_CHANGES WHERE ID = 1; Jurgen De Jonghe CERN/IT-AIS
Tracking: implicit authorization Administrative Information Services Insert into shop(id, descr) values (1, ‘Shop 1’); 10:00 11:30 12:00 13:30 10:00 User1 11:30 User2 Update shop set descr = ‘Produkt shop’ where id = 1; 12:00 User3 Update shop set descr = ‘Product shop’ where id = 1; 13:30 User4 Delete shop where id = 1; Jurgen De Jonghe CERN/IT-AIS
Tracking: Transactions Administrative Information Services • Transactions group user actions • E.g., Changes to 5 workunits and their resources & deliverables • Transaction can have different transaction types. • Transaction can have comments. • Each change of tracked table belongs to some transaction. • Authorised transaction can be rejected later. Jurgen De Jonghe CERN/IT-AIS
Tracking: Application Administrative Information Services • Application is responsible for: • starting and ending transactions • setting the comments • setting type of transaction • Apart from specific screens (trends, history) no other app.code is aware of tracking. Jurgen De Jonghe CERN/IT-AIS
Tracking: Going back to the Past Administrative Information Services • How did the data look one year ago? • There is a possibility to ‘Go back to the past’. • Just call one function in TRANSACTION package and all _PAST views will return data for the desired date. Jurgen De Jonghe CERN/IT-AIS
Similar generated infrastructure:Auditing, Trees, Searching • Auditing: automatically adds fields • creation date/user • last modification date/user
Trees: Concepts * • WBS: Work Breakdown Structure, hierarchical list of all the activities to be performed to complete the project. • Workunits: The “Leaves” of the WBS tree. Activity small in size/duration, under responsibility of one person. • Workunits use Resources (money, people) to produce Deliverables • Other secondary breakdown structures will be used in large projects: • People and monetary resources are also organized in OBS (Organization) • Deliverables are part of the final product, described in PBS (Product) • Individual parts are assembled according to an ABS (Assembly)… WBS * WorkUnits * * Deliverables Resources
Trees: Why • How to retrieve trees quickly from the database • Oracle “CONNECT BY” not ANSI standard, slow, sub-query restrictions • Iterate in Java: slow, not possible as sub-queries • We want a simple/quick query like: select code, description from wbs where b_path like ‘21.1.0.0.%’ order by b_orderintree;
Searching: Simple example Auto-generation of an additional search field:
Searching: more advanced WorkUnits * * Deliverables Resources WorkUnit extended with an extra Search Field: 19418: Supply & deliver series of thyristor converter : 1st batch Holder: A. BEURET Planned Start: 16-Nov-2004 End:16-Nov-2004 Actual Start: 30-Nov-2004 End:30-Dec-2004 Supplies & procurement (under F contracts only) Amount: 286,765 CHF BudgetCode: 96637 Contract F511/00, FF1008091 (IT-3003) Duty travel Amount: 2,000 CHF BudgetCode: 96637 Travel expenses for visiting the firm All other procurement (under M budget) Amount: 20,000 CHF BudgetCode: 96637 Free issues items F511 810A,450V] converters - Batch 1prov. Accepted 4 / 4 Unit Eq. Code: RPTF 16-Nov-2004 until 30-Dec-2004
Tracking: DB Implementation Administrative Information Services SHOP_CHANGES SHOP_SRC SHOP_PAST ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID ID DESCR ID ID_PREV ID_CHANGED … VERSION IS_CURRENT_VERSION ‘Back to the past’ view SHOP_ALL Versions View Source Table ID DESCR View for last version SHOP SHOP_MIR ID DESCR ID DESCR View for last authorised version Mirror Table Jurgen De Jonghe CERN/IT-AIS
Tracking: Tab & View Example Administrative Information Services 10:00 10:30 11:30 12:00 12:30 13:30 14:00 SELECT * FROM SHOP_SRC WHERE ID = 1; Jurgen De Jonghe CERN/IT-AIS
Tracking: DB Implementation Administrative Information Services SHOP_CHANGES SHOP_SRC SHOP_PAST ID DESCR T_PK T_START T_END T_AUTHSTART T_AUTHEND T_WORKID ID DESCR ID ID_PREV ID_CHANGED … VERSION IS_CURRENT_VERSION ‘Back to the past’ view SHOP_ALL Versions View Source Table ID DESCR View for last version SHOP SHOP_MIR ID DESCR ID DESCR View for last authorised version Mirror Table Jurgen De Jonghe CERN/IT-AIS
Tracking: Normal User View Administrative Information Services 10:00 10:30 11:30 12:00 12:30 13:30 14:00 SELECT * FROM SHOP WHERE ID = 1; Jurgen De Jonghe CERN/IT-AIS
Excel Upload: Spring intro • Spring is essentially a technology enabling you to build applications using POJOs. • Through its bean factory concept, Spring is an Inversion of Control (Dependency Injection) container . • Hollywood Principle: "Don't call me, I'll call you.“ • Benefits: • components don't need to look up collaborators at runtime, they're simpler to write and maintain • for the same reasons, application code is much easier to test • most business objects don't depend on IoC container APIs. This makes it easy to use legacy code... an IoC container isn't invasive
Excel Upload: Spring WebFlow • For building web application modules that guide the user through controlled navigations that drive business processes spanning HTTP requests. • A generic flow engine based on a finite-state machine for the execution of a web conversation. • Goals: • Integrates with existing frameworks like Struts, JSF... • Flow definitions should be declarative and understandable by business analysts (easy like a visual diagram, such as a UML state diagram) • Flow definitions should be self-contained. • Reusable modules usable standalone or combined in larger, more complex flows. • Easily testable in isolation.
PPT: a Project Management Platform * * Web Components User Interface Components Analysis reports Ad hoc crosstabs Configurable Business Rules Project Management Domain OLAP Engine Collaborative Events & Alerts Bus Summary Layer Change Management Relational Database