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<Outcome> |
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<String> |
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.
|
void |
setWorkflow(Workflow workflow)
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 Stepoutcome - the Outcome triggering a particular successor Stepstep - the Step to associated with this Outcomes (null
denotes no Steps)public final Collection<Outcome> getAvailableOutcomes()
Step.addSuccessor(Outcome, Step). Concrete implementations should
always return a defensive copy of the outcomes, not the original backing
collection.getAvailableOutcomes in interface Steppublic final List<String> 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 StepWikiException - 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 Steppublic final Serializable[] getMessageArguments()
Workflow.getMessageArguments() method.getMessageArguments in interface Steppublic final String getMessageKey()
task. and decision.).getMessageKey in interface Steppublic final Outcome getOutcome()
Outcome.STEP_CONTINUE.getOutcome in interface Steppublic Principal getOwner()
Workflow.getOwner().public final Date getStartTime()
Workflow.TIME_NOT_SET if
not started yet.getStartTime in interface Steppublic final Workflow getWorkflow()
getWorkflow in interface Steppublic final boolean isCompleted()
null result for
Step.getOutcome().isCompleted in interface Steptrue 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 Stepoutcome - whether the step should be considered completedpublic final void start() throws WikiException
start in interface StepWikiException - if the step encounters errors while startingpublic final Step getSuccessor(Outcome outcome)
null.getSuccessor in interface Stepoutcome - the outcomepublic final void setWorkflow(Workflow workflow)
setWorkflow in interface Stepworkflow - the parent workflow to setCopyright © 2001-2019 The Apache Software Foundation. All rights reserved.