Between 2003 and 2004, I undertook a big Perl project for the Parliamentary Assembly of the Council of Europe, in Strasbourg. This consisted of two parts: (a) the Annuaire system and (b) the Table Office system.
Together, the two systems comprised over 40,000 lines of Perl code together with over 20,000 lines of HTML templates and involved the conversion, cleansing and migration of more than 50 years of legacy data, on a variety of storage media in a variety of formats.
The system featured automatic dynamic generation of Word XHTML documents (inlcuding the 500+ pages Annuaire book), Mail Merge files and XML and CSV content for interface with legacy and other systems. To assist with ongoing maintenance of the system, it included automatic documentation of the Perl code, system variables, subroutines, template data structures and databases.
In addition to the legacy data and system issues, another complication was the need to handle all forms of accented Roman characters in use in Europe, not just for a single country, region or Windows Code Page. (The system was implemented for clients running Windows 2000, which did not fully support Unicode.)
The system runs on their Intranet and so is not visible from the Web.
The Council of Europe Annuaire system is a Web-based database system for the maintenance of information about Members of the Parliamentary Assembly, past and present, and current information about Committee and Political Group memberships.
Functions provided by the system include:
- Maintenance of information on current Members, their political groups and Committee memberships.
- reparation of pre-Session publications, e.g. Representatives and Substitutes booklet, National Delegations booklet.
- Session support, e.g. to handle acceptance of credentials and prepare triage cards for selection of tellers.
- Generation of electronic information to be exported to other systems, e.g. Web server, Outlook, Annunciator system, etc.
- Publication of the Annuaire book.
- Maintenance of information on past members.
- Special queries of the current Member database, e.g. ratio of men and women, oldest Member, vacant seats (for calculation of the quorum), etc.
Publications, whether paper or electronic, are controlled via a template system that allows document content and layout to be separated from the program logic.
Extensive system administration functions are provided, to edit the XML structure tiles that describe Committees, Political Groups and national Delegations, to edit the templates that control the publication and to generate Web pages for upload to the Assembly web server.
Significant elements of business logic are incorporated into the system, reflecting the Rules of Procedure as they apply to a number of areas, such as Sub-committee memberships and credentials acceptance.
The Table Office system deals with handling of Questions, Amendments and Speaker Inscriptions for the plenary sessions of the Parliamentary Assembly. It also deals with the production of a number of documents issued in suppiort of the session.