public abstract class AbstractStep extends Object implements Step
execute()
and
getActor()
.Modifier | Constructor and Description |
---|---|
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.
|
Modifier and Type | Method and Description |
---|---|
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.
|
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.
).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()
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()
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()
.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()
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 outcomeprotected final void setWorkflow(Workflow workflow)
workflow
- the parent workflow to setCopyright © 2001-2018 The Apache Software Foundation. All rights reserved.