com.basecmp.core.usecase
Class UsecaseMgr

java.lang.Object
  extended bycom.basecmp.core.usecase.UsecaseMgr

public class UsecaseMgr
extends java.lang.Object

Zentrale, rein statische Service-Klasse, die über die Haupt-Methode executeStep(UsecaseContext) einen Step eines Usecase (definiert über das Kontext-Objekt) ausführt.

Alle anderen Methoden sind intern oder Verwaltungsmethoden.

UsecaseMgr ruft vor der ersten Benutzung loadStepList() und loadUsecaseList() auf. Darüber werden alle im System definierten Usecases und Steps registriert, instanziert und gecacht! Ein Flush des Cache kann durch Aufruf von loadStepList() und/oder loadUsecaseList() erzielt werden.

Created on 28.10.2003

Author:
Wolfgang Schröder

Method Summary
static boolean executeStep(UsecaseContext uc)
          Führt für den angeforderten Usecase den nächsten Step aus.
static void executeUsecase(UsecaseContext uc, java.lang.String usecaseName, java.lang.String startNode)
           
static UsecaseMetaData getUsecaseMetaData(java.lang.String usecaseName)
           
protected static UsecaseStep getUsecaseStep(com.basecmp.core.usecase.xml.Step step)
          Package-interne Factory-Methode zum instanzieren eines UsecaseStep des angegebenen Alias-Stepnamen.
static void loadStepListFromXML()
          Liest die UsecaseSteps aus der XML-Configuration neu und registriert alle darin enthaltenen UsecaseStep-Klassen in einer internen Map unter dem in der jeweiligen Property-Datei angegebenen Alias-Namen.
static void loadUsecaseListFromConfigXML()
          Liest die Usecases aus der XML-Configuration neu und initialisiert die Usecases unter Zuhilfenahme von UsecaseMetaData.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

executeStep

public static boolean executeStep(UsecaseContext uc)
Führt für den angeforderten Usecase den nächsten Step aus. Wenn der Step ausgeführt wurde, wird true zurückgegeben, unabhängig davon, ob die Ausführung des Steps erfolgreich war oder nicht. Wird false zurückgegeben, ist die Ausführung des Usecase am Ende angelangt. Im Fall von Sub-Usecases erfolgt ein rekursiver Aufruf! Die Benutzung dieser Funktion erfolgt normalerweise innerhalb einer while-Schleife nach dem Muster eines Iterators.

Parameters:
uc -
Returns:
Usecase-Ausführung aktiv [true|false]
Throws:
NullpointerException - Wenn der Step eines Usecase mit null initialisiert wurde.
UsecaseStepExecutionException - Wenn vor dem Verlassen des Step der UsecaseContext nicht ordnungsgemäß upgedatet wurde. Wenn der Usecase nicht ordnungsgemäß registriert wurde.

executeUsecase

public static void executeUsecase(UsecaseContext uc,
                                  java.lang.String usecaseName,
                                  java.lang.String startNode)
                           throws UsecaseTimeoutExceededException
Throws:
UsecaseTimeoutExceededException

getUsecaseMetaData

public static UsecaseMetaData getUsecaseMetaData(java.lang.String usecaseName)

getUsecaseStep

protected static UsecaseStep getUsecaseStep(com.basecmp.core.usecase.xml.Step step)
                                     throws java.lang.InstantiationException,
                                            java.lang.IllegalAccessException,
                                            java.lang.ClassNotFoundException
Package-interne Factory-Methode zum instanzieren eines UsecaseStep des angegebenen Alias-Stepnamen.

Initialisiert den Step mit der angegebenen Id und liefert die fertig initaliserte UsecaseStep-Instanz zurück.

Liefert null, wenn kein Step unter dem Alias-Namen registriert ist. Wird von der Implementierungs-Klasse UsecaseMetaDataImpl benutzt.

Throws:
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.ClassNotFoundException

loadStepListFromXML

public static void loadStepListFromXML()
Liest die UsecaseSteps aus der XML-Configuration neu und registriert alle darin enthaltenen UsecaseStep-Klassen in einer internen Map unter dem in der jeweiligen Property-Datei angegebenen Alias-Namen.

Doppelt vorkommende Alias-Namen werden nicht als solche erkannt. Somit werden die damit assoziierten UsecaseKlassen durch die jeweils aktuelle (Re-)Definition ersetzt. Die Step-Property-Dateien werden in der Reihenfolge geladen und bearbeitet, wie sie in "steps.packages" angegeben wurden. Da die in der Resource-Datei enthaltenen Keys werden über getKeys() abgearbeitet werden, bestimmt die Implementierung von ResourceBundle die Reihenfolge der darin enthaltenen Keys und kann nicht garantiert werden. Daher sollten entwickler sich an folgende Regeln halten:

  1. Keine doppelten Step-Alias-Namen innerhalb von Step-Resource-Dateien
  2. Durch doppelt Step-Alias-Namen in unterschiedlichen Step-Resource-Dateien können gezielte Austauschungen von Step-Klassen provoziert werden.
  3. Wenn 2. angewendet wird, sollte dies in den Resourcedaten mittel Kommentaren dokumentiert werden. Zusätzlich ist eine Dokumentation außerhalb der Resource-Daten angeraten.
loadStepList() wird vom statischen Konstruktor aufgerufen!


loadUsecaseListFromConfigXML

public static void loadUsecaseListFromConfigXML()
Liest die Usecases aus der XML-Configuration neu und initialisiert die Usecases unter Zuhilfenahme von UsecaseMetaData.

Wird vom statischen Konstruktor aufgerufen!



Copyright © 2004 by basecmp® - Professional Web Solutions