Appian released the new version 22.3 of their software on September 25 2022. In the past three months, Appian added a few larger and many smaller features to the software. I am going to focus on the most significant change and the impact on how we design applications.
My book “Low-Code Application Development with Appian” was published using Appian version 22.1. In this post, I give you an update on what has changed since then and what you should keep in mind when working with the latest Appian version.
Find the full release notes following this link: https://docs.appian.com/suite/help/22.3/Appian_Release_Notes.html
Records Data Modeling
Before Appian 22.3, creating a Record meant you had to define the underlying database tables first. My preferred way, simple, and most low-code-style, is, to create some CDTs, and a DataStore which then manages the database tables. Then create the record on top of this table and enable syncing for all the fancy features like relationships, custom record fields, queries across relationships and multi-record aggregation and filtering.
With Appian 22.3, we have a new way of defining the data structure for a record and the database table at the same time.
With the also new Write Record and Delete Record smart services, we can manage our data. So, no need for CDTs and DataStores anymore? Well, yes, in theory, and depending on your use case. Let’s have a closer look to understand how it works.
Database Table Definition
When defining record source fields, Appian will generate a SQL script which you can download. You also have the option to tell Appian to execute this script. What you cannot do, is to download the script, adjust it to your needs and upload it for automatic execution. This means that in case you need to configure certain fields in a different way, you will need to maintain that script yourself and outside Appian.
I consider this to be a major drawback of this approach compared to CDTs where I can download, modify and upload the XSD that represents that data type. In that XSD I can configure the database table in almost all details. And, as the XSD is managed along the CDT, Appian will also take care of updating the database tables when deploying to another environment.
And, as of now, Appian only supports MariaDB for Records managed database tables.
Text Field Limitations
This new feature only works with synchronized Records. This means that Appian keeps an internal copy of the data and synchronizes it with the underlying database table. In this internal database, text fields are limited to 4000 characters. Now, when you create source fields for a Record, Appian also limits this to 4000 characters and uses the datatype VARCHAR(4000) to do so. A single row in the database is limited to a maximum of 16384 characters in VARCHAR fields. This means that you cannot have more than 4 of these fields. Appian will display a warning in case you try to add more than 16384 characters in sum.
All database systems provide data types dedicated to store longer text. For MariaDB these are TEXT with 65 535, MEDIUMTEXT with 16 777 215 and LONGTEXT with 4 294 967 295 characters. And you can add any number of these fields to your table.
Record Types in Process
With this release, Appian finally supports Process Variables using Record Types. You can now pass your Record Type data directly to a process without the need to create a CDT and a DataStore to read and write data to the database.
When you pass data when configuring a related action, keep in mind that the value rv!record only contains the primary key field and the fields used to display the record title. To pass other fields or all fields, you have to either pass each individual field by referencing it or query the whole record using a!queryRecordType().
Next, the Write Records smart service allows you to write data to the internal synced data and to the underlying database table. This node can also write multiple records at the same time, but only of one type. This is in contrast to the Write to Multiple DataStore Entity smart service, which supports writing to multiple tables at the same time. As these smart services also represents the transactional boundaries, you cannot write to multiple tables within one transaction using Write Records.
At last, there is a detail about Process Reports you need to know about. With this version, Appian does not support adding individual fields of a Record Type process variable to a Process Report. It allows you to reference fields, but then shows an error message.
In a chat with Appian, I learned that, for now, the only way to add Record Type data to a Process Report is by adding the whole Process Variable, but not individual fields. The other option is, to copy some of the fields to separate Process Variables and add these to the report.
This is my current level of experience with this new feature. By sharing this, I hope to support you im making your design decisions for applications you are about to design right now.
I really like the direction this development is taking. Some of the disadvantages I see at the moment I have mentioned above. I have a lively exchange with Appian on this and hope that the inconsistencies will be cleared up in the coming versions.
Since my book was published, Appian released two new versions. To you as a reader, my strong suggestion is to just follow the book and revisit new or updates features later. CDTs and DataStores will not go away any time soon, and there are many use cases which cannot be implemented using synchronized records and record managed database tables.
New Design Resource
Appian added an important new resource for interface design. I highly recommend this to everybody. In case you have a new UX/UI expert in your team having no experience with Appian, this page includes material dedicated to this role. Learn the details of Appian design and get inspired by the design proposals.