|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.wiki.workflow.AbstractStep
public abstract class AbstractStep
Abstact superclass that provides a complete implementation of most
Step methods; subclasses need only implement execute()
and
getActor()
.
Constructor Summary | |
---|---|
protected |
AbstractStep(String messageKey)
Protected constructor that creates a new Step with a specified message key. |
|
AbstractStep(Workflow workflow,
String messageKey)
Constructs a new Step belonging to a specified Workflow and having a specified message key. |
Method Summary | |
---|---|
protected void |
addError(String message)
Protected helper method that adds a String representing an error message to the Step's cached errors list. |
void |
addSuccessor(Outcome outcome,
Step step)
Adds a successor Step to this one, which will be triggered by a supplied Outcome. |
abstract Outcome |
execute()
Executes the processing for this Step and returns an Outcome indicating if it succeeded ( Outcome.STEP_COMPLETE or
Outcome.STEP_ABORT ). |
abstract Principal |
getActor()
The Principal responsible for completing this Step, such as a system user or actor assigned to a Decision. |
Collection |
getAvailableOutcomes()
Returns a Collection of available outcomes, such as "approve", "deny" or "reassign", in the order in which they were added via Step.addSuccessor(Outcome, Step) . |
Date |
getEndTime()
The end time for this Step. |
List |
getErrors()
Returns a List of error strings generated by this Step. |
Serializable[] |
getMessageArguments()
Returns the message arguments for this Step, typically by delegating to the parent Workflow's Workflow.getMessageArguments() method. |
String |
getMessageKey()
Message key for human-friendly name of this Step, including any parameter substitutions. |
Outcome |
getOutcome()
Returns the Outcome of this Step's processing; by default, Outcome.STEP_CONTINUE . |
Principal |
getOwner()
Convenience method that returns the owner of the Workflow by delegating to Workflow.getOwner() . |
Date |
getStartTime()
The start time for this Step. |
Step |
getSuccessor(Outcome outcome)
Identifies the next Step for a particular Outcome; if there is no next Step for this Outcome, this method returns null . |
Workflow |
getWorkflow()
Gets the Workflow that is the parent of this Step. |
boolean |
isCompleted()
Determines whether the Step is completed; if not, it is by definition awaiting action by the owner or in process. |
boolean |
isStarted()
Determines whether the Step has started. |
void |
setOutcome(Outcome outcome)
Sets the current Outcome for the step. |
protected void |
setWorkflow(Workflow workflow)
Protected method that sets the parent Workflow post-construction. |
void |
start()
Starts the Step, and sets the start time to the moment when this method is first invoked. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected AbstractStep(String messageKey)
setWorkflow(Workflow)
should be
called.
messageKey
- the Step's message key, such as
decision.editPageApproval
. By convention, the
message prefix should be a lower-case version of the Step's
type, plus a period (e.g., task.
and decision.
).public AbstractStep(Workflow workflow, String messageKey)
workflow
- the workflow the Step belongs tomessageKey
- the Step's message key, such as
decision.editPageApproval
. By convention, the
message prefix should be a lower-case version of the Step's
type, plus a period (e.g., task.
and decision.
).Method Detail |
---|
public final void addSuccessor(Outcome outcome, Step step)
Step.getAvailableOutcomes()
should return them in the same
order they were added.
addSuccessor
in interface Step
outcome
- the Outcome triggering a particular successor Stepstep
- the Step to associated with this Outcomes (null
denotes no Steps)public final Collection getAvailableOutcomes()
Step.addSuccessor(Outcome, Step)
. Concrete implementations should
always return a defensive copy of the outcomes, not the original backing
collection.
getAvailableOutcomes
in interface Step
public final List getErrors()
getErrors
in interface Step
public abstract Outcome execute() throws WikiException
Executes the processing for this Step and returns an Outcome indicating
if it succeeded (Outcome.STEP_COMPLETE
or
Outcome.STEP_ABORT
). Processing instructions can do just about
anything, such as executing custom business logic or changing the Step's
final outcome via Step.setOutcome(Outcome)
. A return value of
STEP_COMPLETE
indicates that the instructions executed completely,
without errors; STEP_ABORT
indicates that the Step and its
parent Workflow should be aborted (that is, fail silently without error).
If the execution step encounters any errors, it should throw a
WikiException or a subclass.
Note that successful execution of this methods does not necessarily mean
that the Step is considered "complete"; rather, it just means that it has
executed. Therefore, it is possible that execute
could run
multiple times.
execute
in interface Step
WikiException
- if the step encounters errors while executingpublic abstract Principal getActor()
getActor
in interface Step
public final Date getEndTime()
Workflow.TIME_NOT_SET
if not completed yet.
getEndTime
in interface Step
public final Serializable[] getMessageArguments()
Workflow.getMessageArguments()
method.
getMessageArguments
in interface Step
public final String getMessageKey()
task.
and decision.
).
getMessageKey
in interface Step
public final Outcome getOutcome()
Outcome.STEP_CONTINUE
.
getOutcome
in interface Step
public Principal getOwner()
Workflow.getOwner()
.
getOwner
in interface Step
public final Date getStartTime()
Workflow.TIME_NOT_SET
if
not started yet.
getStartTime
in interface Step
public final Workflow getWorkflow()
getWorkflow
in interface Step
public final boolean isCompleted()
null
result for
Step.getOutcome()
.
isCompleted
in interface Step
true
if the Step has completed; false
if not.public final boolean isStarted()
isStarted
in interface Step
true
if the Step has started; false
if not.public final void setOutcome(Outcome outcome)
Step.getAvailableOutcomes()
, or is not Outcome.STEP_CONTINUE
or Outcome.STEP_ABORT
, this method returns an
IllegalArgumentException. If the caller attempts to set an Outcome
and the Step has already completed, this method throws an
IllegalStateException.
setOutcome
in interface Step
outcome
- whether the step should be considered completedpublic final void start() throws WikiException
start
in interface Step
WikiException
- if the step encounters errors while startingpublic final Step getSuccessor(Outcome outcome)
null
.
getSuccessor
in interface Step
outcome
- the outcome
protected final void setWorkflow(Workflow workflow)
workflow
- the parent workflow to setprotected final void addError(String message)
message
- the error message
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |