Set the Default Value of CDT Fields Based on a User Input

Interface patterns give you an opportunity to explore different interface designs. Be sure to check out How to Adapt a Pattern for Your Application.

Goal

Set the value of a CDT field based on a user input.

This design pattern is not recommended for offline interfaces because reflecting immediate changes in an interface based on user interaction requires a connection to the server.

Expression

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
a!localVariables(
  local!myCdt: 'type!{http://www.appian.com/ae/types/2009}LabelValue'(),
  a!formLayout(
    label: "Example: Default Value Based on User Input",
    instructions: "local!myCdt: " & local!myCdt,
    contents: {
      a!textField(
        label: "Label",
        instructions: "Value saved: " & local!myCdt.label,
        value: local!myCdt.label,
        saveInto: {
          local!myCdt.label,
          a!save(local!myCdt.value, append(save!value, "@example.com"))
        },
        refreshAfter: "KEYPRESS"
      ),
      a!textField(
        label: "Value",
        instructions: "Value saved: " & local!myCdt.value,
        value: local!myCdt.value,
        saveInto: local!myCdt.value,
        refreshAfter: "KEYPRESS"
      )
    },
    buttons: a!buttonLayout(
      primaryButtons: a!buttonWidget(
        label: "Submit",
        submit: true
      )
    )
  )
)

Test it out

  1. Type into the first text field, and notice that the second text field is pre-populated. The instructions of the form show the value of the CDT variable.

To write your data to process

Any Type is not a supported data type in the process modeler. Before creating the process model, you will need to create a CDT that matches the data structure of local!myCdt.
  1. Save your interface as sailRecipe
  2. Create rule input: myCdt (CDT)
  3. Remove the localVariables() function
  4. Delete local variable: local!myCdt
  5. In your expression, replace:
    • local!myCdt with ri!myCdt
  6. In your process model, on the process start form or forms tab of an activity, enter the name of your interface in the search box and select it
  7. Click Yes when the process modeler asks, "Do you want to import the rule inputs?"
    • On a task form, change the records node inputs to data type of the CDT used in the interface.
    • On a start form, change the records process variable to data type of the CDT used in the interface.
Open in Github Built: Wed, Aug 17, 2022 (01:05:05 PM)
FEEDBACK