| extended Structured Query Language (xSQL) | Table of contents | Indexes | XML Message Switching | |||
The Use of SGML for a Police Information System |
| Jacques Kasprzak |
| Software Engineer |
| SGML Technologies Group
56 Rue Glesener, Luxembourg L-1630 Luxembourg Phone: +352 29 21 22 Fax: +352 29 21 20 Email: jka@isea.lu Web: www.sgmltech.com |
Biographical notice: |
ABSTRACT: |
| Browser-based application Client/Server Encoding language ![]() Generic tool Police ![]() Prototyping ![]() |
In this paper the objectives of the INGEPOL project are explained. The architecture of the system is then described, this being governed by a number of constraints. Associated problems are highlighted. The role of SGML (Standard Generalized Markup Language) and advantages offered by such an approach are presented within the framework of complex projects. |
Introduction |
Objectives |
The principal objectives of the INGEPOL project are the following: |
So there is immediate sharing of information within local units, and centralization of that local information, integrating information stemming from other systems at the central site. This improves effectiveness of police work in the field, where there is the possibility of querying a complex system of data compiled from many sources in a manner that is transparent to the end-user. |
Functions of the INGEPOL System |
The INGEPOL system has several functions, of which the management of police information could be considered the most fundamental. This includes not only the management of cases but also managing descriptions of persons and objects be they firearms, jewellery, driving licences, stolen vehicles, banknotes, drugs, or objets d'art, for example. |
System exploitation is another important function, one aspect of which is the control of persons and objects (operational control). There is also the consultation of persons including interviews, and information on objects and of cases within the framework relating to a judicial enquiry. |
Statistics are exploited and combinations of data play a part within the framework of crime prevention. |
The information system has to be administered, which subsumes validation of the information input. Then there is correctness, with regard to consistency of data and respect of legal dispositions. |
Distribution of the information and exchanges with distributed systems are important functions where the security of information must be taken into account, including confidentiality, availability, and integrity. |
Finally there is the management of users and access rights to information. |
The INGEPOL Project |
The INGEPOL project consists of several phases, only one of which is the subject of this paper. The phase in question is concerned with the management of the descriptions of persons and objects and their control at an operational level. |
Global Architecture |
The aim of the INGEPOL system as stated is to communicate with distant partner systems and to centralize and spread information to the different units (squads and police stations). This implies an architecture that hinges on the three-tier client/server notion allowing, on the one hand, better allocation of tasks that fall to each of the parties involved and, on the other hand, improvement of maintenance and even the integration of new components. |
Making up the system are: |
Communication between the various tiers is achieved through XML XML (Extensible Markup Language) messages structured in three layers which are dedicated to:
|
An XML parser processes the message by breaking it down into atomic elements that are likely to be interpreted by a specialized system service. |
Problems/Constraints |
A global study of the project enabled identification of a set of characteristics and allowed the adoption of an SGML-oriented development strategy. |
In order to appreciate the SGML approach to the project, technical considerations had to be taken into account in addition to the initial constraints:
|
Under those circumstances it was difficult to move towards target-specific developments and the project required a considerable amount of time to be spent on development, testing, and integration. |
Why SGML? |
Several considerations led to the adoption of an SGML strategy. These included the need to have an standard interface; standardization (as far as possible) of the process for the generation of services for the updating of a database; the actual generation of services for the updating of a database; and the description of the structure of the information systems in a simple and unique way. |
Given the constraints previously listed as a starting point, a first report was produced. This highlighted many points:
|
Added to this is the necessity for obtaining a uniform and unique interface, of integrating validation and navigation rules within the specification that describes the interface, and of standardizing as far as possible the processes for generation of services that update the INGEPOL database. These requirements led to the design of an SGML development strategy that splits the INGEPOL system into five sub-systems: |
After these sub-systems have been presented, the advantages of this strategy within the INGEPOL project will be discussed further. |
The INGEPOL Sub-systems |
Generation of Database Services |
Objective |
The objective here is to generate automatically a set of PRO*C and C++ services that allow the server to manipulate the database entities by limiting the knowledge of the structure of the database to the methods and the classes generated. The result of this generation is the creation of all the data groups that occur in the messages. |
Principle |
Modelling tools allow the generation of an SQL database creation file from a physical model. With this file, and other specific files that describe the screens to be used, it is possible to generate a set of services that allow interaction with the database. |
The principle is as follows and requires two phases. Firstly, a DTD Note: that allows the validation of the structure of the SQL file and the LKD Note: that integrates an extended application language, generates an instance for each identified table or screen, and describes, in SGML, the object processed. The grammar associated with the instance describes the data group to be taken into account, and indicates whether this group is optional, mandatory, or whether it occurs at all. It also describes for each of the groups the fields that are associated with it, their type Note: and data format Note: as well as a formal description. In short, each table becomes a data group whose name is the name of the table, and each item of the group is one of the columns of the table. The conversion of the different types of data is carried out at that level so as to allow a programming language-oriented interpretation. |
Secondly, from each instance previously generated, and based upon skeleton files that describe each of the actions to be taken on the database, a specifically developed parser generates a set of methods (PRO*C, C++) allowing actions such as SELECT, INSERT, UPDATE, and DELETE as well as the C++ classes (*.h and *.cpp) associated with the objects processed. |
The generation of data structures and of associated primitives relieves the developer of the tedious task of writing database access routines. |
Specification of the Data/Message Groups |
Objective |
From the data groups used to build the messages that are exchanged between the client terminals and the servers, the objective is to generate Note: automatically C++ and Python Note: structures that can be used directly. |
Definition |
A message specification is an instance that contains the complete description of all the data groups that can be processed in the messages exchanged between the client and the server. The specification primarily consists of completing the message instances generated previously, Note: by adapting the field descriptions to the client terminal, and by integrating portions of validation codes. |
Initial work consisted of defining message instances that reflect the different structures of the databases concerned. This definition allowed the generation of a set of services dedicated to actions such as inserting, selecting, deleting, and updating the databases while respecting the validation rules inserted in the instance. Those same instances are used to define screen layouts by allowing database fields to be mapped to the screen layout. |
There are different categories of messages:
|
An example of a message containing a complete object and its description could be: |
All the messages carried across between a client terminal and the server are structured in XML. The message therefore consists of a chain of previously defined groups, whose elements are the name of the group and whose attributes are the names of the fields of the group. A group of messages can obviously contain other groups. The message is generated either at the client level when sending a request, or at the server level when sending a reply. |
The messages completely define the client/server communication protocol. |
Principle |
A DTD allows validation of the structure of the message instance. The LKD that integrates an extended application language generates two things for each data group:
|
The introduction of a VALID tag at group level allows the integration of Python code that is in charge of the validation rules. These rules check the presence of data and the consistency not only of data in a group but also of data from one group in relation to another. It is possible, for instance, to check whether the fraud group was input by the user when he indicated a national fraud number at object group level. These controls occur on the client terminal when a message is generated. Other controls are described in the dialogue instance; more specifically they check whether the actions set in motion by the user are justified. |
Server |
Objective |
It is the server's role to handle incoming messages, to process them appropriately by addressing the necessary service(s), and to send back a message containing the answer awaited by the sending client terminal. |
Implementation |
Implementation of the server is based on a transactional monitor, Note: organized in servers. Each server is composed of a set of services. In the INGEPOL project there are several servers that are dedicated to precise functions, for example a server that manages descriptions and objects, and a server that manages the nomenclatures used. |
Because the INGEPOL server can communicate with other distant information systems, it is possible to integrate dedicated servers that consist of specific services in charge of establishing the interface Note: between the INGEPOL system and the partner system. Adding another information system then consists of creating a corresponding server. |
Principle |
In short, the server must provide the following functionality:
|
At the server level, the XML message is regarded as a chain of characters that a specialized parser splits into a data group, thus allowing the supply of the C++ structures derived from the classes previously generated. A set of methods, generated or developed, allows the appropriate server(s) to be activated, depending on the nature of the message and the data groups present. |
Specification of the Dialogue |
Objective |
The objective of the dialogue specification is the generation of a set of files that represent the user interface and that can be interpreted by the client terminal of the target system (Windows NT stations or VT100 screens), where this is dependent on the different targets identified. |
Definition |
The description in this paper is limited to the generation principle for the Windows terminals, and a brief comparison is made with what can be generated on a VT100 workstation. It is obvious that the specification of dialogues Note: implemented for the project is unique whatever the target systems. Nonetheless, all the modules required for generating the user interface are specific according to the desired target. |
A dialogue instance allows the management of screen flows, dynamic management of drop-down menus, the setting of event-driven actions, and inter-area integrity controls. |
Such an instance is characterized by a grammar that allows for a set of dialogues Note: composed of one or more dialogue boxes.
|
All these functions are possible by integrating Python code sequences into the dedicated tags. |
As far as the buttons, drop-down menus, or specific tags are concerned, the associated Python code is simple and allows manipulation of data groups, Note: navigation between the dialogue boxes, primary controls Note: that could not be specified at message level, sending and receiving messages by means of elementary macro-instructions. Note: The designer of the interface merely describes the management of screen flows and the events to be taken into account, without having to worry about the technical aspect of the client workstation modules. |
This approach is similar to the definition of powerful configuration and encoding languages that are directly accessible to the experienced user rather than to an experienced programmer. Note:
|
Principle |
From message instances and dialogue instances generation-parsers allow, depending on the target aimed at (PC, VT100, Motorola), the implementation of standardized and stablized structures in C/C++, Python, and HTML, that are likely to be interpreted by a unique engine that offers the same look-and-feel regardless of the target system. |
A DTD allows validation of the structure of the dialogue instance. The LKD that integrates an extended application language generates an HTML template for each listed dialogue containing Javascript code and Java applets, as well as references to Python variables that will be substituted upon execution of the application that displays an entire HTML page. In addition, a Python file of variables is generated that allows display on a screen of the events to be driven as well as the associated code. Upon execution, depending on the screen that is displayed and the event (button or drop-down menu), the client workstation will drive the corresponding portion of the code and will execute the action required. |
VT100 Generation |
For workstations in character mode, the modules generating the user interface process the same dialogue instance, but adapt certain classical functions for a Windows workstation. Then the buttons or drop-down menus become function keys and the combo-boxes Note: become screens that contain the list of all possible values. Scrolling of a screen page is represented by a second screen, etc. |
The code inserted into the dialogue instance is executed as it is with the help of a Python library. |
For the VT100 or Windows NT stations, the problem therefore is to have a generic module that interprets the dialogue screen without worrying about the application itself or any future applications of the FO. |
Client Workstation |
Objective |
The role of the client workstation is to make a stable, generic tool, that is capable of offering, on the basis of files generated from a formal specification of dialogues, Note: a look-and-feel that is similar to that of a specifically developed client workstation. |
Definition |
For this paper only client workstations that were developed for the Windows NT stations are considered. |
The client workstation Note: is a system based on the Internet Explorer version 4 browser that allows display of HTML pages built from previously generated templates. |
The client workstation uses a set of specific modules that are dedicated to the following functions:
|
Principle |
Upon execution, the client workstation displays an initial screen that is listed in the initialization module. From this screen, the management of dialogue flows, controls and events to be managed, in short the behaviour of the application, is described in the files resulting from processing the dialogue instance. |
The structures generated in Python Note: enable building, splitting the incoming or outgoing XML message, and execution of the mapping of the message group data on the HTML page. |
Advantages of the SGML Solution |
There are two principal advantages of the SGML solution for INGEPOL. |
Technical Environment |
At the server level, the use of SGML for validating message instances, generating a set of data groups that are characteristic of the database and a set of classes and methods Note: for uniformity, has made standardization of the project easier. Moreover it has reduced the risk of errors because the components generated were stable and has relieved the developer of much of his development work and from carrying out tests. |
The generic modules that form the client workstation have allowed the interpretation of a dialogue instance that respects the grammars used. |
The User Interface |
The content-processing encapsulation principle which is possible with SGML has allowed, along with the object-oriented languages (C++, Python), a better correspondence between the needs of the end-user and the constraints of the producer, in particular through prototyping. |
Within the context of INGEPOL, the prototype, based on the principles mentioned, has shown the strengths and weaknesses of the system as originally conceived. Indeed, as soon as the technical environment that allows the generation of components is stable, in addition to the further development/evolution of the server, the project essentially consists of the description of the user interface in more simple terms. Prototyping is the next process where the system is described in relation to a pilot object, validations occurring at regular intervals by processing concrete cases. Major modifications taking place at user-interface level mean that the impact of a modification requested by the client is limited to modifying dialogue instances and generating templates. Once the pilot system has been validated, it is easy to generalize on all the objects and to obtain an end-product. A considerable amount of time can be saved with complex client/server applications, and on multi-platforms that use a considerable number of screens and messages. |
By facilitating a dialogue between the client and the supplier, the SGML strategy adopted contributes towards delivering, at the end of the implementation, a product which conforms to the expectations and the needs. |
Conclusions |
Through allowing a unique definition of the user interface in spite of the different platforms targetted, by authorizing the automatic generation of services dedicated to the databases, achieved by using intrinsic programming possibilities associated with specific SGML parsers, SGML has allowed the simplification and improvement of the development process as far as costs and deadlines are concerned. Above all, SGML permitted command of the complexity which is inherent in any project that calls for different workstations, distant databases that are conceptually modelled according to their needs, and heterogeneous networks, in short everything which characterizes large present-day projects. |
SGML plays an important part in the world of documents and it is possible, indeed effective, to use it in a project such as INGEPOL. It has been shown that the flexibility of SGML associated with object-oriented languages allows the description of the behaviour of an application without having to worry about the client platform, and to standardize the encoding process to a greater extent by allowing the abstraction of services generated by the concept. |
| extended Structured Query Language (xSQL) | Table of contents | Indexes | XML Message Switching | |||