|
||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Class Summary | |
AllowEvent | An event for allowing requests. |
AutomaticRequest | A class implementing requests which are automatically accepted and processed immediately after their entry. |
AutomaticRequestTest | Unit test cases for the AutomaticRequest request type. |
CheckedRequest | A class implementing requests which are explicitly allowed or denied by administrators. |
CheckedRequestTest | Unit test cases for the CheckedRequest request type. |
ConfirmedRequest | A class implementing requests which have to be confirmed before they are submitted to the administrators. |
ConfirmedRequestTest | Unit test cases for the CheckedRequest request type. |
ConfirmEvent | An event for confirming email addresses. |
DeleteEvent | An event for deleting requests. |
DenyEvent | An event for denying requests. |
Event | An abstract class representing outside events that could happen to a request. |
ExpireCompleteRequestsAction | An action for deleting complete requests from the database. |
IncompleteRequestTimeoutAction | An action for timing out incomplete requests that are not touched for a predefined amount of time. |
PurgeDeletedRequestsAction | An action for purging deleted requests from the database. |
Request | An abstract class representing a request submitted by a user. |
Request.ChronicleEntry | A simple class describing entries in the chronicle. |
RequestScheduler | Scheduler of request background processes. |
RequestScheduler.ActionTask | |
TimeoutEvent | An event for timeouts. |
Exception Summary | |
UnexpectedEvent | An exception for signalling unexpected events. |
Provides request handling in the VOMS service.
Requests are entities requesting a certain action in the database. They are submitted by clients who do not have the necessary rights to do the operation themselves. Typically, each new request needs the approval of a VO administrator before the operation is executed. Clients submitting requests may or may not be members of the VO: indeed, requests for VO membership are expected to be the most important request type.
The action that the submitter requests to be performed
is represented by an instance of the Action
interface. Each request
has such an instance. If the request is accepted, it executes
the action by calling its Action.perform()
method. An action
normally has its own set of parameters that are stored as
attributes of the action object. See the org.edg.security.voms.operation package for more details.
Each request has a request type that defines the exact workflow
of the request. Request types are classes derived from
Request
. The attributes
of a concrete request class define the parameters of the
request. (Typical request parameters are the id of the client
who submitted the request, the action that is requested by the
client, etc.) Requests in VOMS are basically state machines --
the request type defines the available states and the behaviour
of the machine with respect to incoming events.
The states of these state machines are instances of
special inner classes of the request type class, derived from
Request.State
. The set of
possible states of a request type define its behaviour with
respect to incoming events. If needed, states can access the
request parameters inside the enclosing request instance by
means of lexical closure. A state is either complete or
incomplete; a request is said to be complete if it is in a
complete state. Incomplete requests are still waiting for
events; complete requests have finished their job and are not
expecting any more events.
Requests maintain a chronicle of things that happened to them.
The chronicle is a list of timestamps, client identifications
and HTML event descriptions that can be retrieved by calling
Request.getChronicle()
. The
chronicle is intended to be presented to the user when she is
handling (accepting, denying, etc.) the request.
Requests are stored in the database as serialized Java objects. To speed up request handling, some of the request information is extracted to database-native, indexable columns.
Events are instances of classes derived from the
abstract Event
class.
These objects describe the various outside events that may
happen to a request (e.g., an administrator accepts the request,
or a timeout happens). If a request is given a new event, it
forwards it to its current state, which decides what to do with
the event. The processing of an event normally involves the
transition to a new state.
Complete requests are subject to deletion by a periodically
running expiry process. Incomplete requests time out (and move
to Request.TimedOutState
,
which is complete), if they receive no events for a predefined
amount of time.
Action
,
org.edg.security.voms.operation
|
||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |