Todd Cornett
Gail Hamilton
Jeffrey Hoyt
As a project that has been more than 4 years in the making, the MITRE Resource for Accessing Loaded Data (MRALD) system is a dynamic, flexible option for applications which need easy and controlled access to data. It provides incredible access with little knowledge of the underlying system. The following developer's guide is meant to help anyone willing and interested in expanding MRALD to fit their needs. Any involvement in this document requires a rather deep understanding of HTML syntax, HTTP interaction, and Java development. The appendices include a few tidbits of information about how to utilize the power of the available resources as well as how to adapt the environment and look to fit your application. Any additional questions that this document does not answer may be directed to
<mrald-dev-list@mitre.org>.
Chapter 1. A Day in the Life of MRALD
Many pieces, both obvious and subtle, are needed to complete a full path through the MRALD system. A basic run through of the system goes like this.
The user starts at a pre built form. The 'pre built' idea comes from the fact that the underlying HTML encoding has the necessary information about the tables, fields, conditions, and other information necessary to interpreting the user's input as a database query. Based on the user's input, the form is submit to the MRALD system where it is first parsed for relevant information.
The first piece of information extract will be the workflow. This small piece of information tells the MRALD system which path to follow in processing the data retrieval. The rest of the relevant information is saved in the MsgObject.
This chapter is meant to describe the Workflow, including all pieces that make up and process the paths. Will discuss in detail the workflow.xml file as well as the MsgObject and the Core Servlet.
Description fo the MsgObject and the inner working of the information and content passed along with it.
Creating a new Workflow Step
Describe what needs to be extended. What functions need to be over written and under what circumstances.
Chapter 3. MRALD Query Tag Objects
This chapter is meant to describe all things associated with tags and forms. Will detail all of the existing tags and their attributes as well as how to build, add, and use your own tags.
This section is meant to explain the name and value of the HTML name/value pairs. It will not discuss the parsing of this object.
Table
Field
Order
As
OrderType
Value
This section is meant to explain the name and value of the HTML name/value pairs. It will not discuss the parsing of this object.
Link
PrimaryLink
SecondaryLink
This section is meant to explain the name and value of the HTML name/value pairs. It will not discuss the parsing of this object.
This section is meant to explain the name and value of the HTML name/value pairs. It will not discuss the parsing of this object.
This section is meant to explain the name and value of the HTML name/value pairs. It will not discuss the parsing of this object.
This section is meant to explain the name and value of the HTML name/value pairs. It will not discuss the parsing of this object.
This chapter will discuss the parsing of all the MRALD Query Tags, including but not limited to the ':' and '=' characters. Will incorporate the parser.props file and the effects of the changes on the system. Will also cover the use of selects, checkboxes, and hidden values.
Grammar of the MRALD Parsing
This section will talk about the the structure of the name/value pairs and the ability to link to different 'instances' or items through a naming scheme.
Why and How to create a new Derivation of Parser Element
Will show examples and describe the use of the ParserElement class as an extension and also how/when to override a function. It will also cover which functions are required.
Chapter 5. Query Assembly
This chapter will cover what happens after the parsing happens. It will walk through the steps to preprocess, process, and postprocess.
Anatomy of a QueryBuilder Element
How to Build a QueryBuilder Element
This chapter will cover what happens after the parsing happens. it will walk through the steps to preprocess, process, and postprocess.
Anatomy of a DDLBuilder Element
How to Build a DDLBuilder Element
Chapter 7. Form Building and Its Elements
This chapter will discuss the different ways to incorporate your latest innovation into the form building mechanism. Will begin with the way FormBuilder currently works and then will show the insertion points for additions and ways it can be changed to benefit humanity.
Chapter 8. The Output Manager and Its Children
This chapter will discuss what this means and what the final step of the workflow must do and accomplish. It will cover necessary functions for the extended classes.
How to create a custom OutputManager derivation
This section should at least go through the necessities of making a new derivation of OutputManager. ON HOLD - most likely changing to accept changes needed for the NeuroInformatics Grid aspect.
Appendix A. Custom JSP Tag Library
This appendix will discuss the various tags that MRALD and Neuroinformatics have scattered throughout the software. Including but not limited to the TLD file, syntax in the HTML/JSP code, behavior (operations and timing), and the Java class itself with the available functions and execution explanations of those functions.
Should be a detailed, almost scripted list of changes for implement a new tag. Walk through the JSP, TLD, and Java class changes needed.
Appendix B. The Glory of the Util Package
This appendix will discuss all of the classes in the org.mitre.mrald.util package available to the developer. It can be a tremendous resource to someone because many times a small piece of functionality has already been tested and implemented through one of these classes. Saves much time and expenses.
Appendix C. Extending Your Vision (With MRALD, of course)
This appendix is meant to discuss the areas we envision someone would want to extend the MRALD platform as well as any ideas we can help fuel by providing examples or future progressions of the MRALD software.