Unfortunately, Aaron's team also lacked enterprise; if they had it, they sure wouldn't have built a system without any enterprise in it. Thankfully, management knew that there are plenty of consultants with plenty of enterprise. They went and hired a company that was so enterprise, it even had enterprise in its name! Finally, the system would be flowing with enterprise and, therefore, be a much better value to its users.
The first thing that had to go with the system was its platform. But why?!?, begged Aaron, we're all .NET developers! The consultants scoffed, answering that Java is an enterprise platform. Obviously, Aaron didn't know what the first "E" in J2EE stands for.
The next thing to go was the architecture. Before, their application used a simple, three-tier approach: the UI called a business objects which in turn called a stored procedure. The enterprise way to do things was much better, as the following example demonstrates ...
//Loading an ApprovalRequest object HashMap objectQuery = new HashMap(); objectQuery.put("ApprovalRequest","*"); objectQuery.put("ApprovalRequest.RequestId","11799"); String unused = new String; unused = ""; //note this is only used for updates GenericObject myRequest = ApprovalRequestInterface.Query(objectQuery, unused);
Aaron questioned why it had to be so much more code to load a simple request. The consultants explained: In our experience, enterprise applications require significantly more code as non-enterprise.
What's true about enterprise code is also true about enterprise database schemas. The old database had a paltry thirty-one tables; not even enough for the enterprise user authentication subsystem. Not only that, the old names had tables with names longer than three characters. Not a good strategy if you want to use certain enterprise tools ...
It was a rough transition, but it worked out for everyone pretty well in the end. As it turns out, Aaron's team didn't really need to learn too much Java; the consultants brought their own framework (the "Enterprise Foundation"), built on top of Java's, that they all had to learn instead. And although the system has a lot more bugs, is difficult to maintain, and has a much poorer user interface, all that really matters is that now it's enterprise.