Current Opportunities

No Opportunities to display

Rapid Development

By any measure, 1/2 of one person-month of development effort to go from design to beta version is a very tight timeline and it couldn't be possible if the tools had to be developed from scratch. The days of having to start from nothing and build everything from scratch are long gone in the content management field at least, today it's about modular code reuse. Within GATE Village are over 350 distinct functional modules that perform tasks as simple as ensuring a web page has been saved before it is left (DirtyForms) to as complex as as the ability to import various content and content types in batch fashion using a well-formatted input file (Node Import).

Looking at the requirements it wasn't hard to pick a candidate, Node Import brought to the table the ability to upload, manage, parse, and map the columns of the input file even providing the ability to change the field and record delimiters. It provided a framework to create the Usage Profile Datasets, really only requiring a database schema be defined and some summarizing logic be written. Using Node Import as a base allowed the Usage Profile Data Generation tool to be created with about 3 days of effort with almost half of that dedicated to code removal and simplification.

The Livelink Thread & TPS Calculator could be built in a variety of different ways but whatever approach is chosen the result will look remarkably like a spreadsheet. We are in need of a dynamic number of rows of data with multiple columns each. The columns need to be summed up, each row have formulas applied and the environmental variables applied to form the answers required. The Open Text version is built from a Microsoft's Excel spreadsheet but a requirement for our Online Livelink Performance Suite is that there be no desktop/office programs involved. Enter in Sheetnode which provides a Drupal integration with the mature Javascript spreadsheet called Socialcalc. While not quite as functional as Excel, it provides what is necessary and a bit more besides. With less than 1 day of development effort, the calculator was built ... though data entry was manual and formatting poor the logic was built and the answers were defensible.

As to creating a content type to hold the Environmental information associated with a particular data set and/or scaling model, while that could have been built without any code using the Content Construction Kit (CCK) we noted that a CCK-built content type would provide a very complex DB schema and meant a very complicated integration between the three pieces (each field within a CCK content is a separate DB table). While there are a large number of modules that work as example code for a custom content type, this was code developed more or less from scratch. At almost 3 days of coding, this was one of the heavy-weight efforts.

Bringing all the pieces together into a coherent and integrated package could well have been the most difficult piece going as each individual component needed to learn about how the other components accessed and stored their data. It turns out, however, that there is a wonderful helper function called Views which integrates disparate DB tables to allow for a non-programmatic integration of multiple modules.

Because of the custom nature of the Online Livelink Performance Suite, there was some coding required to integrate with Views, essentially the DB schema for the Usage Profile Generator and Usage Profile Scenario had to be provided to views. With  about 300 lines of commented code, less than 6% of the total code for the modules, the syntax and semantics of both applications was provided to Views and, once done, with the help of a wonderful UI, the semantics were passed on to the Sheetnode module.

List of Supporting Modules

The following is the full list of all modules explicitly used by the Online Livelink Performance Suite:

  1. Node Import -- Though this module was not used as it was intended, it formed an important part of the overall code. It was such a good fit that a wholesale find+replace of "node_import" to "usage_profile_gen" was almost enough by itself to allow the uploading and parsing of files.
  2. Sheetnode -- The calculator really needs to be interactive, online, and integrated within the community software. Socialcalc fit the bill from a spreadsheet standpoint and Sheetnode offered not only an integration with Drupal but a Views-aware integration that made it almost trivial to populate the calculator with values generated from Usage Profile Data Generation and variables set by Usage Profile Scenarios
  3. Views -- this module really allowed each of the three sub-components of the Online Livelink Performance Suite to be developed and tested independently from each other, it is Views alone that provides the integration
  4. Users-- while core to Drupal, this module provided the solid structure and code such that account management and access control were completely trivial to provide
  • FAQ and ad_views -- two modules deserve mentioning that helped to expand and enhance the documentation for creating a custom content type and views integration respectively. While there are undoubtedly many other modules that could have just as easily been used, these two provided succinct and easy to follow examples working well as mentoring-modules

Finally, while not a module, it is certainly worth pointing out the superb help and support we found from the Drupal community at large; as a relative newbie to Drupal with extensive software development background, there was little time for the typical, slow, stepwise fashion to learning a new system. We had a very aggressive timeline and we felt our collective knowledge should be able to steer us correctly. This meant that we asked a few questions that made it seem we knew a lot less than we did (some things that turned out to be fundamental to the general workings of Drupal) but we received the help we needed and in good time as well.

A great number of modules were also used implicitly, mostly to provide the UI. The following is a non-comprehensive and non-sorted list: DirtyForms, Vertical Tabs, MetaTags, Workflow, Rules, TinyMCE/Wysiwyg, AJAX, JQuery, progress meter, PathAuto, Page Titles, XMLSitemap and of course the themes, menus, and nodes that make up Drupal core. Drupal is a very capable Content Management platform.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

User login