SOSL Engine could be used effectively to manage the processes operations Time Line. Parent as well as Child processes operations time line could be manipulated and in fact controlled from within each process separately and/or with a separate and possibly a dedicated Watchdog timer process or even multiple Watchdogs with each controlling a segment of the overall management process!
Exercising TimeLine controls is mainly used for either one of the following: management process Initiation, Staging, Synchronization, or Termination of the whole or a subset of the Parent or Child management processes.
The TimeLine based controls depends on either the host servers system time directly or on the time differentials between two consecutive polls or events within the overall management process. See the Time and TimeLine related SOSL Engine command functions under Time Handling commands.
3.1 Process Initiation
Process time based initiation is when a process is to be started only at a certain time of the day where the time value is derived from the host server. The main process module checks the time and performs a MODULE-CALL function accordingly.
The typical logical flow of the Process Initiation is represented as follows:
MODULE <Module_Name> ();
DESCRIPTION <textual description>;
BEGIN
POLL-FREQ <Iterations Count>
{
DEFINE <a variable to store the TimeStamp>;
GETDATE (<TimeStamp Format> );
<Store the value of the GETDATE function in the defined Variable>
IF (<stored TimeStamp == Administrator pre-defined TimeStamp>)
THEN
MODULE-CALL <Module_NewName> (Module_Parameters);
ENDIF;
WAIT (<Time Element>);
};
END
3.2 Process Staging
Process time based staging is when a process is to be started only at a certain time of the day where the time value is derived from the host server and then runs for a pre-specified period of time. The main process module checks the time and performs a MODULE-CALL function accordingly; it either passes the time element to the child module or leaves it up to the child to test the time and terminate itself.
The typical logical flow of the Process Staging is represented as follows:
MODULE <Module_Parent> ();
DESCRIPTION <textual description>;
BEGIN
POLL-FREQ <Iterations Count>
{
DEFINE <a variable to store the TimeStamp>;
GETDATE (<TimeStamp Format> );
<Store the value of the GETDATE function in the defined Variable>
IF <stored TimeStamp == Administrator pre-defined TimeStamp >
THEN
MODULE-CALL <Module_Child> (Module+Time_Parameters);
ENDIF;
WAIT (<Time Element>);
};
END
Another logical flow is as follows:
MODULE <Module_Parent>();
DESCRIPTION <textual description>;
BEGIN
POLL-FREQ <Iterations Count>
{
DEFINE <a variable 1 to store the SystemTime>;
GetSysTime ();
<Store the value of the SystemTime in the defined Variable>
MODULE-CALL <Module_Child> (Module_Parameters: SystemTime1);
};
END
Where;
MODULE <Module_ Child> (SystemTime1 INT);
DESCRIPTION <textual description>;
BEGIN
DEFINE <a variable 2 to store the SystemTime>;
GetSysTime ();
<Store the value of the NEW SystemTime in the defined Variable>
IF <(SystemTime2 SystemTime1) != Administrator pre-defined Time period >
THEN
<SOSL Management Script commands>;
ENDIF;
END
In both scenarios above; the Child management process runs only for the administrator specified period of time, namely the difference value between the SystemTime2 and the systemTime1 variables.
3.3 Process Synchronization
Process synchronization spans multiple parent as well as child processes in terms of continuously re-aligning the Polling and the Processing components of each management process with the other management processes running on the same host server. This persistent and engineered alignment is intended to better allocate and distribute host server resources among ALL participating management processes or among a selected subset of the overall management processes.
This collaborative resource alignment and synchronization helps to strengthen the overall management solution structure. The key to achieving this goal is by realizing the start and stop points along the time line of each of the processs Polling and Processing components and manipulating the start point with each cycle/run of the management processes involved. This is further tightened by continuously measuring and reacting to any large variations in the durations of each of the components per running management script and comparing this to the overall network traffic state.
Inter-Processes TimeLine Synchronizations could be a very complex and tedious task to setup and to execute. The complexity increases as the number of processes increase and could eventually lead to a state of corrosion in creating a functioning and viable Synchronization. Hence; care should be taken when planning this task by identifying only those processes that contain process components persistent and extensive enough to warrant Synchronization with other processs components.
The task of setting up Inter-Processes TimeLine Synchronization involves the following steps:
1) SystemTime Database variable implantations.
2) Polling and Processing components Duration calculations.
The following flow shows the typical flow of such Processes:
MODULE <Module_Name> ();
DESCRIPTION <textual description>;
BEGIN
POLL-FREQ <Iterations Count>
{
SystemTime1 = GetSysTime ();
PollingStartTime = GetObjectTime (SystemTime1);
-Polling Component-
POLL (<MIB_Objects>);
SystemTime2 = GetSysTime ();
PollingEndTime = GetObjectTime (SystemTime2);
ProcessingStartTime = PollingEndTime;
PollingDuration = SystemTime2 - SystemTime1;
-Processing Component-
<SOSL Management Script commands>;
SystemTime3 = GetSysTime ();
ProcessingEndTime = GetObjectTime (SystemTime3);
ProcessingDuration = SystemTime3 SystemTime2;
};
END
Where SystemTime1, SystemTime2, and SystemTime3 should be defined as Database variables and where the same SystemTime Database variable implantations could be done for all participating processes in the processes TimeLine Synchronization.
MODULE <TimeLine_Synchronization> ();
DESCRIPTION <textual description>;
BEGIN
MODULE-CALL <Module_Child> (Module_Parameters: SystemTime1);
POLL-FREQ <Iterations Count>
{
GETDATE (<TimeStamp Format> );
SystemTime;
IF <(SystemTime2 SystemTime1) != Administrator pre-defined Time period >
THEN
<SOSL Management Script commands>;
ENDIF;
};
END
MODULE <Module_Name> ();
DESCRIPTION <textual description>;
BEGIN
POLL-FREQ <Iterations Count>
{
IF <(SystemTime2 SystemTime1) != Administrator pre-defined Time period >
THEN
-Polling Component-
POLL (<MIB_Objects>);
ENDIF;
-Polling Component-
POLL (<MIB_Objects>);
SystemTime2 = GetSysTime ();
PollingEndTime = GetObjectTime (SystemTime2);
ProcessingStartTime = PollingEndTime;
PollingDuration = SystemTime2 - SystemTime1;
-Processing Component-
<SOSL Management Script commands>;
SystemTime3 = GetSysTime ();
ProcessingEndTime = GetObjectTime (SystemTime3);
ProcessingDuration = SystemTime3 SystemTime2;
};
END
[White
Papers], [Open a Support Ticket],
[Report Defects],
[Enhancement Requests], [Beta
Solution Program]