Smernice oddelenia QNX

com.microstepmis.schd
Class Scheduler

java.lang.Object
  extended by com.microstepmis.schd.Scheduler

public class Scheduler
extends java.lang.Object

Scheduler projektov MicroStep-MIS.

Singleton, ktoreho instancia je inicializovana staticky. Pokial sa nezavolaju metody setConfig() a startSchdTask(), scheduler nema vyznam. Po zavolani metod ale scheduler zacne inicializovat system podla zadanej konfiguracie a kontroluje beh systemu ako bolo zvykom pod QNX. Na pasivne sledovanie procesov sluzi trieda ProcessManager (s ktorou scheduler dost spolupracuje).

(c) 2005 MicroStep-MIS www.microstep-mis.com

Version:
$Id: Scheduler.java,v 1.5 2005/02/23 16:20:09 matog Exp $
Author:
$Author: matog $

Field Summary
static java.lang.String CFG_FILE_NAME
          Defaultne meno suboru s konfiguraciou.
static java.lang.String VAR_LOG_FILE
           
 
Constructor Summary
protected Scheduler()
          Konstruktor, volany je staticky.
 
Method Summary
static Scheduler getInstance()
          Metoda vracajuca singleton.
static void getVars(java.lang.String fileName)
          Vypise hodnoty internych premennych do suboru.
static void main(java.lang.String[] args)
          Metoda nacita konfiguraciu, nastartuje periodicky task schedulera a tym nabeh systemu.
protected  java.lang.String preprocessArgs(java.lang.String arg)
          args, className a processName moze obsahovat v sebe odkaz na premennu v tvare %(name).
protected  java.lang.String preprocessJEPFormula(java.lang.String formula)
          XML nepovoluje v tele elementov znaky '<', '>', '&', ''', '"'.
static long runProcess(java.lang.String processName)
          Nastartuje proces s menom processName.
protected  int setConfig(SchdConfig config)
          Nastavi scheduleru konfiguraciu, ak este nebola nastavena.
static void startSchdTask()
          Startuje periodicky task schedulera (a tym aj nabeh systemu podla konfiguracie zadanej metodou setConfig().
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CFG_FILE_NAME

public static final java.lang.String CFG_FILE_NAME
Defaultne meno suboru s konfiguraciou.

See Also:
Constant Field Values

VAR_LOG_FILE

public static final java.lang.String VAR_LOG_FILE
See Also:
Constant Field Values
Constructor Detail

Scheduler

protected Scheduler()
Konstruktor, volany je staticky.

Method Detail

getInstance

public static Scheduler getInstance()
Metoda vracajuca singleton. Nakolko je snaha, aby public API bolo dostupne cez staticke metody, zatial sa nepredpoklada jej pouzivanie.


startSchdTask

public static void startSchdTask()
Startuje periodicky task schedulera (a tym aj nabeh systemu podla konfiguracie zadanej metodou setConfig().


main

public static void main(java.lang.String[] args)
Metoda nacita konfiguraciu, nastartuje periodicky task schedulera a tym nabeh systemu.

Parameters:
args - argumenty. args[ 0 ] je interpretovane ako menu suboru s XML konfiguraciou. Ak neudane, berie sa default CFG_FILE_NAME.

setConfig

protected int setConfig(SchdConfig config)
Nastavi scheduleru konfiguraciu, ak este nebola nastavena. Tymto sa nastartuje inicializacia systemu za predpokladu, ze bezi schdTask - vid @see #startSchdTask startSchdTask . Metoda je synchronizovana na objekt ProcessManager.singleton (mala by zabezpecit synchronizaciu so synchronizovanymi metodami ProcessManagera).

Parameters:
config - - objekt s konfiguraciou schedulera
Returns:
0, ak sa konfiguracia nastavila, -1, ak uz bola predtym nastavena (a ponecha sa povodna)

preprocessJEPFormula

protected java.lang.String preprocessJEPFormula(java.lang.String formula)
XML nepovoluje v tele elementov znaky '<', '>', '&', ''', '"'. Preto je mozne zapisovat niektore JEP operatory alternativnou formou (samozrejme funguje aj cisto XML zapis " a < 3 & b == "string"" ; Tyka sa to v JEP vyrazoch tychto operatorov: "<" : < - v JEP/XML budeme zapisovat ako "lt" "<=" : <= - v JEP/XML budeme zapisovat ako "le" ">=" : >= - v JEP/XML budeme zapisovat ako "ge" ">" : > -v JEP/XML budeme zapisovat ako "gt" "&": & - v JEP/XML budeme zapisovat ako "and" (or ostane JEPOvsky || ) """: " - v JEP/XML budeme zapisovat ako "~". Znak "\" sa puziva v regularnych vyrazoch, ktore potencialne mozeme chciet matchovat, preto by som ho nedaval ako nahradu " Pricom preprocessing: 0. vyparsuj string z XML do objektu 1. vsetky znaky ~ nahrad znakom " (proste znaky ~ budu zakazane v JEP vyrazoch). 2. vsetky tokeny lt nahrad znakom < 3. vsetky tokeny le nahrad znakom <= detto pre and, gt, ge pricom na oddelovace tokenov sa pouziju " \t\n\r\f()+-!~" (vsetky rozumne biele znaky, zatvorky a unarne operatory, binarne nema zmysel davat, lebo vyraz by bol potom nezmyselny) Musi sa tokenizovat, aby sa nenahradilo le niekde v nazve premennej, and je priamo v mene funkcii rand().


preprocessArgs

protected java.lang.String preprocessArgs(java.lang.String arg)
args, className a processName moze obsahovat v sebe odkaz na premennu v tvare %(name). Ak sa znak % nema interpretovat, zapisuje sa ako %%.

Parameters:
arg - argument, ktory sa ma spracovat
Returns:
vysledny tvar Pozor, zatial nie su osetrovane chyby, spravanie je garbage in - garbage out (nezname premenne sa nahradia prazdnym retazcom a pod.).

getVars

public static void getVars(java.lang.String fileName)
                    throws java.io.IOException
Vypise hodnoty internych premennych do suboru.

Parameters:
fileName - - meno suboru
Throws:
java.io.IOException

runProcess

public static long runProcess(java.lang.String processName)
Nastartuje proces s menom processName. Ak Scheduler nenajde taky proces vo svojej konfiguracii, interpretuje argument ako meno triedy a snazi sa spustit metodu main. Vracia: kladny pid ulohy v pripade uspechu, -1 ak task bol najdeny v konfiguracii ako ProcessManager.SCH_DIED, -2 ak task bol najdeny v konfiguracii ako ProcessManager.SCH_RUN -3 ak task nebol najdeny v konfiguracii a neda sa pustit jeho main


Smernice oddelenia QNX

(c) MicroStep-MIS 2004. Urcene vyhradne pre potreby MicroStep-MIS.