com.smartgwt.client.util.workflow

## Class ServiceTask

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

- All Implemented Interfaces:
    com.google.gwt.event.shared.HasHandlers
  Direct Known Subclasses:
    DSAddTask, DSFetchTask, DSRemoveTask, DSUpdateTask

      public class ServiceTask
      extends Task

  A ServiceTask is an element of a `Process` which calls a DataSource operation, optionally using part of the `process state` as inputs or storing outputs in the process state. A special "export" `operationType` is supported to perform a server export based on criteria.

  By default a ServiceTask takes the data indicated by `inputField` and/or `inputFieldList` as detailed in `TaskIO` and uses the `inputRecord` as `DSRequest.data`. This means the input data becomes `Criteria` for "fetch" and "export" operations, new record values for an "add" operation, etc. For simplicity, if no `inputFieldList` is provided and `inputField` specifies an object, `inputData` is used as `dsRequest.data`.

  Alternatively, you can set `criteria` for a "fetch" and "export" operations, or `values` for other operationTypes. In both cases, you have the ability to use simple expressions like $input.fieldName to take portions of the input data and use it as part of the criteria or values.

  OutputData and outputFieldList work as filters. You should determine which properties should be fetched into the process state. If you want to load all data without defining every property manually you can pass a name started with '$' and fetched record or records will be placed as a record or an array of records by the name without this specific symbol.

  For example if you specify 'id' and 'name' in outputFieldList, only these properties will be fetched in the process state. If you pass '$orderHeader' in outputField a whole record will be stored in process state under the 'orderHeader' key.

- - ### Field Summary

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

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

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `com.google.gwt.core.client.JavaScriptObject` | `create()`
    `Criteria` | `getCriteria()` Criteria (including AdvancedCriteria) to use for "fetch" and "export" operations.
    `DataSource` | `getDataSource()` DataSource ID or DataSource instance to be used.
    `ExportFormat` | `getExportFormat()` The format in which the data should be exported.
    `java.lang.String` | `getFailureElement()` ID of the next sequence or element to proceed to if a failure condition arises from DataSource operation.
    `Criteria` | `getFixedCriteria()` Criteria to be submitted as part of the DSRequest, regardless of inputs to the task.
    `Record` | `getFixedValues()` Values to be submitted as part of the DSRequest, regardless of inputs to the task.
    `java.lang.String[]` | `getGroupBy()` List of fields to group by for a fetch.
    `java.lang.String` | `getOperationId()` The `operationId` to invoke.
    `DSOperationType` | `getOperationType()` Type of operation to invoke.
    `static ServiceTask` | `getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)`
    `java.lang.String` | `getOutputField()` Field in the `process state` where this task writes outputs.
    `java.lang.String[]` | `getOutputFieldList()` List of multiple fields in the `process state` where this task will write outputs.
    `java.lang.Boolean` | `getPassThruOutput()` Does this processElement pass through output from the last executed task (i.e.
    `SortSpecifier[]` | `getSort()` An array of `SortSpecifier` objects used to set up the sort configuration for a fetch.
    `java.util.Map<java.lang.String,SummaryFunctionType>` | `getSummaryFunctions()` A mapping from field names to `summary functions` to be applied to each field for a fetch.
    `Record` | `getValues()` Values to be submitted for "update", "add" and "remove" operations.
    `ServiceTask` | `setCriteria(Criteria criteria)` Criteria (including AdvancedCriteria) to use for "fetch" and "export" operations.
    `void` | `setDataSource(DataSource dataSource)` DataSource ID or DataSource instance to be used.
    `void` | `setDataSource(java.lang.String dataSource)` DataSource ID or DataSource instance to be used.
    `ServiceTask` | `setExportFormat(ExportFormat exportFormat)` The format in which the data should be exported.
    `ServiceTask` | `setFailureElement(java.lang.String failureElement)` ID of the next sequence or element to proceed to if a failure condition arises from DataSource operation.
    `ServiceTask` | `setFixedCriteria(Criteria fixedCriteria)` Criteria to be submitted as part of the DSRequest, regardless of inputs to the task.
    `ServiceTask` | `setFixedValues(Record fixedValues)` Values to be submitted as part of the DSRequest, regardless of inputs to the task.
    `ServiceTask` | `setGroupBy(java.lang.String... groupBy)` List of fields to group by for a fetch.
    `ServiceTask` | `setOperationId(java.lang.String operationId)` The `operationId` to invoke.
    `ServiceTask` | `setOperationType(DSOperationType operationType)` Type of operation to invoke.
    `ServiceTask` | `setOutputField(java.lang.String outputField)` Field in the `process state` where this task writes outputs.
    `ServiceTask` | `setOutputFieldList(java.lang.String... outputFieldList)` List of multiple fields in the `process state` where this task will write outputs.
    `ServiceTask` | `setPassThruOutput(java.lang.Boolean passThruOutput)` Does this processElement pass through output from the last executed task (i.e.
    `ServiceTask` | `setSort(SortSpecifier... sort)` An array of `SortSpecifier` objects used to set up the sort configuration for a fetch.
    `ServiceTask` | `setSummaryFunctions(java.util.Map<java.lang.String,SummaryFunctionType> summaryFunctions)` A mapping from field names to `summary functions` to be applied to each field for a fetch.
    `ServiceTask` | `setValues(Record values)` Values to be submitted for "update", "add" and "remove" operations.

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

      `getInputField, getInputFieldList, getOutputExpression, setInputField, setInputFieldList, setOutputExpression`

    - ### 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, 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

    - #### ServiceTask

          public ServiceTask()

    - #### ServiceTask

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

  - ### Method Detail

    - #### getOrCreateRef

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

    - #### create

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

      Overrides:
        `create` in class `Task`

    - #### setCriteria

          public ServiceTask setCriteria(Criteria criteria)
                                  throws java.lang.IllegalStateException

      Criteria (including AdvancedCriteria) to use for "fetch" and "export" operations.

      Data values in this criteria prefixed with "$" will be treated as dynamic expressions which can access the inputs to this task as $input - see `TaskInputExpression`. Specifically, this means that for simple criteria, any property value that is a String and is prefixed with "$" will be assumed to be an expression, and for AdvancedCriteria, the same treatment will be applied to `Criterion.value`.

      If any data value should not be treated as dynamic (for example, a "$" should be taken as literal), you can place it in `fixedCriteria` instead.

      Ignored for any operationType other than "fetch" and "export". Update or delete operations should place the primary key to update in `values`.

      This property supports `DynamicCriteria` - use `Criterion.valuePath` to refer to values in the `Process.ruleScope`.

      Parameters:
        `criteria` - New criteria value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `Task Input / Output`

    - #### getCriteria

          public Criteria getCriteria()

      Criteria (including AdvancedCriteria) to use for "fetch" and "export" operations.

      Data values in this criteria prefixed with "$" will be treated as dynamic expressions which can access the inputs to this task as $input - see `TaskInputExpression`. Specifically, this means that for simple criteria, any property value that is a String and is prefixed with "$" will be assumed to be an expression, and for AdvancedCriteria, the same treatment will be applied to `Criterion.value`.

      If any data value should not be treated as dynamic (for example, a "$" should be taken as literal), you can place it in `fixedCriteria` instead.

      Ignored for any operationType other than "fetch" and "export". Update or delete operations should place the primary key to update in `values`.

      This property supports `DynamicCriteria` - use `Criterion.valuePath` to refer to values in the `Process.ruleScope`.

      Returns:
        Current criteria value. Default value is null
      See Also:
        `Task Input / Output`

    - #### setExportFormat

          public ServiceTask setExportFormat(ExportFormat exportFormat)
                                      throws java.lang.IllegalStateException

      The format in which the data should be exported. See `ExportFormat` for more information.
      Parameters:
        `exportFormat` - New exportFormat value. Default value is "csv"
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getExportFormat

          public ExportFormat getExportFormat()

      The format in which the data should be exported. See `ExportFormat` for more information.
      Returns:
        Current exportFormat value. Default value is "csv"

    - #### setFailureElement

          public ServiceTask setFailureElement(java.lang.String failureElement)
                                        throws java.lang.IllegalStateException

      ID of the next sequence or element to proceed to if a failure condition arises from DataSource operation.
      Parameters:
        `failureElement` - New failureElement value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getFailureElement

          public java.lang.String getFailureElement()

      ID of the next sequence or element to proceed to if a failure condition arises from DataSource operation.
      Returns:
        Current failureElement value. Default value is null

    - #### setFixedCriteria

          public ServiceTask setFixedCriteria(Criteria fixedCriteria)
                                       throws java.lang.IllegalStateException

      Criteria to be submitted as part of the DSRequest, regardless of inputs to the task. Will be combined with the data from the `Task.inputField` or with `criteria` if specified, via `DataSource.combineCriteria()`.
      Parameters:
        `fixedCriteria` - New fixedCriteria value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getFixedCriteria

          public Criteria getFixedCriteria()

      Criteria to be submitted as part of the DSRequest, regardless of inputs to the task. Will be combined with the data from the `Task.inputField` or with `criteria` if specified, via `DataSource.combineCriteria()`.
      Returns:
        Current fixedCriteria value. Default value is null

    - #### setFixedValues

          public ServiceTask setFixedValues(Record fixedValues)
                                     throws java.lang.IllegalStateException

      Values to be submitted as part of the DSRequest, regardless of inputs to the task. Will be combined with the data from the `Task.inputField` or with `values` if specified, via simple copying of fields, with `fixedValues` overwriting values provided by the `inputField`, but explicitly specified `values` overriding `fixedValues`.
      Parameters:
        `fixedValues` - New fixedValues value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getFixedValues

          public Record getFixedValues()

      Values to be submitted as part of the DSRequest, regardless of inputs to the task. Will be combined with the data from the `Task.inputField` or with `values` if specified, via simple copying of fields, with `fixedValues` overwriting values provided by the `inputField`, but explicitly specified `values` overriding `fixedValues`.
      Returns:
        Current fixedValues value. Default value is null

    - #### setGroupBy

          public ServiceTask setGroupBy(java.lang.String... groupBy)
                                 throws java.lang.IllegalStateException

      List of fields to group by for a fetch.

      See the `Server Summaries overview` for examples of usage.

      Parameters:
        `groupBy` - New groupBy value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `setSummaryFunctions(java.util.Map<java.lang.String, com.smartgwt.client.types.SummaryFunctionType>)`, `Server Summaries`

    - #### getGroupBy

          public java.lang.String[] getGroupBy()

      List of fields to group by for a fetch.

      See the `Server Summaries overview` for examples of usage.

      Returns:
        Current groupBy value. Default value is null
      See Also:
        `getSummaryFunctions()`, `Server Summaries`

    - #### setOperationId

          public ServiceTask setOperationId(java.lang.String operationId)
                                     throws java.lang.IllegalStateException

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

    - #### getOperationId

          public java.lang.String getOperationId()

      The `operationId` to invoke.
      Returns:
        Current operationId value. Default value is null

    - #### setOperationType

          public ServiceTask setOperationType(DSOperationType operationType)
                                       throws java.lang.IllegalStateException

      Type of operation to invoke. A special "export" operation type is supported to perform a server export based on criteria.
      Parameters:
        `operationType` - New operationType value. Default value is "fetch"
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getOperationType

          public DSOperationType getOperationType()

      Type of operation to invoke. A special "export" operation type is supported to perform a server export based on criteria.
      Returns:
        Current operationType value. Default value is "fetch"

    - #### setOutputField

          public ServiceTask setOutputField(java.lang.String outputField)
                                     throws java.lang.IllegalStateException

      Field in the `process state` where this task writes outputs. See `TaskIO`.

      See `outputFieldList` for a shorthand method to save the full operation response data.

      Overrides:
        `setOutputField` in class `Task`
      Parameters:
        `outputField` - New outputField value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `Task Input / Output`

    - #### getOutputField

          public java.lang.String getOutputField()

      Field in the `process state` where this task writes outputs. See `TaskIO`.

      See `outputFieldList` for a shorthand method to save the full operation response data.

      Overrides:
        `getOutputField` in class `Task`
      Returns:
        Current outputField value. Default value is null
      See Also:
        `Task Input / Output`

    - #### setOutputFieldList

          public ServiceTask setOutputFieldList(java.lang.String... outputFieldList)
                                         throws java.lang.IllegalStateException

      List of multiple fields in the `process state` where this task will write outputs. See `TaskIO`.

      If `outputField` is also specified, it will be implicitly added to the `outputFieldList` if it is not already present.

      In addition to pulling individual fields from the task operation result and placing them into the process state the full response data can also be written into the process state without specifying individual fields. Prefix a destination field path with a "$" (ex. $orderHeader) causes the entire `dsResponse.data` to be saved.

      Overrides:
        `setOutputFieldList` in class `Task`
      Parameters:
        `outputFieldList` - New outputFieldList value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `Task Input / Output`

    - #### getOutputFieldList

          public java.lang.String[] getOutputFieldList()

      List of multiple fields in the `process state` where this task will write outputs. See `TaskIO`.

      If `outputField` is also specified, it will be implicitly added to the `outputFieldList` if it is not already present.

      In addition to pulling individual fields from the task operation result and placing them into the process state the full response data can also be written into the process state without specifying individual fields. Prefix a destination field path with a "$" (ex. $orderHeader) causes the entire `dsResponse.data` to be saved.

      Overrides:
        `getOutputFieldList` in class `Task`
      Returns:
        Current outputFieldList value. Default value is null
      See Also:
        `Task Input / Output`

    - #### setPassThruOutput

          public ServiceTask 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:
        `ServiceTask` 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

    - #### setSort

          public ServiceTask setSort(SortSpecifier... sort)
                              throws java.lang.IllegalStateException

      An array of `SortSpecifier` objects used to set up the sort configuration for a fetch.
      Parameters:
        `sort` - New sort value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created

    - #### getSort

          public SortSpecifier[] getSort()

      An array of `SortSpecifier` objects used to set up the sort configuration for a fetch.
      Returns:
        Current sort value. Default value is null

    - #### setSummaryFunctions

          public ServiceTask setSummaryFunctions(java.util.Map<java.lang.String,SummaryFunctionType> summaryFunctions)
                                          throws java.lang.IllegalStateException

      A mapping from field names to `summary functions` to be applied to each field for a fetch.

      See the `Server Summaries overview` for examples of usage.

      Parameters:
        `summaryFunctions` - New summaryFunctions value. Default value is null
      Returns:
        `ServiceTask` instance, for chaining setter calls
      Throws:
        `java.lang.IllegalStateException` - this property cannot be changed after the underlying component has been created
      See Also:
        `setGroupBy(java.lang.String...)`, `Server Summaries`

    - #### getSummaryFunctions

          public java.util.Map<java.lang.String,SummaryFunctionType> getSummaryFunctions()

      A mapping from field names to `summary functions` to be applied to each field for a fetch.

      See the `Server Summaries overview` for examples of usage.

      Returns:
        Current summaryFunctions value. Default value is null
      See Also:
        `getGroupBy()`, `Server Summaries`

    - #### setValues

          public ServiceTask setValues(Record values)
                                throws java.lang.IllegalStateException

      Values to be submitted for "update", "add" and "remove" operations.

      Similar to `Criteria`, data values prefixed with "$" will be treated as a `TaskInputExpression`. Use `fixedValues` for any values that start with "$" but should be treated as a literal.

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

    - #### getValues

          public Record getValues()

      Values to be submitted for "update", "add" and "remove" operations.

      Similar to `Criteria`, data values prefixed with "$" will be treated as a `TaskInputExpression`. Use `fixedValues` for any values that start with "$" but should be treated as a literal.

      Returns:
        Current values value. Default value is null

    - #### getDataSource

          public DataSource getDataSource()

      DataSource ID or DataSource instance to be used.
      Returns:
        DataSource

    - #### setDataSource

          public void setDataSource(java.lang.String dataSource)

      DataSource ID or DataSource instance to be used.
      Parameters:
        `dataSource` - dataSource Default value is null

    - #### setDataSource

          public void setDataSource(DataSource dataSource)

      DataSource ID or DataSource instance to be used.
      Parameters:
        `dataSource` - dataSource Default value is null