© 2002 BEA Systems, Inc.


com.beasys.commerce.ebusiness.order
Class StateMachine

java.lang.Object
  |
  +--com.beasys.commerce.ebusiness.order.StateMachine

public class StateMachine
extends java.lang.Object
implements java.io.Serializable

A class for implementing finite state machines. The state machine is created by parsing an XML document, classes\orderstatus.xml.
The state machine helps get valid transitions based on a current transition, so that an Order Status can be moved to a valid new state.

See Also:
Serialized Form

Constructor Summary
StateMachine(java.lang.String domDocFile)
          Constructor that takes as a parameter the name of an XML specification for the state machine.
 
Method Summary
 java.lang.String getFirstState()
          Gets the first state an order can be set to, which should correspond to a SUBMITTED state.
 java.lang.String getNextStateName(java.lang.String currStateName, java.lang.String event)
          Gets the state that results from sending a specified event to a specified state.
 java.lang.String[] getValidEvents(java.lang.String stateName)
          Gets the names of the events associated with transitions that lead from a specified state
 java.lang.String handleEvent(java.lang.Object targetObject, java.lang.String currStateName, java.lang.String event)
          Handles an event for a given object, in particular invokes the onExitMethod, onEntryMethod, and doMethod if they exists
static void main(java.lang.String[] argv)
          A testing 'main' that uses the classes\orderstatus.xml and show a tree of the possible transitions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StateMachine

public StateMachine(java.lang.String domDocFile)
             throws java.lang.Exception
Constructor that takes as a parameter the name of an XML specification for the state machine.

Parameters:
domDocFile - The name of the XML file that has the state machine's specification, residing in the classpath
Throws:
java.lang.Exception -  
Method Detail

handleEvent

public java.lang.String handleEvent(java.lang.Object targetObject,
                                    java.lang.String currStateName,
                                    java.lang.String event)
                             throws StateTransitionException
Handles an event for a given object, in particular invokes the onExitMethod, onEntryMethod, and doMethod if they exists

Parameters:
targetObject: - the target of the handling
currStateName: - based on the current state, decides on which action to take
event, - based on the event being handled, decides on which action to take
Returns:
the new state the object has moved to.

getNextStateName

public java.lang.String getNextStateName(java.lang.String currStateName,
                                         java.lang.String event)
                                  throws StateTransitionException
Gets the state that results from sending a specified event to a specified state.

Parameters:
currStateName - The name of the current state
event - The event to be sent to the current state
Returns:
The name of the new state
Throws:
StateTransitionException -  

getValidEvents

public java.lang.String[] getValidEvents(java.lang.String stateName)
Gets the names of the events associated with transitions that lead from a specified state

Parameters:
stateName, - the name of a state in the machine
Returns:
an array of String, one per reachable events.

getFirstState

public java.lang.String getFirstState()
                               throws StateTransitionException
Gets the first state an order can be set to, which should correspond to a SUBMITTED state.

Returns:
the 'first' state, the source of transitions.

main

public static void main(java.lang.String[] argv)
A testing 'main' that uses the classes\orderstatus.xml and show a tree of the possible transitions


© 2002 BEA Systems, Inc.

Copyright © 2002 BEA Systems, Inc. All Rights Reserved