Form controls

The following tables provide an outline of all the form controls and associated properties available on Process Management.

Summary of supported controls

Control Value type Description Supported properties Required properties Supported child items
bp:flow n/a The flow bind, globals, sync, image, title, showProgress, $onSubmit, $onSync
page
bp:page n/a Individual steps within the flow name, bind, caption, number, collection, valueCaption, captions, valueType, visible, onServer
section
bp:section n/a Cards underneath a step name, bind, caption, text, number, collection, valueCaption, captions, valueType, visible, validate, onServer

label, text, textarea, integer, number, radio, combo, checkbox, checkgroup, date, datetime, currency, attachment, object, objects, value, image, integration

bp:label n/a Text label visible, image, caption

bp:text String Text field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, maxLength, hint, onServer

bp:textarea String Multiline text field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, maxLength, hint, onServer

bp:integer Integer Integer field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, min, max, step, onServer

bp:number Decimal Decimal field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, min, max, step, onServer

bp:radio String, which is the Enum Value code Radio buttons name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, options, where, image, onServer options
bp:combo String, which is the Enum Value code Dropdown selection name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, options, where, image, onServer options
bp:checkbox Boolean Checkbox name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, onServer

bp:checkgroup

String[]

Contains a collection of all questions that have been selected

Grouped checkboxes name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, min, max, onServer
checkbox
bp:date Timestamp Date field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, format, onServer

bp:datetime Timestamp Date time field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, format, onServer

bp:currency Currency Currency field name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, format, onServer

bp:attachment Message Attachment file picker name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, onServer

bp:attachments Message[] Multi attachment file picker name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, onServer

bp:object

Message

Contains the instance OID and any queried attributes

Object picker (M1) name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, valueType, valueCaption, order, filterPath, where, valueDescription, valueIcon, valueComment, valueInfo, customPicker, singleClickPicker, onServer valueType, valueCaption, filterPath
bp:objects

Message[]

Contains the instance OID and any queried attributes

Object picker (MM) name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, valueType, valueCaption, order, filterPath, where, valueDescription, valueIcon, valueComment, valueInfo, customPicker, singleClickPicker, onServer

valueType, valueCaption, filterPath

If assoc is specified, assocType is also required


bp:value any Hidden question for storing intermediate values name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, onServer

bp:image Message Images name, bind, sync, caption, text, initialize, visible, enabled, required, value, validate, onServer

bp:integration any Service call button name, caption, value, visible, enabled, required, validate, onServer, event, result (Optional) event
tools n/a Additional tools of a page n/a
tool
bp:tool Message tool button caption, visible, function

Property descriptions

Property Description
name The element reference name. Usually specified in the Domain Specific Language (DSL) as (bp:<element> <name> ...)
bind

The model attribute bind, which is defined as a string.

Defaults to the element reference name. Fields with a bind can then configure the sync behavior. Also, if the underlying model was updated after the form was launched, bound fields will have data conflicts appearing.

sync Flag that determines if this field would sync back to the model. Applicable only if the flow itself has a bind. By default, sync is set to "true" when the attribute is not readonly.
globals

Defines global properties on the flow.

title Defines the title text on the browser tab.
showProgress Boolean value to show the left sidebar on desktop. Set to "true" by default for multi-section forms and always hidden on mobile. Defaults to "false" for single page forms.
$onSubmit Event handler code that is triggered after the form is submitted.
$onSync Event handler code that is triggered after the form is submitted and approved.
enabled$submitted

Boolean value to enable questions after submissions. Used by approvers to complete questions. Set to "false" by default.

number Defines numbering for pages or sections. Specified as a string.
collection

Flag that determines if a page or section can be configured as a repeater. This flag is also inferred on bound elements if the underlying attribute is configured as an instance-collection.

By default, collection is set to "false". On bound fields, this will be "true" if the attribute is a collection.

onServer

This property can be configured to allow dynamic properties on the field to use server-side processing. In general, dynamic properties with metaclass or database dependencies need to be configured onServer.

Scheme
(bp:text q1
    (: caption "Calculate value and enablement on the server")
    (: value
        ((read-instance Person '(firstName lastName) '(and (= (@ firstName) "Tim") (= (@ lastName) "Lamont")) #f)'lastName)
    )
    (: enabled
        (and
            (not (null? (@ question q0)))
            (= "Lamont" ((read-instance Person '(firstName lastName) '(and (= (@ firstName) "Tim") (= (@ lastName) "Lamont")) #f)'lastName))
        )
    )
    (: onServer '(value enabled))
)
JavaScript
bp.text(q1,
  {
    caption: "Calculate value and enablement on the server",
    value: jsToScheme("((read-instance Person '(firstName lastName) '(and (= (@ firstName) \"Tim\") (= (@ lastName) \"Lamont\")) #f)'lastName)"),
    enabled: function () {
      ( $.question.q0 !== null ) && jsToScheme("(= \"Lamont\" ((read-instance Person '(firstName lastName) '(and (= (@ firstName) \"Tim\") (= (@ lastName) \"Lamont\")) #f)'lastName))")
    },
    onServer: jsToScheme("'(value enabled)")
  }
)
hint The hint text for the field.
initialize The initial field value.
min The minimum value for numerical questions. On checkgroups, this is the minimum number of items that have to be checked.
max The maximum value for numerical questions. On checkgroups, this is the maximum number of items that can be checked.
step

The step value (applicable on numerical questions). When this, along with min and max are configured, numerical type questions will use a slider control.

Scheme
(bp:integer integerQtn
    (: min 1)
    (: max 10)
    (: step 1)
)
JavaScript
bp.integer(integerQtn,
  {
    min: 1,
    max: 10,
    step: 1
  }
)
valueType The Metaclass type that the picker will query for. This is inferred for pickers that have binds specified.
valueCaption

The attribute name that drives the chip caption for each object. By default, it uses the class name attribute. On repeaters, this is a string that describes the repeater object. By default, it is the class caption attribute.

valueDescription The attribute name that drives the picker items description.
valueComment The attribute name that drives the picker items comment.
valueInfo The attribute name that drives the picker items name.
valueIcon The attribute name that drives the picker chip icons.
order The order by clause for object picker fields. Uses valueCaption by default.
filterPath The attribute to be used for typeahead search on pickers. Uses valueCaption by default.
singleClickPicker Boolean value allowing users to click once on a target object or objects input to open the picker. When enabled, the type-ahead option will be disabled.
customPicker

The name of the custom picker. Usually defined in ui.bp.pick.js.

Use cases for this are: adding additional filtering, changing the layout of results, adding custom logic.

/** Custom picker for entities filtered by FA and split code */
"entityFAPicker": function(q, a, p, v) {
    var faId = ui(bp.FilterValue, {validator: ["required"],
		handler: updateFAWhere}), 
		...
	//The js implementation must return a picker dialog
	view.dialog(function(selection, handler) {
   		return ui("MultipickerDialog", {
      	...
      	children: [ui("Picker", {caption: "Select status", ...}]
   		}
	});
}
format

The formatting code for dates and currency type questions.

Scheme
(bp:date dateQtn
	(: format "mediumDate")
)
JavaScript
bp.date(dateQtn,
  {
    format: "mediumDate"
  }
)
event Event handler code that is triggered when the integration button is clicked on. This is usually configured to trigger a third party service call.
result The handler for displaying results obtained from integration service call. By default, the result is configured to be successful while displaying the data received from the service call.
assoc

The attribute that points to the collection from the intersection class.

Scheme
(bp:objects entityParticipants
	(: caption "For Field")
	(: assoc "entity")
)
JavaScript
bp.objects(entityParticipants,
  {
    caption: "For Field",
	assoc: "entity"
  }
)
assocType The type of the attribute defined in the assoc property.

image

The associated image for a given field.

Scheme
(bp:radio i1
	(: caption "Radio Image with caption")
	(: options (collection "Image Option 1" "Image Option 2"))
	(: image "image:opportunity.jpg")
)
JavaScript
bp.radio(i1,
  {
    caption: "Radio Image with caption",
	options: ["Image Options 1", "Image Option 2"],
	image: "image:opportunity.jpg"
  }
)

Dynamic properties

The following properties will automatically recalculate whenever their dependencies change.

Property Description
value The field value.
required

The field requiredness. Default is false.
On bound questions, this defaults to true if the attribute is required.

validate

The field validation. Errors appear as red text upon completion. The validation result format is usually the following:
(<validation result as a boolean> . <String error message>)
Validation is successful if #t is returned. If the return value is #f or is a string, it will fail.

enabled

Controls fields being grayed out on the form. Defaults to "true".
On bound fields, this defaults to "true" if the attribute is not readonly. Otherwise it defaults to "false".

caption

The caption of the field. On bound questions, this defaults to the attribute caption.

captions The summary caption for a repeating page/section element.
options

The enumeration options on the field. Can be defined in the following ways:

  • Enumeration class. For example, (: options Country)
  • A class with bp:OBJECT_AS_ENUM aspect applied to it. For example, (: options AddressType)
  • Manually defined strings. For example, (: options (collection "Option1" "Option2" "Option3"))
text The subtitle description on the field.
where

The where clause used by pickers to filter out entries. For example,  `(= (@ name) (@ question firstName))

visible

Controls fields being hidden on the form. Defaults to "true".