An introspective of how a large utility company utilized open source to solve the problem of moving 24x7 mission critical data around an organization requiring workflow, transactions, providing/transforming data from one system and format to another with distributed components. The overall goal was to replace hundreds of small, one-off applications with an enterprise class, distributed J2EE architecture. The completed solution is a prime example of using 100% open source software to develop an enterprise class system that saved the organization a significant amount of investment in commercial software. The solution resulted in a centralized enterprise service bus architecture utilizing best-in-class architectural concepts, J2EE components and open source implementations, such as Spring, Webservices/AXIS, Hibernate, JBoss, Quartz, JBPM, EJB/MDB, JMS, and JMX/MBeans.
|
|
|
|
This presentation will focus on various aspects of the project including the overall architecture, the project’s affect on the business, the open source software used to complete the project and the many struggles throughout the project lifecycle. The project will be demonstrated and discussed throughout the discussion of the architecture and the open software used to accomplish the project goals.
TOPIC OUTLINE
-
The Problem Definition
-
-
Many data formats
-
Many incompatible systems/applications moving the data
-
Lack of identified workflow
-
Lack of status notification
-
The Business Constraints
-
-
Limited budget
-
Limited time
-
Must follow the company process
-
The Solution
-
-
Centralized management of transformations
-
Guaranteed delivery of events and results
-
Workflow/Task identification and management
-
Pluggable transformation component framework
-
Scheduled and manual implementation of tasks
-
The Project Architecture
-
-
Build system (Maven)
-
Unit and functional tests (JUnit)
-
Administrative web console (Struts)
-
Scheduler (Quartz)
-
Workflow (JBPM)
-
Messaging event engine (JMS/MDB)
-
Activity transformers (moving data, performing business logic)
-
Notification (JavaMail)
-
Using IoC effectively (JMX, Spring)
-
Persistence to multiple data stores (Hibernate, Spring JDBC)
-
Generation of object model and business delegates (Middlegen, XDoclet)
-
Single sign-on (JAAS, JCIFS)
-
Application Server (JBoss)
-
Webservices/AXIS (SOA communication to third party systems)
-
Operating System (Linux)
-
Lessons Learned
-
|
|
|
 |