Skip to: Content | Footer
GovernERP Logo

Welcome to the GovernERP Project

GovernERP Project Enterprise Class

What is Enterprise Class

Written in Java

There are serious programmers in most languages with all types of experiences and backgrounds. Having said that, we felt that by choosing Java as our primary programming language we would get a larger percentage of programmers with enterprise skill sets. These skills range from high volume transaction processing, messaging to Object Oriented programming, OOP. In addition, Java has become the premier enterprise oriented open source development language when paired with Eclipse and the other projects listed on our dependencies page.

Java is a mature platform with tremendous Open Source and commercial support. Most large contract programming firms have the skill sets for Java projects. Java can also run on a wide range of hardware and operating systems without modification. All in all we felt it would give potential users of the system the most flexibility on almost every level.

All for One and One for All

We decided early on to create a system that could be run either on a single host environment or as a distributed system. The former approach is the one most people would be familiar with for integrated accounting systems, the latter approach, the distributed system requires some elaboration.

A distributed system for the GovernERP project can be explained using the State of California as an example. Like all states, the State of California is made up of agencies that have departments underneath them and units underneath that. In California the budgeting and auditing are done within the Department of Finance, cash disbursements are done by the State Controller's Office, managing cash is the State Treasurer's Office and procurement is the responsibility of Department of General Services -- DOF, SCO, STO and DGS respectively. The above description is an over-simplification that keeps the discussion focused.

Those four agencies provide the management and oversight of their respective domains for all other agencies and departments within the State. Just like most large organizations the State has a traditional organizational hierarchy where Secretary/Cabinet level agencies have one or more agencies, boards, departments under their control and within each of them are subdivisions and units. A further reporting complication is the notion of a Program which may span organizational units in some cases up to the Agency level.

We see that the State may want to "install" complete system "nodes" in various agencies where it makes sense organizationally and load-wise, yet not loose the ability to report both vertically in the case of a traditional hierarchical organization as well as horizontally by the responsibility areas of the previously mentioned control agencies. The part of the system we are currently working on is this multi-node communication piece.

Beyond support for multiple nodes are the following strategies to help the system scale and perform the way it needs to for larger governmental organizations.

Coupling, Scalability and Being Friendly With the Server Farm

All these issues plus the distributed system topology mentioned above are really addressing one issue -- scalability. For those a little longer in the IT tooth comes the memory of early networked systems being sluggish performers. To address those performance/scalability issues faster processors, storage and networking have been created. These hardware solutions have been further augmented with technologies like clustering, multi-core processors and load balancing. Hardware and networking are of critical importance in any solution but for these technologies to really deliver the software has to play along.

Software playing well means that it has to be able to have its different parts be spread out over multiple servers without that detrimentally affecting things like session state among others. Our strategies to accomplish this starts with the basic Model, View, Controller, MVC, pattern but extends to a strongly object oriented design, with loose coupled interfaces both internally and to the browser with a Restful approach being implemented there.

 
Last Modified Feb 22, 2009 - 09:26 PM