Skip to main content

DynamicForm

The DynamicFormViewTemplate is a type of ViewTemplate that enables the creation of dynamic forms within ADITO. Unlike conventional forms that rely on predefined EntityFields, the fields of a DynamicForm are generated dynamically at runtime using a JSON-based field definition.

Usage Context

Example Implementation

An example implementation of this ViewTemplate is DynamicForm as used in WorkflowTaskForm_view.

Appearance in the Client

The DynamicForm appears in all Contexts that allow the user to create a WorkflowTask. In these Contexts, a Dashlet is available for WorkflowTasks. When a specific task is selected in the WorkflowTaskPreview_view, the associated form can be displayed, filled out, and the task can then be finalized.

Configuration

To configure a DynamicFormViewTemplate, two properties must be defined:

formDefinition

This property references an EntityField that provides the JSON string containing the form field definitions.

info

The data source for this EntityField is typically a JDitoRecordContainer.

formResult

This property specifies the target EntityField that stores the results of the form after it has been saved. The data is stored in JSON format.

info

As with formDefinition, the data source for this EntityField is usually a JDitoRecordContainer.

Supported Content Types

The DynamicFormViewTemplate supports the following content types for form fields:

  • TEXT
  • NUMBER
  • DATE
  • BOOLEAN

JSON Field Definition

The formDefinition property must contain a JSON array of form objects. Each form object describes a single form field and adheres to a consistent structure, as shown below.

Structure of a Form Object

{
"type": "object",
"properties": {
"id": { "type": "string" },
"name": { "type": "string" },
"contentType": { "type": "string" },
"isReadable": { "type": "boolean" },
"isWritable": { "type": "boolean" },
"isRequired": { "type": "boolean" },
"value": { "type": "string" },
"possibleItems": {
"type": "object"
// Format: key(string) : value(string)
}
}
}

The possibleItems property can be used to define a list of selectable options, useful for dropdowns or selection fields.

Example Configuration Pattern

The following is an example of a JSON form object that defines a readable and writable text field with optional selection values.

{
"id": "propId",
"name": "propName",
"contentType": "TEXT",
"isReadable": true,
"isWritable": true,
"isRequired": false,
"possibleItems": {
"value1": "Value 1",
"value2": "Value 2"
}
}

Figure: Example configuration of a DynamicForm field with selectable options