Scheduler FE Grid
(Last Updated - 23rd Feb. 2015)
Table of Contents
This document aims to explain how the Scheduler FE Grid system is built. It is aimed at developers with an understanding of Java, Oracle and system design.
To succesfully compile the source code the following libraries are required:-
When Scheduler FE Grid starts then there are a number of processes that initiate the system. These are divided into initiating the system as a whole and the processes that are initiated for each database and which are run on connection to each database.
When the system boots up there are three classes which are created. For each of these classes only one instance is ever created and that is at startup. The three classes are as follows:-
The first, SchedScreenArea, contains the information on the display screens. The second, SchedInpScreenArea contains the information on the input screen areas and the third SchedGlobalData contains data that is global to the entire system, this includes connection data and colour codes but also other items that will be detailed in due course.
Following on from this a number of calls are made to the SchedFile class. This class is made up entirely of static methods and the function of this class is to read and write from the flat files. All the reading and writing to flat files is carried out from within this class. The first method to be called is ReadParams which opens the flat file SchedFileData.csv and reads the file one row at a time. A detailed description of this file is to be found in the document Schedule FE - Technical Documentation on the Parameter File - SchedFileData.csv.
In brief the the file can be brokern down into nine types of rows, defined by the first two characters of the row. These are as follows:-
With this file it is solely a read only file. This is not the case with the next flat file that is read. The file whose default name is SchedFileInit.csv stores the variable information. This is as follows:-
This information is read from the file when the system is started and is written to the file when the user exits the system. It therefore has to be in a directory that is has read and write permissions.
The third and last flat file that is read on start-up is the password file whose default name is SchedFilePass.csv. This contains any passwords that are defined as a password to be saved. This is an option in the connection screen.
Having read the information stored in the flat files the system then builds the screens, both display and input and builds the menu and the toolbar. It then builds the basic Scheduler tree that contains just the connections. This completes the system setup.
The system has been designed with a three tier data model as ilustrated in the diagram on the left. At the bottom is the database which contains not only the Scheduler and Resource Manager data but obviously all the other data. On connecting to the database the system reads all the Scheduler data and stores this in memory.
This data is used to create the Scheduler tree and when a specific object is selected the objects data is copied into the specific screen object. When an object is created or an existing object is updated the path that is followed is always the same. First the database is updated and if this is succesful then the memory is updated and finally the screen data is updated.
When a problem occurs in updating the database the process stops at that point whereupon an error message is displayed and both the memory and screen remain as is.
One caveat is that the Resource Manager and the Scheduler are treated as distinct. The Resource Manager data is loaded when the user switches to the Resource Manager and not when the connection to the database is made. When the user switches back to the Scheduler screen the Scheduler data is reloaded.
|Classes - Core Class|
|Scheduler||The entrance class that is the core class of the system.|
|Classes - Memory Classes|
|SchedDataArea||SchedDataArea is one if not the largest class containing sub-classes to replicate all the scheduler and resource manager objects that are read from the database. There is one instance of the class SchedDataArea for each database that is open.Each time a database is opened a new instance is created.|
|SchedDataNode||There is an instance of SchedDataNode for each node on either the Scheduler tree or the Resource Manager tree.|
|SchedGlobalData||The class SchedGlobalData contains the data that is global. This includes the colour codes, the pull down lists, the connections but also the data displayed in the Log screens which can be collected from multiple databases.|
|SchedInpScreenArea||The screens and objects that make up the input screens can be found in this class. The data is read from the flat file SchedDataArea.csv and then the objects are created from this base data.|
|SchedScreenArea||The screens and objects that make up the display screens can be found in this class. The data is read from the flat file SchedDataArea.csv and then the objects are created from this base data.|
|Classes - Screen Classes|
|SchedChainStepInputScreen||The class that displays the chain step screen when a new chain step is input.|
|SchedCopyScreen||Class for displaying the copy screen.|
|SchedDataEditScreen||The class that displays and allows to be updated any column that is updated and the button containing the spectacles is entered.|
|SchedDataInputScreen||This class is similiar to the SchedDataEditScreen except this class is used when a new row is entered.|
|SchedDataScreen||This class is similiar to the SchedDataEditScreen and the SchedDataInput Screen except this class displays data only. The screen is displayed when the button showing the spectacles is entered.|
|SchedDateTime||Sub-class of JXDatePicker from the SwingX library. Displays the calendar plus the date and time.|
|SchedEventEditScreen||This class is displayed when the field "Raise Events" on the Jobs is entered for update. It displays the possible events and those already selected and allows the user to update the selection.|
|SchedEventScreen||This class is displayed when the button at the side of the field "Raise Events" on the Job display screen is entered. It displays the possible events together with those that have been selected.|
|SchedHelpScreen||Class that displays the Help screen.|
|SchedInputScreen||This is the class that handles most of the data input. The objects where the input screen has only one tab are covered by this class.|
|SchedJobDetailScreen||This class displays the detail information screen from the Log View, both detailed and standard for both the Job and Window rows. It also displays the detail information from the Jobs running screen, the sessions screen and the consumer group screen.|
|SchedJobInputScreen||Class that displays the Job input screen when a new Job is entered.|
|SchedLogon||Class that displays the logon screen and then creates a new SchedDataArea class and utilises it to perform the connection with the database.|
|SchedLogon2||A similiar class to the SchedLogon class but without the screen display. Is used for the automatic logon.|
|SchedOptionScreen||Class that displays the option screen.|
|SchedProgramArgInputScreen||Class that displays the new Program Argument input screen.|
|SchedScheduleInputScreen||This class displays the screen when a new Schedule is being entered.|
|SchedWindowInputScreen||This class displays the screen when a new Window is being entered.|
|SchedUpdate||This class displays the screen when an object is being updated.|
|SchedWindowInputScreen||The class that displays the screen when a new Window is entered.|
|Classes - Thread Classes|
|threadGetConsumerGroups||This class is run when the "Consumer Groups" screen is displayed. It updates the displayed data utilising a separate thread.|
|threadGetResourceData||This class is run when the Resource Manager Tree is displayed. It runs under a separate thread and updates the Resource Manager Tree so that if the current Resource Plan changes this will be reflected in the tree.|
|threadGetRunningJobs||This is the class that is run when the user displays the "Running Jobs" view. This class updates the data under a separate thread.|
|threadGetSessions||The class that is run when the "Sessions View" is displayed. It enables the current sessions data to be updated. It is run on a separate thread.|
|threadRunJob||This class runs a Job under a separate thread. It is the class that is called when the user requests a Job to be run.|
|Classes - Table Classes|
|SchedCdbPlanDirectiveData||A sub-class of AbstractTableModel that is utilised in the Resource Manager Tree when the Plan Directive tab of the Resource Plan node is displayed. This table is specifically for a CDB database where the Resource Plan is sharing resources amoung Pluggable databases.|
|SchedColumnData||A class that is used by the other table classes to define the columns.|
|SchedConsumerGroupMappingData||A sub-class of AbstractTableModel that is utilised on the Consumer Group display, tab "Group Mapping".|
|SchedConsumerGroupPrivData||A sub-class of AbstractTableModel that is utilised on the Consumer Group display, tab "Privileges".|
|SchedConsumerGroupStatsData||A sub-class of AbstractTableModel that is utilised when the "Consumer Groups View" is displayed.|
|SchedJobLogDetData||A sub-class of AbstractTableModel that is utilised in the view "Log View - Detail". This class is the class used in the top half of the page, the Detail Job Log.|
|SchedJobLogStdData||A sub-class of AbstractTableModel that is utilised in the view "Log View - Standard". This class is the class used in the top half of the page, the Standard Job Log.|
|SchedMappingPriorityData||A sub-class of AbstractTableModel that is utilised in the Resource Manager Tree when the Mapping Priority node is displayed.|
|SchedPlanDirectiveData||A sub-class of AbstractTableModel that is utilised in the Resource Manager Tree when the Plan Directive tab of the Resource Plan node is displayed.|
|SchedRunChainData||A sub-class of AbstractTableModel that is utilised in the "Run View" specifically in the "Run View - Chains Running" bottom section.|
|SchedRunData||A sub-class of AbstractTableModel that is utilised in the "Run View" specifically in the "Jobs Running" bottom section.|
|SchedSessionData||A sub-class of AbstractTableModel that is utilised in the "Sessions View" screen display.|
|SchedWindowLogDetData||A sub-class of AbstractTableModel that is utilised in the view "Log View - Detail". This class is the class used in the bottom half of the page, the Detail Window Log.|
|SchedWindowLogStdData||A sub-class of AbstractTableModel that is utilised in the view "Log View - Standard". This class is the class used in the bottom half of the page, the Standard Window Log.|
|Classes - Other Classes|
|SchedCellRenderer||A class that is used to render the tree nodes, specifically the icons displayed on the tree nodes.|
|SchedConnect||A class that is used to display the connect information. It is used when the connect data is updated or when a new connection is entered.|
|SchedConsts||Class that only contains constants.|
|SchedControl1||This class is an implementation of an action listener and is assigned to buttons at the side of data. It will instantiate an instance of either SchedDataScreen or SchedEventScreen and pass control to that class.|
|SchedEncryp||The class that encrypts and decrypts the passwords.|
|SchedFile||This class handles all reading and writing to flat files.|
|SchedResourceTree||The class that builds the tree on the Resource Manager screen.|
|SchedTree||The class that builds the tree on the Scheduler screen.|
|SchedSingleTable||A sub-class of JXTable that is used where only one table is displayed on the screen.|
|SchedTable||A sub-class of JXTable that is used where two tables are displayed on the same screen.|