Package com.smartgwt.client.util.workflow

# Class ScriptTask

java.lang.Object
com.smartgwt.client.core.BaseClass
com.smartgwt.client.util.workflow.ProcessElement
com.smartgwt.client.util.workflow.Task
com.smartgwt.client.util.workflow.ScriptTask

All Implemented Interfaces:
  `HasHandlers`

Direct Known Subclasses:
  `StartProcessTask`

public class ScriptTask extends Task
Task that executes arbitrary code, either synchronous or asynchronous. Override the `execute()` method to provide custom logic.

- ## Field Summary

  ### Fields inherited from class com.smartgwt.client.core.BaseClass

  `config, configOnly, factoryCreated, factoryProperties, id, scClassName`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ScriptTask()`
  `ScriptTask(JavaScriptObject jsObj)`
  `ScriptTask(String ID)`
  `ScriptTask(String ID, ProcessElement nextElement)`
  `ScriptTask(String ID, String nextElement)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `JavaScriptObject`
  `create()`
  `Object`
  `execute(Object input, Record inputRecord)`
  Execute the task.
  `Boolean`
  `getIsAsync()`
  Whether the script task is asynchronous.
  `static ScriptTask`
  `getOrCreateRef(JavaScriptObject jsObj)`
  `Boolean`
  `getPassThruOutput()`
  Does this processElement pass through output from the last executed task (i.e.
  `protected void`
  `onInit()`
  `protected void`
  `onInit_ScriptTask()`
  `ScriptTask`
  `setIsAsync(Boolean isAsync)`
  Whether the script task is asynchronous.
  `void`
  `setOutput()`
  Sets the task output available to the next task via `Process.getLastTaskOutput()` or more commonly, with a `TaskInputExpression` property.
  `void`
  `setOutput(Object output)`
  Sets the task output available to the next task via `Process.getLastTaskOutput()` or more commonly, with a `TaskInputExpression` property.
  `void`
  `setOutputData(Object taskOutput)`
  Set the task output as specified by `outputField`.
  `ScriptTask`
  `setPassThruOutput(Boolean passThruOutput)`
  Does this processElement pass through output from the last executed task (i.e.

  ### Methods inherited from class com.smartgwt.client.util.workflow.Task

  `getExpressionValue, getInputFieldList, getInputRecord, getInputs, getInputsAsString, getInputsAsStringArray, getOutputExpression, getOutputField, getOutputFieldList, getState, getStrictPaths, setInputFieldList, setInputs, setInputs, setInputs, setOutputExpression, setOutputField, setOutputFieldList, setState, setStrictPaths`

  ### Methods inherited from class com.smartgwt.client.util.workflow.ProcessElement

  `completeElement, convertToJavaScriptArray, executeElement, getBindOutput, getClassDescription, getComponentReferences, getCurrentProcess, getDescription, getDynamicValue, getEditorType, getElementDescription, getForceSingle, getID, getInvalidTaskMessage, getJsObj, getMockMode, getNextElement, getOrCreateJsObj, getProcessElements, getSupportsMultipleInputRecords, getTextFormulaValue, getTypeTitle, getUndefinedComponentMessage, getUnresolvedComponentMessage, getWaitDuration, getWaitFor, getWaitLocator, isCreated, isValid, objectReferencesLastTaskOutput, reset, setAttribute, setBindOutput, setClassDescription, setCurrentProcess, setDescription, setEditorType, setForceSingle, setID, setJavaScriptObject, setMockMode, setNextElement, setSupportsMultipleInputRecords, setTypeTitle, setUndefinedComponentMessage, setUnresolvedComponentMessage, setWaitDuration, setWaitFor, setWaitLocator, updateGlobalIDInCriteria, updateGlobalIDInTextFormula, updateGlobalIDInValueProperty, updateGlobalIDInValues, updateGlobalIDReferences, updateLastElementBindingReferences, updateLastElementInCriteria, updateLastElementInValueProperty, updateLastElementInValues`

  ### Methods inherited from class com.smartgwt.client.core.BaseClass

  `addDynamicProperty, addDynamicProperty, addDynamicProperty, addDynamicProperty, applyFactoryProperties, asSGWTComponent, clearDynamicProperty, createJsObj, destroy, doAddHandler, doInit, error, error, errorIfNotCreated, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsElement, getAttributeAsFloat, getAttributeAsInt, getAttributeAsJavaScriptObject, getAttributeAsMap, getAttributeAsString, getAttributeAsStringArray, getClassName, getConfig, getHandlerCount, getRef, getRuleScope, getScClassName, getTestInstance, hasAutoAssignedID, hasDynamicProperty, internalSetID, internalSetID, isConfigOnly, isFactoryCreated, onBind, registerID, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setConfig, setConfigOnly, setFactoryCreated, setProperty, setProperty, setProperty, setProperty, setRuleScope, setScClassName`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ScriptTask

    public ScriptTask()

  - ### ScriptTask

    public ScriptTask(JavaScriptObject jsObj)

  - ### ScriptTask

    public ScriptTask(String ID)

  - ### ScriptTask

    public ScriptTask(String ID, String nextElement)

  - ### ScriptTask

    public ScriptTask(String ID, ProcessElement nextElement)

- ## Method Details

  - ### getOrCreateRef

    public static ScriptTask getOrCreateRef(JavaScriptObject jsObj)

  - ### create

    public JavaScriptObject create()
    Overrides:
      `create` in class `Task`

  - ### setIsAsync

    public ScriptTask setIsAsync(Boolean isAsync) throws IllegalStateException
    Whether the script task is asynchronous. A synchronous task is expected to return data directly from execute() and is considered complete once the execute() method exits.

    An asynchronous task is expected to start processing in execute(), and will not be considered complete `setOutput()` is called.

    Parameters:
      `isAsync` - New isAsync value. Default value is false
    Returns:
      `ScriptTask` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getIsAsync

    public Boolean getIsAsync()
    Whether the script task is asynchronous. A synchronous task is expected to return data directly from execute() and is considered complete once the execute() method exits.

    An asynchronous task is expected to start processing in execute(), and will not be considered complete `setOutput()` is called.

    Returns:
      Current isAsync value. Default value is false

  - ### setPassThruOutput

    public ScriptTask setPassThruOutput(Boolean passThruOutput) throws IllegalStateException
    Does this processElement pass through output from the last executed task (i.e. transient state)?

    See `taskInputExpressions` for details on the transient state outputs.

    Note that this property does not affect the task at all but is an indicator to the user and to the workflow editor of the behavior of the task as coded (See `Process.passThruTaskOutput()`).

    Overrides:
      `setPassThruOutput` in class `ProcessElement`
    Parameters:
      `passThruOutput` - New passThruOutput value. Default value is false
    Returns:
      `ScriptTask` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getPassThruOutput

    public Boolean getPassThruOutput()
    Does this processElement pass through output from the last executed task (i.e. transient state)?

    See `taskInputExpressions` for details on the transient state outputs.

    Note that this property does not affect the task at all but is an indicator to the user and to the workflow editor of the behavior of the task as coded (See `Process.passThruTaskOutput()`).

    Overrides:
      `getPassThruOutput` in class `ProcessElement`
    Returns:
      Current passThruOutput value. Default value is false

  - ### execute

    public Object execute(Object input, Record inputRecord)
    Execute the task. The return value, if not `undefined`, will be written as the output.

    For an asynchronous task, the return value is ignored and the task should call `setOutput()` to continue the process with the next task.

    Parameters:
      `input` - the task input
      `inputRecord` - the task input record if `inputs` is specified. See `TaskIO`
    Returns:
      the task output. For multiple field output, call `setOutput()` instead, and return null

  - ### setOutput

    public void setOutput()
    Sets the task output available to the next task via `Process.getLastTaskOutput()` or more commonly, with a `TaskInputExpression` property. If `outputFieldList` is specified, the output will also be written to the specified fields in the process state (See `TaskIO`).

    To have the output written as-is to the process state, see `bindOutput`.

    NOTE: for an `asynchronous task`, calling `setOutput()` indicates the task is complete.

    See Also:
      - `Task Input / Output`

  - ### setOutput

    public void setOutput(Object output)
    Sets the task output available to the next task via `Process.getLastTaskOutput()` or more commonly, with a `TaskInputExpression` property. If `outputFieldList` is specified, the output will also be written to the specified fields in the process state (See `TaskIO`).

    To have the output written as-is to the process state, see `bindOutput`.

    NOTE: for an `asynchronous task`, calling `setOutput()` indicates the task is complete.

    Overrides:
      `setOutput` in class `Task`
    Parameters:
      `output` - output record to provide to the next task
    See Also:
      - `Task Input / Output`

  - ### setOutputData

    public void setOutputData(Object taskOutput)
    Set the task output as specified by `outputField`.

    NOTE: for an asychronous task, calling `setOutputData()` indicates the task is complete. For a task with `multiple outputs`, call `ScriptTask.setOutputRecord` instead.

    Parameters:
      `taskOutput` - task output

  - ### onInit_ScriptTask

    protected void onInit_ScriptTask()

  - ### onInit

    protected void onInit()
    Overrides:
      `onInit` in class `ProcessElement`