This page describes the difference between sync filters and default filters, and how to apply them to your record type.
After choosing the source of your record type, you may decide that you don't need all the data from your source, or that you want to exclude certain data to prevent end users from viewing it. From the record type, you can add filters that exclude source data that does not meet the specified criteria.
Depending on whether your record type has data sync enabled, the way you filter source data will vary:
If you have a synced record type, you can apply sync filters to only sync data that meets specific conditions.
If you have an unsynced record type, you can apply default filters to only allow certain records to appear in the record list and views based on the conditions you specify.
These options are not applicable to record types that use a web service as the source (synced or unsynced). Instead, you can use the record data source expression to conditionally filter out records.
Note: In the latest version of Appian, existing source filters are now called sync filters.
When you enable data sync on your record type, you can apply sync filters to specify which data is synced and available in the record type. Sync filters allow you to exclude unnecessary data, and even work with data sources that would otherwise cause your record type to exceed the synced row limit.
For example, let's say you have a database with 6 million rows of support case data. To sync and access all of this data, you could create two different record types: the Open Case record type and the Closed Case record type. Both record types would point to the same database, but they each use a sync filter so that they only sync cases with a specific status.
You can add sync filters when you configure the source of a record type, or anytime after configuring the source by navigating to the Data Model page of the record type. The sections below explain how to add sync filters after the source of the record type has been configured.
To add a sync filter, use one of the following options:
AND
union.a!queryLogicalExpression()
.Basic mode allows you to easily set up filters using three criteria: Field, Condition, and Value.
To add a sync filter using Basic mode:
Configure the following properties:
Property | Action |
---|---|
Field | Select a source field to filter by. Only source types that can be converted to Appian types appear in the dropdown. |
Condition | Select the operator to apply to the filter. |
Value | Use the context menu next to the field to select how you want to pass the value into the filter. The options in this menu change based on the data type of the field selected. You can enter a static value or enter an expression. |
AND
operator.Expression mode allows you to create more complex filters. You can switch to expression mode at any time during your filter configuration. For example, if you want to use OR
to combine filters instead of AND
, simply create all of your filters in Basic mode, then switch to Expression mode and change AND
to OR
for the a!queryLogicalExpression()
operator parameter.
When configuring sync filters in expression mode, you must use a list of a!queryFilter() or a!queryLogicalExpression().
To configure a sync filter using Expression mode:
In the expression editor, enter an expression that returns a list of a!queryFilter()
or a!queryLogicalExpression()
.
Note: Sync filters do not support the now()
or loggedinuser()
function, or any object references called from the rule!
or cons!
domain.
For example, the following sync filter expression would only sync opportunities that have a status of active and an opportunity level of either "Must have" or "Should have". Any data that does not meet these filter conditions will not be synced in Appian.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
(Has a status of "Active" AND has an opportunity level of "Must have" OR "Should have")
*/
a!queryLogicalExpression(
operator: "AND",
logicalExpressions: {
a!queryLogicalExpression(
operator: "AND",
filters: a!queryFilter(
field: "status",
operator: "=",
value: "Active")
),
a!queryLogicalExpression(
operator: "OR",
filters: {
a!queryFilter(field: "opportunityLevel", operator: "=", value: "Must have"),
a!queryFilter(field: "opportunityLevel", operator: "=", value: "Should have")
}
)
}
)
When your record type does not have data sync enabled, you can use default filters to specify which records appear in the record list and views based on the conditions you specify.
When a record is filtered out by a default filter:
Each default filter defines a condition that must be true for a record to display in the list. If you have multiple conditions, the record must meet all conditions in order to display.
For example, in a Case record type, you may want case managers to view all customer support cases, but you only want support engineers to see the cases that are assigned to them. Using a default filter, you could create a filter condition that states if a logged in user is a member of the Support Engineers group, only return cases assigned to the logged in user; Otherwise, return all customer support cases.
Tip: If your record type has data sync enabled, you can use record-level security to achieve this same use case.
To create a default filter, use one of the following options:
a!queryFilter()
or a!queryLogicalExpression()
.Creating filters by field allows you to easily set up filters using three criteria: Field, Operator, and Value. Multiple filters are combined using the AND
operator.
To create a default filter by field:
Creating filters using an expression allows you to create more complex filters. When configuring sync filters in Expression mode, you must use an expression containing a list of a!queryFilter() or a!queryLogicalExpression().
To create a default filter using an expression:
queryFilter
or queryLogicalExpression
.For example, the following default filter expression returns cases that are either assigned to the logged in user, or cases that are not assigned to the "Global Users" group but are either Urgent or High priority:
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
33
34
35
36
37
/*
(Assigned to User OR (NOT Assigned to "Global Users" AND (priority="Urgent" OR priority="High")))
*/
if(a!isUserMemberOfGroup(loggedInUser(),cons!CASE_GROUP_GLOBAL_VIEWERS),
{},
a!queryLogicalExpression(
operator: "OR",
logicalExpressions: {
a!queryLogicalExpression(
operator: "AND",
filters: a!queryFilter(
field: "userName",
operator: "=",
value: loggedInUser())
),
a!queryLogicalExpression(
operator: "AND",
logicalExpressions: {
a!queryLogicalExpression(
operator: "AND",
filters: a!queryFilter(
field: "userName",
operator: "<>",
value: cons!CASE_ADMIN_DB_KEY_1)
),
a!queryLogicalExpression(
operator: "OR",
filters: {
a!queryFilter(field: "priority", operator: "=", value: "Urgent"),
a!queryFilter(field: "priority", operator: "=", value: "High")
}
)
}
)
}
)
)
Configure Record Type Filters