On this page
The quick take
Connect the data model to the user experience. Review record types, relationships, actions, queries, and security, then explain those choices using a project example.
Why interviewers ask about Records
Record types are the main way Appian applications work with data. Expect questions on record types, sync, relationships and record-level security in almost any Appian developer interview. A record type ties a data source to its views, actions and security, so these questions show whether you can follow data from the table all the way to the screen.
Core concepts to know
- Data source: database table vs process model (legacy)
- Sync: Optimized Data Access vs Direct Data Access
- Record Actions: record list actions and related actions
- Relationships: One-to-Many, Many-to-One, One-to-One
- Record-Level Security: automatic row-level filtering
- a!queryRecordType vs a!query: modern vs legacy query API
- a!writeRecords: writing data from SAIL interfaces
Records interview questions & answers
Q1. What are Appian Records, and how do they differ from a simple database table?
Read the answer
Appian Records are a data layer that combines a data source (a database table or a process model) with built-in UI, security, and process automation. Compared with a raw database table, a Record Type gives you: a built-in List View and Summary View; Record Actions, which are buttons that launch processes; Record-level security through record-level filters; Related Records for automatic joins; and Search/filtering with a!queryRecordType. Interfaces and processes then point at the Record Type instead of at the table.
Q2. What is the difference between an Entity-Backed and a Process-Backed Record?
Read the answer
Most record types today use a database table as their source, and with Optimized Data Access or Direct Data Access (features enabled) they connect to the table without a data store entity or CDT. That is the standard choice for business data like Employees or Orders. A record type can also use a process model as its source, so each process instance is a record, but that only works with Direct Data Access with features disabled. The docs call that a legacy record type: it supports basic filtering and security, without relationships or the other data fabric features.
Q3. What is Sync in Appian Records, and when should you enable it?
Read the answer
Sync is what Appian now calls Optimized Data Access. Appian copies the source data into its own data service and queries that copy, so queries stay fast and every data fabric feature (relationships, smart search, process analysis in Process HQ) is available. It is the recommended default. Writes made through smart services such as Write Records sync straight away; changes made outside Appian arrive on a scheduled sync. Watch the row limit for your tier (4 million on Standard, 20 million on Advanced, none on Premium) and use sync filters to leave out data you do not need. Choose Direct Data Access instead when you need data changed outside Appian immediately.
Q4. How do Record Actions work, and what are the types?
Read the answer
Record actions start a process model from your data. There are two types. A record list action starts from the record list and needs no existing record, so it is usually used to create one. A related action starts from a single record and passes that record to the process as context, so it is usually used to update or delete it. After configuring them in the record type, you can show them in a records-powered grid or a record action component.
Q5. How do you model relationships between Record Types?
Read the answer
You define relationships in the Record Type configuration by choosing the Related Record Type, the relationship type (One-to-Many, Many-to-One), and the joining fields. After that, you query related data with dot notation: recordType!Employee.fields.department.name. Define relationships at the Record Type level so they can be reused.
Q6. How does Record-Level Security work in Appian?
Read the answer
Record-Level Security restricts which records a user can see with a filter expression that Appian applies to every query, for example filter where assignedUserId = loggedInUser(). The filter is transparent to the user and cannot be bypassed. Object-level security controls who sees the Record Type; record-level security controls which rows are visible.
Q7. What is a!queryRecordType, and how does it differ from a!query?
Read the answer
a!queryRecordType is the newer, type-safe API for querying Appian Record Types. It enforces record-level security automatically, follows relationships through dot notation, and returns record data types. a!query reads Data Store Entities directly and does not apply that security for you. Use a!queryRecordType for new development.
Q8. How do you write data back to a Record Type from SAIL?
Read the answer
Call a!writeRecords() inside a component's saveInto, such as a button. Its records parameter takes record type values built with the recordType! domain, and onSuccess and onError take the saves to run afterwards. If a record has no primary key value it is created; if it has one it is updated. In a process model, the Write Records node does the same job, and it is the better fit when the write is part of a longer workflow.
Records Best Practices
- Always use a!queryRecordType, since it enforces security automatically
- Use Optimized Data Access (sync) unless you need data changed outside Appian immediately
- Define all relationships at the Record Type level, not in ad-hoc rules
- Use Record-Level Security Filters rather than post-query SAIL filtering
- Use a!writeRecords for writes from an interface and the Write Records node inside processes