Freight Database Wrapper Module For Dynamic Hypermedia Engine Project (DHymE) Project Report Summer 2000 Submitted to Dr. Michael Bieber Department of Computer and Information Science New Jersey Institute of Technology by Aparna Krishna
Freight Database Wrapper Module
For Dynamic Hypermedia Engine Project (DHymE)
Project Report
Summer 2000
Submitted to
Dr. Michael Bieber
Department of Computer and Information Science
New Jersey Institute of Technology
by
Aparna Krishna
2
INDEX
1.Introduction and Background
1.1 Project Background
1.2 Project Introduction
2. Project Description
2.1 Project perspectives
2.2 Project Functions
2.3 General Constraints
2.4 Assumptions and Dependencies
3. System Functional Specification
3.1 Functional Requirements
4. System Performance Requirements
4.1 Efficiency
4.2 Reliability
4.3 Security
4.4 Maintainability
5. System Design Overview
3
5.1 System Organization Chart
5.1.1 Overall Design
5.1.2 Interaction with the rest of the engine
5.2 System Flow chart
5.3 System Data Structure preview
5.4 Operation Overview
5.5 Implementation Languages
5.6 Required Support Software
6. System Data Structure Specification
6.1 Input Specification
6.2 Output Specification
6.3 Bridge Laws
6.3.1 Element Types
6.3.2 Element Hierarchy
6.3.3 Bridge Laws
6.4 Messages
7. Module Design Specifications
4
7.1 Module Functional Specification
7.2 Module Operational and interface specification
7.2.1 Interaction with the rest of the engine
7.2.2 Message Handlers in FDWM
7.3 Module Operation
7.3.1 To start the Module
7.3.2 To Shut down the Module
7.3.3 Error Conditions
7.4 Module Limitation/Restrictions and Rules
8. System Testing
8.1 Functions to be tested
8.2 Testing Procedure
9. Extending the Project
9.1 Some Extensions for this project
10. File Listings
10.1 File Locations
10.2 Explanation for each file
5
Introduction and Background
1.1. Project Background
1.1.1. The Internet and World Wide Web
“The network is computer" comes true. The Internet computing is becoming the mainstream
of all computing. In the past fifteen years a new technology has evolved that makes it possible to
interconnect many disparate physical networks and make them function as a coordinated unit.
The technology called internetworking which accommodates multiple, diverse underlying
hardware technologies by providing a way to interconnect heterogeneous networks and a set of
communication conventions. The internet technology hides the details of networks hardware and
permits computers to communicate independent of their physical network connections. The
internet technology is an open system interconnection. It called an open system because unlike
proprietary communication systems available from one specific vendor, its specifications are
publicly available so anyone can build the software needed to communicate across an internet.
The World Wide Web is the most popular application on the Internet. Web applications
authors the function in a hypermedia environment analogous to second-generation computing
building and managing all hypermedia links using simple anchors and single-step navigation.
But with most of World Wide Web applications people usually suffer from the searching related
information because they can not find satisfied information sometimes.
6
1.1.2. The Dynamic Hypermedia Engine
The Dynamic Hypermedia Engine, DHymE, is an approach to provide hypermedia
linking for World Wide Web applications that dynamically generate their content. It can run in
parallel with other applications and dynamically gives these applications hypermedia
functionality. The dynamic here means that there will be a run-time mapping of the application
information and relationships to hypermedia objects both within the system and external to it.
Many applications being brought to the Web have a well-defined architecture.
A primary portion includes a computational section and a secondary portion includes the
wrapper section which grabs the output of the computational part and formats it into HTML thus
allowing it to be displayed on the browser which forms the final interface to the application. The
DHymE intercepts the messages (in this case, HTML pages) between the application's
computational section and its interface section, automatically detecting the location of
interrelationships in messages and documents based on the knowledge of the application's
internal structure. It defines the mapping rules, Bridge Laws, between the structural relationships
of the application and the hypertext features. Therefore, not only does every anchor essentially
lead to a set of all relationships inside the application, but also leads to any user-specified
annotation and any other relationships external to the application. In this way, It provides not
only broaden information but also create new links, which lead to hidden information. Some
applications that would benefit from hypermedia are applications whose output is generated
dynamically such as Freight and also applications where information on the structure would be
valuable to see like databases.
7
1.1.3. The Hypermedia
Hypermedia is a series of documents, each of which display on the screen as a visible
link to at least one other document in the set. The link represents different kinds of intra- and
interrelationships inherent within application structure. The link is usually highlighted, either by
bold-faced text, reverse text, differently colored text, or underlining. The user "navigates"
through a hypermedia by selecting these links, typically using either the keyboard or the mouse.
The link leads to another document, which in turn offers links to additional documents and so on.
In a well-constructed hypermedia, any significant reference is shown as a link; select that link
and you're reading the linked document.
Hypermedia encourages authors to structure information as an associative network of
nodes and interrelating links. This frees authors from the linear, sequential structure that
dominates most printed documents. Presenting information as an associative network enables
readers to access information in the order most appropriate to their purposes, freeing them from
obeying the implied linear ordering within printed documents. Hypermedia is the study of
relationship management. It concerns both representing a corpus of information in a non-linear
network and giving users access to relationships within a corpus of information. Multimedia also
concerns the development, use, management and integration of various media forms, including
text, graphics, audio, video, and animation. Incorporating multiple media offers the opportunity
to convey much more information effectively than a single medium provides. Hypermedia has a
rich feature set including guided tours, recommended paths, annotation, information overviews,
sophisticated backtracking, and so on.
8
1.1 DHymE Architecture
The goal of this project is to provide full hypermedia functionality to a dynamic
application or "dynamically-mapped information systems" (DMIS) with minimal or no changes
to it. The dynamic- mapping hypermedia engine (DHymE) will serve any DMIS and user
interface system (UIS) that has an appropriate wrapper knowledge base. To integrate a new
DMIS or UIS, one has to specify a wrapper and knowledge base for it. Thus, to provide a DMIS
application with hypermedia support, the developer only has to declare the contents of its DMIS
wrapper and knowledge base. This may prove straightforward or complex. But, in any case it
only must be done only once to apply any DMIS instance.
1.2 Components of DhymE
The components of the hypermedia engine are developed to allow an application,
whether it is developed to use hypermedia or not, to register it's components with the hypermedia
engine in such a way so that a user when placing a request with the components of the system
can be identified. The two components that interact with the two ends of the system, are the user
interface and application, or the User Interface Wrapper (UIW) and the Dynamically Mapped
Information System (DMIS). The DMIS is the application whose components are being mapped
by the hypermedia engine.
9
Figure 1
User Interface System (UIS): The web browser used by the user.
User Interface Wrapper (UIW): The User Interface System Wrapper provides the
following functions:
• Translates messages from the DHymE's standard format to something the
10
UIS can process, and vice versa
• Passes messages between two systems
• Buffers the UIS, implementing any functionality the engine requires of the
UIS, which the UIS cannot provide itself.
Dynamically Mapped Information System (DMIS): The DMIS is an application,
which generates the content of its displays, or otherwise requires the hypermedia engine
to map hypermedia for it automatically at run time. e.g. NJIT registration system can be a
DMIS program which provides the students registration information dynamically, as and
when they are registered in NJIT.
Dynamically Mapped Information System Wrapper (DMISW): DMIS wrapper's
main function is to communicate with the application or DMIS, and to "understand" the
structure of the DMIS in order to map the components and relationships between them.
The DMIS uses a DMIS knowledge base to map the internal structure of the application.
User Preference Module (UPM): As the name suggests, the user can access this module
to set certain preferences for each module, thus it customizes one's environment.
Guided Tour/Index Engine Module: The guided tour module provides the user option
of creating or running a guided tour, which is a path of documents or objects. The guided
tour resides with the hypermedia engine and is closely associated with the index engine
module. The index engine module has the functionality of controlling the index or the
path of the tour and manipulates the tour from user inputs. The guided tour also generates
11
menus for the user interface to receive input from the user in regards to creating a tour,
editing a tour, loading a tour, and navigating through a tour. The guided tour also
interacts with the BLEM or bridge law engine module to filter the links on the tour.
Bridge Law Engine Modules (BLEM): Bridge laws are used to describe the structure of
the application.
• Link Bridge Laws: These are used to identify links. A Link Bridge Law maps
the element instances to the global DMIS elements and produces the links for
them. Once the links are produced they are sent through to the user interface
wrapper. There might be a need to introduce a stopper bridge law which kind of
acts like a filter that removes all unnecessary links for the current anchor that has
been clicked. Alternatively, these bridges law could give the user information
about t hat kind of anchor and allow him or her to choose as to what he wants to
do.
The BLEM module uses the Bridge laws stored in a database to generate the necessary
links and passes them to the relevant module through the Gateway.
Gateway: The Gateway serves as the sole message router in the system. Any inter-
module communication is done with the help of the Gateway server. The Gateway
module provides helper methods to send and receive messages without knowing the
communication-specific implementation details. The Gateway server forwards the
12
message to the appropriate module based on predefined laws.
2. INTRODUCTION AND BACKGROUND
2.1 Perspective
The DHyMe Project currently provides different applications the ability to
dynamically generate links on a user interface system. One of the DMIS within the
current environment is the Freight database application. My project would develop a
wrapper for this DMIS making it the Freight Database Wrapper Module(FDWM). In
Figure1 this would be the box marked Freight System "DMIS Wrapper".
The current freight model is rich in information but it is unstructured. Often, the
user is unable to perceive the underlying mathematical formulas and interactions between
various elements. We have developed a Dynamic Hypermedia Engine which aims at
automating the whole process of adding links and anchors to the original model, at the
same time keeping the application ‘as-is’. This project aims to generate hypertext web
interface for Freight database and display the internal and external relationships among
the application’s knowledge base.
The Freight Information Management System consists of an Access database to
help users access commodity flow information. We need to provide hypertext features to
the Freight Information Management System to provide users with flexible and
customized navigation. Hypertext helps the users in understanding the current domain
13
better.
1. Provide mapping rules for each relationship to existing commands.
2. Provide mapping rules for each relationship/link.
3. Assign a Unique Identifier to each page(could be query screen or a query
result).
2.2 Project Functions
In brief, the FDWM provides automated linking and hypertext navigational features to
the Freight Output and makes the relationships explicit to the user.
The various functions of the wrapper are:
2.2.1 Registering with Gateway:
2.2.2 To send and receive messages.
2.2.3 Display the Freight start page for the user to select.
2.2.4 Show First page(Ex :cfcr1993): Building document to display the left & first page,
in individual frames in the browser using the UIW.
2.2.5 Use of URI to identify the elements.
2.2.6 Parse the output coming from the original Freight system and mark all the
elements.
2.2.7 Identifying Elements: Identify all possible elements and assign element ids to them.
14
2.2.8 Provide BLEM with the bridge laws for this module.
2.2.9 Generating Meta Data: For each identified element of the document, relevant meta
Data should be generated and passed back to BLEM for it to add relevant links. Send this
Meta Data for all elements on demand.
2.2.10 Use RMI
� Extend the abstract Module class of the Gateway
� Implement the processMsg() method
� Use the sendMsgToModule()for communication with Gateway
2.2.11 Use the standard messaging System of engine – FollowLink, DisplayDoc
� DTD for the messages should be the one which is used in present
Implementation
2.3 General Constraints
Since the application will be programmed in Java the computer in which the module resided
must support a Java runtime environment. Also the version of Java should be 1.3 or higher
because the output xml messages from the FDWM module are greater than 64K in size.. The
passing of messages in between the modules will use the XML format. XML messages will be
15
handled by the gateway, which is part of the hypermedia engine. The bridge law engine module
will have to provide a way to attach conditionals to the elements that will be created as links or
anchors on the document. The User Interface Wrapper should have some way to highlight an
element in a document.
2.4 Assumptions and Dependencies
There will be a standard way to pass messages between the various modules within a
predefined structure to create the messages.
- Java will be the standard language for this module.
-
3.System Functional Specification
3.1 Functional requirements
3.1.1 Register with Gateway
Every Module including FDWM must register itself with the Gateway, so that the
Gateway knows which modules are active and able to receive/send messages.
When module register itself with gateway, it need to pass some unique id of itself
so that gateway can send and receive message from that module. FDWM uses method
developed by gateway for initial registration.
As per the gateway design, Every module has to extend class Module (
16
dhyme.gateway.module.Module). This Module class is abstract class and provides all the
functionality to register with gateway and also provide methods to send messages to
gateway and also methods to receive messages from gateway.
FDWM needs to define abstract method public void processMsg(EngMsg m) in
order to extend Module class.
How to register
Pass your module name or id to the constructor of the parent class (Module class). In
case of FDWM it is "fdwm". Also call startMe(String hostname) method of super class
(Module class) and pass machine name on which module is running as an agrument. This
method registers your module name and machine name to gateway registry that helps to
find your module whenever gateway needs to send message to BLEM.
3.1.2 To send and receive messages to gateway.
How to receive message from gateway
Module class takes care of receiving messages from the gateway. After receiving
message, it calls processMsg (EngMsg m) method of the destination of the message. FDWM
needs to define what to do with message in this method.
17
How to send message to gateway
After processing the message FDWM needs to send message back to proper module
through gateway. Module class takes care of internals of sending message to gateway. After
building the message using Engine message object , FDWM needs to call method
sendMsgToModule(message).
3.1.3 Displaying the Start Page for the user to make a selection
When FDWM receives a message to display form, it gets a document with the HTML for the
user to make a selection.
Input is the incoming message discussed in 6.1.1
The parameter value is extracted and that is the name of the HTML that the FDWM will send
back to UIW.
3.1.4 Building Documents:
This functionality of the wrapper is to create the two documents necessary to display in the
browser in two different frames, in the main frame of the engine module along with the other
standard engine frames.
The input to this functionality is the name of the Freight page passed in the incoming XML
message.
3.1.5 Identifying Elements
18
This functionality is to identify all possible kinds of elements in the Freight system. Elements of
interest in the document are found by parsing. The elements are to be identified with respect to
the document in which they are present. The identified elements are assigned object Ids. The
elements are identified to BLEM through messages. If there are bridge laws associated with the
element BLEM turns it into an anchor.
The various elements of interest in the Freight System include
Element Types Pages in which they occur
1. county cfsr1993,cfsr1982,cfcr,misc
2. 1982zone cfsr1982 county to zone, zone to county
3. 1993zone cfsr1993 county to zone, zone to county
4. bothzone cfsr1982, cfsr1993, county to zone, zone to county
5. flow misc , 1982 Flowdata , 1993 Flowdata
6. flowtype misc - Total Commodity Flow
7. floworientation cfsr1993,cfsr1982,cfcr,misc
8. existing_link FreightStart page
9. description cfsr1993,cfsr1982,cfcr,misc
10. state misc- Total Commodity Flow
11. region cfsr1993- County to Region ,Region to County
19
12. us_canada cfsr1993- County to us/canada, us-canada to county
13. worldregion misc- Inflow to County, OutFlow to county
14. flowunit cfsr1993,cfsr1982,cfcr,misc
15. totalflowunit cfsr1993,cfsr1982,cfcr,misc if row name is Total
16. compflowunit Could occur in any page if there are multiple selections
17. stcc1993 misc, cfsr1993 -all items
18. stcc1982 misc, cfsr1982- all items
19. stcccomp cfcr all items
20. oldmode cfsr1982,cfsr1993,misc,cfcr -all items
21. newmode cfsr1993,misc- all items
22. compmode. cfcr- all items
23. stcc cfsr1982, cfsr1993, misc
3.1.6 To Generate Meta data
For each element identified, Meta data is identified and passed along with element location,
type and ID to be displayed in the UI Browser. Any information that is relevant and explains the
elements are passed as Meta data. The Meta information is sent In RDF syntax to the BLEM,
which adds relevant links for that element type and sends the document as meta information to
20
UIW for displaying it on the browser.
3.1.7 Bridge Laws
Some of the bridge laws provided by this module are
• GetCounty_AllCounty_82
• GetAllCounty_County_82
• GetCounty_AllCounty_93
• GetAllCounty_County_93
• GetZone_AllCounty_82
• GetZone_AllCounty_93
• GetAllCounty_Zone_93
• GetAllCounty_Zone _93
• GetSICCode
3.1.8 To execute any FDWM commands underlying the links.
21
When the user clicks on a link BLEM will send a message inserting the command that we had
specified in bridge law in the subject tag of the message. Based on the command, the
corresponding message handler for that link is called and the appropriate action taken.
The output in this case depends on the link clicked by the user. Basically the user will be able
to see a new document with respect to the link clicked.
4.System Performance Requirements
4.1 Efficiency:
Freight Wrapper Module serves the end user using the user interface wrapper on the
browser. With respect to speed, the efficiency of this module depends on the performance speed
of the UIW, BLEM and Gateway. The speed of the module also depends on the Internet
connection speed of the end user since he accesses the Engine module using the Internet.
4.2 Reliability
The module is reliable in the sense that if by any chance the module breaks down or
cannot perform it does not affect the functioning of the other modules. The Gateway of the
Engine module can delete this module from its registry and thus prevent any requests coming to
this module. Once the problem is fixed the module registers itself with gateway again and
proceeds to function normally. Also, all possible exceptions that could occur are captured.
22
4.3 Security
There is not much of a security implementation done right now with the Freight Wrapper
Module as it was not necessary. In future implementations, a separate Security module should
check the validity of the user while making a request on the underlying database.
4.4 Maintainability
The Freight Wrapper Module uses Object oriented programming approach. It is much
easier to maintain and enhance programs that follow this approach. Different programs handle
different functionality of the module. When any functionality has to be modified other programs
need not be changed. To add functionality to the module new programs are added which can
follow the approach used in the other programs.
One way in which the maintainability is simplified in the module is by providing a
Constants file and a properties file for this module. The constants file maintains all the constants
used in the module. All the XML tags used in the module are specified in these files. Any change
in the future to the XML messages going back and forth the modules can be specified here and
the other programs need not change.
The knowledge of element types is in the properties file. This makes maintainability
easier in the sense that if new element types are identified(or new classifications made) in the
future then FDWM code doesn’t have to change. We can just change the element type in the
23
properties file. For example if in future we classify counties according to the Alphabet with
which they start. Then Atlantic would become element of type Acounty, Bergen, Burlington
would become element’s of type Bcounty. We just have to update the properties file to
Atlantic.type=Acounty. The current entry in the properties file is Atlantic.type=county. One
disadvantage here is that an entry in the properties file cannot have white spaces in between. So
the type of Bronx, NY would be stored as Bronx,_NY.type=region. To change the type of
flowunit some more conditionals should be added to the doMarkup method of DocumentMarker
class.
DocumentMarker class is the only one that needs access to the element types because it
has to mark up the elements. Other classes just have to send the input stream to the
DocumentMarker. DocumentMarker class takes care, if there are spaces in an element. The
DocumentMarker class has been written with extreme care to handle any kind of output from the
Freight System. A detailed discussion of the class is given later.
The names of the various programs used in the module are self-explanatory about its
functionality. There are two versions of the FreightWrapperModule. One is the testing version
and the other is the integrated version. The testing version is written to work stand-alone. The
Integrated version works along with the other modules in the Engine project. The name of the
program specifies clearly whether it is a testing version or not. Care has been taken not to write
two versions of each class.
A sophisticated approach to handle testing and integrated version is used. There is only
one version of all the programs except the program that handles the interaction with the rest of
the engine i.e. FreightWrapperModule and FreightWrapperModuleTester. In the rest of the
24
programs the appropriate program FreightWrapperModule or FreightWrapperModuleTester is
called depending on whether we are running the testing version or integrated version.
How to check? When the module is run set a system property “debug” using java –D
debug=””. In all the other programs check to see if the system property debug is set to YES or
NULL. If it is null use the FreightWrapperModule since it means we are running an integrated
version and if it is YES use FreightWrapperModule since it means we are running the testing
version.
Java being the programming language of the Freight Wrapper Module, it provides high
maintainability and portability than programs developed by other languages. Java programs are
compiled to byte-codes so, they run on any platform that supports Java without the necessity to
recompile the programs again when they are moved to a different machine. The Java language is
the same on every computer and platform. You do not need to learn the specific function and
syntax to maintain your code when you work on different machines. With the extensive and
extensible library of classes provided by the Java, it is trouble-free to move and easy to organize
the code on any platform.
5. System Design Overview
5.1 System Organizational Chart
8w
FollowLink 1 8 Displaydoc 7
2
3
6
4 5
5.1.1 Overall Design
The Freight Wrapper Mo
output. FDWM does a http get r
elements. The FDWM resides with
like UIW, BLEM etc through Gate
gateway.
Whenever gateway receive
“processMsg” method of FDWM.
UIW
Gateway
FDWM
BLEM
Freight25
dule (FDWM) provides hypertext functionality to Freights
equest and analyzes the Freight output and marks all the
in Hypermedia Engine. It interacts with all the other modules
way using RMI. When FDWM is started it registers itself with
s any message to be sent to FDWM, gateway invokes the
26
At this point FDWM starts processing and functions depending on the request it got.
Once it has finished processing the incoming message, it sends a reply message to Gateway to be
sent to the appropriate module.
5.1.2 Information Exchange with rest of the Engine
Information exchange in the Engine architecture between modules is done using
Gateway. FDWM exchanges Bridge laws information with BLEM. This procedure is done
whenever the module wants to add Bridge laws. This information is not exchanged through the
gateway. Apart from this any information exchanged by FDWM to the rest of the engine is
through gateway. The information exchanged depends on the request FDWM receives from
Gateway.
5.2 System Flow chart
The Freight Wrapper Module extends the functionality of the Module object of the
Gateway. When FDWM starts it registers itself with the Gateway and waits to be invoked by the
Gateway with an Engine Message.
When a message is received Gateway invokes the processMsg method of the FDWM. In
that method, FDWM finds out the type of message received and invokes the appropriate message
handler.Each Message Handler processes the message depending on the functionality that it is
supposed to provide and creates a reply message, which is sent to the client through the Gateway.
Engine Message
Engine Message
5.3 System Data Structure Preview
Engine Message Object is used to c
extract information from the messag
There are certain tags that h
module. These are the location of th
the request id of the message receiv
the current destination of the messa
these different modules may expect
y
Freigh
Gatewa
Fig 5.2 System Flow Chart
reate messages to be sent to other module
es received by the module.
ave to be present in all the messages goin
e DTD of the message, the root name of th
ed, the type of the message, and the orig
ge and the final destination of the messag
different tags in the message for their proc
t Wrapper Module
n
r
FDWM properties
DisplayHandler
GetFirst Handler
GetDocument Handler
GetCounty_AllCouty 82Handler
GetAllCounty_County 82Handler
GetCounty_AllCounty 93Handler
s. It is
g bac
e Eng
in of
e. Ov
essing
GetAllCounty_County 93Handler
27
also used to
k and forth a
ine Message,
the message,
er and above
.
GetMetaInfoHandler
DocumentMarke
Freight28
5.4 Operation Overview
The .class files needed to run the Freight Wrapper Module is located in the shared/java-classes
directory.
There is a script called startFDWM which starts the module.
In order for the FDWM to run, the gateway and BLEM should be up and running. To
actually see some output the UIW should be up and running.
5.5 Implementation Languages
Java is the language of choice for this module and all the modules in the Hypermedia Engine
because it is portable across platforms. Java compiler generates bytecode instructions, which
have nothing to do with particular computer architecture. This feature aids in Java being
portable.
Java is a truly object oriented programming language. When this module or the Engine
project itself grows because of the object oriented approach used in the project scalability and
maintainability are easier.
RMI technology is used in this project. RMI is Java’s implementation of RPC (Remote
Procedure call) for java-to-java object distributed communication. RMI allows Java objects
running on the same or separate computers to communicate with one another visa remote method
calls. Such method calls appear the same as those operating on objects in the same program.
29
The system performance requirements also require taking use of the multithread
technique to improve the performance and reliability. Java suits this picture excellently.
Java controls the application as it runs and stops it from wreaking havoc.
Java's exception handling makes run-time error management into the object-oriented
world. This feature provides our application running safely and robustly.
Message Format Language
XML is used to send messages within modules in the Engine Project. XML has been
described as an "open data formatting system", a means to create "smart web pages", or a
"universal standard for describing data". XML is not a fixed format but actually a misnomer: it is
not a single markup language in itself; it is a metalanguage (a language that defines other
languages) that allows the design of one’s own markup language. It has the potential to give
structure and meaning to the information contained in any data format – making such
information easy to index, categorize, and search. XML has been used to create specialized
markup languages for chemistry, music, and Mathematics. So it fits the hypermedia very well.
A markup language defines a way to describe information in a certain class of
documents. XML provides a means to define customized markup languages for many classes of
documents. It can do this because it is written in SGML (Standard Generalized Markup
Language), the international standard metalanguage for markup languages. Metadata – "data
about data"- enables developers to describe content and invent tags that best describe that
30
content. It addresses many of the issues regarding managing, finding, filtering, customizing, and
aggregating Web content in a standardized way.
In our engine project, whether it is a computer file or a paper file, we need a way to make
the knowledge within any object accessible. We need a way to label its knowledge content. A
standardized approach to describing the content of knowledge containers can provide the
foundation for making it easier to find specific information. The XML defined Metadata can be
used for a variety of purposes: to identify the knowledge content of a resource; to evaluate the
quality or fitness for use of a resource; to track the characteristics of a resource for subsequent
maintenance or usage over time; and so on. Developers can use Metadata to build site maps,
search engine data collection (Web crawling), or content ratings. XML, then, is a mechanism to
present metadata in a standardized way.
In our XML message files, we define its syntax rules and tags with Document
Type Definition. DTD, which can be associated with an instance of XML code via Hypertext
Transfer Protocol as an optional attribute in the initial declaration, or can be included in-line with
the XML code (in the case of simpler DTDs). A DTD is used to determine characteristics such
as: Element names which tags can be used in an XML document, The order they should appear
in, How tags can appear inside other ones, and in which combinations, and what attributes are
available for each element type.
5.6 Required Support Software
31
JDK 1.3 or above
IBM XML parser classes
The Java classes of the Gateway and Engine Message of the hypermedia engine
The running modules of the Gateway and UIW of the hypermedia engine
Various utility classes of the Engine project
Freight System up and running.
6. System Data Structure Specification
6.1 Input Specification
All the messages received by FDWM are of message type – FollowLink. When such messages
are received, FDWM is expected to process the message and send a response message back to
gateway. The FDWM identifies what it has to do with a particular message based on the subject
tag of the message it receives.
The Data format or DTD for all follow link messages is the same. This means that any
module, which expects FDWM to perform any function, should send a message in the following
format.
The following is the DTD for a FollowLink Message.
<!ELEMENT EngMsg (RequestID, MsgType, Origin, Current, MsgNo, Destination,
32
MsgBody)>
<!ELEMENT RequestID (#PCDATA)>
<!ELEMENT MsgType (#PCDATA)>
<!ELEMENT Origin (#PCDATA)>
<!ELEMENT Current (#PCDATA)>
<!ELEMENT MsgNo (#PCDATA)>
<!ELEMENT Destination (#PCDATA)>
<!ELEMENT MsgBody (Subject, BLid, Parameter*)>
<!ELEMENT Subject (#PCDATA)>
<!ELEMENT BLid (#PCDATA)>
<!ELEMENT Parameter (ParamName, ParamValue*)>
<!ELEMENT ParamName (#PCDATA)>
<!ELEMENT ParamValue (#PCDATA)>
There are some common tags across all messages. These are RequestID, MessageType, Origin,
Current and Destination. Whatever is inside msgBody may change across messages.
RequestID is used by the UIW to identify a response message to a particular request of an end
33
user.
Message type in this case is FOLLOWLINK
Origin will be the module id of the module, which is sending the message
Current will be the module id of the module where the message is currently present.(For
example, all the messages that generate from UIW will go to BLEM before it comes to the
DMISW. In this case when it is with BLEM the origin will be UIW but the current will be
BLEM)
MsgNo is the message number of the message.
For now the Bridge law id will be an empty tag.
Destination will be the Final destination of the message
6.1.1 Display Message: This message is received from the User Interface Wrapper through the
Gateway. This is like a startup message for FDWM since this is the first message that module
expects to receive. When the end user clicks on my module name on the browser, this message is
generated by the user interface wrapper and sent to FDWM.
The message received by FDWM is identified as display message by extracting the
Subject tag information, which should say “display”.
An example of a Display Message
<?xml version="1.0"?>
34
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965232386929</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965232387019</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>display</Subject>
<BLid></BLid>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>FreightStart</ParamValue>
</Parameter>
</MsgBody>
35
</EngMsg>
There can be any number of parameters. But FDWM expects only one parameter –
Element_ID.
This message is like a startup message, which FDWM will use to send the Freight startup
screen to be displayed in the browser to allow the user to make a selection.
So FDWM expects to get the parameter value as FreightStart, which is the page to be
displayed.
6.1.2. GetFirst Message: This message is received from the UIW through the gateway when the
end user makes a selection in the FreightStart page.
The pagename of Freight that is requested, is got from the UIW in this message. The
parameter name expected by the FDWM is Element_Id and the parameter value is whatever
selection the user made in the browser.
An example of a GetFirst message is :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
36
<RequestID>965233839759</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965233839805</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getFirst</Subject>
<BLid></BLid>
<Parameter>
<ParamName>type</ParamName>
<ParamValue>dhyme:fdwm:existing_link</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:existing_link:cfsr1993</ParamValue>
</Parameter>
37
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name
and the uniform resource identifier as the parameter value. The parameter value contains the
value of the anchor that the user clicked on.
The following are the messages generated in response to the user clicking on a link for this
module in the browser.
6.1.3 GetDocument Message : When the user does a “submit” on the form for a document , this
is the message that the FDWM expects to receive in order to process the request.
Example of GetDocument Message
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965232503099</RequestID>
38
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965232503164</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getDocument</Subject>
<BLid></BLid>
<Parameter>
<ParamName>select2</ParamName>
<ParamValue>Air</ParamValue>
</Parameter>
<Parameter>
<ParamName>select1</ParamName>
<ParamValue>Mode93</ParamValue>
</Parameter>
<Parameter>
39
<ParamName>submit</ParamName>
<ParamValue>Submit</ParamValue>
</Parameter>
<Parameter>
<ParamName>Aspfile</ParamName>
<ParamValue>misc:misctcf.asp</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name
and the uniform resource identifier as the parameter value. The parameter value contains the
value of the anchor that the user clicked on.
6.1.4 GetCounty_AllCounty_82 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type county.
The name of county that is requested, is got from the UIW in this message. The
parameter name expected by the FDWM is Element_Id and the parameter value is whatever
40
selection the user made in the browser.
Example of
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/FollowLink.dtd" >
<EngMsg>
<RequestID>965422643049</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965422643077</MsgNo>
<Destination>FDWM</Destination>
<User_name>guest:guest:Guest User</User_name>
<MsgBody>
<Subject>getCounty_AllCounty_82</Subject>
<BLid>BL_40</BLid>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:BLEM:BridgeLaw</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
41
<ParamValue>dhyme:fdwm:county:Atlantic</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name
and the uniform resource identifier as the parameter value. The parameter value contains the
value of the anchor that the user clicked on.
6.1.5 GetAllCounty_County_82 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type county.
The name of county that is requested, is got from the UIW in this message. The
parameter name expected by the FDWM is Element_Id and the parameter value is whatever
selection the user made in the browser.
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/FollowLink.dtd" >
<EngMsg>
<RequestID>965422825844</RequestID>
<MsgType>FOLLOWLINK</MsgType>
42
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965422825872</MsgNo>
<Destination>FDWM</Destination>
<User_name>guest:guest:Guest User</User_name>
<MsgBody>
<Subject>getAllCounty_County_82</Subject>
<BLid>BL_41</BLid>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:BLEM:BridgeLaw</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:county:Monmouth</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name
and the uniform resource identifier as the parameter value. The parameter value contains the
43
value of the anchor that the user clicked on.
6.1.6 GetCounty_AllCounty_93 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type county.
The name of county that is requested, is got from the UIW in this message. The
parameter name expected by the FDWM is Element_Id and the parameter value is whatever
selection the user made in the browser.
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/FollowLink.dtd" >
<EngMsg>
<RequestID>965422643049</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965422643077</MsgNo>
<Destination>FDWM</Destination>
<User_name>guest:guest:Guest User</User_name>
<MsgBody>
44
<Subject>getCounty_AllCounty_93</Subject>
<BLid>BL_42</BLid>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:BLEM:BridgeLaw</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:county:Ber</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name
and the uniform resource identifier as the parameter value. The parameter value contains the
value of the anchor that the user clicked on.
6.1.7 GetAllCounty_County_93 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type county.
The name of county that is requested, is got from the UIW in this message. The
parameter name expected by the FDWM is Element_Id and the parameter value is whatever
45
selection the user made in the browser.
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/FollowLink.dtd" >
<EngMsg>
<RequestID>965422825844</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965422825872</MsgNo>
<Destination>FDWM</Destination>
<User_name>guest:guest:Guest User</User_name>
<MsgBody>
<Subject>getAllCounty_County_93</Subject>
<BLid>BL_43</BLid>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:BLEM:BridgeLaw</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
46
<ParamValue>dhyme:fdwm:county:Monmouth</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name
and the uniform resource identifier as the parameter value. The parameter value contains the
value of the anchor that the user clicked on.
6.1.8. GetMetaInfo Message
This message is sent to FDWM when meta data about an element is needed to be
displayed to the user. In this message also, the FDWM expects to see parameter name as
“Element_ID’ and the parameter value to be the Element value that the user wants meta
information on.
Example of GetMetaInfo Message
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965217698825</RequestID>
47
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965217698933</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getMetaInfo</Subject>
<BLid></BLid>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:fdwm:flowunit</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:flowunit:misc:misctcf.asp:Mode82,:Air,:Cape May:Hun
:0</ParamValue>
</Parameter>
48
</MsgBody>
</EngMsg>
6.1.9 GetAllCounty_Zone_82 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type Zone.
The name of zone that is requested, is got from the UIW in this message. The parameter name
expected by the FDWM is Element_Id and the parameter value is whatever selection the user
made in the browser.
Example of GetAllCounty_Zone_82 message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965002286226</MsgNo>
49
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getAllCounty_Zone_82</Subject>
<BLid/>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:fdwm:1982zone</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:1982zone:Philadelphia</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name and
the uniform resource identifier as the parameter value. The parameter value contains the value of
the anchor that the user clicked on.
50
6.1.10 GetAllCounty_Zone _93 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type Zone.
The name of zone that is requested, is got from the UIW in this message. The parameter name
expected by the FDWM is Element_Id and the parameter value is whatever selection the user
made in the browser.
Example of GetAllCounty_Zone _93 Message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965002286226</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
51
<Subject>getAllCounty_Zone_93</Subject>
<BLid/>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:fdwm:1993zone</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:1993zone:All Zones</ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name and
the uniform resource identifier as the parameter value. The parameter value contains the value of
the anchor that the user clicked on.
6.1.11 GetZone_AllCounty_82 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
52
elements of type Zone.
The name of zone that is requested, is got from the UIW in this message. The parameter name
expected by the FDWM is Element_Id and the parameter value is whatever selection the user
made in the browser.
Example of GetZone_AllCounty_82 Message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965002286226</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getZone_AllCounty_82</Subject>
53
<BLid/>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:fdwm:1982zone</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:1982zone:NJ </ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name and
the uniform resource identifier as the parameter value. The parameter value contains the value of
the anchor that the user clicked on.
6.1.12 GetZone_AllCounty_93 Message: This message is received from the UIW through the
gateway when the end user makes a selection in the Browser. This functionality is only for
elements of type Zone.
The name of zone that is requested, is got from the UIW in this message. The parameter name
54
expected by the FDWM is Element_Id and the parameter value is whatever selection the user
made in the browser.
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965002286226</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getZone_AllCounty_93</Subject>
<BLid/>
<Parameter>
<ParamName>Type</ParamName>
55
<ParamValue>dhyme:fdwm:1993zone</ParamValue>
</Parameter>
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:1993zone:NJ </ParamValue>
</Parameter>
</MsgBody>
</EngMsg>
When FDWM receives this message it expects to find Element_ID as the parameter name and
the uniform resource identifier as the parameter value. The parameter value contains the value of
the anchor that the user clicked on.
6.1.13 GetSICCode Message : This message is received from the UIW through the gateway
when the end user makes a selection in the Browser. This functionality is only for elements of
type stcc.
The stcc code that is requested, is got from the UIW in this message. The parameter name
expected by the FDWM is Element_Id and the parameter value is whatever selection the user
made in the browser.
Example of
56
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Fo
llowLink.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
<MsgType>FOLLOWLINK</MsgType>
<Origin>UIW</Origin>
<Current>BLEM</Current>
<MsgNo>UIW:965002286226</MsgNo>
<Destination>FDWM</Destination>
<MsgBody>
<Subject>getSICCode</Subject>
<BLid/>
<Parameter>
<ParamName>Type</ParamName>
<ParamValue>dhyme:fdwm:stcc1982</ParamValue>
</Parameter>
57
<Parameter>
<ParamName>Element_ID</ParamName>
<ParamValue>dhyme:fdwm:stcc1982:26 - Pulp, Paper, or Allied Products</Para
mValue>
</Parameter>
</MsgBody>
</EngMsg>
6.2 Data Output Specification
For the six input messages received by FDWM there are six output messages created by
FDWM. These messages come under the class of message type called “DisplayDocument” since
they all send messages to the UIW to be displayed in the browser.
The following is the data format for all such Display Document Messages.
<!ELEMENT EngMsg (RequestID, MsgType, Origin, Current, MsgNo, Destination,
MsgBody)>
<!ELEMENT RequestID (#PCDATA)>
<!ELEMENT MsgType (#PCDATA)>
<!ELEMENT Origin (#PCDATA)>
58
<!ELEMENT Current (#PCDATA)>
<!ELEMENT MsgNo (#PCDATA)>
<!ELEMENT Destination (#PCDATA)>
<!ELEMENT MsgBody (FramesetDef?, SubFrame+)>
<!ELEMENT FramesetDef (#PCDATA)>
<!ATTLIST FramesetDef target CDATA #REQUIRED>
<!ELEMENT SubFrame (Doc, OutDoc, List_Of_Element)>
<!ATTLIST SubFrame Name CDATA #REQUIRED>
<!ELEMENT Doc (DocID, DocType)>
<!ELEMENT DocID (#PCDATA)>
<!ELEMENT DocType (#PCDATA)>
<!ELEMENT OutDoc (#PCDATA)>
<!ELEMENT List_Of_Element (Element*)>
<!ELEMENT Element (Locator, Type, Element_ID, Action, BridgeLaw_ID?)>
<!ELEMENT Locator (#PCDATA)>
<!ELEMENT Type (#PCDATA)>
<!ELEMENT Element_ID (#PCDATA)>
59
<!ELEMENT Action (#PCDATA)>
<!ELEMENT BridgeLaw_ID (#PCDATA)>
The following are the six output messages.
6.2.1. Display Message:
This message is a response message to the Display message received by FDWM. The
display message received by FDWM is like a startup message to the module. The first thing that
has to happen when the module is called is to show the end user the Freight Startup screen. This
output message does exactly that. It sends a response message to the gateway to be sent to UIW
to display the Freight Start page.
Example of the Message
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/DisplayDoc.dtd" ><EngMsg>
<RequestID>965302565918</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>BLEM</Current>
60
<MsgNo>FDWM:965302581587</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<SubFrame Name="MAIN">
<Doc>
<DocID>dhyme:fdwm:DisplayDocument:FreightStart</DocID>
<DocType>dhyme:fdwm:DisplayDocument</DocType> </Doc>
<OutDoc>
<! [CDATA[ <HTML>
<HEAD>
<TITLE>WELCOME TO NJDOT-FREIGHT DHYME</TITLE>
</HEAD>
<BODY background=http://freight.njit.edu/back2.gif >
<P ALIGN=RIGHT>
<TABLE WIDTH=80%>
<TR>
<TD>
61
<IMG SRC="http://freight.njit.edu/njdot1.gif">
</TD>
<TD>
<FONT color=#000080 face=Arial SIZE=4>
The National Center for Transportation and Industrial Productivity<BR>
<A href="http://www.njit.edu/">
<FONT color=red>New Jersey Institute of Technology
</A>
</FONT> NEWARK, NJ 07102 <BR>
<BR>NJDOT FREIGHT INFORMATION MANAGEMENT SYSTEM
</TD>
</TR>
</TABLE>
<HR WIDTH=85% ALIGN=RIGHT>
<TABLE WIDTH=80%>
<TR>
<TD>
62
<BR>
<IMG src="http://freight.njit.edu/ball.gif">
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Element_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top>About the
MIS</A>
</TD>
</TR>
<TR>
<TD>
<IMG src="http://freight.njit.edu/ball.gif">
<A HREF="http://freight.njit.edu/execute/"target=_top> Executive Summary Reports</A>
</TD>
</TR>
<TR>
<TD>
63
<IMG src="http://freight.njit.edu/ball.gif">
<A HREF="UIW?MsgType=FOLLOWLINK&Des
tination=FDWM&type=dhyme:fdwm:existing_link&Element_ID=dhyme:fdwm:existing_link:
cfsr1993&Subject=getFirst"target=_top> Commodity Flows Summation Reports (DRI-
1993)</A>
</TD>
</TR>
<TR>
<TD>
<IMG src="http://freight.njit.edu/ball.gif">
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Elem ent_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top>
Commodity Flows Summation Reports (Rebee-1982)
</A>
</TD>
</TR>
64
<TR>
<TD>
<IMG src="http://freight.njit.edu/ball.gif">
<A HREF="UIW?MsgType=FOLLOWLINK&De
stination=FDWM&type=dhyme:fdwm:existing_link&Element_ID=dhyme:fdwm:existing_link
:cfcr&Subject=getFirst"target=_top> Commodity Flows Comparison Reports (DRI-1993 vs.
Rebee-1982)</A>
</TD>
</TR>
<TR>
<TD>
<IMG src="http://freight.njit.edu/ball.gif"> <A HREF="UIW?MsgType=FOLLOWLINK&De
stination=FDWM&type=dhyme:fdwm:existing_link&Element_ID=dhyme:fdwm:existing_link
:misc&Subject=getFirst"target=_top> Miscellaneous Statistics</A>
</TD>
</TR>
</TABLE>
65
<HR WIDTH=85% ALIGN=RIGHT>
</FONT>
<CENTER><FONT SIZE=2>
<I>This site can be best viewed with Microsoft Internet Explorer 4.0 or higher.</I>
<BR><BR>Copyright c 1999 The National Center for Transportation and Industrial
Productivity, New Jersey Institute of Technology.</FONT> <BR>
<BR>
</CENTER>
</P></BODY></HTML>]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
</MsgBody>
</EngMsg>
6.2.2 GetFirst Message :
66
This message is a reply message to the message received from UIW with the selection of the
page in Freight(cfsr1993, cfsr1982, cfcr ,misc, about). This message sends as the output 2
documents in two different frames. In one frame, Freight’s left html is shown allowing user to
make selection’s at any time. In the second frame the selected page of the Freight is shown .UIW
displays these two frames in the main frame of the Engine frame.
Example of the Message
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/DisplayDoc.dtd" >
<EngMsg>
<RequestID>965321254971</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965321257609</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
67
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame
name='Second'></frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Element_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
68
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Reports</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Element_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR
(1993)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Element_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR
(1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Element_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93
vs.82)</A>
<BR>
69
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&Element_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc.
Statistics</A>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:type:cfcr</DocID>
<DocType>dhyme:fdwm:type</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<HEAD>
70
</HEAD>
<BODY background=#FFFFF ALINK=#000080 VLINK=#000080 LINK=#000080>
<CENTER>
<FONT COLOR=#000080>
<H1>Commodity Flows Comparison Reports </H1>
<H4>(DRI-1993 vs. Rebee-1982)</H4>
</FONT>
</CENTER>
<P>
<HR><FONT COLOR=#000080 SIZE=+1>
<P><IMG src="http://freight.njit.edu/ball.gif">
<A href="#1">Flows between County and County</A>
<BR>
<BR><IMG src="http://freight.njit.edu/ball.gif">Flows between County and Zone <BR>
</P>
<UL>
</FONT>
71
<B><FONT SIZE=2>Select the Flow
Orientation: <LI>
<A HREF="#cz">County to Zone</A>
<LI>
<A HREF="#zc">Zone to County</A>
</LI></UL><HR><P><FONT SIZE=+1 COLOR=#000080>
<A NAME=1><STRONG><U>Flows between County and County</U></STRONG>
</A> : <BR></P></FONT>
<FORM ACTION=UIW>
<input type="hidden" name="Destination" value="fdwm">
<input type="hidden" name="MsgType" value="FOLLOWLINK">
<input type="hidden" name="Subject" value="getDocument">
<input type="hidden" name="Aspfile" value="cfcr:cfcr1.asp">
<TABLE>
<TR>
72
<TD><B>County :</B>
</TD><TD>
<B>County : </B>
</TD>
</TR>
<TR>
<TD>Select the Origin County: </TD>
<TD>Select the Destination County: </TD>
</TR>
<TR>
<TD><SELECT id=select1 name=select1 style="HEIGHT: 40px; WIDTH: 200px">
<option value="Atlantic_CCP" selected>Atlantic, NJ
<option value="Bergen_CCP">Bergen, NJ
<option value="Burlington_CCP">Burlington, NJ
<option value="Camden_CCP">Camden, NJ
<option value="Capemay_CCP">Cape May, NJ
73
<option value="Cumberland_CCP">Cumberland, NJ
<option value="Essex_CCP">Essex, NJ
<option value="Gloucester_CCP">Gloucester, NJ
<option value="Hudson_CCP">Hudson, NJ
<option value="Hunterdon_CCP">Hunterdon, NJ
<option value="Mercer_CCP">Mercer, NJ
<option value="Middlesex_CCP">Middlesex, NJ
<option value="Monmouth_CCP">Monmouth, NJ
<option value="Morris_CCP">Morris, NJ
<option value="Ocean_CCP">Ocean, NJ
<option value="Passaic_CCP">Passaic, NJ
<option value="Salem_CCP">Salem, NJ
<option value="Somerset_CCP">Somerset, NJ
<option value="Sussex_CCP">Sussex, NJ
<option value="Union_CCP">Union, NJ
<option value="Warren_CCP">Warren, NJ
</SELECT>
74
</TD>
<TD>
<SELECT id=select2 name=select2 style="HEIGHT: 40px; WIDTH: 200px">
<option value="Atlantic" selected>Atlantic, NJ
<option value="Bergen">Bergen, NJ
<option value="Burlington">Burlington, NJ
<option value="Camden">Camden, NJ
<option value="Cape May">Cape May, NJ
<option value="Cumberland">Cumberland, NJ
<option value="Essex">Essex, NJ
<option value="Gloucester">Gloucester, NJ
<option value="Hudson">Hudson, NJ
<option value="Hunterdon">Hunterdon, NJ
<option value="Mercer">Mercer, NJ
<option value="Middlesex">Middlesex, NJ
<option value="Monmouth">Monmouth, NJ
75
<option value="Morris">Morris, NJ
<option value="Ocean">Ocean, NJ
<option value="Passaic">Passaic, NJ
<option value="Salem">Salem, NJ
<option value="Somerset">Somerset, NJ
<option value="Sussex">Sussex, NJ
<option value="Union">Union, NJ
<option value="Warren">Warren, NJ
</SELECT>
</TD>
</TR>
<TR>
<TD><INPUT id=submit1 name=submit1 type=submit value=Submit>
<INPUT id=reset1 name=reset1 type=reset value=Reset>
</TD>
<TD>
</TD></TR>
76
</TABLE>
</OPTION>
</SELECT> <P></P>
</form><BR><HR><BR><FONT SIZE=+1 COLOR=#000080><B><U>
<A NAME=#2>Flows between County and Zone</A>
</B></U><BR><BR></FONT><A NAME=cz><U><B>County to Zone:</B></U></A>
<FORM ACTION=UIW>
<input type="hidden" name="Destination" value="fdwm">
<input type="hidden" name="MsgType" value="FOLLOWLINK">
<input type="hidden" name="Subject" value="getDocument">
<input type="hidden" name="Aspfile" value="cfcr:cfcr2.asp">
<TABLE>
<TR><TD><B>County :</B> </TD>
<TD><B>Zone : </B></TD>
</TR>
<TR>
77
<TD>Select the County: </TD>
<TD>Select the Zone: </TD>
</TR>
<TR>
<TD>
<SELECT id=select1 name=select1 style="HEIGHT: 40px; WIDTH: 200px">
<option value="Atlantic_CZP" selected>Atlantic, NJ
<option value="Bergen_CZP">Bergen, NJ
<option value="Burlington_CZP">Burlington, NJ
<option value="Camden_CZP">Camden, NJ
<option value="Capemay_CZP">Cape May, NJ
<option value="Cumberland_CZP">Cumberland, NJ
<option value="Essex_CZP">Essex, NJ
<option value="Gloucester_CZP">Gloucester, NJ
<option value="Hudson_CZP">Hudson, NJ
<option value="Hunterdon_CZP">Hunterdon, NJ
<option value="Mercer_CZP">Mercer, NJ
78
<option value="Middlesex_CZP">Middlesex, NJ
<option value="Monmouth_CZP">Monmouth, NJ
<option value="Morris_CZP">Morris, NJ
<option value="Ocean_CZP">Ocean, NJ
<option value="Passaic_CZP">Passaic, NJ
<option value="Salem_CZP">Salem, NJ
<option value="Somerset_CZP">Somerset, NJ
<option value="Sussex_CZP">Sussex, NJ
<option value="Union_CZP">Union, NJ
<option value="Warren_CZP">Warren, NJ
</SELECT>
</OPTION>
</SELECT>
</TD>
<TD><SELECT id=select2 name=select2 style="HEIGHT: 40px; WIDTH: 200px">
<option value="Delaware" selected>Delaware, Val.
<option value="NJ ">NJ
79
<option value="NJ South">NJ South
<option value="NJTPA">NJTPA
<option value="USA">USA
</SELECT>
</TD>
</TR>
</TABLE>
<P>
<INPUT id=submit1 name=submit1 type=submit value=Submit>
<INPUT id=reset1 name=reset1 type=reset value=Reset></P>
</FORM><BR><HR WIDTH=45% ALIGN=left>
<A NAME=zc><U><B>Zone to County:</B></U></A>
<FORM ACTION=UIW>
<input type="hidden" name="Destination" value="fdwm">
<input type="hidden" name="MsgType" value="FOLLOWLINK">
<input type="hidden" name="Subject" value="getDocument">
80
<input type="hidden" name="Aspfile" value="cfcr:cfcr3.asp">
<TABLE>
<TR>
<TD><B>Zone : </B></TD>
<TD><B>County :</B> </TD>
</TR>
<TR><TD>Select the Zone: </TD>
<TD>Select the County: </TD>
</TR>
<TR><TD><SELECT id=select2 name=select2 style="HEIGHT: 40px; WIDTH: 200px">
<option value="Delaware" selected>Delaware, Val.
<option value="NJ ">NJ <option value="NJ South">NJ South
<option value="NJTPA">NJTPA
<option value="USA">USA </SELECT>
</TD>
<TD>
81
<SELECT id=select1 name=select1 style="HEIGHT: 40px; WIDTH: 200px">
<option value="Atlantic_CZP" selected>Atlantic, NJ
<option value="Bergen_CZP">Bergen, NJ
<option value="Burlington_CZP">Burlington, NJ
<option value="Camden_CZP">Camden, NJ
<option value="Capemay_CZP">Cape May, NJ
<option value="Cumberland_CZP">Cumberland, NJ
<option value="Essex_CZP">Essex, NJ
<option value="Gloucester_CZP">Gloucester, NJ
<option value="Hudson_CZP">Hudson, NJ
<option value="Hunterdon_CZP">Hunterdon, NJ
<option value="Mercer_CZP">Mercer, NJ
<option value="Middlesex_CZP">Middlesex, NJ
<option value="Monmouth_CZP">Monmouth, NJ
<option value="Morris_CZP">Morris, NJ
<option value="Ocean_CZP">Ocean, NJ
<option value="Passaic_CZP">Passaic, NJ
82
<option value="Salem_CZP">Salem, NJ
<option value="Somerset_CZP">Somerset, NJ
<option value="Sussex_CZP">Sussex, NJ
<option value="Union_CZP">Union, NJ
<option value="Warren_CZP">Warren, NJ
</SELECT>
</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
<P>
<INPUT id=submit1 name=submit1 type=submit value=Submit>
<INPUT id=reset1 name=reset1 type=reset value=Reset></P>
</FORM>
<BR><HR>
</FONT>
83
</B>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
</MsgBody>
</EngMsg>
There are four hidden parameters in the message. They are Destination, MsgType, Subject,
Aspfile. These hidden parameters are provided so that when a user does a “submit” on the form,
the UIW sends a message to FDWM with the parameters and the corresponding parameter’s
values.
Parameter Name Parameter Value
Destination fdwm
MsgType FOLLOWLINK
Subject getDocument
Aspfile The filename that has to be included to make a http
84
getrequest on the original Freight System
6.2.3 GetDocument Message
When the user does a “submit” on a page (for example Commodity Flow Summation
Reports 1982 county to county) UIW sends a getDocument message to FDWM. In response to
this message, FDWM requests Freight for the page based on the selected parameters ,that the
FDWM receives from the message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Here is an example of a GetDocument message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
splayDoc.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
85
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965563461061</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
86
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
1993)</A>
<BR>
87
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
</BODY>
88
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:QueryResults:cfcr:cfcr3.asp:Sussex_CZP:NJ South</DocID
>
<DocType>dhyme:fdwm:QueryResults</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<body BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b> From Zone: <#id2>NJ South</#id2>.<br> To County: <#id1>Sussex</#id1>.<br>Flo
w Units in Tons </b>
<table border=1><tr>
89
<td><b><#id3>STCC_compare</#id3></B></td>
<td><b><#id4>Total</#id4></B></td>
<td><b><#id5>DT</#id5></B></td>
<td><b><#id6>Truck</#id6></B></td>
<td><b><#id7>D1</#id7></B></td>
<td><b><#id8>Rail</#id8></B></td>
<td><b><#id9>D2</#id9></B></td>
<td><b><#id10>Air</#id10></B></td>
<td><b><#id11>D3</#id11></B></td>
<td><b><#id12>Water</#id12></B></td>
<td><b><#id13>D4</#id13></B></td></tr> <tr>
<td valign=top><#id14>TOTAL</#id14></td>
<td valign=top><#id15>57.23</#id15></td>
<td valign=top><#id15>57.23</#id15></td>
90
<td valign=top><#id16>958.626465661642</#id16></td>
<td valign=top><#id17>57.23</#id17></td>
<td valign=top><#id18>958.626465661642</#id18></td>
<td valign=top><#id19>0</#id19></td>
<td valign=top><#id20>0</#id20></td>
<td valign=top><#id21>0</#id21></td>
<td valign=top><#id22>0</#id22></td>
<td valign=top><#id23>0</#id23></td>
<td valign=top><#id24>0</#id24></td>
</tr>
message continues ….
</table>Note: '0' may indicates either 1983 or 1993 data not applicable, Or dat
a between 0 and 50 tons.<br><BR><CENTER><b><A HREF=cfcr.htm> BACK TO
COMMODITY F
LOWS COMPARISON REPORTS </A></CENTER></b>
</body>
91
</html>
]]>
</OutDoc>
<List_Of_Element>
<Element>
<Locator>#id209</Locator>
<Type>dhyme:fdwm:flowunit</Type>
<Element_ID>dhyme:fdwm:flowunit:cfcr:cfcr3.asp:Sussex_CZP,:NJ South,:C
HEMICALS OR ALLIED PRODUCTS:D3:0</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id1</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Sussex</Element_ID>
<Action></Action>
</Element>
92
<Element>
<Locator>#id22</Locator>
<Type>dhyme:fdwm:flowunit</Type>
<Element_ID>dhyme:fdwm:flowunit:cfcr:cfcr3.asp:Sussex_CZP,:NJ South,:T
OTAL:D3:0</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id2</Locator>
<Type>dhyme:fdwm:bothzone</Type>
<Element_ID>dhyme:fdwm:bothzone:NJ South</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id234</Locator>
<Type>dhyme:fdwm:stcccomp</Type>
<Element_ID>dhyme:fdwm:stcccomp:LEATHER OR LEATHER
93
PRODUCTS</Element_I
D>
<Action></Action>
</Element>
<Element>
<Locator>#id199</Locator>
<Type>dhyme:fdwm:flowunit</Type>
<Element_ID>dhyme:fdwm:flowunit:cfcr:cfcr3.asp:Sussex_CZP,:NJ South,:P
RINTED MATTER:Water:0</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id12</Locator>
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Water</Element_ID>
<Action></Action>
</Element>
94
<Element>
<Locator>#id11</Locator>
<Type>dhyme:fdwm:compmode</Type>
<Element_ID>dhyme:fdwm:compmode:D3</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id171</Locator>
<Type>dhyme:fdwm:flowunit</Type>
<Element_ID>dhyme:fdwm:flowunit:cfcr:cfcr3.asp:Sussex_CZP,:NJ South,:F
URNITURE OR FIXTURES:Truck:-0.01</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id170</Locator>
<Type>dhyme:fdwm:flowunit</Type>
<Element_ID>dhyme:fdwm:flowunit:cfcr:cfcr3.asp:Sussex_CZP,:NJ South,:F
95
URNITURE OR FIXTURES:DT:-100</Element_ID>
<Action></Action>
</Element>
message continues ….
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
The above was a sample message with few elements.
To see the complete message click here
6.2.4 GetCounty_AllCounty_82 Message:
When the user selects the “display County to all Counties 1982” link in the browser UIW
sends a getCounty_AllCounty_82 message to FDWM. In response to this message, FDWM
96
requests Freight for the page based on the selected parameter, that the FDWM receives from the
message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Here is an example of a GetCounty_AllCounty_82 message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
splayDoc.dtd" >
<EngMsg>
<RequestID>965410300207</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965410304933</MsgNo>
<Destination>UIW</Destination>
97
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
98
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
1993)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
99
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
100
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:QueryResults:cfsr1982:cfsr1982cc.asp:Camden_CC82:Atlan
tic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Hudson,Hunterd
on,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Sussex,Union,Wa
rren</DocID>
<DocType>dhyme:fdwm:QueryResults</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<head>
<title>
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
101
<b> From Counties: <#id1>Camden</#id1>.<br> To Counties: <#id3>Atlantic</#id3>,
<#id4>Atlantic</#id4>, <#id5>Bergen</#id5>, <#id6>Burlington</#id6>, <#id2>Camde
n</#id2>, <#id7>Cape May</#id7>, <#id8>Cumberland</#id8>, <#id9>Essex</#id9>, <#
id10>Gloucester</#id10>, <#id11>Hudson</#id11>, <#id12>Hunterdon</#id12>, <#id13
>Mercer</#id13>, <#id14>Middlesex</#id14>, <#id15>Monmouth</#id15>, <#id16>Morri
s</#id16>, <#id17>Ocean</#id17>, <#id18>Passaic</#id18>, <#id19>Salem</#id19>, <
#id20>Somerset</#id20>, <#id21>Sussex</#id21>, <#id22>Union</#id22>, <#id23>Warr
en</#id23>.<br>Flow Units in Tons </b>
<table border=1><tr>
<td><b><#id24>STCC</#id24></b></td>
<td><b><#id25>Total</#id25></b></td>
<td><b><#id26>Motor</#id26></b></td>
<td><b><#id27>Rail</#id27></b></td>
<td><b><#id28>Air</#id28></b></td>
<td><b><#id29>Water</#id29></b></td> </tr>
102
<td align="top"><#id30> Total</#id30></td>
<td align="top"><#id31>2401311</#id31></td>
<td align="top"><#id30> Total</#id30></td>
<td align="top"><#id31>2401311</#id31></td>
<td align="top"><#id32>775961</#id32></td>
<td align="top"><#id33>0</#id33></td>
<td align="top"><#id34>3</#id34></td>
<td align="top"><#id35>1625347</#id35></td></tr>
<td align="top"><#id36> 01 - Farm Products</#id36></td>
<td align="top"><#id37>841</#id37></td>
<td align="top"><#id38>837</#id38></td>
<td align="top"><#id39>0</#id39></td>
<td align="top"><#id40>0</#id40></td>
<td align="top"><#id41>4</#id41></td></tr>
<td align="top"><#id42> 08 - Forest Products</#id42></td>
<td align="top"><#id43>0</#id43></td>
<td align="top"><#id44>0</#id44></td>
103
<td align="top"><#id45>0</#id45></td>
<td align="top"><#id46>0</#id46></td>
</tr>
</table>Note: '0' indicates value between 0 to 50 tons or not applicable.
</body>
</html>
]]>
</OutDoc>
<List_Of_Element>
<Element>
<Locator>#id119</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
<Element_ID>dhyme:fdwm:compflowunit:cfsr1982:cfsr1982cc.asp:Camden_CC8
2,:Atlantic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Hudson
,Hunterdon,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Sussex,
Union,Warren,: 25 - Furniture or Fixtures:Water:0</Element_ID>
104
<Action></Action>
</Element>
<Element>
<Locator>#id23</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Warren</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id144</Locator>
<Type>dhyme:fdwm:stcc1982</Type>
<Element_ID>dhyme:fdwm:stcc1982: 30 - Rubber or Misc. Plastics</Elemen
t_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id29</Locator>
105
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Water</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id35</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1982:cfsr1982cc.asp:Camden_CC
82,:Atlantic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Hudso
n,Hunterdon,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Sussex
,Union,Warren,: Total:Water:1625347</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id120</Locator>
<Type>dhyme:fdwm:stcc1982</Type>
106
<Element_ID>dhyme:fdwm:stcc1982: 26 - Pulp, Paper, or Allied Products<
/Element_ID>
<Action></Action>
</Element>
message continues …
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
The above was a sample message with few elements.
To see the complete message click here
GetAllCounty_County_82 Message :
When the user selects the “display All Counties to County 1982” link in the browser
UIW sends a getAllCounty_County_82 message to FDWM. In response to this message,
107
FDWM requests Freight for the page based on the selected parameter, that the FDWM receives
from the message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Here is an example of a GetAllCounty_County_82 message:
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
splayDoc.dtd" >
<EngMsg>
<RequestID>965327247044</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965327250567</MsgNo>
<Destination>UIW</Destination>
108
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
109
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
1993)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
110
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
111
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:QueryResults:cfsr1982:cfsr1982cc.asp:Atlantic_CC82,Ber
gen_CC82,Burlington_CC82,Camden_CC82,CapeMay_CC82,Cumberland_CC82,Essex_CC82,
Glo
ucester_CC82,Hudson_CC82,Hunterdon_CC82,Mercer_CC82,Middlesex_CC82,Monmouth_C
C82
,Morris_CC82,Ocean_CC82,Passaic_CC82,Salem_CC82,Somerset_CC82,Sussex_CC82,Union_
CC82,Warren_CC82:Sussex</DocID>
<DocType>dhyme:fdwm:QueryResults</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<head>
<title>
Search Results
112
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b> From Counties: <#id1>Atlantic</#id1>, <#id2>Bergen</#id2>, <#id3>Burlington<
/#id3>, <#id4>Camden</#id4>, <#id5>CapeMay</#id5>, <#id6>Cumberland</#id6>, <#id
7>Essex</#id7>, <#id8>Gloucester</#id8>, <#id9>Hudson</#id9>, <#id10>Hunterdon</
#id10>, <#id11>Mercer</#id11>, <#id12>Middlesex</#id12>, <#id13>Monmouth</#id13>
, <#id14>Morris</#id14>, <#id15>Ocean</#id15>, <#id16>Passaic</#id16>, <#id17>Sa
lem</#id17>, <#id18>Somerset</#id18>, <#id19>Sussex</#id19>, <#id22>Union</#id22
>, <#id23>Warren</#id23>.<br> To Counties: <#id20>Sussex</#id20>, <#id21>Sussex<
/#id21>.<br>Flow Units in Tons </b>
<table border=1><tr>
<td><b><#id24>STCC</#id24></b></td>
<td><b><#id25>Total</#id25></b></td>
<td><b><#id26>Motor</#id26></b></td>
<td><b><#id27>Rail</#id27></b></td>
<td><b><#id28>Air</#id28></b></td>
113
<td><b><#id29>Water</#id29></b></td> </tr>
<td align="top"><#id30> Total</#id30></td>
<td align="top"><#id31>116807</#id31></td>
<td align="top"><#id32>116805</#id32></td>
<td align="top"><#id33>0</#id33></td>
<td align="top"><#id34>2</#id34></td>
<td align="top"><#id35>0</#id35></td></tr>
<td align="top"><#id36> 01 - Farm Products</#id36></td>
<td align="top"><#id37>722</#id37></td>
<td align="top"><#id38>722</#id38></td>
<td align="top"><#id39>0</#id39></td>
<td align="top"><#id40>0</#id40></td>
<td align="top"><#id41>0</#id41></td></tr>
<td align="top"><#id42> 08 - Forest Products</#id42></td>
<td align="top"><#id43>0</#id43></td>
<td align="top"><#id44>0</#id44></td>
114
<td align="top"><#id45>0</#id45></td>
<td align="top"><#id46>0</#id46></td>
<td align="top"><#id47>0</#id47></td></tr>
<td align="top"><#id48> 09 - Fresh Fish & Other Marine Products</#id48></td>
<td align="top"><#id49>0</#id49></td>
<td align="top"><#id50>0</#id50></td>
<td align="top"><#id51>0</#id51></td>
<td align="top"><#id52>0</#id52></td>
message continues ….
</table>Note: '0' indicates value between 0 to 50 tons or not applicable.
</body>
</html>
]]>
</OutDoc>
<List_Of_Element>
115
<Element>
<Locator>#id119</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
<Element_ID>dhyme:fdwm:compflowunit:cfsr1982:cfsr1982cc.asp:Atlantic_C
C82,Bergen_CC82,Burlington_CC82,Camden_CC82,CapeMay_CC82,Cumberland_CC82,Esse
x_C
C82,Gloucester_CC82,Hudson_CC82,Hunterdon_CC82,Mercer_CC82,Middlesex_CC82,Monm
ou
th_CC82,Morris_CC82,Ocean_CC82,Passaic_CC82,Salem_CC82,Somerset_CC82,Sussex_CC8
2
,Union_CC82,Warren_CC82,:Sussex,: 25 - Furniture or Fixtures:Water:0</Element_ID
>
<Action></Action>
</Element>
<Element>
<Locator>#id22</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Union</Element_ID>
116
<Action></Action>
</Element>
<Element>
<Locator>#id21</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Sussex</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id144</Locator>
<Type>dhyme:fdwm:stcc1982</Type>
<Element_ID>dhyme:fdwm:stcc1982: 30 - Rubber or Misc. Plastics</Elemen
t_ID>
<Action></Action>
</Element>
<Element>
<Element>
117
<Locator>#id29</Locator>
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Water</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id28</Locator>
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Air</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id35</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1982:cfsr1982cc.asp:Atlantic_
CC82,Bergen_CC82,Burlington_CC82,Camden_CC82,CapeMay_CC82,Cumberland_CC82,Ess
118
ex_
CC82,Gloucester_CC82,Hudson_CC82,Hunterdon_CC82,Mercer_CC82,Middlesex_CC82,Mon
mo
uth_CC82,Morris_CC82,Ocean_CC82,Passaic_CC82,Salem_CC82,Somerset_CC82,Sussex_CC
8
2,Union_CC82,Warren_CC82,:Sussex,: Total:Water:0</Element_ID>
<Action></Action>
</Element>
message continues ….
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
119
The above was a sample message with few elements.
To see the complete message click here
6.2.5 GetCounty_AllCounty_93 Message:
When the user selects the “display County to all Counties 1993” link in the browser UIW
sends a getCounty_AllCounty_93 message to FDWM. In response to this message, FDWM
requests Freight for the page based on the selected parameter, that the FDWM receives from the
message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Here is an example of a GetCounty_AllCounty_93 message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
splayDoc.dtd" >
<EngMsg>
120
<RequestID>965002286159</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965563296630</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
121
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
122
1993)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
123
s.82)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:QueryResults:cfsr1993:cfsr1993cc.asp:Burlington_cc:Atl
antic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Hudson,Hunte
124
rdon,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Sussex,Union,
Warren</DocID>
<DocType>dhyme:fdwm:QueryResults</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<head>
<title>
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b> Origin Counties: <#id1>Burlington</#id1>.<br>Destination Counties: <#id3>Atl
antic</#id3>, <#id4>Bergen</#id4>, <#id2>Burlington</#id2>, <#id5>Camden</#id5>,
<#id6>Cape May</#id6>, <#id7>Cumberland</#id7>, <#id8>Essex</#id8>, <#id9>Glouc
ester</#id9>, <#id10>Hudson</#id10>, <#id11>Hunterdon</#id11>, <#id12>Mercer</#i
d12>, <#id13>Middlesex</#id13>, <#id14>Monmouth</#id14>, <#id15>Morris</#id15>,
125
<#id16>Ocean</#id16>, <#id17>Passaic</#id17>, <#id18>Salem</#id18>, <#id19>Somer
set</#id19>, <#id20>Sussex</#id20>, <#id21>Union</#id21>, <#id22>Warren</#id22>.
<br>Flow Units in Thousand tons </b>
<table border=1><tr>
<!-- <td><b>Destination </b></td>
<td><b>STCC</b></td>
<td><b>Total</b></td>
<td><b>Truck</b></td>
<td><b>Common Carrier</b></td>
<td><b>Package Carrier</b></td>
<td><b>Company Fleet</b></td>
<td><b>Rail</b></td>
<td><b>Boxcars</b></td>
<td><b>TOFC/COFC</b></td>
<td><b>Air</b></td>
<td><b>Water Other</b></td>
--></tr>
126
</table>
<table border=1><tr>
<td><b><#id23>STCC</#id23></b></td>
<td><b><#id24>Total</#id24></b></td>
<td><b><#id25>Truck</#id25></b></td>
<td><b><#id26>Common Carrier</#id26></b></td>
<td><b><#id27>Package Carrier</#id27></b></td>
<td><b><#id28>Company Fleet</#id28></b></td>
<td><b><#id29>Rail</#id29></b></td>
<td><b><#id30>Boxcars</#id30></b></td>
<td><b><#id31>TOFC/COFC</#id31></b></td>
<td><b><#id32>Air</#id32></b></td>
<td><b><#id33>Water Other</#id33></b></td> </tr>
<td align="top"><#id34>Total</#id34></td>
127
<td align="top"><#id35>1795.4</#id35></td>
<td align="top"><#id36>1792.3</#id36></td>
<td align="top"><#id37>441.5</#id37></td>
<td align="top"><#id38>172.4</#id38></td>
<td align="top"><#id39>1178.2</#id39></td>
<td align="top"><#id40>3.2</#id40></td>
<td align="top"><#id41>3.1</#id41></td>
<td align="top"><#id42>0</#id42></td>
<td align="top"><#id43>0</#id43></td>
<td align="top"><#id44>0</#id44></td></tr>
<td align="top"><#id45> 01-Farm Products </#id45></td>
<td align="top"><#id46>4.9</#id46></td>
<td align="top"><#id47>4.9</#id47></td>
<td align="top"><#id48>1.5</#id48></td>
<td align="top"><#id49>0.4</#id49></td>
message continues ….
128
]]>
</tr>
</table>Note: '0' indicates value between 0 to 50 tons or not applicable.
</body>
</html>
]]>
</OutDoc>
<List_Of_Element>
<Element>
<Locator>#id209</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
<Element_ID>dhyme:fdwm:compflowunit:cfsr1993:cfsr1993cc.asp:Burlington
_cc,:Atlantic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Huds
on,Hunterdon,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Susse
x,Union,Warren,: 26-Pulp and Paper :Water Other:0</Element_ID>
<Action></Action>
129
</Element>
<Element>
<Locator>#id9</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Gloucester</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id232</Locator>
<Type>dhyme:fdwm:stcc1993</Type>
<Element_ID>dhyme:fdwm:stcc1993: 29-Petroleum and Coal Products </Ele
ment_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id44</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
130
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1993:cfsr1993cc.asp:Burlingto
n_cc,:Atlantic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Hud
son,Hunterdon,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Suss
ex,Union,Warren,:Total:Water Other:0</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id33</Locator>
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Water Other</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id31</Locator>
<Type>dhyme:fdwm:newmode</Type>
<Element_ID>dhyme:fdwm:newmode:TOFC/COFC</Element_ID>
131
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id170</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
<Element_ID>dhyme:fdwm:compflowunit:cfsr1993:cfsr1993cc.asp:Burlington
_cc,:Atlantic,Bergen,Burlington,Camden,Cape May,Cumberland,Essex,Gloucester,Huds
on,Hunterdon,Mercer,Middlesex,Monmouth,Morris,Ocean,Passaic,Salem,Somerset,Susse
x,Union,Warren,: 23-Apparel :Package Carrier:0</Element_ID>
<Action></Action>
</Element>
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
132
The above was a sample message with few elements.
To see the complete message click here
6.2.7 GetAllCounty_County_93 Message:
When the user selects the “display All Counties to County 1993” link in the browser
UIW sends a getAllCounty_County_93 message to FDWM. In response to this message, FDWM
requests Freight for the page based on the selected parameter, that the FDWM receives from the
message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Here is an example of a GetAllCounty_County_93 message:
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
splayDoc.dtd" >
<EngMsg>
<RequestID>965002286159</RequestID>
133
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965563461061</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
134
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
1993)</A>
135
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
136
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:QueryResults:cfsr1993:cfsr1993cc.asp:Atlantic_cc,Berge
n_cc,Burlington_cc,Camden_cc,Capemay_cc,Cumberland_cc,Essex_cc,Gloucester_cc,Hud
son_cc,Hunterdon_cc,Mercer_cc,Middlesex_cc,Monmouth_cc,Morris_cc,Ocean_cc,Passai
137
c_cc,Salem_cc,Somerset_cc,Sussex_cc,Union_cc,Warren_cc:Burlington</DocID>
<DocType>dhyme:fdwm:QueryResults</DocType>
</Doc>
<OutDoc> <![CDATA[<HTML>
<head>
<title>
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b> Origin Counties: <#id1>Atlantic</#id1>, <#id2>Bergen</#id2>, <#id3>Burlingto
n</#id3>, <#id5>Camden</#id5>, <#id6>Capemay</#id6>, <#id7>Cumberland</#id7>, <#
id8>Essex</#id8>, <#id9>Gloucester</#id9>, <#id10>Hudson</#id10>, <#id11>Hunterd
on</#id11>, <#id12>Mercer</#id12>, <#id13>Middlesex</#id13>, <#id14>Monmouth</#i
d14>, <#id15>Morris</#id15>, <#id16>Ocean</#id16>, <#id17>Passaic</#id17>, <#id1
8>Salem</#id18>, <#id19>Somerset</#id19>, <#id20>Sussex</#id20>, <#id21>Union</#
id21>, <#id22>Warren</#id22>.<br>Destination Counties: <#id4>Burlington</#id4>.<
138
br>Flow Units in Thousand tons </b>
<table border=1><tr>
<!-- <td><b>Destination </b></td>
<td><b>STCC</b></td>
<td><b>Total</b></td>
<td><b>Truck</b></td>
<td><b>Common Carrier</b></td>
<td><b>Package Carrier</b></td>
<td><b>Company Fleet</b></td>
<td><b>Rail</b></td>
<td><b>Boxcars</b></td>
<td><b>TOFC/COFC</b></td>
<td><b>Air</b></td>
<td><b>Water Other</b></td>
--></tr>
<td><b><#id23>STCC</#id23></b></td>
<td><b><#id24>Total</#id24></b></td>
139
<td><b><#id25>Truck</#id25></b></td>
<td><b><#id26>Common Carrier</#id26></b></td>
<td><b><#id27>Package Carrier</#id27></b></td>
<td><b><#id28>Company Fleet</#id28></b></td>
<td><b><#id29>Rail</#id29></b></td>
<td><b><#id30>Boxcars</#id30></b></td>
<td><b><#id31>TOFC/COFC</#id31></b></td>
<td><b><#id32>Air</#id32></b></td>
<td><b><#id33>Water Other</#id33></b></td> </tr>
<td align="top"><#id34>Total</#id34></td>
<td align="top"><#id35>2548.3</#id35></td>
<td align="top"><#id36>2545.4</#id36></td>
<td align="top"><#id37>592</#id37></td>
<td align="top"><#id38>168.5</#id38></td>
<td align="top"><#id39>1784.9</#id39></td>
<td align="top"><#id40>2.9</#id40></td>
140
<td align="top"><#id41>2.8</#id41></td>
<td align="top"><#id42>0.1</#id42></td>
<td align="top"><#id43>0</#id43></td>
<td align="top"><#id44>0</#id44></td></tr>
<td align="top"><#id43>0</#id43></td>
<td align="top"><#id44>0</#id44></td></tr> message follows…..
</tr>
</table>Note: '0' indicates value between 0 to 50 tons or not applicable.
</body>
</html>
]]>
</OutDoc>
<List_Of_Element>
<Element>
<Locator>#id209</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
141
<Element_ID>dhyme:fdwm:compflowunit:cfsr1993:cfsr1993cc.asp:Atlantic_c
c,Bergen_cc,Burlington_cc,Camden_cc,Capemay_cc,Cumberland_cc,Essex_cc,Gloucester
_cc,Hudson_cc,Hunterdon_cc,Mercer_cc,Middlesex_cc,Monmouth_cc,Morris_cc,Ocean_cc
,Passaic_cc,Salem_cc,Somerset_cc,Sussex_cc,Union_cc,Warren_cc:Burlington: 26-P
ulp and Paper :Water Other:0</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id25</Locator>
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Truck</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id5</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Camden</Element_ID>
142
<Action></Action>
</Element>
<Element>
<Locator>#id30</Locator>
<Type>dhyme:fdwm:newmode</Type>
<Element_ID>dhyme:fdwm:newmode:Boxcars</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id36</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1993:cfsr1993cc.asp:Atlantic_
cc,Bergen_cc,Burlington_cc,Camden_cc,Capemay_cc,Cumberland_cc,Essex_cc,Glouceste
r_cc,Hudson_cc,Hunterdon_cc,Mercer_cc,Middlesex_cc,Monmouth_cc,Morris_cc,Ocean_c
c,Passaic_cc,Salem_cc,Somerset_cc,Sussex_cc,Union_cc,Warren_cc:Burlington:Tota
l:Truck:2545.4</Element_ID>
<Action></Action>
143
</Element>
<Element>
<Locator>#id23</Locator>
<Type>dhyme:fdwm:description</Type>
<Element_ID>dhyme:fdwm:description:STCC</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id265</Locator>
<Type>dhyme:fdwm:stcc1993</Type>
<Element_ID>dhyme:fdwm:stcc1993: 32-Stone, Clay, Glass & Concrete<
/Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id170</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
144
<Element_ID>dhyme:fdwm:compflowunit:cfsr1993:cfsr1993cc.asp:Atlantic_c
c,Bergen_cc,Burlington_cc,Camden_cc,Capemay_cc,Cumberland_cc,Essex_cc,Gloucester
_cc,Hudson_cc,Hunterdon_cc,Mercer_cc,Middlesex_cc,Monmouth_cc,Morris_cc,Ocean_cc
,Passaic_cc,Salem_cc,Somerset_cc,Sussex_cc,Union_cc,Warren_cc:Burlington: 23-A
pparel :Package Carrier:0.1</Element_ID>
<Action></Action>
</Element>
message continues …
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
The above was a sample message with few elements.
To see the complete message click here
145
6.2.8 GetMetaInfo Message:
When the user selects an anchor in the browser, UIW sends a getMetaInfo message to
FDWM. In response to this message, FDWM sends the meta data about the element to the user.
FDWM receives the parameter name as “Element_ID’ and the parameter value to be the Element
value (uri) that the user wants meta information about.
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM
"/export/home/engine/WWW/public_html/users/shared/dtd/DisplayDoc.dtd" >
<EngMsg>
<RequestID>965423098808</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
146
<MsgNo>FDWM:965423102166</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<SubFrame Name="META">
<Doc>
<DocID>dhyme:fdwm:DisplayDocument:getMetaInfo:dhyme:fdwm:compflowunit:cfsr1982:cfs
r1982cc.asp:Atlantic_CC82,Bergen_CC82,Burlington_CC82,Camden_CC82,CapeMay_CC82,C
umberland_CC82,Essex_CC82,Gloucester_CC82,Hudson_CC82,Hunterdon_CC82,Mercer_CC8
2,Middlesex_CC82,Monmouth_CC82,Morris_CC82,Ocean_CC82,Passaic_CC82,Salem_CC82,
Somerset_CC82,Sussex_CC82,Union_CC82,Warren_CC82:Monmouth: 20 - Food and Kindred
Products:Water:0</DocID>
<DocType>dhyme:fdwm:DisplayDocument</DocType>
</Doc>
<OutDoc>
147
<![CDATA[<?xml version="1.0"?><rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="0">
<To>Monmouth</To>
<Type>compflowunit</Type>
<Row> 20 - Food and Kindred Products</Row>
<From>Atlantic_CC82,Bergen_CC82,Burlington_CC82,Camden_CC82,CapeMay_CC82,Cumb
erland_CC82,Essex_CC82,Gloucester_CC82,Hudson_CC82,Hunterdon_CC82,Mercer_CC82,M
iddlesex_CC82,Monmouth_CC82,Morris_CC82,Ocean_CC82,Passaic_CC82,Salem_CC82,Som
erset_CC82,Sussex_CC82,Union_CC82,Warren_CC82</From>
<Col>Water</Col>
</rdf:Description>
</rdf:RDF>]]>
</OutDoc>
148
<List_Of_Element/>
</SubFrame>
</MsgBody>
</EngMsg>
6.2.9 GetZone_AllCounty_82 Message:
When the user selects the “display Zone to all Counties 1982” link in the browser UIW
sends a getZone_AllCounty_82 message to FDWM. In response to this message, FDWM
requests Freight for the page based on the selected parameter, that the FDWM receives from the
message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Here is an example of a GetZone_AllCounty_82 message : The left doc looks identical to the
above messages. I’ve skipped that. I am including a portion of the outdoc tag of the second
frame.
<SubFrame Name="Second">
<Doc>
149
<DocID>dhyme:fdwm:Get_Document_Results:cfsr1982:cfsr1982zc.asp:Atlantic_
CZ82,Bergen_CZ82,Burlington_CZ82,Camden_CZ82,Capemay_CZ82,Cumberland_CZ82,Esse
x_
CZ82,Gloucester_CZ82,Hudson_CZ82,Hunterdon_CZ82,Mercer_CZ82,Middlesex_CZ82,Mon
mo
uth_CZ82,Morris_CZ82,Ocean_CZ82,Passaic_CZ82,Salem_CZ82,Somerset_CZ82,Sussex_CZ8
2,Union_CZ82,Warren_CZ82:NJ South</DocID>
<DocType>dhyme:fdwm:Get_Document_Results</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<head>
<title>
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
150
<b>From Zones: <#id22>NJ South</#id22>.<br>To Counties: <#id1>Atlantic</#id1>, <
#id2>Bergen</#id2>, <#id3>Burlington</#id3>, <#id4>Camden</#id4>, <#id5>Capemay<
/#id5>, <#id6>Cumberland</#id6>, <#id7>Essex</#id7>, <#id8>Gloucester</#id8>, <#
id9>Hudson</#id9>, <#id10>Hunterdon</#id10>, <#id11>Mercer</#id11>, <#id12>Middl
esex</#id12>, <#id13>Monmouth</#id13>, <#id14>Morris</#id14>, <#id15>Ocean</#id1
5>, <#id16>Passaic</#id16>, <#id17>Salem</#id17>, <#id18>Somerset</#id18>, <#id1
9>Sussex</#id19>, <#id20>Union</#id20>, <#id21>Warren</#id21>.<br>Flow Units in
Tons </b>
<table border=1><tr>
<td><b><#id23>STCC</#id23></b></td>
<td><b><#id24>Total</#id24></b></td>
<td><b><#id25>Motor</#id25></b></td>
<td><b><#id26>Rail</#id26></b></td>
<td><b><#id27>Air</#id27></b></td>
<td><b><#id28>Water</#id28></b></td> </tr>
151
<td align="top"><#id29>Total</#id29></td>
<td align="top"><#id30>1602196</#id30></td>
<td align="top"><#id31>1326696</#id31></td>
<td align="top"><#id32>275500</#id32></td>
<td align="top"><#id33>0</#id33></td>
<td align="top"><#id34>0</#id34></td></tr>
<td align="top"><#id35>01 - Farm Products</#id35></td>
<td align="top"><#id36>18812</#id36></td>
<td align="top"><#id37>18812</#id37></td>
<td align="top"><#id38>0</#id38></td>
<td align="top"><#id39>0</#id39></td>
message continues …
<Element>
<Locator>#id22</Locator>
<Type>dhyme:fdwm:bothzone</Type>
<Element_ID>dhyme:fdwm:bothzone:NJ South</Element_ID>
152
<Action></Action>
</Element>
<Element>
<Locator>#id23</Locator>
<Type>dhyme:fdwm:description</Type>
<Element_ID>dhyme:fdwm:description:STCC</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id21</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Warren</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id25</Locator>
153
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Motor</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id35</Locator>
<Type>dhyme:fdwm:stcc1982</Type>
<Element_ID>dhyme:fdwm:stcc:01 - Farm Products</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id33</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1982:cfsr1982zc.asp:Atlantic_
CZ82,Bergen_CZ82,Burlington_CZ82,Camden_CZ82,Capemay_CZ82,Cumberland_CZ82,Esse
x_
CZ82,Gloucester_CZ82,Hudson_CZ82,Hunterdon_CZ82,Mercer_CZ82,Middlesex_CZ82,Mon
154
mo
uth_CZ82,Morris_CZ82,Ocean_CZ82,Passaic_CZ82,Salem_CZ82,Somerset_CZ82,Sussex_CZ8
2,Union_CZ82,Warren_CZ82:NJ South:Total:Air:0</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id159</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
<Element_ID>dhyme:fdwm:compflowunit:cfsr1982:cfsr1982zc.asp:Atlantic_C
Z82,Bergen_CZ82,Burlington_CZ82,Camden_CZ82,Capemay_CZ82,Cumberland_CZ82,Essex
_C
Z82,Gloucester_CZ82,Hudson_CZ82,Hunterdon_CZ82,Mercer_CZ82,Middlesex_CZ82,Monmo
u
th_CZ82,Morris_CZ82,Ocean_CZ82,Passaic_CZ82,Salem_CZ82,Somerset_CZ82,Sussex_CZ82
,Union_CZ82,Warren_CZ82:NJ South:32 - Stone, Clay, Glass or Concrete:Air:0</Elem
ent_ID>
<Action></Action>
155
</Element>
message continues …
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
For the complete message click here
6.2.10 GetZone_AllCounty_93 Message:
When the user selects the “display Zone to all Counties 1982” link in the browser UIW
sends a getZone_AllCounty_82 message to FDWM. In response to this message, FDWM
requests Freight for the page based on the selected parameter, that the FDWM receives from the
message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Because of an error in the original Freight System we get an error here. We get an error
in the original system if we make more than one selection in the counties.If that error is corrected
in future then this handler would work fine.
156
Zone to All Counties gives an error in the original system .The error is given below.
Origin Zones: NJ.
Destination Counties: Atlantic, Bergen, Burlington,
Camden, Capemay, Cumberland, Essex, Gloucester,
Hudson, Hunterdon, Mercer, Middlesex, Monmouth,
Morris, Ocean, Passaic, Salem, Somerset, Sussex,
Union, Warren.
Flow Units in Thousand tons
Microsoft VBScript runtime error '800a0009'
Subscript out of range: 'count'
/cfsr1993/cfsr1993zc.asp, line 85
Here is an example of a GetZone_AllCounty_82 message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
157
splayDoc.dtd" >
<EngMsg>
<RequestID>965925993172</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965925995287</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
158
</Doc>
<OutDoc>
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
159
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
1993)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
160
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:Get_Document_Results:cfsr1993:cfsr1993zc.asp:Atlantic_
CZ,Bergen_CZ,Burlington_CZ,Camden_CZ,Capemay_CZ,Cumberland_CZ,Essex_CZ,Gloucest
e
r_CZ,Hudson_CZ,Hunterdon_CZ,Mercer_CZ,Middlesex_CZ,Monmouth_CZ,Morris_CZ,Ocean
_C
Z,Passaic_CZ,Salem_CZ,Somerset_CZ,Sussex_CZ,Union_CZ,Warren_CZ:NJ</DocID>
161
<DocType>dhyme:fdwm:Get_Document_Results</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<head>
<title>
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b> Origin Zones: <#id22>NJ</#id22>.<br>Destination Counties: <#id1>Atlantic</#i
d1>, <#id2>Bergen</#id2>, <#id3>Burlington</#id3>, <#id4>Camden</#id4>, <#id5>Ca
pemay</#id5>, <#id6>Cumberland</#id6>, <#id7>Essex</#id7>, <#id8>Gloucester</#id
8>, <#id9>Hudson</#id9>, <#id10>Hunterdon</#id10>, <#id11>Mercer</#id11>, <#id12
>Middlesex</#id12>, <#id13>Monmouth</#id13>, <#id14>Morris</#id14>, <#id15>Ocean
</#id15>, <#id16>Passaic</#id16>, <#id17>Salem</#id17>, <#id18>Somerset</#id18>,
<#id19>Sussex</#id19>, <#id20>Union</#id20>, <#id21>Warren</#id21>.<br>Flow Uni
162
ts in Thousand tons </b>
<table border=1><tr>
<!-- <td><b>Destination </b></td>
<td><b>STCC</b></td>
<td><b>Total</b></td>
<td><b>Truck</b></td>
<td><b>Common Carrier</b></td>
<td><b>Package Carrier</b></td>
<td><b>Company Fleet</b></td>
<td><b>Rail</b></td>
<td><b>Boxcars</b></td>
<td><b>TOFC/COFC</b></td>
<td><b>Air</b></td>
<td><b>Water Other</b></td>
--></tr>
<font face="Arial" size=2>
<p>Microsoft VBScript runtime </font> <font face="Arial" size=2>error '800a0009'
163
</font>
<p>
<font face="Arial" size=2>Subscript out of range: 'count'</font>
<p>
<font face="Arial" size=2>/cfsr1993/cfsr1993zc.asp</font><font face="Arial" size
=2>, line 85</font>
]]>
</OutDoc>
<List_Of_Element>
<Element>
<Locator>#id19</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Sussex</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id18</Locator>
164
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Somerset</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id17</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Salem</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id16</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Passaic</Element_ID>
<Action></Action>
<Element>
<Locator>#id15</Locator>
165
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Ocean</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id14</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Morris</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id9</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Hudson</Element_ID>
<Action></Action>
</Element>
<Element>
166
<Locator>#id8</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Gloucester</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id13</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Monmouth</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id7</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Essex</Element_ID>
<Action></Action>
</Element>
167
<Element>
<Locator>#id12</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Middlesex</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id6</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Cumberland</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id11</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Mercer</Element_ID>
<Action></Action>
168
</Element>
<Element>
<Locator>#id5</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Capemay</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id10</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Hunterdon</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id4</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Camden</Element_ID>
169
<Action></Action>
</Element>
<Element>
<Locator>#id3</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Burlington</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id2</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Bergen</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id1</Locator>
<Type>dhyme:fdwm:county</Type>
170
<Element_ID>dhyme:fdwm:county:Atlantic</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id22</Locator>
<Type>dhyme:fdwm:1993zone </Type>
<Element_ID>dhyme:fdwm:1993zone :NJ</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id21</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Warren</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id20</Locator>
171
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Union</Element_ID>
<Action></Action>
</Element>
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
6.2.11 GetAllCounty_Zone_82 Message:
When the user selects the “display all Counties to Zone 1982” link in the browser UIW
sends a getAllCounty_Zone_82 message to FDWM. In response to this message, FDWM
requests Freight for the page based on the selected parameter, that the FDWM receives from the
message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
172
Example of GetAllCounty_Zone_82 Message :
I am including only the second frame here.
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:Get_Document_Results:cfsr1982:cfsr1982cz.asp:Atlantic_
CZ82,Bergen_CZ82,Burlington_CZ82,Camden_CZ82,Capemay_CZ82,Cumberland_CZ82,Esse
x_
CZ82,Gloucester_CZ82,Hudson_CZ82,Hunterdon_CZ82,Mercer_CZ82,Middlesex_CZ82,Mon
mo
uth_CZ82,Morris_CZ82,Ocean_CZ82,Passaic_CZ82,Salem_CZ82,Somerset_CZ82,Sussex_CZ8
2,Union_CZ82,Warren_CZ82:NY City</DocID>
<DocType>dhyme:fdwm:Get_Document_Results</DocType>
</Doc>
<OutDoc>
<![CDATA[<HTML>
<head>
<title>
173
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b>From Counties: <#id1>Atlantic</#id1>, <#id2>Bergen</#id2>, <#id3>Burlington</
#id3>, <#id4>Camden</#id4>, <#id5>Capemay</#id5>, <#id6>Cumberland</#id6>, <#id7
>Essex</#id7>, <#id8>Gloucester</#id8>, <#id9>Hudson</#id9>, <#id10>Hunterdon</#
id10>, <#id11>Mercer</#id11>, <#id12>Middlesex</#id12>, <#id13>Monmouth</#id13>,
<#id14>Morris</#id14>, <#id15>Ocean</#id15>, <#id16>Passaic</#id16>, <#id17>Sal
em</#id17>, <#id18>Somerset</#id18>, <#id19>Sussex</#id19>, <#id20>Union</#id20>
, <#id21>Warren</#id21>.<br>To Zones: <#id22>NY City</#id22>.<br>Flow Units in T
ons </b>
<table border=1><tr>
<td><b><#id23>STCC</#id23></b></td>
<td><b><#id24>Total</#id24></b></td>
<td><b><#id25>Motor</#id25></b></td>
174
<td><b><#id26>Rail</#id26></b></td>
<td><b><#id27>Air</#id27></b></td>
<td><b><#id28>Water</#id28></b></td> </tr>
<td align="top"><#id29>Total</#id29></td>
<td align="top"><#id30>12247603</#id30></td>
<td align="top"><#id31>8493612</#id31></td>
<td align="top"><#id32>34760</#id32></td>
<td align="top"><#id33>4159</#id33></td>
<td align="top"><#id34>3715072</#id34></td></tr>
<td align="top"><#id35>01 - Farm Products</#id35></td>
<td align="top"><#id36>500961</#id36></td>
<td align="top"><#id37>500961</#id37></td>
<td align="top"><#id38>0</#id38></td>
<td align="top"><#id39>0</#id39></td>
<td align="top"><#id40>0</#id40></td></tr>
<td align="top"><#id41>08 - Forest Products</#id41></td>
175
message continues …
<td align="top"><#id249>0</#id249></td>
<td align="top"><#id250>0</#id250></td></tr><td align="top"></td><td align="top"
></td><td align="top"></td><td align="top"></td><td align="top"></td><td align="
top"></td></tr><td align="top"></td><td align="top"></td><td align="top"></td><t
d align="top"></td><td align="top"></td><td align="top"></td></tr><td align="top
"></td><td align="top"></td><td align="top"></td><td align="top"></td><td align=
"top"></td><td align="top"></td></tr>
</tr>
</table>Note: '0' indicates value between 0 to 50 tons or not applicable.
</body>
</html>
]]>
</OutDoc>
<List_Of_Element>
<Element>
176
<Locator>#id119</Locator>
<Type>dhyme:fdwm:stcc1982</Type>
<Element_ID>dhyme:fdwm:stcc:26 - Pulp, Paper, or Allied Products</
Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id41</Locator>
<Type>dhyme:fdwm:stcc1982</Type>
<Element_ID>dhyme:fdwm:stcc:08 - Forest Products</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id34</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1982:cfsr1982cz.asp:Atlantic_
177
CZ82,Bergen_CZ82,Burlington_CZ82,Camden_CZ82,Capemay_CZ82,Cumberland_CZ82,Esse
x_
CZ82,Gloucester_CZ82,Hudson_CZ82,Hunterdon_CZ82,Mercer_CZ82,Middlesex_CZ82,Mon
mo
uth_CZ82,Morris_CZ82,Ocean_CZ82,Passaic_CZ82,Salem_CZ82,Somerset_CZ82,Sussex_CZ8
2,Union_CZ82,Warren_CZ82:NY City:Total:Water:3715072</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id22</Locator>
<Type>dhyme:fdwm:bothzone</Type>
<Element_ID>dhyme:fdwm:bothzone:NY City</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id4</Locator>
<Type>dhyme:fdwm:county</Type>
178
<Element_ID>dhyme:fdwm:county:Camden</Element_ID>
<Action></Action>
</Element>
<Element>
</List_Of_Element>
</SubFrame>
</MsgBody>
</EngMsg>
For the complete message click here
6.2.12 GetAllCounty_Zone_93 Message:
When the user selects the “display all Counties to Zone 1993” link in the browser UIW
sends a getAllCounty_Zone_93 message to FDWM. In response to this message, FDWM
requests Freight for the page based on the selected parameter, which the FDWM receives from
the message.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
179
anchors after the action of BLEM).
Example of GetAllCounty_Zone_93 Message :
I am including only the second frame here.
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:Get_Document_Results:cfsr1993:cfsr1993cz.asp:Atlantic_
CZ,Bergen_CZ,Burlington_CZ,Camden_CZ,Capemay_CZ,Cumberland_CZ,Essex_CZ,Gloucest
e
r_CZ,Hudson_CZ,Hunterdon_CZ,Mercer_CZ,Middlesex_CZ,Monmouth_CZ,Morris_CZ,Ocean
_C
Z,Passaic_CZ,Salem_CZ,Somerset_CZ,Sussex_CZ,Union_CZ,Warren_CZ:NJ</DocID>
<DocType>dhyme:fdwm:Get_Document_Results</DocType>
</Doc>
<OutDoc>
<OutDoc>
<![CDATA[<HTML>
<head>
180
<title>
Search Results
</title>
</head>
<BODY BACKGROUND="#FFFFF" ALINK=#000080 VLINK=#000080 LINK=#000080>
<b>From Counties: <#id1>Atlantic</#id1>, <#id2>Bergen</#id2>, <#id3>Burlington</
#id3>, <#id4>Camden</#id4>, <#id5>Capemay</#id5>, <#id6>Cumberland</#id6>, <#id7
>Essex</#id7>, <#id8>Gloucester</#id8>, <#id9>Hudson</#id9>, <#id10>Hunterdon</#
id10>, <#id11>Mercer</#id11>, <#id12>Middlesex</#id12>, <#id13>Monmouth</#id13>,
<#id14>Morris</#id14>, <#id15>Ocean</#id15>, <#id16>Passaic</#id16>, <#id17>Sal
em</#id17>, <#id18>Somerset</#id18>, <#id19>Sussex</#id19>, <#id20>Union</#id20>
, <#id21>Warren</#id21>.<br>To Zones: <#id22>NJ</#id22>.<br>Flow Units in Thousa
nd tons </b>
<table border=1><tr>
<td><b><#id23>STCC</#id23></b></td>
<td><b><#id24>Total</#id24></b></td>
181
<td><b><#id25>Truck</#id25></b></td>
<td><b><#id26>Common Carrier</#id26></b></td>
<td><b><#id27>Package Carrier</#id27></b></td>
<td><b><#id28>Company Fleet</#id28></b></td>
<td><b><#id29>Rail</#id29></b></td>
<td><b><#id30>Boxcars</#id30></b></td>
<td><b><#id31>TOFC/COFC</#id31></b></td>
<td><b><#id32>Air</#id32></b></td>
<td><b><#id33>Water Other</#id33></b></td> </tr>
<td align="top"><#id34>Total</#id34></td>
<td align="top"><#id35>73467.7</#id35></td>
<td align="top"><#id36>63588.4</#id36></td>
<td align="top"><#id37>17903.2</#id37></td>
<td align="top"><#id38>4909.4</#id38></td>
<td align="top"><#id39>40777.8</#id39></td>
<td align="top"><#id40>1690.3</#id40></td>
182
<Element>
<Locator>#id22</Locator>
<Type>dhyme:fdwm:1993zone </Type>
<Element_ID>dhyme:fdwm:1993zone :NJ</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id1</Locator>
<Type>dhyme:fdwm:county</Type>
<Element_ID>dhyme:fdwm:county:Atlantic</Element_ID>
<Action></Action>
</Element>
<Element>
<Element>
<Locator>#id30</Locator>
<Type>dhyme:fdwm:newmode</Type>
183
<Element_ID>dhyme:fdwm:newmode:Boxcars</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id29</Locator>
<Type>dhyme:fdwm:oldmode</Type>
<Element_ID>dhyme:fdwm:oldmode:Rail</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id44</Locator>
<Type>dhyme:fdwm:totalflowunit</Type>
<Element_ID>dhyme:fdwm:totalflowunit:cfsr1993:cfsr1993cz.asp:Atlantic_
CZ,Bergen_CZ,Burlington_CZ,Camden_CZ,Capemay_CZ,Cumberland_CZ,Essex_CZ,Gloucest
e
r_CZ,Hudson_CZ,Hunterdon_CZ,Mercer_CZ,Middlesex_CZ,Monmouth_CZ,Morris_CZ,Ocean
_C
184
Z,Passaic_CZ,Salem_CZ,Somerset_CZ,Sussex_CZ,Union_CZ,Warren_CZ:NJ:Total:Water Ot
her:8188.2</Element_ID>
<Action></Action>
</Element>
<Element>
<Locator>#id253</Locator>
<Type>dhyme:fdwm:compflowunit</Type>
<Element_ID>dhyme:fdwm:compflowunit:cfsr1993:cfsr1993cz.asp:Atlantic_C
Z,Bergen_CZ,Burlington_CZ,Camden_CZ,Capemay_CZ,Cumberland_CZ,Essex_CZ,Gloucester
_CZ,Hudson_CZ,Hunterdon_CZ,Mercer_CZ,Middlesex_CZ,Monmouth_CZ,Morris_CZ,Ocean_
CZ
,Passaic_CZ,Salem_CZ,Somerset_CZ,Sussex_CZ,Union_CZ,Warren_CZ:NJ:30-Rubber:Water
Other:0</Element_ID>
<Action></Action>
</Element>
message continues …
</List_Of_Element>
185
</SubFrame>
</MsgBody>
</EngMsg>
For a complete message click here
6.2.13 GetSICCode Message:
When the user selects the “display Corresponding SIC Code” link in the browser UIW
sends a getSICCode message to FDWM. In response to this message, FDWM requests for the
page from the www based on the selected parameter, which the FDWM receives from the
message. This functionality is only for elements of type stcc.
After receiving the page from Freight FDWM marks it up and sends the output to the UIW, to
be displayed in two frames. The first frame contains the left html allowing users to make a
selection at any time. The second frame contains all the marked up elements(which become
anchors after the action of BLEM).
Example of GetSICCode Message :
<?xml version="1.0"?>
<!DOCTYPE EngMsg SYSTEM "/export/home/engine/WWW/public_html/users/shared/dtd/Di
splayDoc.dtd" >
<EngMsg>
186
<RequestID>965927520164</RequestID>
<MsgType>DISPLAYDOCUMENT</MsgType>
<Origin>FDWM</Origin>
<Current>FDWM</Current>
<MsgNo>FDWM:965927522188</MsgNo>
<Destination>UIW</Destination>
<MsgBody>
<FramesetDef target="MAIN">
<![CDATA[<frameset cols='135,*'><frame name='First'><frame name='Second'><
/frameset>]]>
</FramesetDef>
<SubFrame Name="First">
<Doc>
<DocID>dhyme:fdwm:left:left</DocID>
<DocType>dhyme:fdwm:left</DocType>
</Doc>
<OutDoc>
187
<![CDATA[<HTML>
<BODY background="http://freight.njit.edu/back2.gif">
<BR>
<BR><BR>
<BR><FONT COLOR=BLACK SIZE=2>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:about&Subject=getFirst"target=_top >About the
MIS</A>
<BR>
<A HREF="http://freight.njit.edu/execute/index.htm"target=_top> Executive Report
s</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1993&Subject=getFirst"target=_top> CFSR (
188
1993)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfsr1982&Subject=getFirst"target=_top> CFSR (
1982)</A>
<BR>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst"target=_top> CFCR (93 v
s.82)</A>
<A
HREF="UIW?MsgType=FOLLOWLINK&Destination=FDWM&type=dhyme:fdwm:existing_li
nk&E
lement_ID=dhyme:fdwm:existing_link:misc&Subject=getFirst"target=_top> Misc. Stat
istics</A>
189
</BODY>
</HTML>
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
<SubFrame Name="Second">
<Doc>
<DocID>dhyme:fdwm:type:01-Farm Products</DocID>
<DocType>dhyme:fdwm:type</DocType>
</Doc>
<OutDoc>
<![CDATA[<HEAD>
<TITLE>SIC Group 01 - Agricultural Production Crops</TITLE>
<HEAD>
<BODY bgcolor="#b5ffb5" text="#400080" GCOLOR="#FFFFFF" link="#0000ff" VLINK="
#0000ff" ALINK="#00ffff">
190
<CENTER><H2><font face="Comic Sans MS"> 01 - Agricultural Production Crops</H2><
/font>
<table bgcolor="#ffff80" width=90% border=1><FONT FACE="arial">
<FONT FACE="ARIAL">
<th bgcolor="#ff8080">SIC</th><th bgcolor="#ff8080">DESCRIPTION</th></font>
<tr><td><B>011</B></td><td><B>Cash Grains</B></td></tr>
<td>0111</td><td>Wheat</td></tr>
<td>0112</td><td>Rice</td></tr>
<td>0115</td><td>Corn</td></tr>
<td>0116</td><td>Soybeans</td></tr>
<td>0119</td><td>Cash grains, nec</td></tr>
<td><B>013</B></td><td><B>Field Crops, Except Cash Grains</B></td></tr>
<td>0131</td><td>Cotton</td></tr>
<td>0132</td><td>Tobacco</td></tr>
<td>0133</td><td>Sugarcane and sugar beets</td></tr>
<td>0134</td><td>Irish potatoes</td></tr>
<td>0139</td><td>Field crops, except cash grains, not elsewhere classified</td><
191
/tr>
<td><B>016</B></td><td><B>Vegetables and Melons</B></td></tr>
<td>0161</td><td>Vegetables and melons</td></tr>
<td><B>017</B></td><td><B>Fruits and Tree Nuts</B></td></tr>
<td>0171</td><td>Berry crops</td></tr>
<td>0172</td><td>Grapes</td></tr>
<td>0173</td><td>Tree nuts</td></tr>
<td>0174</td><td>Citrus fruits</td></tr>
<td>0175</td><td>Deciduous tree fruits</td></tr>
<td>0179</td><td>Fruits and tree nuts, not elsewhere classified</td></tr>
<td><B>018</B></td><td><B>Horticultural Specialties</B></td></tr>
<td>0181</td><td>Ornamental nursery products</td></tr>
<td>0182</td><td>Food crops grown under cover</td></tr>
<td><B>019</B></td><td><B>General Farms, Primarily Crop</B></td></tr>
<td>0191</td><td>General farms, primarily crop</td></tr>
</table></font></CENTER>
</body>
192
]]>
</OutDoc>
<List_Of_Element/>
</SubFrame>
</MsgBody>
6.3 Bridge Laws:
Bridge laws are Knowledge base of rules that serve as bridge or connection between the
objects defined in the language of the back-end and those in that of hypermedia engine and are
used to describe the structure of the application. The link bridge law specifies what actions can
be taken concerning this type of component.
To identify Bridge laws for a module one must first identify what the different Element
types there are for that system/module. Once the Elements are identified, we can come up with
bridge laws for each of these element types.
Bridge laws are nothing but commands and parameters that a module expects when a link
is clicked. If we write Bridge laws for an element type, then an element belonging to that
element type becomes an anchor. When the user clicks on that anchor, for every bridge law
written for that element type, there will be a link displayed which is also specified by the module
193
in the Bridge law.
For FDWM, the element types identified are
The following are the Element types and the Bridge laws as is defined in the BLEM Module.
6.3.1 Element Types
Element_type Description
1. dhyme.fdwm.county County
2. dhyme.fdwm.1982zone 1982 Zone
3. dhyme.fdwm.1993zone 1993 Zone
4. dhyme.fdwm.bothzone Zone present in 1982 and 1993
5. dhyme.fdwm.flow Flow
6. dhyme.fdwm.flowtype Flow Type
7. dhyme.fdwm.floworientation Flow Orientation
8. dhyme.fdwm.existing_link Existing Link
9. dhyme.fdwm.description Description
10. dhyme.fdwm.state State (not marked currently)
11. dhyme.fdwm.region Region
194
12. dhyme.fdwm.us_canada us_canada regions
13. dhyme.fdwm.worldregion World Region
14. dhyme.fdwm.flowunit Flow Unit
15. dhyme.fdwm.totalflowunit Total Flow Unit
16. dhyme.fdwm.compflowunit Computational Flow Unit
17. dhyme.fdwm.stcc1993 STCC code 1993 (not in use currently)
18. dhyme.fdwm.stcc1982 STCC code 1982 (not in use currently)
19. dhyme.fdwm.stcccomp STCC comparison code
20. dhyme.fdwm.oldmode Old Mode (1982)
21. dhyme.fdwm.newmode New Mode(1993)
22. dhyme.fdwm.compmode. Comparision Mode
23. dhyme.fdwm.stcc STCC Code
6.3.2 Element Hierarchy
Element Parent
dhyme.fdwm.compflowunit dhyme.fdwm.flowunit
dhyme.fdwm.totalflowunit dhyme.fdwm.flowunit
195
dhyme.fdwm.bothzone dhyme.fdwm.1982zone
dhyme.fdwm.bothzone dhyme.fdwm.1993zone
Whenever there is a hierarchy of element’s, an element will inherit all the Bridge Laws
that apply to the parent element type.
For ex:
1982zone has BridgeLaw getZone_AllCounty_82
&
1993zone has BridgeLaw getZone_AllCounty_93
then
bothzone will have two Bridge Laws by virtue of inheritance. It can have any number of
additional Bridge Laws apart from the above.
How to declare inheritance ??
Simple.
Register the element type by using BLEMinterface in ~shared/bin.
Whenever you are registering the element type with BLEM you can specify the parent-element
of that element. BLEMinterface provides that functionality.
6.3.3 Bridge laws
196
Owning-module Command Target-Module Link Label Element Type
FDWM getCounty_AllCounty_82 FDWM display County to All Counties 1982
dhyme:fdwm:county
FDWM getCounty_AllCounty_93 FDWM display County to All Counties 1993
dhyme:fdwm:county
FDWM getAllCounty_County_82 FDWM display All Counties to County 1982
dhyme:fdwm:county
FDWM getAllCounty_County_93 FDWM display All Counties to County 1993
dhyme:fdwm:county
FDWM getZone_AllCounty_82 FDWM display Zone to All Counties 1982
dhyme:fdwm:1982zone
FDWM getZone_AllCounty_93 FDWM display Zone to All Counties 1993
dhyme:fdwm:1993zone
FDWM getAllCounty_Zone_82 FDWM display All Counties to Zone 1982
dhyme:fdwm:1982zone
FDWM getAllCounty_Zone_93 FDWM display All Counties to Zone 1993
dhyme:fdwm:1993zone
FDWM getSICCode FDWM display Corresponding SIC Code dhyme:fdwm:stcc
197
The parameter name for all these bridge laws is Element_ID. The value for this parameter is got
from the UIW depending on the element that the user selected.
6.4 Messages
FDWM receives only messages of type “FollowLink” and outputs only messages of type
“DsiplayDocument”. There are six different input messages that the FDWM can receive and
there are eight different output messages that the FDWM can send.
The input messages are
-Display message -GetFirst Message
-GetMetainfo message -GetDocument message
-GetCounty_AllCounty_82 Message -GetAllCounty_County_82 Message
-GetCounty_AllCounty_93 Message -GetAllCounty_County_93 Message
GetZone_AllCounty_82 Message -GetAllCounty_Zone_82 Message
-GetZone_AllCounty_93 Message -GetAllCounty_Zone _93 Message
-GetSICCode Message
198
The eight output messages are
-Display message -First message
-MetaInfo message - Document message
-County_AllCounty_82 message -AllCounty_County_82 message
-County_AllCounty_93 message -AllCounty_County_93 message
Zone_AllCounty_82 Message -AllCounty_Zone_82 Message
-Zone_AllCounty_93 Message -AllCounty_Zone _93 Message
-SICCode Message
For a more detailed discussion on these message refer 6.1 and 6.2
7. Module Design Specifications
7.1 Module Functional Specification
Display : When the Freight Wrapper Module is invoked, FDWM should send the FreightStart
page to the UIW to be displayed in the browser. This is for the user to make a selection in
199
Freight. This is the first functionality provided by FDWM. When the module is started, it
receives a message to show the Start page and the FDWM sends back the First page to be
displayed.
GetFirst: Once the user makes a selection in Freight Start page, the FDWM sends back the page
selected, to the UIW to be displayed in the browser. Since the FDWM needs the static(First)
HTML files generated by the Freight, the files are assumed to be in a local directory. This
directory name is specified in the FDWM properties file.
GetDocument: The third functionality provided by FDWM is to fetch the Document selected by
the user. The parameters selected are sent by the UIW to FDWM. FDWM then does a http
getRequest and fetches the html from the Freight System. It then marks up all the elements and
sends it to BLEM. BLEM turns all the marked elements to anchors.
GetCounty_AllCounty_82: The Fourth functionality provided by FDWM is to get the results of
the County to All counties for the year 1982. This functionality is available only to the elements
of type County. Depending on the name of the county selected, the FDWM issues a httprequest
for the page. It then marks up all the elements in the document and sends it to BLEM. BLEM
turns all the marked elements to anchors.
200
GetAllCounty_County_82: The Fifth functionality provided by FDWM is to get the results of
the AllCounties to the select county for the year 1982. This functionality is available only to the
elements of type County. Depending on the name of the county selected, the FDWM issues a
httprequest for the page. It then marks up all the elements in the document and sends it to BLEM.
BLEM turns all the marked elements to anchors.
GetCounty_AllCounty_93: The Sixth functionality provided by FDWM is to get the results of
the County to All counties for the year 1993. This functionality is available only to the elements
of type County. Depending on the name of the county selected, the FDWM issues a httprequest
for the page. It then marks up all the elements in the document and sends it to BLEM. BLEM
turns all the marked elements to anchors.
GetAllCounty_County_93: The Seventh functionality provided by FDWM is to get the results
of the AllCounties to the select county for the year 1993. This functionality is available only to
the elements of type County. Depending on the name of the county selected, the FDWM issues a
httprequest for the page. It then marks up all the elements in the document and sends it to BLEM.
BLEM turns all the marked elements to anchors.
Show Meta Info: The eight functionality provided by FDWM is to provide the Meta data of an
element selected.The Meta Data is specified in RDF syntax. There was not enough time to figure
201
out a way to extract Meta data from Freight. The functionality provided for now by FDWM is as
a proof of concept. As more and more Meta data can be extracted from the Freight, it can be
added to the information using the existing method.
GetZone_AllCounty_82: The functionality provided by FDWM is to get the results of the select
zone to AllCounties for the year 1982. This functionality is available only to the elements of type
Zone. Depending on the name of the zone selected FDWM issues a httprequest for the page. It
then marks up all the elements in the document and sends it to BLEM. BLEM turns all the
marked elements to anchors.
GetZone_AllCounty_93: The functionality provided by FDWM is to get the results of the select
zone to AllCounties for the year 1993. This functionality is available only to the elements of type
Zone. Depending on the name of the zone selected, FDWM issues a httprequest for the page. It
then marks up all the elements in the document and sends it to BLEM. BLEM turns all the
marked elements to anchors.
GetAllCounty_Zone _82: The functionality provided by FDWM is to get the results of the
AllCounties to the select zone for the year 1982. This functionality is available only to the
elements of type Zone. Depending on the name of the zone selected, FDWM issues a httprequest
for the page. It then marks up all the elements in the document and sends it to BLEM. BLEM
turns all the marked elements to anchors.
202
GetAllCounty_Zone _93: The functionality provided by FDWM is to get the results of the
AllCounties to the select zone for the year 1993. This functionality is available only to the
elements of type Zone. Depending on the name of the zone selected, FDWM issues a httprequest
for the page. It then marks up all the elements in the document and sends it to BLEM. BLEM
turns all the marked elements to anchors.
GetSICCode : The functionality provided by FDWM is to get the corresponding SIC Code for
the stcc code which the user selects in the browser. This functionality is available only to the
elements of type stcc. Depending on the stcc code selected, the FDWM issues a httprequest for
the page. It then marks up all the elements in the document and sends it to BLEM. BLEM turns
all the marked elements to anchors.
7.2 Module Operational and Interface Specification
7.2.1 Interaction with the rest of the Engine
FDWM interacts with the rest of the Engine using the gateway and Engine Message
Object. Engine message object is used to create messages and the gateway is used to route these
messages to appropriate destination. “FreightWrapperModule” is the interface to the rest of the
engine. This functions like a server by extending the module class provided by gateway and
starting itself by calling the “startMe(localhost)” method.
It then waits for a message to come. Once a message is sent to gateway whose detination
203
is FDWM, gateway invokes the “processMsg” method of FDWM sending the Engine message
received as a parameter.
(Note: All the modules which uses the gateway to interact with rest of the Engine should define
the “processMsg” method and include in that method whatever functionality the module wants to
provide when it receives a message).
The message is parsed in the “processMsg” method and depending on the “Subject “ tag
in the message the appropriate message handlers are instantiated and their public
”handleRequest” methods are called by passing the engine message as one parameter. The other
parameter to this method is a variable of type “paramtable” (dhyme.utils.datastructures) .This
variable has key-value pairs but there can be multiple values for a single key.
7.2.2 Message handlers in FDWM
Message handler Module creates the interface for all the message handlers in the module.
Display Handler: This module in FDWM is invoked if the subject tag of the message received
by the FDWM has the value “display”. There are two methods in this module. One is the
constructor and the other method is the “handleRequest” method. This “handleRequest’ method
is the one called by FreightWrapperModule. In this method, the reply message is created and the
form to be displayed is converted into a string and sent as a CDATA value in the outdoc tag of
204
the reply engine message. The form to be displayed is sent as the parameter value but without the
html extension. So in FDWM the parameter value that it expects is FreightStart. There is a file
called “FreightStart.html” which is the page to be displayed. The StreamStringer class
(dhyme.utils.io) is used to convert this file into a String.
GetFirstHandler: This module in FDWM is invoked if the subject tag of the incoming engine
message received by FDWM has the value “getFirst”. Apart from the Constructor which is used
to instantiate this module, the “handleRequest” method is the main method. This is the method
that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures) .This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetFirstHandler expects a single
parameter Element_ID. From the Element_Id it extarcts the page selected by the user.
An example of a paramvalue for Element_ID is dhyme:dmisw:existing_link:cfsr1993
So the Handler knows that it has to get the cfsr1993 page. All the static html pages belonging to
Freight are available in the ~users/shared/config/fdwm directory. This approach was used
because of the following reasons.
• An overhead of network connection was burdening the existing system.
• There were errors in the html which the ambient browser forgave but the strict xml
205
parser wouldn’t.
• All the action tags of the html form had to be replaced by the UIW so that when a
user does a submit a message is sent to FDWM instead of Freight.
then builds a response message to be sent to the UIW through the gateway. The response
message is built ,in such a way that it splits the main frame in the browser to accommodate the
two frames of the original Freight System.
In the handleRequest method , reply message is created and the page to be displayed is converted
into a string and sent as a CDATA value in the outdoc tag of the reply engine message. In
FDWM the parameter value that it expects is dhyme:dmisw:existing_link:cfsr1993. There is a
file called “cfsr19931.html” which is the page to be displayed. The StreamStringer class
(dhyme.utils.io) is used to convert this file into a String.
GetDocumentHandler: This module in FDWM is invoked if the subject tag of the incoming
engine message received by FDWM has the value “getDocument”. Apart from the Constructor
which is used to instantiate this module, the “handleRequest” method is the main method. This is
the method that is actually called from the FreightWrapperModule. The “handleRequest” method
calls two methods executeQuery and addtoEngineMessage.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures) .This variable has key-value pairs but there can be multiple values
206
for a single key. There can be any number of parameters but GetDocumentHandler expects three
parameter’s ASP_FILE, SELECT1_PARAM, SELECT2_PARAM.
Both the SELECT1_PARAM, SELECT2_PARAM parameters can have single or
multiple values. If there are multiple values for a key then a vector of values is returned. To
handle this situation getAllParams method (dhyme.utils.datastructures.ParamTable) is used
which returns a String[] .The ASP_FILE parameter’s value gives the pathname.
The executeQuery method expects three parameters – pathname, Select1 [], Select2[].
From the pathname it extracts the dirname and filename .It converts the Select1 Array to a String
seperated by commas.The same is repeated with Select2 Array. This is done, because to make a
http request with multiple parameters you have to send a String of the form select1 =
Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class is
explained later. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
207
In the addtoEngineMessage method , reply message to be sent to the Gateway is built.
The page to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the
reply engine message. The response message is built ,in such a way that it splits the main frame
in the browser to accommodate the two frames of the original Freight System.
DocumentMarker : This is the most important class in the FDWM module. Apart from the
constructor the other methods in the class are getMarkedDocument, doMarkup, add_first_elem,
add_second_elem, getURIHash.
getMarkedDocument: The function of this method is to parse the incoming stream and search
for elements. Writing the parser was difficult because of the following reasons.
1. The properties(attributes) were not properly defined.So none of the existing parsers could be
used.
Soln : Write our own parser for Freight.
2. There were no proper line breaks(new Line ). Horizontal space was the delimiter. In fact the
entire html of the table was in a single line for most pages. Some pages had line breaks.
Soln : The parser was written so that it remembers it’s state. The various states in the parser are
BEGIN
BEGIN_TABLE <table
208
END_TABLE <\table
BEGIN_CMT <!--
END_CMT -->
BEGIN_TR <tr
END_TR <\tr
BEGIN_TD <td
END_TD <\td
BEGIN_ELEM <body
The concept of finite automata was employed in the design of the parser.
BEGIN : Initiallly the parser starts with this stage. In this stage it looks for <BODY, <table, <!--.
If any of it is found it changes it’s state accordingly.
BEGIN_ELEM : This state is used to search for elements following the Label(To Counties,
etc). The approach used here is to search for the element’s on which the selection was made.If
the selection was made on Atlantic,Camden to Cape May county then in this state I search for
patterns “Atlantic”, “Camden” & “CapeMay”.
This approach was used because there were there were no proper delimiters. In some
209
pages “;” and in some pages “,” was the delimiter. And some elements had “,” in them.
Ex “Bronxs, NY”
Once an element is found from the select1 list it calls the add_first_elem method, which
marks the element and adds it to th e hash.
Once an element is found from the select2 list it calls the add_second_elem method,
which marks the element and adds it to th e hash.
Another problem in the html was that for some pages it gives the element names more
than once.
Fo r example if a selection was made from Atlantic to Bergen county then the output has
From Counties : Atlantic.
To Counties :Bergen, Bergen.
Soln: Search for all instances of a pattern.
After all the element’s are marked, it changes the state to BEGIN.
BEGIN_TABLE : In this stage it looks for <td <tr, <!--. If any of it is found it changes it’s state
accordingly.
BEGIN_CMT : In this stage it searches for “-�”.If it is not found then it goes to the next line.
If it is found it changes it’s state to BEGIN.
210
BEGIN_TR : In this stage it searches for “-�”, “<td” .If it is not found then it goes to the next
line. If it is found it changes it’s state to accordingly.
There were comments in between tables. The html had comments that spanned across
multiple lines like the example below. So we could not search for patterns like <td> and mark
them directly.
<table border=1><tr>
<!-- <td><b>Destination </b></td>
<td><b>STCC</b></td>
<td><b>Total</b></td>
<td><b>Truck</b></td>
<td><b>Common Carrier</b></td>
<td><b>Package Carrier</b></td>
<td><b>Company Fleet</b></td>
<td><b>Rail</b></td>
<td><b>Boxcars</b></td>
<td><b>TOFC/COFC</b></td>
<td><b>Air</b></td>
211
<td><b>Water Other</b></td>
-->
</tr>
</table>
Soln : At every stage check for Begin Comment. If found then add them to the output buffer as
it is till you reach an end comment. Do not mark an element found in between comments. Do
not delete comments.
BEGIN_TD :
PerlTools in Java is used for pattern matching. There are two patterns that are searched for
<td><b>String<b>
<td align = top > String <td>
The String used for matching was
“/(<td.*?>)(<b>)?((\\w|\\s|[\\.|\\-|\\,|\\(|\\)|\\&|\\/])+)(<\\/b>)?/"
The pattern matching string was designed taking into consideration all kinds of possible output
that Freight could generate.
If a pattern is found then the domarkup method is called .
Parser then searches for a </td>, </TD>, </tr>.If any of them is found, it changes the state
212
accordingly. Some of the html outputs from Freight have “TD” tags.
END_TD : In this state the parser searches for “<td” , “</tr>”. If an “<td” is found, it increments
the column number.
If an “</tr” pattern is found then it increments the row number by one and makes the column
number 0.Why??
Because there were missing <tr> tags in the html. There was no way to know where a row began.
So the end tr(<\tr>) was taken as the criteria to mark the beginning of the next row.
END_TR: In this state the parser searches for “</table>”, “<td”. If “</table>” is found it
changes the state to BEGIN . If “<td” is found it changes the state to BEGIN_TD.
doMarkUp Method : The doMarkup method expects three parameters.The element to be
marked, the row and column no of the element. It looks at the type of the element from the
properties file. Puts the proper Locator tags and adds an entry to the uriHash table. Returns the
string to be appended.
If elemName = Air, row=0, column =2;Puts an entry as ColVector[2] =Air
It returns <#idno>Air</#idno>
213
The doMarkup method checks if the row is zero, ie the row has all column names. It
makes a vector of Column Names. Ex :
Next it checks if the column name is zero, ie the column has row names. It makes a
vector of Row Names. It looks at the type of the element from the properties file. Puts the proper
Locator tags and adds an entry to the uriHash table. Returns the string to be appended.
If both are not zero then the element is a flowtype element.It then checks if there were
multilple selections in either the source or destination selection parameters.If so it marks it as a
computational flow element.
If the row name is Total it marks it as totalflowunit element. else marks it as a flowunit
element.
add_first_elem Method : The method expects one parameter. The element to be marked. It
looks at the type of the element from the properties file. Puts the proper Locator tags and
adds an entry to the uriHash table. Returns the string to be appended. This method is called when
a string in the select1 array is found.
add_second_elem Method : The method expects one parameter. The element to be marked. It
looks at the type of the element from the properties file. Puts the proper Locator tags and adds an
entry to the uriHash table. Returns the string to be appended. This method is called when a string
in the select2 array is found.
GetCounty_AllCounty_82Handler: This module in FDWM is invoked if the subject tag of the
214
incoming engine message received by FDWM has the value “getCounty_AllCounty_82”. Apart
from the Constructor which is used to instantiate this module, the “handleRequest” method is the
main method. This is the method that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures) .This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetCounty_AllCounty_82Handler
expects only one parameter Element_ID.
The county name is extracted from the Element_ID. It is the Select1 parameter.The
Select2 parameter is a String array of all counties.
Inside handleRequest method two other methods are called –executeQuery,
addToEngineMessage.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array. This is
done, because to make a http request with multiple parameters you have to send a String of the
form select1 = Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class
215
was explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built.
The page to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the
reply engine message. The response message is built ,in such a way that it splits the main frame
in the browser to accommodate the two frames of the original Freight System.
GetAllCounty_County_82Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value “getAllCounty_County_82”. Apart
from the Constructor which is used to instantiate this module,the “handleRequest” method is the
main method. This is the method that is called in the FreightWrapperModule.
Inside handleRequest the other method’s that are called are- the “executeQuery” ,
“addToEngineMessage” method.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures) .This variable has key-value pairs but there can be multiple values
216
for a single key. There can be any number of parameters but GetAllCounty_County_82Handler
expects only one parameter Element_ID.
The county name is extracted from the Element_ID. It is the Select2 parameter. The
Select1 parameter is a String array of all counties.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker.
The DocumentMarker class expects five parameters – BufferedReader, dirname,
filename, Select1[] and Select2[].The detailed working of the DocumentMarker class was
explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built. The page
to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the reply
engine message. The response message is built ,in such a way that it splits the main frame in the
browser to accommodate the two frames of the original Freight System.
217
GetCounty_AllCounty_93Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value “getCounty_AllCounty_93”. Apart
from the Constructor which is used to instantiate this module, the “handleRequest” method is the
main method. This is the method that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures) .This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetCounty_AllCounty_93Handler
expects only one parameter Element_ID.
The county name is extracted from the Element_ID. It is the Select1 parameter.The
Select2 parameter is a String array of all counties.
Inside handleRequest method two other methods are called –executeQuery,
addToEngineMessage.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array. This is
done, because to make a http request with multiple parameters you have to send a String of the
form select1 = Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
218
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class
was explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built.
The page to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the
reply engine message. The response message is built ,in such a way that it splits the main frame
in the browser to accommodate the two frames of the original Freight System.
GetAllCounty_County_93Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value
“getAllCounty_County_93Handler”. Apart from the Constructor which is used to instantiate this
module,the “handleRequest” method is the main method. This is the method that is called in the
FreightWrapperModule.
Inside handleRequest the other method’s that are called are- the “executeQuery” ,
“addToEngineMessage” method.
219
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures) .This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetAllCounty_County_82Handler
expects only one parameter Element_ID.
The county name is extracted from the Element_ID. It is the Select2 parameter. The
Select1 parameter is a String array of all counties.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker.
The DocumentMarker class expects five parameters – BufferedReader, dirname,
filename, Select1[] and Select2[].The detailed working of the DocumentMarker class was
explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built. The page
220
to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the reply
engine message. The response message is built ,in such a way that it splits the main frame in the
browser to accommodate the two frames of the original Freight System.
GetMetainfoHandler: This module in FDWM is invoked if the subject tag of the incoming
engine message received by FDWM has the value . Apart from the Constructor which is used to
instantiate this module, the “handleRequest” method is the main method. This is the method that
is called in the FreightWrapperModule. As of now this method returns only evident meta data
about the element selected. As more and more meta data is identified it can be added in the same
way.
GetZone_AllCounty_82Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value “getZone_AllCounty_82”. Apart
from the Constructor which is used to instantiates this module, the “handleRequest” method is
the main method. This is the method that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures). This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetZone_AllCounty_82Handler
expects only one parameter Element_ID.
The zone name is extracted from the Element_ID. It is the Select2 parameter.The Select1
parameter is a String array of all counties.
221
Inside handleRequest method two other methods are called –executeQuery,
addToEngineMessage.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array. This is
done, because to make a http request with multiple parameters you have to send a String of the
form select1 = Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class
was explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built.
The page to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the
reply engine message. The response message is built ,in such a way that it splits the main frame
in the browser to accommodate the two frames of the original Freight System.
222
GetZone_AllCounty_93Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value “getZone_AllCounty_93”. Apart
from the Constructor which is used to instantiates this module, the “handleRequest” method is
the main method. This is the method that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures). This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetZone_AllCounty_93Handler
expects only one parameter Element_ID.
The zone name is extracted from the Element_ID. It is the Select2 parameter. The Select1
parameter is a String array of all counties.
Inside handleRequest method two other methods are called –executeQuery,
addToEngineMessage.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array. This is
done, because to make a http request with multiple parameters you have to send a String of the
form select1 = Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
223
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class
was explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built.
The page to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the
reply engine message. The response message is built ,in such a way that it splits the main frame
in the browser to accommodate the two frames of the original Freight System.
GetAllCounty_ Zone_82Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value “getAllCounty_Zone_82”. Apart
from the Constructor which is used to instantiates this module, the “handleRequest” method is
the main method. This is the method that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures). This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetAllCounty_Zone_82Handler
expects only one parameter Element_ID.
The zone name is extracted from the Element_ID. It is the Select2 parameter.The Select1
224
parameter is a String array of all counties.
Inside handleRequest method two other methods are called –executeQuery,
addToEngineMessage.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array. This is
done, because to make a http request with multiple parameters you have to send a String of the
form select1 = Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class
was explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built. The page
to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the reply
engine message. The response message is built ,in such a way that it splits the main frame in the
browser to accommodate the two frames of the original Freight System.
225
GetAllCounty_Zone_93Handler: This module in FDWM is invoked if the subject tag of the
incoming engine message received by FDWM has the value “getAllCounty_Zone_93”. Apart
from the Constructor which is used to instantiates this module, the “handleRequest” method is
the main method. This is the method that is called in the FreightWrapperModule.
The “handleRequest” method is called by passing the engine message as one parameter.
The other parameter to this method is a variable of type “paramtable”
(dhyme.utils.datastructures). This variable has key-value pairs but there can be multiple values
for a single key. There can be any number of parameters but GetAllCounty_Zone_93Handler
expects only one parameter Element_ID.
The zone name is extracted from the Element_ID. It is the Select2 parameter. The Select1
parameter is a String array of all counties.
Inside handleRequest method two other methods are called –executeQuery,
addToEngineMessage.
The executeQuery method expects two parameters –Select1 [], Select2[].It converts the
Select1 Array to a String seperated by commas.The same is repeated with Select2 Array. This is
done, because to make a http request with multiple parameters you have to send a String of the
form select1 = Atlantic,Bergen.The multiple values have to be seperated by commas.
The execute query method uses the queryString class to encode the URL. It then forms
the appropriate URL and issues a http request. If the request is successful (response code
226
between 200 & 300) the it gets the inputstream buffers it and creates an object of type
DocumentMarker. The DocumentMarker class expects five parameters – BufferedReader,
dirname, filename, Select1[] and Select2[].The detailed working of the DocumentMarker class
was explained earlier. The executeQuery method then calls the “getMarkedDocument” and
“getUriHash” methods of the DocumentMarker object. The “getMarkedDocument” method
returns the HTML document converted to String with all the elements marked with the
appropriate locator tags. The “getUriHash” method returns the Hash with the Locator_Id as key
and value as uri.
In the addtoEngineMessage method , reply message to be sent to the Gateway is built. The page
to be displayed (marked Document)is sent as a CDATA value in the outdoc tag of the reply
engine message. The response message is built ,in such a way that it splits the main frame in the
browser to accommodate the two frames of the original Freight System.
GetSICCodeHandler: This module in FDWM is invoked if the subject tag of the incoming
engine message received by FDWM has the value “getSICCode”. Apart from the Constructor
which is used to instantiate this module, the “handleRequest” method is the main method. This is
the method that is called in the FreightWrapperModule.
In the handleRequest method , the stcc code for which the corresponding SIC Code is desired is
extracted.The no of the STCC code is extracted from it. Then based on that number a page
request is done from the location on the www. For making a page request HTTPRequestor class
of dhyme.utils.io is used.
227
Reply message to be sent to the Gateway is built. The page to be displayed is sent as a CDATA
value in the outdoc tag of the reply engine message. The response message is built ,in such a way
that it splits the main frame in the browser to accommodate the two frames.The left frame of
Freight System and the page got from the WWW.
7.3 Module Operation
7.3.1 To start the Application
The classes needed to run this module is in shared/classes/dhyme/dmisw/fdwm directory.
There is a script to run the module. It is in shared/bin directory. The script is called startFDWM.
Go to
space/~/WWW/public_html/users/shared/bin and type startFDWM.
The module registers itself with the gateway using the name “fdwm” and starts itself and waits
for an engine message to do processing.
7.3.2 To shut down the application
use "ps -f" to get the process id of the FreightWrapperModule
228
use "kill process id" to shut down the application.
7.3.3 Error Conditions
1. If the incoming XML message does not have a valid <Subject> value – which are display,
getFirst, getDocument, getCounty_AllCounty_82,getCounty_AllCounty_93,
getAllCounty_County82, getAllCounty_County93, getMetaInfo, an error message “[whatever
the value of the subject tag is] & does not have a handler associated with it”. This occurs in the
main module “FreightWrapperModule”. The only way to correct this is to pass a valid XML
message that FDWM understands.
2. If gateway is up and running but FDWM restarts after a problem being rectified or so it can
receive a Gateway
Exception which will look like this
Exception in thread "main" dhyme.gateway.server.GatewayException: Error binding
module FDWM .. already bound exception from RMI
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
229
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Exception.java:42)
at dhyme.gateway.server.GatewayException.<init>(GatewayException.java:15
)
at dhyme.gateway.module.Module.<init>(Module.java:73)
at dhyme.dmisw.FDWM.FreightWrapperModule.<init>(FreightWrapperMo
dule.java:32)
at dhyme.dmisw.FDWM.FreightWrapperModule.main(FreightWrapperModu
le.java:148)
This is because the module is already in the RMI registry. Gateway has to delete FDWM from
being an active module and then FDWM should restart.
3. If gateway is not up and running, the module outputs a Gateway Exception (Refer to
Gateway module).
4. If there is some problem with the Engine message object, for instance it could not find the
DTD location because the HTTP server in space is down, the modules using it will not
receive an error. The program in the module will terminate abruptly.
230
5. If there is some problem with the Engine message object, for instance if the message is not
valid as in a DTD, then it gives a “Message not valid as in a DTD exception”. This happens
when there are errors in the html output coming from Freight.
To correct this problem, check the input html for missing or additional tags and correct the
html.
6. If there is an exception like
“Gateway could be pinged but the message could not be sent. RMI marshal exception”
Check the current version of Java with the command
java –version
if it says java 1.2.2 go to cshrc file and change java version to 1.3.
Do “source .cshrc” and start the engine again.
FDWM can only work with java1.3 version because of the large size of messages sent by
the module.
After a message is built, FDWM writes it to a file and stores in under
shared/scratch/outgoing/fdwm directory for log purposes. The directory can be browsed to see if
FDWM wrote any output file for every message received which are stored in
shared/scratch/incoming/ifdwm directory. If there is a problem with engine message object, no
output file would be written for that particular incoming message.
231
7.4 Module Limitations and Restrictions and Rules
- Because of the large size of the message’s, FDWM can run only with Java version 1.3.
Java 1.2 does not support the marshalling of parameters greater than 64K in size.
- The only way to communicate with FreightWrapperModule is using XML messages.
There is no GUI interface.
- All the XML messages input to the module must follow the message format mentioned in
section 6.1 otherwise FreightWrapperModule will not know how to process the message.
- The assumption I make in the module is that the Freight static files are available locally to
process. So there is no need to specify any path in the browser .The path where to find the
files are coded in the properties file which can be changed as needed.
8. System testing
8.1 Functions to be tested
232
1.Display: To test whether FDWM produces the start page of Freight when a display message
is sent to it.
2.GetFirst: To test whether FDWM produces two documents in two frames, where one frame
has the Freight’s left , the second frame has the page to be displayed when the name of the page
is supplied as a parameter.
3.GetDocument: To test whether FDWM fetches the page from Freight and marks all the
elements appropriately when the selected variables are passed as parameter’s.
4.GetCounty_AllCounty_82: To test whether FDWM fetches the County to all Counties page
for the year 1982 for the county whose element_id is passed as parameter.
5.GetAllCounty_County_82: To test whether FDWM fetches the All counties to the County
page for the year 1982 for the county whose element_id is passed as parameter.
6. GetCounty_AllCounty_93: To test whether FDWM fetches the County to all Counties
page for the year 1982 for the county whose element_id is passed as parameter.
7.GetAllCounty_County_82: To test whether FDWM fetches the All counties to the County
page for the year 1982 for the county whose element_id is passed as parameter.
8.Getmetainfo: To test whether FDWM passes any meta data about the element whose
element_id is passed as parameter.
233
8.2 Testing Procedure
Go to space/~/WWW/public_html/users/shared/classes
1.Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getdisplay.xml
getdisplay.xml contains the input message that FDWM expects to show the Freight’s start page.
2. Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getFirst.xml
getFirst.xml contains the input message that FDWM expects to show the required page
7. Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getdoc.xml
getdoc.xml contains the input message that FDWM expects to show the Document.
4. Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getcc82.xml
234
getcc82.xml contains the input message that FDWM expects to show the 82 county to all county
document.
5. Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getacc82.xml
getcac82.xml contains the input message that FDWM expects to show the 82 all counties to
County document
6 Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getcc93.xml
getcc93.xml contains the input message that FDWM expects to show the 93 county to all county
document.
7 Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getacc93.xml
getcac93.xml contains the input message that FDWM expects to show the 93 all counties to
County document
8 Run java -Ddebugmode=true dhyme.dmisw.fdwm.FreightWrapperModuleTester
../../aparna/java-classes/getmeta.xml
getmeta.xml contains the input message that FDWM expects to show the MetaInfo.
The output xml messages of these test results are stored in
space/`shared/scratch/outgoing/fdwm.
235
For convenience and logging purposes, a directory called fdwm is created under shared/outgoing
and shared/incoming.
Whenever a test version or production version is run, the incoming messages are stored in the
incoming/fdwm directory and the outgoing messages are stored in the outgoing/fdwm directory.
The file names are generated dynamically by using the current time in milliseconds and adding a
xml extension to it.
9. Extending the Project
In order to extend this project a person should be thoroughly familiar with the working of the
Freight system (http://freight.njit.edu) and then understand this project. It would be great if they
have good knowledge of MS Access.
9.1 Some Extensions for this project
1. Redo the screens with checkboxes and anchors to elements: The check boxes appear
only in static pages of Freight system. All the static pages are buffered for efficiency and
their location can be read from the properties file.
There are two ways to redo the screens:
• Get the static pages from Freight by issuing a http get request. Write a small parser
that searches for
236
<option value = “Atlantic_cc”>Atlantic, NJ
tag and then replace it by a
<input type="radio" name="Select" value="Atlantic_cc">.
Then put the appropriate locator id tag beside it.
<input type="radio" name="Select" value="Atlantic_cc"> <#id1>Atlantic <#id1>
This is not a very easy task, and it has to be repeated for every page and every
time a user issue’s a request. Also it would become a very difficult task if the html is not
properly formatted. A better approach is given in 2.
Another problem here is that how would one identify the elements. If each of the
option tag is on a different line than you could use end line character as a delimiter. If
not then some other schema should be devised for it.
• Since the static pages remain the same, any no of times you issue a request a better
approach would be to buffer them and make the changes to it. Replace all the option tags
by radio buttons. You still have to write a parser that searches for input tags and add
locator tags to it. The advantage of having a buffered page is that
1. It reduces the overhead of n/w connection
2. It reduces the amount of time required for processing and the load of processing.
3. If there are any errors in html you can correct them. You can insert line breaks or
237
proper delimiters for convenience.
4. If there are gifs with relative paths, the whole path can be specified.
2. Removing the Freight Start page and adding the four pages(cfcr etc) to the Menus
Frame: This would be a relatively simpler task. It would involve changing the
startup.xml file. Remove the entry
<TR>
<TD><A href="UIW?Element_ID=FreightStart&Subject=display&MsgType=FollowL
ink&Destination=FDWM" target=_top>Freight Wrapper Module</A></TD>
</TR>
Add four additional entries of the form.
<TR>
<TD><A
href="UIW?Element_ID=dhyme:fdwm:existing_link:cfcr&Subject=getFirst&MsgType=Fol
lowLink&Destination=FDWM" target=_top> Commodity Flows Comparison Reports (DRI-
1993 vs. Rebee-1982)</A></TD>
</TR>
238
For help you can look at the FreightStart.html file in ~shared/config/fdwm.
Another change would be to rewrite every handlers’s addToEngineMessage() method.
The current handler’s split the main frame into two. This would not be necessary now. The
addToEngineMesssage() method should be changed to the one used in
dhyme.dmisw.fdwm.DisplayHandler.java
3. Writing Additional Handlers for new Bridge Laws: Due to the time limitation I could not
provide all the possible links for each element type. I have listed all of the possible links for each
element type. These may not be final. The no and type of links depends on the user’s preference.
In fact they can be tailored to suit the needs of individuals.
To make a request we will need two parameters. One of the parameter would be the one
on which the user clicked the link in the browser. The other depends on the handler.
Ex : If it is a Region to all counties link for Bergen county, then one parameter would be Bergen,
the other would be the list of all counties.
Element Type : Possible Links
County County to all Regions All Regions to County
County to all zones 1993 County to all zones 1982
County to USA/Canada USA/Canada to county.
239
Outflow thru AIR/Water… Inflow thru Air/Water ..
Ex : Atlantic is an element of type county.It would be provided with the above links.
oldmode Inflow to all counties using oldmode.
Outflow to all counties using oldmode.
1982/1993 Flow Data using oldmode.
Ex : Air is an element of type oldmode. It would be provided the above links.
1982zone Zone to all counties 1982 All counties to that zone 1982
Ex : Northeast is an element of type 1982zone. It would be provided the above links.
1993zone Zone to all counties 1993 All counties to that zone 1993
Ex : NY North is an element of type 1993zone. It would be provided the above links.
Flow Flow Data to all counties 1993 Flow Data to all counties 1982
Ex : Inflow is an element of type Flow. It would be provided the above functionality.
Region All counties to the Region Region to all counties.
240
Ex : Delaware, PA is an element of type Region. It would be provided with the above
functionality.
US/Canada From all counties To all counties
Ex : New England , USA is an element of type US/Canada
Writing the handlers is a simple task. It can be modeled on the
GetCounty_AllCounty82Handler ( or in fact any of the handler).
For example to write a handler for Region to all counties:
Step 1: Extract the Region name from the incoming message. Now we have one of the two
parameters required .It could be select1 or select2. Be especially careful about which is the
select1 parameter. It might seem natural that in region to county flow orientation region would
be the select1. But this is not the case. Region is the select2 parameter here.
Step 2: See the html of Freight’s corresponding page and get the name of the ASP file for
Region to county selection. It is cfsr1993rc.asp.
Step3: The select1 parameter now would be all counties. Look carefully at how the counties are
represented internally. It could be “Atl” or “Atlantic”, “Atlantic_rc” or any other format. Make
the select1 [] depending on that. You may have to append or delete something. Be careful about
241
the Cape May county because it has many different representations. “CapeMay”, “Capemay”,
“Cap” , “Cape May” are only some of them.
Step4 : Once you have formed the selection parameters, life is easy. You can use the
“executeQuery” and “addToEngineMessage” methods of any of the Handlers. They will fetch
the document from Freight system, mark up the document, and form the reply message.
4. Make it compatible with DBSchema module to show the schema of the freight database :
This would be a separate project in itself. I do not consider it as an extension to FDWM.
Reason : FDWM does not interact with the database at all. It does not know where an element
belongs in the database. It has no way of knowing it. It does not bypass any existing commands
and access the database directly. It mimics existing commands to provide the additional links.
The uri used for fdwm flowunit is
dhyme:fdwm:flowunit:page:file:select1:select2:row:column.
But this would not be the way it is stored in the database. So it would not be of any use to
the DBSchema module.
If an element is given in the form
dhyme:fdwm:table_name:column_name then FDWM has no way of knowing what the element
is.
And I am not sure if there is a way to co-relate two different uri’s to the same element.
242
The Freight database has nearly 150 tables. Each submit button has the action of fetching the
data from a number of tables.
5. Add additional queries to the system with the help of RDWM module: This again has the
same problems as above. The RDWM module can make a query to any database. It can get the
required information. But the uri used for rdwm is different.
It might mark a county type element as
dhyme:rdwm:value:<databasename>:tablename:columnName:value
where as fdwm marks it as dhyme:fdwmcounty:value.
6. Provide limited external links to the STCC code’s from the world wide web: For elements
marked as STCC there could be a bridge law which provides links in the world wide web. Since
each element would have a different url, the stcc code and the corresponding link could be stored
in the properties file and retreived .There could be entries like stcc.link=url in the properties file.
Whenever thehandler gets the stcc code append “.link” to the stcc and get the url from the
properties file.
10 File Listing
10.1 File Locations
243
The source code, class files, properties file, display forms and documentation are all saved under
two different locations. One is under my own directory name and the other is under shared. Any
updating should be done in one’s own directory before moving it onto shared directory.
There is a single version of all the java files except for the FreightWrapperModule. One is the
testing version, which has the same name but has Tester at the end of the name. The testing
version is the standalone version, which does not need the gateway to run and which can take an
xml file containing the message as command line parameter.
The source code for this module is located under two directories
One is under aparna/java-src/dhyme/dmisw/fdwm and the other is
shared/source/dhyme/dmisw/fdwm
The class files for this module is located under two directories
One is under aparna/java-classes/dhyme/dmisw/fdwm and the other is
shared/classes/dhyme/dmisw/fdwm
The properties file for this module is present under two directories. One is aparna/java-classes
and the other is shared/config.
All the static HTML pages are also located under aparna/java-classes and under
shared/config/fdwm
244
10.2 Explanation for each file
DisplayHandler.java – The source file, which handles the message with subject “display” to
send the Freight Start page to UIW.
GetDocumentHandler.java – The source file, which handles the message with subject
“getDocument” to send a document with the elements marked up.
GetFirstHandler.java – The source file, which handles the message with subject “getFirst” to
send a document when the user makes a selection on the Freight’s Start page.
GetAllCounty_County_82Handler.java – The source file, which handles the message with
subject “getAllCounty_County_82” to send a document with the results of all Counties to
County for the year 1982.
GetAllCounty_County_93Handler.java – The source file, which handles the message with
subject “getAllCounty_County_93” to send a document with the results of all Counties to
County for the year 1993.
GetCounty_AllCounty_82Handler.java – The source file, which handles the message with
subject “getCounty_AllCounty_82” to send a document with the results of County to all
Counties for the year 1982.
GetCounty_AllCounty_93Handler.java – The source file, which handles the message with
245
subject “getCounty_AllCounty_93” to send a document with the results of County to all
Counties for the year 1993.
MessageHandler.java – This is the interface for all the message handlers
MetaInfoHandler.java – The source file, which handles the message with subject
“getMetaInfo” to send a document with the meta data about the element selected.
FDWMConstants.java – This defines all the constants for this module.
FreightWrapperModule.java – This is the main program of the module which registers with
gateway and invokes the appropriate message handlers depending on the message received.
FreightWrapperModuleTester.java – This is the main program of the testing version which
calls the processMsg by itself using the command line argument as a parameter.
FDWM.properties - The properties file for this module