Class ServiceTask

All Implemented Interfaces:
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.

  • Constructor Details

    • ServiceTask

      public ServiceTask()
    • ServiceTask

      public ServiceTask(JavaScriptObject jsObj)
  • Method Details

    • getOrCreateRef

      public static ServiceTask getOrCreateRef(JavaScriptObject jsObj)
    • create

      public JavaScriptObject create()
      Overrides:
      create in class Task
    • setCriteria

      public ServiceTask setCriteria(Criteria criteria) throws 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:
      IllegalStateException - this property cannot be changed after the underlying component has been created
      See Also:
    • 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:
    • setExportFormat

      public ServiceTask setExportFormat(ExportFormat exportFormat) throws 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:
      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(String failureElement) throws 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:
      IllegalStateException - this property cannot be changed after the underlying component has been created
    • getFailureElement

      public 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 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:
      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 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:
      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(String... groupBy) throws 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:
      IllegalStateException - this property cannot be changed after the underlying component has been created
      See Also:
    • getGroupBy

      public 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:
    • setOperationId

      public ServiceTask setOperationId(String operationId) throws IllegalStateException
      The operationId to invoke.
      Parameters:
      operationId - New operationId value. Default value is null
      Returns:
      ServiceTask instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the underlying component has been created
    • getOperationId

      public String getOperationId()
      The operationId to invoke.
      Returns:
      Current operationId value. Default value is null
    • setOperationType

      public ServiceTask setOperationType(DSOperationType operationType) throws 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:
      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(String outputField) throws 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:
      IllegalStateException - this property cannot be changed after the underlying component has been created
      See Also:
    • getOutputField

      public 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:
    • setOutputFieldList

      public ServiceTask setOutputFieldList(String... outputFieldList) throws 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:
      IllegalStateException - this property cannot be changed after the underlying component has been created
      See Also:
    • getOutputFieldList

      public 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:
    • setPassThruOutput

      public ServiceTask 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:
      ServiceTask 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
    • setSort

      public ServiceTask setSort(SortSpecifier... sort) throws 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:
      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(Map<String,SummaryFunctionType> summaryFunctions) throws 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:
      IllegalStateException - this property cannot be changed after the underlying component has been created
      See Also:
    • getSummaryFunctions

      public Map<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:
    • setValues

      public ServiceTask setValues(Record values) throws 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:
      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(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