Interface Object

Overview

Interfaces can be designed visually, by dragging and dropping components, or programmatically, by generating components via expressions. This topic describes the features and functionality available when creating interfaces. If you are familiar with these concepts and want help in building your interface, please refer to the pages in the Build section of the documentation.

interface_designer_panes.png

New interfaces are created from the context of an application. Use the New menu within an application to create a new interface and open it for editing.

For functional examples of different design patterns, see the Interface Recipes page. These examples will help you learn key component concepts and can be used as a starting point for your implementation.

Start with a Template or Example

When the interface has not yet been defined, a list of template options are available in design mode (shown below). These options give you a starting point from which to build your interface.

interface_designer_templates.png

When a template is selected, the interface definition as well as any inputs or test data are updated with the template and the live view displays the resulting interface. There are two categories of templates: outlines and examples.

Outlines generate basic expressions for common layouts and use cases. These templates provide structural skeletons to use as a quick starting point that will be enhanced into a richer interface.

  • The Form and Page outline templates contain basic layouts and some common elements you'll typically put in them, such as sections and columns.
  • The Master-Detail and Drilldown outline templates each contain a grid of data but showcase two different ways to show detail about a particular row in the grid. To modify either of these templates for use in your interface, replace the pre-defined data set with your data, update the links in the grid with the value you want to save, and add your own components to the details section.
  • The Wizard outline template contains a functional, multi-page wizard with a confirmation at the end. To modify this for use in your interface, add your own components to the pre-defined pages and add new pages as necessary following the same pattern.

Examples are fully-formed interfaces that demonstrate the richness, density, and dynamism that Appian interfaces can offer. These templates are a great way to get ideas on how to display data and to learn how to apply best practices. However, as these templates generate complete expressions, inputs, and test data, it is not advised to use these templates as a starting point for a new interface.

  • The Request Form example template demonstrates using validations and validation groups, a "form-in-form" pattern to add a new option to a radio button field, and a working editable grid with calculated columns. This template also contains both a Submit and a Cancel button, where the Cancel button saves true into ri!cancel to indicate that the form was not completed.
  • The Sales Dashboard example template showcases dynamic positive and negative styling of KPIs based on set thresholds and takes advantage of grid row selection to filter the Pipeline chart by specific account executives. This template uses randomly generated data that will change during testing. Press the 'Test' button in the header when using this template to try it out for yourself!
  • The Faculty Record example template showcases the ever-expanding capabilities of Appian components to build beautiful, dense interfaces. This template also demonstrates how to leverage Appian's mobile awareness functions to create a tailored experience for users on mobile devices. Check it out for yourself using the mobile device options on the Preview tab when viewing this example template.
  • The Landing Page example template demonstrates how to use linked cards for navigation and boxes to display detailed information specific to the current user. This template showcases a design paradigm commonly used for Sites.

For information on how to use the Report Builder, please refer to Use the Report Builder.

Set Interface Properties

To modify the interface properties, go to Properties in the Settings menu, as shown below.

This opens the Interface Properties dialog, where you can modify the description, folder, and make the interface available for offline use. For more information about offline interfaces, see designing interfaces for offline use.

Properties

Each interface has the following properties.

Property Name Description
Name The name that will be used when executing an interface. Names are case-insensitive and must be unique across interfaces, integrations, expression rules, query rules, constants, and functions. Interfaces can be renamed in Appian Designer, see Renaming Design Objects for more information.
Description Supplemental information about the interface that is displayed in the inline help within the expression editor and the application contents grid.
Save In The rule folder that the interface is saved into.
Make Available Offline Makes an interface available for offline mobile. This property is only available if offline mobile is enabled for the environment in the Appian Administration Console.
Rule Inputs Rule inputs are used to pass data in and out of an interface. Rule inputs are configured within the interface object.
  • Name: The name that will be used when referencing the input within the interface definition, such as ri!input, or when passing arguments by keyword. Input names are case insensitive and must be unique within a given interface.
  • Type: Rule inputs can be either a system or custom data type.
  • Array: Rule inputs can be either a single value or an array of values.
Default Test Values A common test scenario that can be used when modifying or testing an interface. Default test values are configured within the interface object.
Interface Definition The interface is defined using an expression that returns one or more interface components. The definition is configured within the interface object, using either design mode or expression mode.

Security

Interface Object Security

The security rolemap of the interface object itself controls who can see or modify the interface definition and properties.

The following actions can be completed by each role:

Actions Administrator Editor Viewer Deny
Evaluate the interface Yes Yes Yes Yes
View the interface definition Yes Yes Yes No
Update the interface definition Yes Yes No No
View the security in the application view Yes Yes No No
Rename the interface Yes Yes No No
Delete the interface Yes No No No
Update the security Yes No No No

By default, interfaces inherit the security of the folder that they are saved in. To view or modify the security of an interface, go to an application that contains the interface. Select it in the grid and then click the Security button in the grid toolbar. Unchecking the Inherit security from parent box will allow you to add new items to the rolemap or modify existing items.

User Interface Security

The security of the interface that is viewed by the user is controlled by the Appian object that uses that interface. For example, to see the interface for a Tempo report, users need to have at least view rights to the Tempo report.

For more information on how to secure Appian objects that can display interfaces to users, see Tempo Report Security, and Configuring Security for a Record Type.

Data Security

Security for the data displayed on an interface is based on the security of the underlying data source. Users must have at least view rights to the data to view it within an interface. If a user does not have view rights to part of the data on an interface, the interface may fail to load.

Note: Hiding data through interface expression configurations does not secure the underlying data. It only determines what does not display on the interface.

For more information on how to configure the security for the underlying data source, see Configuring Data Store Security and Configuring Process Security.

Expression Evaluation Context

In general, the interface expression runs under the context of the user viewing the interface. In the specific case where a user is viewing a process task that has been accepted by another user, the interface expression runs under the context of the task owner (the user who accepted the task).

See the User Contexts for Expressions page for more information on what user context is used when evaluating activity class parameters.

Versions

Each time you modify and save an interface, a new version is created. All objects that use the interface will use the latest version. All versions are accessible to designers who can view the interface, and an interface can be reverted back to a previous version at any time.

For information on how to manage object versions, see Managing Object Versions.

Editing an Interface

When you save a new version of an interface, the latest version will be available immediately. This means that record views, reports, process tasks and other interfaces that use this interface will immediately use the new version. It is therefore important to carefully consider the impact on running processes when changing interface definitions.

Appian recommends that you follow these best practices to facilitate the change management of interfaces:

  • When calling rules in your interface definition, pass rule inputs by keyword.
  • Take advantage of entity-backed records and design short-lived processes. See the Record Design page for more information.
  • If the version of your interface must remain in sync with the version of your process, create new interfaces rather than a new version, or use conditional logic to invoke the new behavior in the new version of your interface. Either approach will let older process instances continue to use the old behavior of the interface.

Keyboard Shortcuts

Adept designers can leverage several keyboard shortcuts to build interfaces more fluidly. There are general keyboard shortcuts that can be used for overall interface design, as well as keyboard shortcuts that enhance functionality specific to design mode and expression mode respectively.

The following keyboard shortcuts can be used in both design mode and expression mode:

  • Toggle between design mode and expression mode (Ctrl+M for Windows and Mac)
  • Add new rule input (Ctrl+I for Windows, Cmd+I for Mac)
  • Test interface (Ctrl+Enter for Windows, Cmd+Enter for Mac)
  • Undo (Ctrl+Z for Windows, Cmd+Z for Mac)
  • Redo (Ctrl+Shift+Z for Windows, Cmd+Shift+Z for Mac) Note: Undo/Redo in design mode will undo/redo changes to last interface state; in expression mode, this action will only undo/redo changes to text within the interface definition. Therefore, Undo/Redo can only be used to undo/redo changes within the same mode. For example, you cannot undo an action taken in expression mode by using the Undo function in design mode.

The following keyboard shortcuts are for component-level actions in design mode:

  • Duplicate the selected component (Ctrl+D for Windows, Cmd+D for Mac)
  • Delete the selected component (Ctrl+Del for Windows, Cmd+Del for Mac)

The following keyboard shortcuts are available when interacting with the expression editor in an interface:

Action Windows Mac
Close find/replace dialog ESC ESC
Collapse/Expand code block ALT+L COMMAND+OPTION+L
Comment code block CTRL+/ COMMAND+/
Copy CTRL+C COMMAND+C
Cut CTRL+X COMMAND+X
Decrease Indent CTRL+[ COMMAND+[
Delete line CTRL+D COMMAND+D
Delete group before cursor CTRL+Backspace OPTION+Backspace
Open find dialog CTRL+F COMMAND+F
Open find and replace dialog CTRL+H COMMAND+H
Format expression CTRL+SHIFT+F CTRL+SHIFT+F
Increase Indent CTRL+] COMMAND+]
Move cursor before group CTRL+Left OPTION+Left
Move cursor after group CTRL+Right OPTION+Right
Move cursor to line start Home COMMAND+Left
Move cursor to line end End COMMAND+Right
Open object definition CTRL+Click on object name COMMAND+Click on object name
Paste CTRL+V COMMAND+V
Redo CTRL+Y COMMAND+Y, COMMAND+SHIFT+Z
Select all CTRL+A COMMAND+A
Select group before cursor CTRL+SHIFT+Left OPTION+SHIFT+Left
Select group after cursor CTRL+SHIFT+Right OPTION+SHIFT+Right
Select previous occurrence SHIFT+ALT+Left CTRL+OPTION+Left
Select next occurrence SHIFT+ALT+Right CTRL+OPTION+Right
Highlight all occurrences Double Click Word Double Click Word
Highlight all text inside Double Click Parenthesis Double Click Parenthesis
Undo CTRL+Z COMMAND+Z

In addition, expression editor toolbar provides you with a list of common actions that can be used when interacting with the expression editor:

  • Format
  • Decrease Indent
  • Increase Indent
  • Comment
  • Find
  • Replace

Note: For a quick reference of these shortcuts as you are working, hover over the ? icon in the top right of the expression editor.

Save Interface As

If your interface is intended to be used as a report or an application action, you can configure that within the interface using Save as… in the Settings menu.

Some fields in the Save As form may be pre-populated with information based on your interface definition and the application that contains the interface.

Save as Report

You can create a report directly from within the interface object. This automatically creates a report that calls the interface and makes it available from the Reports tab in Tempo.

To save an interface as a report, use the Report option in the Save Interface As dialog.

When created, the report is added to the selected application. Reports created this way use the same default security as reports created from the application itself, as described here.

Save as Application Action

You can create an application action directly from within the interface object. This automatically creates a process model with a start form that calls the interface, including a process parameter for each input, and creates an action on the selected application, making it available from the Actions tab in Tempo.

To save an interface as an action, use the Application Action option in the Save Interface As dialog.

You can use the Save & Edit button to open the process model and immediately begin building the rest of the process flow.

When created, the new process model is added to the selected application and the application is published. Process models created this way use the same default security as process models created from the application itself, as described here.

FEEDBACK