© 2005 BEA Systems, Inc.

com.beasys.commerce.foundation
Class StateMachine

java.lang.Object
  extended bycom.beasys.commerce.foundation.StateMachine
All Implemented Interfaces:
BusinessSmartComponent, Serializable, Workflow
Direct Known Subclasses:
PaymentWorkflow

public class StateMachine
extends Object
implements Workflow

This is the reference implemenation of a Workflow object. It provides a simple implemenation based on a set of states and transitions.

See Also:
Workflow, Serialized Form

Field Summary
protected  State currentState
           
protected  State initialState
           
protected  TreeSet states
           
protected  String TRANSITION_KEY_TOKEN
           
protected  TreeMap transitions
           
 
Constructor Summary
StateMachine()
          Use WorkflowHome.create("com.beasys.commerce.foundation.StateMachine") to instantiate the workflow.
 
Method Summary
protected  void addTransition(Transition t)
           
 String doTransition(String transitionName)
          Given the name of the transition, perform the transition and return the new state.
 WorkflowContext getContext()
          Get the context of the Workflow.
 String getCurrentStateName()
          Get the name of the current state
 String getInitialStateName()
          Get the name of the initial state
 String[] getOutgoingTransitions(String state)
          Given the name of the state, return all transitions starting from that state
 String[] getStateNames()
          Get all State names in an array of Strings.
 String[] getTransitionNames()
          Get all transition names in an array of Strings.
 String lookAheadTransition(String transition)
          Given the name of the transition, look ahead the transition and return the predicted new state.
 void reset()
          Reset the current workflow state to the initial state
 void setContext(WorkflowContext workflowContext)
          Set the new context for the underlying workflow engine.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

currentState

protected State currentState

initialState

protected State initialState

states

protected TreeSet states

TRANSITION_KEY_TOKEN

protected String TRANSITION_KEY_TOKEN

transitions

protected TreeMap transitions
Constructor Detail

StateMachine

public StateMachine()
Use WorkflowHome.create("com.beasys.commerce.foundation.StateMachine") to instantiate the workflow.

Method Detail

addTransition

protected void addTransition(Transition t)

doTransition

public String doTransition(String transitionName)
                    throws IllegalWorkflowTransitionException
Given the name of the transition, perform the transition and return the new state. If transition is invalid for the current state of the state machine, throw IllegalWorkflowTransitionException

Specified by:
doTransition in interface Workflow
Returns:
new state.
Throws:
IllegalWorkflowTransitionException - if the transition is invalid

getContext

public WorkflowContext getContext()
Get the context of the Workflow. This method should be used only by the classes that implement the Workflow interface.

Specified by:
getContext in interface Workflow
Returns:
WorkflowContext

getCurrentStateName

public String getCurrentStateName()
Get the name of the current state

Specified by:
getCurrentStateName in interface Workflow
Returns:
current state name

getInitialStateName

public String getInitialStateName()
Get the name of the initial state

Specified by:
getInitialStateName in interface Workflow
Returns:
initial state name

getOutgoingTransitions

public String[] getOutgoingTransitions(String state)
                                throws IllegalWorkflowTransitionException
Given the name of the state, return all transitions starting from that state

Specified by:
getOutgoingTransitions in interface Workflow
Parameters:
state - the name of the state
Returns:
a String[] of transition names.
Throws:
IllegalWorkflowTransitionException - if the transition is invalid

getStateNames

public String[] getStateNames()
Get all State names in an array of Strings.

Specified by:
getStateNames in interface Workflow
Returns:
String[] an array of Strings

getTransitionNames

public String[] getTransitionNames()
Get all transition names in an array of Strings.

Specified by:
getTransitionNames in interface Workflow
Returns:
String[] an array of Strings

lookAheadTransition

public String lookAheadTransition(String transition)
                           throws IllegalWorkflowTransitionException
Given the name of the transition, look ahead the transition and return the predicted new state. If transition is invalid for the current state of the state machine, throw IllegalWorkflowTransitionException.

Specified by:
lookAheadTransition in interface Workflow
Parameters:
transition - the name of the transition to be performed
Returns:
predicted new state.
Throws:
IllegalWorkflowTransitionException - if the transition is invalid

reset

public void reset()
Reset the current workflow state to the initial state

Specified by:
reset in interface Workflow

setContext

public void setContext(WorkflowContext workflowContext)
Set the new context for the underlying workflow engine. This method should be used only by the classes that implement the Workflow interface.

Specified by:
setContext in interface Workflow

© 2005 BEA Systems, Inc.

Copyright © 2005 BEA Systems, Inc. All Rights Reserved