Request for Change – DX API: Custom defined controls
We would like to have the possibility to define custom defined controls. The definition of the control must be passed by the DX API to the front-end. The definition of the customer defined control should be able to contain all kind of selected meta data of the case and selected case data.
Problem to be solved:
The front-end (FEP) wants to use custom defined controls to provide the user additional information and insights; for example:
Composite controls can take multiple inputs and map to multiple outputs. In Pega these are currently modeled as a custom layout with multiple controls inside, where the layout ID is used to identify the FEP composite.
There is an address lookup control in FEP, which communicates with an external address server. Full layout and interaction with the external server are modeled in FEP for consistent reuse by Pega and non-Pega FEP applications.
Some controls can even map to custom events. During authentication the process initializes a session with an external authentication server and passes the id to the authentication control. This control handles the full presentation and communication with the external server and returns a done or cancel event. There is a wish for a custom pxAuthentication control in Pega with a single authenticationId field. The custom done and cancel events should have corresponding event handling in Pega.
Or the file upload control, which uploads to an external file upload server and notifies when done. Pega initializes an empty dossier on the upload server and tells FEP the dossier id, allowed file types and maximum file size.
Even simple display-only controls can have custom fields. All Icons and images are stored in FEP for consistent reuse by all applications (also non-Pega FEP applications). FEP can render them by taking the name of an icon or image and displaying the corresponding graphic. In Pega only the pxIcon control is available, and it expects a reference to an image stored in Pega, which we don't have.
fpIcon: (name) => ()
fpImage: (name) => ()
Or the navigation header control, which takes as input the number of steps and the currently active step and outputs an event to indicate the desired step.