Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The output defines the path in the property store where the form data must be stored as JSON property after the form has been submitted. Example:

Code Block
input"output": "$uri:property:global/app/tld.domain.myapp/objectdata/person/v1/instance/"

Since path ends in a slash / the form framework identifies this as a new property creation and automatically appends the uuid of the new property as “filename” at the end of the path (since version 10). In versions < 10, you had to add the PE ${vars.property.uuid}

...

The PE variable at the end. This PE will be interpreted on the server side and replaced by the UUID of the property. This approach is deprecated and will be removed soon.

The form handling pipeline can listen to a property.created event on this path then in order to get informed when a new property was created on this path:

Code Block
pipeline:
  - event.listen:
      eventKey: property.created
      filter: ${body.target.path.contains('/tld.domain.myapp/objectdata/person/v1/instance/')}

The same way it works with property.updated event.

...

Code Block
"input": "$uri:property:global/app/tld.domain.myapp/objectdata/person/v1/instance/fe97df"

Which could return a form data (= model) as JSON to be edited similar to this:

...

Code Block
languagejson
{
  "title": "Person Form",
  "description": "A simple person form.",  
  ...
  
  "layout": {
    "orientation": "horizontal",
    "items": [ "horizontal",
    "items": [
      {
        "orientation": "vertical",
        "items": [
          {"field": "firstName"},
          {"field": "age"}
        ]
      },
      {
        "orientation": "vertical",
        "items": [
          {"field": "lastName"},
          {"field": "gender"}
        ]
      }
    ]
  } 
}

This example would produce a form with nested orientations like the one shown below:

...

field

Inside a layout element you can place field elements pointing to field ids (widgets). This element can contain additional attributes like these:

hidden

If set to true, the widget is not shown in the form, but the value from the input is sent to the backend on submit. Example:

Code Block
languagejson
      ...
      {
        "orientation": "vertical",
        "items": [
          {"field": "firstName"},age", "hidden": true}
        ]
   {"field": "age"}  },
      ]...

readonly

If set to true, the widget value cannot be changed. Example:

Code Block
languagejson
      ...
},
      {
        "orientation": "vertical",
        "items": [
          {"field": "lastNameage"},           {"field"readonly": "gender"true}
        ]
      }
    ],
  } 
}

This example would produce a form with nested orientations like the one shown below:

...

field

Inside a layout element you can place field elements pointing to field ids (widgets). This element can contain additional attributes like these:

hidden

...

    ...

height

Sets the height of this field, overwriting the default value in case the widget supports this attribute.

Example:

Code Block
languagejson
      ...
      {
        "orientation": "vertical",
        "items": [
          {"field": "agefirstName", "hiddenheight": true20}
        ]
      },
      ...

readonly

...

width

Sets the width of this field, overwriting the default value in case the widget supports this attribute.

Example:

Code Block
languagejson
      ...
      {
        "orientation": "vertical",
        "items": [
          {"field": "agefirstName", "readonlywidth": true30}
        ]
      },
      ...

Grouping with title and border

...

Internationalization (i18n)

TODOThe title and description of a form and also its validation messages can be internationalized (= translated to different languages). See here for more details, how this works: Internationalization (i18n).

Special Form Types

Document Understand Form (with AI support)

TODO

Variable substitution

...