Professional Documents
Culture Documents
Technical Design of Athena (Agile-Primavera Connector) : Gaea Internal Use Only
Technical Design of Athena (Agile-Primavera Connector) : Gaea Internal Use Only
System/Project Name
Athena
Total No. Pages: 14
GAEA INTERNAL USE ONLY
Record of Revisions
Rev Description Owner Approval Date
1 Initial Draft Sury
- ii -
GAEA INTERNAL USE ONLY
Table of Contents
1.0 INTRODUCTION...............................................................................................................................................4
2.0 ASSUMPTIONS..................................................................................................................................................4
7.0 NOTES................................................................................................................................................................14
8.0 Appendix.............................................................................................................................................................14
- iii -
GAEA INTERNAL USE ONLY
1.0 INTRODUCTION
This document intends to give a summary of the design of Athena (internal code name for Oracle Agile-
Primavera connector). The connector is used to provide the best-of-breed functionality of Oracle Agile and
Oracle Primavera to its respective customers. This should be used in conjunction with the functional design
document 9_3_1_FDD_RPS_Primavera_Integration_v1.2. The primary audiences for this document are
technical architects, programmers and techno-functional personnel intending to understand the connector.
Not all classes are documented here; the writers strongly believe that the code by itself is the living breathing
documentation for any system. This document gives an overview into design decisions, architectural
considerations, code structure and highlights possible future improvements.
2.0 ASSUMPTIONS
Reader knows basic architecture of Oracle Agile and Oracle Primavera and the webservices each of these
products exposes. Please refer to respective product documentation to get familiarized with if there are
any questions regarding them.
Reader understands basic webservices, java patterns and related technologies.
- iv -
GAEA INTERNAL USE ONLY
Figure 1
Figure 1 depicts the architecture of the connector along with Agile and Primavera. A high-level view of the
components involved is also shown.
-v-
GAEA INTERNAL USE ONLY
Figure 2
Figure 2 indicates the various technologies used in the connector. The technology stack of connector is Java-
centric with a liberal use of standard frameworks for presentation and the data access layer (Struts, Hibernate).
Two standard patterns Business Delegate, Factory and Service Locators are used.
- vi -
GAEA INTERNAL USE ONLY
All the fields that needed to be exchanged between Agile and Primavera were stored in a table
(ATHENA_OBJECT_MAPPING). On connector initialization, the table was loaded into the VM using a
context listener. Hot deployment of changes to the mapping table will be available in the next point release.
The presentation layer for the connector was necessary to satisfy some of the requirements that arose of the
functional design.
- vii -
GAEA INTERNAL USE ONLY
Figure 3
Figure 4
- viii -
GAEA INTERNAL USE ONLY
Figure 5
Some of the key classes in the connector are shown in this section.
- ix -
GAEA INTERNAL USE ONLY
Figure 6
Figure 6 shows the classes that make up core services that delegates call for authentication, exporting
projects , importing projects, syncing resources, reading activities and so on.
-x-
GAEA INTERNAL USE ONLY
Figure 7
- xi -
GAEA INTERNAL USE ONLY
Figure 8
Figure 8 shows the Agile service classes used in the connector to Authenticate, Search, import and export
projects. (Note: This will be refactored into separate export and import classes).
Figure 9
Figure 9 shows the IProgramObj interface whose implementation class is the primary driver of exchange of
project information between the two systems.
- xii -
GAEA INTERNAL USE ONLY
would import the project, its tasks, dependencies, resources, roles, budgets and expenses for the project. The
alternative would have been to make separate web service calls to create each of the entities mentioned.
The export out of Primavera would be a single webservice call that would export the project out of
Primavera and marshaled into Java objects , transformed into a list of mapping bean instances which would
then be used to update Agile. The current update into Agile is a three step process:
1. Update Users in Agile from Project Resources in Primavera
2. Update UserGroups in Agile from Project Roles in Primavera
3. Update project in Agile from Primavera project
Other webservice calls e.g. Authentication, Resource sync also minimize chatter between the connector and
the upstream/downstream systems. Specifically authorization in Agile and Primavera are made sticky
using sessions.
Another important design decision that was taken was the load of Primavera Code, User-Defined Types that
are being used in the connector on connector initialization. The objectIds and datatypes of these codes and
user-defined types will have to referred in the XML/Java objects that have to be passed to Primavera and
hence it made sense to load them first and use them throughout the life of the connector.
As much as possible, interfaces and abstract classes were used to stub out the actual implementation details.
Simple POJOs to assist in transformation of the data by means of other the helper classes and utilities
round up the business layer. The properties of the connector (e.g. Primavera webservice location,
loginname, password, Agile webservice location, loginname, password) were stored using the Java
PreferencesAPI.
There was no real need for exposing any of the business services as internal webservices at the time of
design or initial implementation as it was decided to keep the connector within a single JVM
The goal of scriptlet-less JSP was enforced early on for easy readability of code. While it was desired to use JS
handlers instead of embedding script code, there are instances of JS code seen in JSP.
AJAX calls are made to never call Action classes but downstream BusinessDelegate methods and never a
DAO class as well. The dependency of AJAX calls was always with BusinessDelegates to keep with the
original goal of being data-agnostic whether it is an synchronous or asynchronous call.
- xiii -
GAEA INTERNAL USE ONLY
The actual installation of the connector is swing based with a simple wizard that asks for location of
Primavera and Agile webservice locations (server, port, url) and authentication to verify these. The wizard
also asks for the location of the database where it can store the mapping table. For more details please see the
Connector Installation Guide.
7.0 NOTES
8.0 APPENDIX
- xiv -