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

-     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, factoryCreated, factoryProperties, id, scClassName`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ScriptTask()`
    `ScriptTask(JavaScriptObject jsObj)`
    `ScriptTask(java.lang.String ID)`
    `ScriptTask(java.lang.String ID, ProcessElement nextElement)`
    `ScriptTask(java.lang.String ID, java.lang.String nextElement)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `JavaScriptObject` | `create()`
    `java.lang.Object` | `execute(java.lang.Object input, Record inputRecord)` Execute the task.
    `java.lang.Object` | `getInputData()` Get the inputs to this task as specified by `inputField`.
    `Record` | `getInputRecord()` Get all inputs to the task as specified by the `inputFieldList`, as a Record.
    `java.lang.Boolean` | `getIsAsync()` Whether the script task is asynchronous.
    `static ScriptTask` | `getOrCreateRef(JavaScriptObject jsObj)`
    `protected void` | `onInit_ScriptTask()`
    `protected void` | `onInit()`
    `void` | `setIsAsync(java.lang.Boolean isAsync)` Whether the script task is asynchronous.
    `void` | `setOutputData(java.lang.Object taskOutput)` Set the task output as specified by `outputField`.
    `void` | `setOutputRecord(Record outputRecord)` Set all outputs of the task as specified by the `outputFieldList`, by providing a Record.

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

      `getInputField, getInputFieldList, getOutputField, getOutputFieldList, setInputField, setInputFieldList, setOutputField, setOutputFieldList`

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

      `convertToJavaScriptArray, getID, getJsObj, getNextElement, getOrCreateJsObj, getProcessElements, isCreated, setAttribute, setID, setJavaScriptObject, setNextElement`

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

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

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

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

- - ### Constructor Detail

    - #### ScriptTask

          public ScriptTask()

    - #### ScriptTask

          public ScriptTask(JavaScriptObject jsObj)

    - #### ScriptTask

          public ScriptTask(java.lang.String ID)

    - #### ScriptTask

          public ScriptTask(java.lang.String ID,
                    java.lang.String nextElement)

    - #### ScriptTask

          public ScriptTask(java.lang.String ID,
                    ProcessElement nextElement)

  - ### Method Detail

    - #### getOrCreateRef

          public static ScriptTask getOrCreateRef(JavaScriptObject jsObj)

    - #### create

          public JavaScriptObject create()

      Overrides:
        `create` in class `Task`

    - #### setIsAsync

          public void setIsAsync(java.lang.Boolean isAsync)
                          throws java.lang.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 asnychronous task is expected to start processing in execute(), and will not be considered complete until either `ScriptTask.setOutputData()` or `ScriptTask.setOutputRecord()` is called.

      Parameters:
        `isAsync` - Default value is false
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getIsAsync

          public java.lang.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 asnychronous task is expected to start processing in execute(), and will not be considered complete until either `ScriptTask.setOutputData()` or `ScriptTask.setOutputRecord()` is called.

      Returns:
        Boolean

    - #### execute

          public java.lang.Object execute(java.lang.Object input,
                                 Record inputRecord)

      Execute the task.
      Parameters:
        `input` - the task input
        `inputRecord` - the task input record if an `inputFieldList` was specified. See `TaskIO`
      Returns:
        the task output. For multiple field output, call `ScriptTask.setOutputRecord()` instead, and return null

    - #### getInputData

          public java.lang.Object getInputData()

      Get the inputs to this task as specified by `inputField`.

      For a task with a `inputFieldList`, use `ScriptTask.getInputRecord()` to get access to other inputs.

      Returns:
        input data
      See Also:
        `TaskIO overview and related methods`

    - #### getInputRecord

          public Record getInputRecord()

      Get all inputs to the task as specified by the `inputFieldList`, as a Record.
      Returns:
        input data
      See Also:
        `TaskIO overview and related methods`

    - #### setOutputRecord

          public void setOutputRecord(Record outputRecord)

      Set all outputs of the task as specified by the `outputFieldList`, by providing a Record.
      Parameters:
        `outputRecord` - output record
      See Also:
        `TaskIO overview and related methods`

    - #### setOutputData

          public void setOutputData(java.lang.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`