- All Implemented Interfaces:
- CronTask
public class SwSuiteCronTask
extends SimpleCronTask
A MAXIMO crontask used for extraction of software suite information
based upon the detection of certain software products
Control structures
The structures hold the definitions of software suites and also
detection flags that used (set and reset) during the processing
1) A vector of SW suite definitions.
A SW suite definition consists of
- suite ID (database PK)
- Suite name
- Version that is assigned to the suite upon detection
- A flag that shows whether the suite has been detected for the
currently processed computer system
- A collection (vector) of software variants
A SW suite component definition consists of
- Version filter low
- Version filter high
- Required flag
- Found in this computer system status flag (Software ID valid only if
this flag is true)
- Software ID - the unique ID of the software that matched this
definition
- A reference to the suite that contains this definition
- Note there is no need to include the software name in this object
2) A hash map keyed on software name, and containing vectors of references
to the same instances of SW suite component definition objects
referenced by the vectors in the SW suite definitions
How the software suite identification process works:
- every time all SW suite definitions are loaded in memory
- from this point, the process goes computer system by computer system
all further steps refer to one computer system only
- reset all status flags in the suite definitions and in the component
definitions
- enumerate all software entries
- if a name of an entry is found in the hash map, go in sequence
through all the suite components and look for a matching version
window
- if a match is found, set the found flag and fill in the
software ID
- if a match is not found, and the SW suite ID is not empty,
modify the software record
- build a MBO set of all existing suites
- enumerate all suite definitions
- loop through all its components, set the 'found' flag if all
required components are found, or if there are no required
components and there is at least one non-required component that
has been found
- if the 'found' flag has been set, go through all components of the
record set and set the suite ID
- if the 'found' flag for the suite has not been set, reset the suite
ID for all entries in the software MBO set that have been found for
the suite
- if the suite has been found in the existing suite list, update its
fields where necessary
- if a suite has not been found, insert it in the MBO set
- enumerate the set of existing definitions, for every definition go
through the list of found suites
(NOTE this becomes lengthy for 10+ suite definitions)
- if a suite has not been found, delete that Mbo from its set
- save the suite Mbo set
- save the software Mbo set
There is an alternative way to run a SW suite identification from the GUI
where suite configurations are defined. The identification process is altered
in the following ways for thsi purpose:
- a new entry point
- any exception is thrown back at caller
- no logging - caller will be responsible for that
- references to any other suites are not touched