org.apache.wiki.workflow
Interface Step

All Superinterfaces:
Serializable
All Known Implementing Classes:
AbstractStep, Decision, PageManager.PreSaveWikiPageTask, PageManager.SaveWikiPageTask, SimpleDecision, SimpleNotification, Task, UserManager.SaveUserProfileTask

public interface Step
extends 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:

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.

Since:
2.5

Method Summary
 void addSuccessor(Outcome outcome, Step step)
          Adds a successor Step to this one, which will be triggered by a supplied Outcome.
 Outcome execute()
           Executes the processing for this Step and returns an Outcome indicating if it succeeded (Outcome.STEP_COMPLETE or Outcome.STEP_ABORT).
 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 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.
 void start()
          Starts the Step, and sets the start time to the moment when this method is first invoked.
 

Method Detail

addSuccessor

void addSuccessor(Outcome outcome,
                  Step step)
Adds a successor Step to this one, which will be triggered by a supplied Outcome. Implementations should respect the order in which Outcomes are added; getAvailableOutcomes() should return them in the same order they were added.

Parameters:
outcome - the Outcome triggering a particular successor Step
step - the Step to associated with this Outcomes (null denotes no Steps)

getAvailableOutcomes

Collection 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). Concrete implementations should always return a defensive copy of the outcomes, not the original backing collection.

Returns:
the set of outcomes

getErrors

List getErrors()
Returns a List of error strings generated by this Step. If this Step generated no errors, this method returns a zero-length array.

Returns:
the errors

execute

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 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.

Returns:
the result of the Step, expressed as an Outcome
Throws:
WikiException - if the step encounters errors while executing

getActor

Principal getActor()
The Principal responsible for completing this Step, such as a system user or actor assigned to a Decision.

Returns:
the responsible Principal

getEndTime

Date getEndTime()
The end time for this Step. This value should be set when the step completes. Returns Workflow.TIME_NOT_SET if not completed yet.

Returns:
the end time

getMessageKey

String getMessageKey()
Message key for human-friendly name of this Step, including any parameter substitutions. By convention, the message prefix should be a lower-case version of the Step's type, plus a period (e.g., task. and decision.).

Returns:
the message key for this Step.

getMessageArguments

Serializable[] getMessageArguments()
Returns the message arguments for this Step, typically by delegating to the parent Workflow's Workflow.getMessageArguments() method.

Returns:
the message arguments.

getOutcome

Outcome getOutcome()
Returns the Outcome of this Step's processing; by default, Outcome.STEP_CONTINUE.

Returns:
the outcome

getStartTime

Date getStartTime()
The start time for this Step. Returns Workflow.TIME_NOT_SET if not started yet.

Returns:
the start time

getWorkflow

Workflow getWorkflow()
Gets the Workflow that is the parent of this Step.

Returns:
the workflow

isCompleted

boolean isCompleted()
Determines whether the Step is completed; if not, it is by definition awaiting action by the owner or in process. If a Step has completed, it must also return a non-null result for getOutcome().

Returns:
true if the Step has completed; false if not.

isStarted

boolean isStarted()
Determines whether the Step has started.

Returns:
true if the Step has started; false if not.

start

void start()
           throws WikiException
Starts the Step, and sets the start time to the moment when this method is first invoked. If this Step has already been started, this method throws an IllegalStateException. If the Step cannot be started because the underlying implementation encounters an error, it the implementation should throw a WikiException.

Throws:
WikiException - if the step encounters errors while starting

setOutcome

void setOutcome(Outcome outcome)
Sets the current Outcome for the step. If the Outcome is a "completion" Outcome, it should also sets the completon time and mark the Step as complete. Once a Step has been marked complete, this method cannot be called again. If the supplied Outcome is not in the set returned by 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.

Parameters:
outcome - whether the step should be considered completed

getOwner

Principal getOwner()
Convenience method that returns the owner of the Workflow by delegating to Workflow.getOwner().

Returns:
the owner of the Workflow

getSuccessor

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.

Parameters:
outcome - the outcome
Returns:
the next step


Copyright © {inceptionYear}-2014 The Apache Software Foundation. All rights reserved.