com.smartgwt.client.util.workflow

## Class UserTask

- 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.UserTask

- All Implemented Interfaces:
    com.google.gwt.event.shared.HasHandlers
  Direct Known Subclasses:
    TourConfirmStep, TourStep

      public class UserTask
      extends Task

  A task that involves showing a user interface to the end user allowing the user to view and input data and press a button (or do some other UI gesture) to complete the task.

  A UserTask takes the following steps:

  - Optionally show() or otherwise make visible the `targetView` or `inlineView`
  - Provide values to either a `DynamicForm` designated as the `targetForm` or to a `ValuesManager` designated as the `targetVM`, via `setValues()`
  - Waits for notification of completion or cancellation. The UserTask is notified of completion if a `SubmitItem` is pressed in either the `targetForm` or any form that is a member of the `targetVM`. Likewise a CancelItem triggers cancellation. Direct calls to `DynamicForm.cancelEditing()` or `DynamicForm.completeEditing()` achieve the same result.
  - if cancellation occurs, the process continues to the `cancelElement` if specified. Otherwise the workflow is immediately finished.
  - if completion occurs, values are retrieved from the form or valuesManager and applied to the process state based on `outputField`, `outputFieldList` or `inputField`, in that order.

- - ### Field Summary

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

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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `UserTask()`
    `UserTask(com.google.gwt.core.client.JavaScriptObject jsObj)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `cancelEditing()` Revert any changes made in a form and finish this userTask execution.
    `void` | `completeEditing()` Finish editing and store edited values in `process state`.
    `com.google.gwt.core.client.JavaScriptObject` | `create()`
    `java.lang.String` | `getCancelElement()` Next element to proceed to if the task is cancelled because the `targetForm` or `targetVM` had `cancelEditing()` called on it.
    `Canvas` | `getInlineView()` An inline definition of the form.
    `static UserTask` | `getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)`
    `java.lang.Boolean` | `getPassThruOutput()` Does this processElement pass through output from the last executed task (i.e.
    `java.lang.String` | `getPreviousElement()` Previous workflow `sequence` or `element` that is helpful for wizards.
    `java.lang.Boolean` | `getSaveToServer()` If saveToServer is set then the associated form (`targetForm`) will perform the normal `DynamicForm.submit()` actions when submitted (typically from a `SubmitItem`).
    `DynamicForm` | `getTargetForm()` DynamicForm that should be populated with data and that should provide the data for the task outputs.
    `java.lang.String` | `getTargetFormAsString()` DynamicForm that should be populated with data and that should provide the data for the task outputs.
    `Canvas` | `getTargetView()` Optional widget that should be shown to allow user input.
    `ValuesManager` | `getTargetVM()` Optional ValuesManager which will receive task inputs and provide task outputs.
    `java.lang.Boolean` | `getWizard()` If wizard is set then associated form will be hidden after user goes to next or prev step of current workflow.
    `void` | `goToPrevious()` Set `previousElement` as next element of workflow.
    `UserTask` | `setCancelElement(java.lang.String cancelElement)` Next element to proceed to if the task is cancelled because the `targetForm` or `targetVM` had `cancelEditing()` called on it.
    `UserTask` | `setInlineView(Canvas inlineView)` An inline definition of the form.
    `UserTask` | `setPassThruOutput(java.lang.Boolean passThruOutput)` Does this processElement pass through output from the last executed task (i.e.
    `UserTask` | `setPreviousElement(java.lang.String previousElement)` Previous workflow `sequence` or `element` that is helpful for wizards.
    `UserTask` | `setSaveToServer(java.lang.Boolean saveToServer)` If saveToServer is set then the associated form (`targetForm`) will perform the normal `DynamicForm.submit()` actions when submitted (typically from a `SubmitItem`).
    `UserTask` | `setTargetForm(DynamicForm targetForm)` DynamicForm that should be populated with data and that should provide the data for the task outputs.
    `UserTask` | `setTargetForm(java.lang.String targetForm)` DynamicForm that should be populated with data and that should provide the data for the task outputs.
    `void` | `setTargetView(Canvas targetView)` Optional widget that should be shown to allow user input.
    `void` | `setTargetView(java.lang.String targetView)` Optional widget that should be shown to allow user input.
    `void` | `setTargetVM(java.lang.String targetVM)` Optional ValuesManager which will receive task inputs and provide task outputs.
    `void` | `setTargetVM(ValuesManager targetVM)` Optional ValuesManager which will receive task inputs and provide task outputs.
    `UserTask` | `setWizard(java.lang.Boolean wizard)` If wizard is set then associated form will be hidden after user goes to next or prev step of current workflow.

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

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

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

      `completeElement, convertToJavaScriptArray, executeElement, getBindOutput, getClassDescription, getComponentReferences, getDescription, getDynamicValue, getEditorType, getElementDescription, getForceSingle, getID, getInvalidTaskMessage, getJsObj, getMockMode, getNextElement, getOrCreateJsObj, getProcessElements, getSupportsMultipleInputRecords, getTextFormulaValue, getTypeTitle, getUndefinedComponentMessage, getUnresolvedComponentMessage, getWaitDuration, getWaitFor, getWaitLocator, isCreated, isValid, objectReferencesLastTaskOutput, onInit, reset, setAttribute, setBindOutput, setClassDescription, 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, setAutoID, 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 Detail

    - #### UserTask

          public UserTask()

    - #### UserTask

          public UserTask(com.google.gwt.core.client.JavaScriptObject jsObj)

  - ### Method Detail

    - #### getOrCreateRef

          public static UserTask getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)

    - #### create

          public com.google.gwt.core.client.JavaScriptObject create()

      Overrides:
        `create` in class `Task`

    - #### setCancelElement

          public UserTask setCancelElement(java.lang.String cancelElement)
                                    throws java.lang.IllegalStateException

      Next element to proceed to if the task is cancelled because the `targetForm` or `targetVM` had `cancelEditing()` called on it.

      if no value is provided the workflow immediately completes.

      Parameters:
        `cancelElement` - New cancelElement value. Default value is null
      Returns:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getCancelElement

          public java.lang.String getCancelElement()

      Next element to proceed to if the task is cancelled because the `targetForm` or `targetVM` had `cancelEditing()` called on it.

      if no value is provided the workflow immediately completes.

      Returns:
        Current cancelElement value. Default value is null

    - #### setInlineView

          public UserTask setInlineView(Canvas inlineView)

      An inline definition of the form. Can be used in place of `targetView` to encode form directly in process xml.
      Parameters:
        `inlineView` - New inlineView value. Default value is null
      Returns:
        `UserTask` instance, for chaining setter calls

    - #### getInlineView

          public Canvas getInlineView()

      An inline definition of the form. Can be used in place of `targetView` to encode form directly in process xml.
      Returns:
        Current inlineView value. Default value is null

    - #### setPassThruOutput

          public UserTask setPassThruOutput(java.lang.Boolean passThruOutput)
                                     throws java.lang.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:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getPassThruOutput

          public java.lang.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

    - #### setPreviousElement

          public UserTask setPreviousElement(java.lang.String previousElement)
                                      throws java.lang.IllegalStateException

      Previous workflow `sequence` or `element` that is helpful for wizards. This element will be executed if `goToPrevious()` method of userTask will be invoked. You can get userTask for attached form by using `userTask` property.
      Parameters:
        `previousElement` - New previousElement value. Default value is null
      Returns:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getPreviousElement

          public java.lang.String getPreviousElement()

      Previous workflow `sequence` or `element` that is helpful for wizards. This element will be executed if `goToPrevious()` method of userTask will be invoked. You can get userTask for attached form by using `userTask` property.
      Returns:
        Current previousElement value. Default value is null

    - #### setSaveToServer

          public UserTask setSaveToServer(java.lang.Boolean saveToServer)
                                   throws java.lang.IllegalStateException

      If saveToServer is set then the associated form (`targetForm`) will perform the normal `DynamicForm.submit()` actions when submitted (typically from a `SubmitItem`). By default the form submit action is bypassed.
      Parameters:
        `saveToServer` - New saveToServer value. Default value is false
      Returns:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getSaveToServer

          public java.lang.Boolean getSaveToServer()

      If saveToServer is set then the associated form (`targetForm`) will perform the normal `DynamicForm.submit()` actions when submitted (typically from a `SubmitItem`). By default the form submit action is bypassed.
      Returns:
        Current saveToServer value. Default value is false

    - #### setTargetForm

          public UserTask setTargetForm(DynamicForm targetForm)
                                 throws java.lang.IllegalStateException

      DynamicForm that should be populated with data and that should provide the data for the task outputs. If `targetView` is a DynamicForm and would also be the targetForm, the targetForm attribute can be left unset.

      Use `targetVM` to use a `ValuesManager` instead.

      Parameters:
        `targetForm` - New targetForm value. Default value is null
      Returns:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getTargetForm

          public DynamicForm getTargetForm()

      DynamicForm that should be populated with data and that should provide the data for the task outputs. If `targetView` is a DynamicForm and would also be the targetForm, the targetForm attribute can be left unset.

      Use `targetVM` to use a `ValuesManager` instead.

      Returns:
        Current targetForm value. Default value is null

    - #### setTargetForm

          public UserTask setTargetForm(java.lang.String targetForm)
                                 throws java.lang.IllegalStateException

      DynamicForm that should be populated with data and that should provide the data for the task outputs. If `targetView` is a DynamicForm and would also be the targetForm, the targetForm attribute can be left unset.

      Use `targetVM` to use a `ValuesManager` instead.

      Parameters:
        `targetForm` - New targetForm value. Default value is null
      Returns:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getTargetFormAsString

          public java.lang.String getTargetFormAsString()

      DynamicForm that should be populated with data and that should provide the data for the task outputs. If `targetView` is a DynamicForm and would also be the targetForm, the targetForm attribute can be left unset.

      Use `targetVM` to use a `ValuesManager` instead.

      Returns:
        Current targetForm value. Default value is null

    - #### setWizard

          public UserTask setWizard(java.lang.Boolean wizard)
                             throws java.lang.IllegalStateException

      If wizard is set then associated form will be hidden after user goes to next or prev step of current workflow.
      Parameters:
        `wizard` - New wizard value. Default value is false
      Returns:
        `UserTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getWizard

          public java.lang.Boolean getWizard()

      If wizard is set then associated form will be hidden after user goes to next or prev step of current workflow.
      Returns:
        Current wizard value. Default value is false

    - #### cancelEditing

          public void cancelEditing()

      Revert any changes made in a form and finish this userTask execution. `cancelElement` will be proceed as the next element of current process.

    - #### completeEditing

          public void completeEditing()

      Finish editing and store edited values in `process state`.

    - #### goToPrevious

          public void goToPrevious()

      Set `previousElement` as next element of workflow. This method could be used to create wizard-like UI behavior.

    - #### setTargetView

          public void setTargetView(Canvas targetView)

      Optional widget that should be shown to allow user input. If this widget is a DynamicForm, it will also be automatically used as the `targetForm` unless either `targetForm` or `targetVM` is set.

      `UserTask` will automatically handle various scenarios of the `targetView` being not currently visible or draw()n, according to the following rules:

      - if the view itself is marked hidden, it will be show()n
      - if the view is inside a hidden parent, the parent will be show()n
      - if the view is the `pane` of a tab in a TabSet, the tab will be selected
      - if the view is listed in `items` for a which is either collapsed or hidden section, the section will be shown and expanded
      - if the view is listed in `items` for a Window, the Window will be shown
      - if any of these conditions apply to any parent of the targetView, the rules will be applied to that parent as well. For example, the targetView is in a collapsed section inside a tab which is not selected, the section will be expanded and the tab selected
      Parameters:
        `targetView` - targetView Default value is null

    - #### getTargetView

          public Canvas getTargetView()

      Optional widget that should be shown to allow user input. If this widget is a DynamicForm, it will also be automatically used as the `targetForm` unless either `targetForm` or `targetVM` is set.

      `UserTask` will automatically handle various scenarios of the `targetView` being not currently visible or draw()n, according to the following rules:

      - if the view itself is marked hidden, it will be show()n
      - if the view is inside a hidden parent, the parent will be show()n
      - if the view is the `pane` of a tab in a TabSet, the tab will be selected
      - if the view is listed in `items` for a which is either collapsed or hidden section, the section will be shown and expanded
      - if the view is listed in `items` for a Window, the Window will be shown
      - if any of these conditions apply to any parent of the targetView, the rules will be applied to that parent as well. For example, the targetView is in a collapsed section inside a tab which is not selected, the section will be expanded and the tab selected
      Returns:
        Canvas

    - #### setTargetView

          public void setTargetView(java.lang.String targetView)

      Optional widget that should be shown to allow user input. If this widget is a DynamicForm, it will also be automatically used as the `targetForm` unless either `targetForm` or `targetVM` is set.

      `UserTask` will automatically handle various scenarios of the `targetView` being not currently visible or draw()n, according to the following rules:

      - if the view itself is marked hidden, it will be show()n
      - if the view is inside a hidden parent, the parent will be show()n
      - if the view is the `pane` of a tab in a TabSet, the tab will be selected
      - if the view is listed in `items` for a which is either collapsed or hidden section, the section will be shown and expanded
      - if the view is listed in `items` for a Window, the Window will be shown
      - if any of these conditions apply to any parent of the targetView, the rules will be applied to that parent as well. For example, the targetView is in a collapsed section inside a tab which is not selected, the section will be expanded and the tab selected
      Parameters:
        `targetView` - targetView Default value is null

    - #### setTargetVM

          public void setTargetVM(ValuesManager targetVM)

      Optional ValuesManager which will receive task inputs and provide task outputs. Use `targetForm` instead of you want to use a DynamicForm.
      Parameters:
        `targetVM` - targetVM Default value is null

    - #### getTargetVM

          public ValuesManager getTargetVM()

      Optional ValuesManager which will receive task inputs and provide task outputs. Use `targetForm` instead of you want to use a DynamicForm.
      Returns:
        ValuesManager

    - #### setTargetVM

          public void setTargetVM(java.lang.String targetVM)

      Optional ValuesManager which will receive task inputs and provide task outputs. Use `targetForm` instead of you want to use a DynamicForm.
      Parameters:
        `targetVM` - targetVM Default value is null