public interface Step extends java.io.Serializable
Discrete unit of work in a Workflow, such as a Decision or a Task. Decisions require user input, while Tasks do not.
All Steps, however, possess these properties:
getActor().Outcome.DECISION_APPROVE),
"reassign decision" (Outcome.DECISION_REASSIGN), "abort step" (Outcome.STEP_ABORT) and others. The range of possible
Outcomes for the Step is returned by getAvailableOutcomes(); see the Outcome class for more details.getErrors().isStarted() and isCompleted().getStartTime() and getEndTime(), respectively.
Steps contain a getMessageKey() method that returns a key that can be used with the InternationalizationManager.
See also Workflow.getMessageArguments(), which is a convenience method that returns message arguments.
| Modifier and Type | Field and Description |
|---|---|
static java.util.Date |
TIME_NOT_SET
Time value: the start or end time has not been set.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addSuccessor(Outcome outcome,
Step step)
Adds a successor Step to this one, which will be triggered by a supplied Outcome.
|
Outcome |
execute(Context ctx)
Executes the processing for this Step and returns an Outcome indicating if it succeeded (
Outcome.STEP_COMPLETE or
Outcome.STEP_ABORT). |
java.security.Principal |
getActor()
The Principal responsible for completing this Step, such as a system user or actor assigned to a Decision.
|
java.util.Collection<Outcome> |
getAvailableOutcomes()
Returns a Collection of available outcomes, such as "approve", "deny" or "reassign", in the order in which they were added via
addSuccessor(Outcome, Step). |
java.util.Date |
getEndTime()
The end time for this Step.
|
java.util.List<java.lang.String> |
getErrors()
Returns a List of error strings generated by this Step.
|
java.lang.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. |
java.util.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. |
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(int workflowId,
java.util.Map<java.lang.String,java.io.Serializable> workflowContext)
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.
|
static final java.util.Date TIME_NOT_SET
void addSuccessor(Outcome outcome, Step step)
getAvailableOutcomes() should return them in the same order they were added.outcome - the Outcome triggering a particular successor Stepstep - the Step to associated with this Outcomes (null denotes no Steps)java.util.Collection<Outcome> getAvailableOutcomes()
addSuccessor(Outcome, Step). Concrete implementations should always return a defensive copy of the outcomes, not the
original backing collection.java.util.List<java.lang.String> getErrors()
Outcome execute(Context ctx) 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 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.
ctx - executing wiki context.WikiException - if the step encounters errors while executingjava.security.Principal getActor()
java.util.Date getEndTime()
TIME_NOT_SET if not completed
yet.java.lang.String getMessageKey()
task. and decision.).Outcome getOutcome()
Outcome.STEP_CONTINUE.java.util.Date getStartTime()
TIME_NOT_SET if not started yet.boolean isCompleted()
null result for getOutcome().true if the Step has completed; false if not.boolean isStarted()
true if the Step has started; false if not.void start() throws WikiException
WikiException - if the step encounters errors while startingvoid setOutcome(Outcome outcome)
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.outcome - whether the step should be considered completedStep getSuccessor(Outcome outcome)
null.outcome - the outcomevoid setWorkflow(int workflowId, java.util.Map<java.lang.String,java.io.Serializable> workflowContext)
Step.workflowId - the parent workflow id to setworkflowContext - the parent workflow context to setCopyright (c) 2001-2022 The Apache Software Foundation. All rights reserved.