wt.workflow.robots
Class WfApplicationRobot

java.lang.Object
  extended bywt.fc.WTObject
      extended bywt.enterprise.Simple
          extended bywt.workflow.engine.WfExecutionObject
              extended bywt.workflow.engine.WfActivity
                  extended bywt.workflow.robots.WfRobotActivity
                      extended bywt.workflow.robots.WfApplicationRobot
All Implemented Interfaces:
AccessControlled, BusinessInformation, DisplayIdentification, DomainAdministered, Externalizable, NetFactor, Notifiable, ObjectMappable, Persistable, RecentlyVisited, Serializable, WfNode, WTContained

public class WfApplicationRobot
extends WfRobotActivity
implements Externalizable

The application robot is used to carry out a task that is performed by an external program. This program is called using the Runtime.exec Java method. It is possible to feed arguments to the application as well as to set the environment variables. The execution of the application doesn't affect the values of the workflow variables.

Use the newWfApplicationRobot static factory method(s), not the WfApplicationRobot constructor, to construct instances of this class. Instances must be constructed using the static factory(s), in order to ensure proper initialization of the instance.



Supported API: false

Extendable: false

See Also:
Serialized Form

Nested Class Summary
(package private)  class WfApplicationRobot.GetError
          Runnable class that implements the consumption of the error (stderr) from the application.
(package private)  class WfApplicationRobot.GetOutput
          Runnable class that implements the consumption of the output (stdout) from the application.
 
Field Summary
private static String CLASSNAME
           
private static char END_VARIABLE
           
private  String errorMsg
           
private static char ESCAPE_CHARACTER
           
static long EXTERNALIZATION_VERSION_UID
           
private static int MESSAGE_SIZE
           
private static int NRETRIES
           
protected static long OLD_FORMAT_VERSION_UID
           
private  String outputMsg
           
private static String RESOURCE
           
(package private) static long serialVersionUID
           
private static int SLEEPTIME
           
private static char START_VARIABLE
           
private static boolean VERBOSE
           
 
Fields inherited from class wt.workflow.engine.WfActivity
INPUT_VARIABLE_MAP, OUTPUT_VARIABLE_MAP, ROUTER_TYPE, TRIP_COUNT, USER_EVENT_LIST
 
Fields inherited from class wt.workflow.engine.WfExecutionObject
AD_SQEN, ALERT_TIME, CHANGE_STATE_TIME, CONTAINER, CONTEXT, D_SQEN, DEADLINE, DEADLINE_DURATION, DESCRIPTION, END_TIME, EVENT_CONFIGURATION, EXCEPTION_MESSAGE, KEY, NAME, PD_SQEN, PRIORITY, START_TIME, STATE, SUSPEND_TIME, TEMPLATE, TIME_PAST_DEADLINE, TIME_TO_DEADLINE, TIME_TO_START
 
Fields inherited from class wt.enterprise.Simple
 
Fields inherited from class wt.fc.WTObject
CREATE_TIMESTAMP, MODIFY_TIMESTAMP
 
Fields inherited from interface wt.workflow.engine.WfNode
PARENT_PROCESS_REF
 
Fields inherited from interface wt.inf.container.WTContained
CONTAINER_ID, CONTAINER_NAME, CONTAINER_REFERENCE
 
Fields inherited from interface wt.fc.Persistable
IDENTITY, PERSIST_INFO, TYPE
 
Fields inherited from interface wt.admin.DomainAdministered
DOMAIN_REF, INHERITED_DOMAIN
 
Fields inherited from interface wt.fc.BusinessInformation
BUSINESS_TYPE, IDENTITY
 
Fields inherited from interface wt.notify.Notifiable
EVENT_SET
 
Fields inherited from interface wt.identity.DisplayIdentification
DISPLAY_IDENTIFIER, DISPLAY_IDENTITY, DISPLAY_TYPE
 
Constructor Summary
WfApplicationRobot()
           
 
Method Summary
 boolean equals(Object obj)
          Indicates whether the given object is equal to this object from a persistence perspective, by comparing the two objects ObjectIdentifiers.
 String getConceptualClassname()
          Deprecated.  
 ProcessData getContext()
          Returns the parent process' variables.
private  String getMessage(InputStream stream)
          Returns message from input stream passed as argument
private  String getStringRepresentation(Object value)
          Constructs a String representation of the object passed as parameter.
 int hashCode()
          Returns a hash code for this object based upon its ObjectIdentifier.
static WfApplicationRobot newWfApplicationRobot(WfContainer container)
          Constructs application robot in a a given container.
 void readExternal(ObjectInput input)
          Reads the non-transient fields of this class from an external source.
 void readExternal(PersistentRetrieveIfc input)
          Used by Persistent Data Service to populate the persistent attributes of this class from a persistent store.
private  boolean readOldVersion(ObjectInput input, long readSerialVersionUID, boolean passThrough, boolean superDone)
          Reads the non-transient fields of this class from an external source, which is not the current version.
protected  boolean readVersion(WfApplicationRobot thisObject, ObjectInput input, long readSerialVersionUID, boolean passThrough, boolean superDone)
          Reads the non-transient fields of this class from an external source.
private  WfApplicationRobot refreshRobot()
          Refreshes robot.
private  String replaceVariables(String command)
          Replaces values for variables whenever they occur.
 void resetValues()
          Does nothing.
 void run()
          Executes robot activity.
 String toString()
          Returns a string representation of the execution object.
 void writeExternal(ObjectOutput output)
          Writes the non-transient fields of this class to an external source.
 void writeExternal(PersistentStoreIfc output)
          Used by Persistent Data Service to obtain the values of the persistent attributes of this class, so they can be written to a persistent store.
 
Methods inherited from class wt.workflow.robots.WfRobotActivity
changeState, readVersion
 
Methods inherited from class wt.workflow.engine.WfActivity
changeState, changeState, checkSuspendedProcess, complete, computeDeadline, computeDeadline, computeTimeToStart, deleteActivity, doAbortTransition, doCompleteTransition, doDisableTransition, doEnableTransition, doResetTransition, doResumeTransition, doSkipTransition, doStartTransition, doSuspendTransition, doTerminateTransition, doWork, evaluateRouterExpression, getInputVariableMap, getOutputVariableMap, getParentProcess, getParentProcessReadOnly, getParentProcessRef, getRouterEvent, getRouterType, getTemplateReference, getTripCount, getUserEventList, getWfException, hasRouterExpression, initialize, propagateEvent, readValues, readVersion, registerEvent, setInputVariableMap, setOutputVariableMap, setParentProcessRef, setRouterType, setTripCount, setUserEventList, updateWfAssigneeNotification, updateWfDueDate, updateWfDuration, writeValues
 
Methods inherited from class wt.workflow.engine.WfExecutionObject
calculateTimePastDeadline, calculateTimeToDeadline, changeDeadline, changeStateAttributes, computeTimePastDeadline, computeTimeToDeadline, evaluateExpression, getAdSQEN, getAlertTime, getChangeStateTime, getContainer, getContainerName, getContainerReference, getDeadline, getDeadlineDuration, getDescription, getDSQEN, getEndTime, getEventConfiguration, getIdentity, getKey, getName, getPdSQEN, getPriority, getStartTime, getState, getSuspendTime, getTemplate, getTimePastDeadline, getTimeToDeadline, getTimeToStart, getVarDueDate, getVarDuration, getVarNotification, initialize, initialize, isOverdue, readVersion, removeDeadlineQueueEntries, setAdSQEN, setAlertTime, setChangeStateTime, setContainer, setContainerReference, setContext, setDeadline, setDeadlineDuration, setDescription, setDSQEN, setEndTime, setEventConfiguration, setKey, setName, setPdSQEN, setPriority, setStartTime, setState, setSuspendTime, setTemplate, setTimePastDeadline, setTimeToDeadline, setTimeToStart, validTransitions
 
Methods inherited from class wt.enterprise.Simple
getBusinessType, getDomainRef, getEventSet, isInheritedDomain, readVersion, setDomainRef, setEventSet, setInheritedDomain
 
Methods inherited from class wt.fc.WTObject
checkAttributes, duplicate, finalize, getClassInfo, getCreateTimestamp, getDisplayIdentifier, getDisplayIdentity, getDisplayType, getModifyTimestamp, getPersistInfo, getType, readVersion, setPersistInfo
 
Methods inherited from class java.lang.Object
clone, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface wt.fc.Persistable
checkAttributes, getPersistInfo, getType, setPersistInfo
 
Methods inherited from interface wt.fc.NetFactor
getClassInfo
 

Field Detail

RESOURCE

private static final String RESOURCE
See Also:
Constant Field Values

CLASSNAME

private static final String CLASSNAME

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

EXTERNALIZATION_VERSION_UID

public static final long EXTERNALIZATION_VERSION_UID
See Also:
Constant Field Values

OLD_FORMAT_VERSION_UID

protected static final long OLD_FORMAT_VERSION_UID
See Also:
Constant Field Values

MESSAGE_SIZE

private static final int MESSAGE_SIZE
See Also:
Constant Field Values

NRETRIES

private static final int NRETRIES
See Also:
Constant Field Values

SLEEPTIME

private static final int SLEEPTIME
See Also:
Constant Field Values

START_VARIABLE

private static final char START_VARIABLE
See Also:
Constant Field Values

END_VARIABLE

private static final char END_VARIABLE
See Also:
Constant Field Values

ESCAPE_CHARACTER

private static final char ESCAPE_CHARACTER
See Also:
Constant Field Values

VERBOSE

private static boolean VERBOSE

errorMsg

private String errorMsg

outputMsg

private String outputMsg
Constructor Detail

WfApplicationRobot

public WfApplicationRobot()
Method Detail

writeExternal

public void writeExternal(ObjectOutput output)
                   throws IOException
Writes the non-transient fields of this class to an external source.

Supported API: false

Specified by:
writeExternal in interface Externalizable
Overrides:
writeExternal in class WfRobotActivity
Parameters:
output -
Throws:
IOException

readExternal

public void readExternal(ObjectInput input)
                  throws IOException,
                         ClassNotFoundException
Reads the non-transient fields of this class from an external source.

Supported API: false

Specified by:
readExternal in interface Externalizable
Overrides:
readExternal in class WfRobotActivity
Parameters:
input -
Throws:
IOException
ClassNotFoundException

readVersion

protected boolean readVersion(WfApplicationRobot thisObject,
                              ObjectInput input,
                              long readSerialVersionUID,
                              boolean passThrough,
                              boolean superDone)
                       throws IOException,
                              ClassNotFoundException
Reads the non-transient fields of this class from an external source.

Supported API: false

Parameters:
thisObject -
input -
readSerialVersionUID -
passThrough -
superDone -
Returns:
boolean
Throws:
IOException
ClassNotFoundException

readOldVersion

private boolean readOldVersion(ObjectInput input,
                               long readSerialVersionUID,
                               boolean passThrough,
                               boolean superDone)
                        throws IOException,
                               ClassNotFoundException
Reads the non-transient fields of this class from an external source, which is not the current version.

Parameters:
input -
readSerialVersionUID -
passThrough -
superDone -
Returns:
boolean
Throws:
IOException
ClassNotFoundException

writeExternal

public void writeExternal(PersistentStoreIfc output)
                   throws SQLException,
                          DatastoreException
Used by Persistent Data Service to obtain the values of the persistent attributes of this class, so they can be written to a persistent store.

(Not intended for general use.)

Supported API: false

Specified by:
writeExternal in interface ObjectMappable
Overrides:
writeExternal in class WfRobotActivity
Parameters:
output -
Throws:
SQLException
DatastoreException

readExternal

public void readExternal(PersistentRetrieveIfc input)
                  throws SQLException,
                         DatastoreException
Used by Persistent Data Service to populate the persistent attributes of this class from a persistent store.

(Not intended for general use.)

Supported API: false

Specified by:
readExternal in interface ObjectMappable
Overrides:
readExternal in class WfRobotActivity
Parameters:
input -
Throws:
SQLException
DatastoreException

getConceptualClassname

public String getConceptualClassname()
Deprecated.  

Returns the conceptual (modeled) name for the class.

Supported API: false

Specified by:
getConceptualClassname in interface NetFactor
Returns:
String

toString

public String toString()
Returns a string representation of the execution object. Used mostly for debugging purposes: not appropriate for GUI use.

Supported API: false

Overrides:
toString in class WfRobotActivity
Returns:
String

newWfApplicationRobot

public static WfApplicationRobot newWfApplicationRobot(WfContainer container)
                                                throws WTException
Constructs application robot in a a given container.

Supported API: false

Parameters:
container -
Returns:
WfApplicationRobot
Throws:
WTException

run

public void run()
         throws WTException
Executes robot activity. This method is called when a START transition occurs.

Supported API: false

Specified by:
run in class WfRobotActivity
Throws:
WTException

getContext

public ProcessData getContext()
Returns the parent process' variables.

Supported API: false

Overrides:
getContext in class WfExecutionObject
Returns:
ProcessData

resetValues

public void resetValues()
                 throws WTException
Does nothing. Overrides WfExecutionObject.resetValues.

Supported API: false

Overrides:
resetValues in class WfExecutionObject
Throws:
WTException

equals

public boolean equals(Object obj)
Indicates whether the given object is equal to this object from a persistence perspective, by comparing the two objects ObjectIdentifiers. Changed or stale copies are still considered equal by this method. Delegates to PersistenceHelper.equals(Persistable,Object).

Warning: Certain core Windchill operations may depend upon equals being ObjectIdentifier-based. Changes to the default implementation should be done with care, if at all.

Supported API: false

Overrides:
equals in class WfRobotActivity
Parameters:
obj -
Returns:
boolean

hashCode

public int hashCode()
Returns a hash code for this object based upon its ObjectIdentifier. Delegates to PersistenceHelper.hashCode(Persistable).

Warning: Certain core Windchill operations may depend upon hashCode being ObjectIdentifier-based. Changes to the default implementation should be done with care, if at all.

Supported API: false

Overrides:
hashCode in class WfRobotActivity
Returns:
int

getMessage

private String getMessage(InputStream stream)
                   throws IOException
Returns message from input stream passed as argument

Throws:
IOException

refreshRobot

private WfApplicationRobot refreshRobot()
                                 throws WTException
Refreshes robot.

Throws:
WTException

replaceVariables

private String replaceVariables(String command)
                         throws WTException
Replaces values for variables whenever they occur. A variable occurrence is represented by {var_name}, where:

Parameters:
command - command line, possibly containing variable occurrence
Returns:
String the same as the input command line only with the values replaced by their values.
Throws:
WTException

getStringRepresentation

private String getStringRepresentation(Object value)
Constructs a String representation of the object passed as parameter.

If the value is not a WTObject, calls 'toString()'; otherwise produces the object's identity.

Parameters:
value - object passed as parameter
Returns:
String Windchill's string representation of the object