We're in the design phase of creating cross-channel communication for business processes. We use CRM, Mobile, Kiosk, and other channels to send and receive messages to and from Appian. Our goal is to develop a web API that enables message exchange between the various channels in our ecosystem. Outside of Appian, we have a solid architecture for data flows and event-driven management between these microservices.
We're interested in learning about best practices for determining the target process ID in the receive API.
We use the correlationId as a consistent key across all channels to avoid exposing internal IDs. After a process starts, we store the correlationId in a process variable. There are several approaches to obtaining the process ID using the correlationId, but we're looking for the best solution. One approach I've found is to create a process report to filter by the process variable. However, this would require creating separate process reports for each case.
Another approach would be to store the process ID and correlation ID in a database. We would appreciate your recommendations on best practices regarding this setup.
Discussion posts and replies are publicly visible
ahmadb803565 said:However, this would require creating separate process reports for each case.
Why this?
But, storing process ID and correlation ID in a DB is a good approach.
For the first point, I'm referring to the report for each process model (car loan, KYC, etc.). As you know, we stored the correlation ID in the process variable. Based on our current knowledge—please correct me if I'm wrong—if we want to search for the process variable, we should create a report for each individual process model.
There is no need to create a report for each model. Assuming that the variable name is consistent, you can use the report "Details for Process Model", and then pass a list of relevant models as the context.
I'm responding from my personal account since I'm currently on vacation. From a performance standpoint, which approach is considered more efficient: the database or the report?
Any performance question depends on the expected load. If you do this once a second, I would go with a process report.
Certainly more than one per second, as our mobile app has high-demand requests that could be sent to the BPM.
Also, there’s a cron job that could start a process for each customer to perform various business validations and actions.
Then, I suggest to calculate the expected load and do some performance testing.