• Keine Ergebnisse gefunden

Schnittstelle zum Storage Agent: storageagent.idl

C. Schnittstellen des Benutzeragenten

C.5 Schnittstelle zum Storage Agent: storageagent.idl

Der Benutzeragent benötigt den Storage Agent, um die Aufgaben, die er von der ConTract Engine erhält, persistent zu speichern. Er legt für jede Aufgabe folgende Informationen ab:

• den Namen des Benutzers,

• eine eindeutige Identifikation der Aufgabe,

• eine Identifikation der ConTract-Instanz, von der diese Aufgabe kam,

• eine Identifikation des Steps, der das Verschicken dieser Aufgabe veranlaßt,

• einen String, der auf den Recovery-Coordinator verweist, der im Falle eines Neustarts des Benutzeragenten benötigt wird,

• einen Markerstring, der den Namen der zu dieser Aufgabe gehörigen Resource enthält,

• einen String, der die Aufgabe beschreibt und dem Benutzer angezeigt wird,

• den Bearbeitungsstatus der Aufgabe,

• den Status der Transaktion, in der diese Aufgabe bearbeitet wird,

• Information, die das Tasklist Interface intern verwendet,

• eine Sequenz von Dateien, die der Benutzer in dieser Aufgabe bearbeiten soll.

interface APRICOTS_StorageAgent {

enum ProcessingStatus { NEW, TOUCHED, DONE };

/* Bearbeitungszustand einer Aufgabe:

NEW: die Bearbeitung wurde noch nicht begonnen

TOUCHED: die Bearbeitung wurde begonnen, aber noch nicht beendet DONE: die Aufgabe ist vollständig bearbeitet */

enum TAStatus {

ABORTED, COMMITTED, ACTIVE, PREPARED, UNKNOWN };

/* Status einer Transaktion

ABORTED: die Transaktion wurde abgebrochen COMMITTED: die Transaktion wurde erfolgreich beendet

ACTIVE: die Transaktion ist weder abgebrochen noch erfolgreich beendet (Initialzustand)

PREPARED: die Transaktion ist bereit, sowohl erfolgreich beendet als auch zurückgesetz zu werden

UNKNOWN: der Status der Transaktion ist unbekannt */

struct SessionId {

long restartCounter;

long sessionCounter;

};

/* Identifikation einer Session */

SessionId beginSession ()

raises ( APRICOTS_Definitions::DBError,

APRICOTS_Definitions::AccessDenied);

/* Begin einer Session mit dem Storage Agent:

SessionId: muß bei folgenden Aufrufen wieder an den Storage Agent mitgegeben werden DBError: ernsthaftes Problem

AccessDenied:der Zugriff kann zur Zeit nicht gestattet werden */

void freeSession(in SessionId session)

raises ( APRICOTS_Definitions::DBError, APRICOTS_Definitions::NotFound );

/* Beenden einer Session. Wenn die Session aktiv ist, werden alle Änderungen rückgängig gemacht.

session: Identifikator der freizugebenden Session DBError: ernsthaftes Problem

NotFound: der Session-Identifikator ist nicht gültig */

void commitSession(in SessionId session) raises ( APRICOTS_Definitions::DBError, APRICOTS_Definitions::NotFound );

/* Persistente Speicherung der bisher während dieser Session gemachten Änderungen:

session: Identifikator der Session DBError: ernsthaftes Problem

NotFound: der Session-Identifikator ist nicht gültig */

void rollbackSession(in SessionId session) raises ( APRICOTS_Definitions::DBError, APRICOTS_Definitions::NotFound );

/* Die bisher während dieser Session gemachten Änderungen werden rückgängig gemacht:

session: Identifikator der Session DBError: ernsthaftes Problem

NotFound: der Session-Identifikator ist nicht gültig */

SessionState getSessionState(in SessionId session) raises ( APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound );

/* Liefert den Status einer Session:

session: Identifikator der Session sessionState: Status der Session DBError: ernsthaftes Problem

NotFound: der Session-Identifikator ist nicht gültig */

void getAllTasks(

in SessionId session,

in APRICOTS_Definitions::NameString agentName, out APRICOTS_Definitions::StringSequence taNames) raises (APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Liefert eine Liste von Aufgaben, die für den angegebenen Benutzer bestimmt sind */

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten

NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

void setTask(

in SessionId session,

in APRICOTS_Definitions::NameString AgentName, in string taName, in APRICOTS_Definitions::ConTractInstanceID ciid,

in APRICOTS_Definitions::StepInstance stepInstance, in string recoveryCoordinatorString, in APRICOTS_Definitions::FileSequence files)

raises (APRICOTS_Definitions::DBError, APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Eine Aufgabe wird neu gespeichert oder auf den aktuellen Stand gebracht.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

ciid eindeutiger Identifikator einer ConTract-Instanz stepInstance eindeutiger Identifikator einer Step-Instanz

control ermöglicht die Teilnahme an der zugehörigen Transaktion request Informationen für den Benutzer

pStatus Bearbeitungsstand der Aufgabe taStatus Status der zugehörigen Transaktion tasklistInfo interne Information des Tasklist Interfaces files vom Benutzer zu bearbeitende Dateien

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

void getTask(

in SessionId session,

in APRICOTS_Definitions::NameString AgentName, in string taName, out APRICOTS_Definitions::ConTractInstanceID ciid,

out APRICOTS_Definitions::StepInstance stepInstance, out string recoveryCoordinatorString, out APRICOTS_Definitions::FileSequence files)

raises (APRICOTS_Definitions::DBError, APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Eine Aufgabe wird vom Storage Agent geholt.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

ciid eindeutiger Identifikator einer ConTract-Instanz stepInstance eindeutiger Identifikator einer Step-Instanz

control ermöglicht die Teilnahme an der zugehörigen Transaktion request Informationen für den Benutzer

pStatus Bearbeitungsstand der Aufgabe taStatus Status der zugehörigen Transaktion tasklistInfo interne Information des Tasklist Interfaces files vom Benutzer zu bearbeitende Dateien

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

void deleteTask(in SessionId session, in APRICOTS_Definitions::NameString AgentName, in string taName) raises (APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Eine Aufgabe wird beim Storage Agent gelöscht.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

void setProcessingStatus(

in SessionId session, in APRICOTS_Definitions::NameString agentName, in string taName, in ProcessingStatus pStatus) raises (APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Der Bearbeitungsstand einer Aufgabe wird auf den neuesten Stand gebracht.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

pStatus Bearbeitungsstand der Aufgabe

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

void setTAStatus(

in SessionId session, in APRICOTS_Definitions::NameString agentName, in string taName, in TAStatus taStatus) raises (APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Der Status der zu einer Aufgabe gehörenden Transaktion wird auf den neuesten Stand gebracht.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

taStatus Status der zugehörigen Transaktion

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

ProcessingStatus getProcessingStatus(

in SessionId session, in APRICOTS_Definitions::NameString agentName, in string taName) raises (APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Der Bearbeitungsstand einer Aufgabe wird ermittelt.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

pStatus Bearbeitungsstand der Aufgabe

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

TAStatus getTAStatus(

in SessionId session, in APRICOTS_Definitions::NameString agentName, in string taName) raises (APRICOTS_Definitions::DBError,

APRICOTS_Definitions::NotFound,

APRICOTS_Definitions::AccessDenied);

/* Der Status der zu einer Aufgabe gehörenden Transaktion wird auf ermittelt.

session Identifikator einer Session mit dem Storage Agent

agentName Identifikator des Benutzers und somit des Benutzeragenten taName eindeutiger Identifikator der Aufgabe

taStatus Status der zugehörigen Transaktion

DBError es tritt ein Problem beim lesen der Aufgaben auf NotFound es gibt keine Aufgaben

AccessDenied der Session-Identifikator oder die Zugriffsrechteer sind ungültig */

};