© 2006-2008 Radicore Software Ltd
Latest news
RADICORE v1.38.0 released01 August 2008
RADICORE v1.37.0 released01 July 2008
RADICORE v1.36.0 released01 May 2008
Knowledge Base
The use of Cascading Style Sheets within Radicore22 April 2008
How to implement Two Factor Authentication01 February 2008
How to implement a Virtual Private Database01 October 2007
Articles
Creating an Oracle driver for RADICORE15 January 2007
Working with a stateless protocol10 March 2006
Performing client-side XSL transformations11 December 2005
Other Stuff
Object Relational Mappers are EVIL20 August 2007
What is OOP?03 December 2006
Stored Procedures are EVIL03 September 2006
How does RADICORE aid Rapid Application Development?
In order for a framework to legitimately label itself as a RAD framework it should enable the time delay between idea and implementation to be as short as possible. RADICORE achieves this is the following ways:
All these needs are satisfied in a single framework which was built specifically with rapid application development in mind. As an example of how this works in practice, take the following scenario:
You have a simple database table and you want to construct components that will let you list (browse) using variable selection criteria, create, read, update and delete individual entries. What are the steps involved?
- Create the database table (using the database administration tool of your choice).
- Import the details into the Data Dictionary.
- Export the details to automatically generate the basic class file for that table.
- Use the transaction generation feature to create a transaction of type LIST 1. This will automatically create the following:
- The component script and screen structure file for the LIST task.
- The component script and screen structure file for each of the SEARCH, ADD, ENQUIRE, DELETE and UPDATE tasks.
- Add all six components - LIST, SEARCH, ADD, ENQUIRE, DELETE and UPDATE - to the MNU_TASK table within the menu database.
- Add the LIST task to a menu screen.
- Add the SEARCH, ADD, ENQUIRE, DELETE and UPDATE tasks to the navigation buttons for the LIST task.
- Select the LIST screen from the relevant menu button and off you go! This will initially report "no entries found", but simply select the NEW button in the navigation bar to bring up the ADD detail screen. Once you have added some entries you can return to the LIST screen to see the results. You may then select entries and use the other navigation buttons to ENQUIRE, UPDATE or DELETE. You can even experiment with the SEARCH screen to filter the records displayed in the LIST screen.
You should notice that none of the above steps requires the writing of any PHP code, or any HTML and SQL. Customisation is possible as follows:
- Although it is not possible to modify the HTML which is generated by each XSL stylesheet, it is possible to alter the style (fonts, colours, images, etc) by modifying the supplied CSS file.
- It is possible to override the SQL SELECT statements generated by the system by supplying alternative substrings as shown in How to extend the MySQL SELECT statement.
- The default class file which is generated for each database table can be customised to include any business rules or task-specific behaviour.
- The default screen structure file which is generated for each task can be customised to change the order in which fields are displayed, or even where they are displayed.
As well as not having to write any HTML or SQL, the infrastructure provided by RADICORE will automatically include the following features without the need to write any additional application code:
- The options on the menu bar are automatically taken from the contents of the MENU table in the menu database.
- When the user selects an option on the menu bar the infrastructure will deal with that request.
- The contents of the breadcrumbs area (the second row in the menu bar) is automatically maintained by the infrastructure.
- The options on the navigation bar are automatically taken from the contents of the NAVIGATION_BUTTON table in the menu database
- When the user selects an option on the navigation bar the infrastructure will deal with that request, which includes passing any context down to the selected task.
- In all LIST screens the column headings will be shown as a series of hyperlinks which, if pressed, will cause the data to be re-retrieved and sorted on that column, with automatic toggling between 'ascending' and 'descending' sequence.
- It is possible to select multiple entries in the LIST screen before using a navigation button to activate a child screen. In this case the child screen will contain a scrolling area which will enable the user to step through each of the selected entries, one at a time, both forwards and backwards, without having to return to the parent screen.
- The options on the action bar are supplied by the controller, and processed by the controller when selected.
- The pagination area will be constructed by the infrastructure, which will also deal with any pagination requests.
- The scrolling area(s) will be constructed by the infrastructure, which will also deal with any scrolling requests.
- A COPY button will be provided on the action bar of all ENQUIRE, UPDATE and DELETE screens so that data can then be PASTED into an ADD screen.
- When performing an INSERT or an UPDATE all data will be automatically subjected to primary validation using the field specifications which were exported from the data dictionary.
- When performing a DELETE all relationships will be automatically checked using the referential integrity rules which were defined in the data dictionary.
By generating transactions from the pre-defined templates a lot of processing is automatically provided "as standard". Complex tasks can be accomplished by creating families of components which are linked together using the navigation bar. The only difficult part is deciding which templates to use, but that problem soon evaporates with experience.

