In this Appian design meta where the best practice is to configure entity-backed records, I have been struggling to come up with a good way to handle the case where there is a chain of several users who need to update some central record in succession, and these updates are usually not performed quickly (it may take many weeks or months for a user to complete their part of the process). I thought maybe the community might be able to help me out by describing how they have solved a similar problem.
There are a number of examples of processes in my organization that involve several people gradually building up a record, sort of like this: "first this person fills out these three fields, then this other person fills out these two fields, then this other person fills out four other fields," and so on. However, we also need the flexibility to have other users make updates to the record in the middle of this task chain.
I have tried a few different application designs that use entity-backed records to capture these kinds of processes (I refuse to design a process-backed record; updating data type definitions just causes too many problems), but I'm not satisfied with any of them.
The best design so far has been to maintain information in the record about the state of the process (i.e. the current stage and the username of the next person who should act). I created a separate process model for each step in the process, and users complete their "task" by initiating these processes as related actions. Only the related action corresponding to the current stage is available to be initiated, and only the "next action owner" and the application admins can view that related action. I emulate some functionality of Tasks by sending an email to a user when they are assigned as the "next action owner", building a report to show records of this type for which the logged in user is the "next action owner", and configuring weekly reminders to users who have at least one action pending.
The benefits of this design are that we don't have to deal with any long-running process instances, and we are able to have other users update the record in the middle of the task chain without worrying about race conditions. However, we sacrifice the ability to use Appian's native task management capabilities, and I've often found it to be a hard sell to explain to users why nothing from this application shows up in the Tasks tab in Tempo when many of our other applications do use Tasks. We have a lot of knowledge workers who use many different applications in our environment. Perhaps the most significant drawback is that this design caused the application to be so much more complex than the portal application that it replaced. It's no longer possible to see what the whole process looks like just by opening up the process modeler.
I'm hoping that someone out there has come up with a better way to configure an application to manage these kinds of processes. Looking forward to hearing some new ideas!
Discussion posts and replies are publicly visible
© 2020 Appian. All rights reserved.