Hi All,
What is the difference between calling a synchrous process via Subprocess and Start Process smart service nodes? Is it just that the first runs in the same thread / Appian engine and the latter runs in a separate thread / process to balance the workload? I know that Subprocesses are traditionally used in synchronous settings and are especially helpful when the child process is activity chained, but would it ever make sense to use the Start Process node in a synchronous setting? I've only primarily used Start Process nodes for asynchronous processes.
Discussion posts and replies are publicly visible
It's a little tricky to answer as they started off as pretty much completely separate things conceptually, and through a process similar to "convergent evolution", have grown closer together as feature-completeness items have been added to both (notably, "synchronous" mode for the Start Process node and function).
From an O&M standpoint, the Start Process node is a little immature yet as it continues to be a much bigger pain in the you-know-what to drill down in instances (sometimes impossible and sometimes just harder, depending on the particular node, version, and configuration), and similarly, drilling up from a child instance is sometimes blocked also. This doesn't affect "happy path" usage as much, but can severely hamper troubleshooting or testing, either during dev or during O&M bugfixing. Subprocess nodes are relatively trouble-free in this respect.
Other than that, at the moment it seems to be a case-by-case basis sort of thing, where you weigh the pros and cons of each approach given the use case and the potential future process load in question. I gotta say though, the modern version of Start Process has a much improved setup screen, and I hope they might update the Subprocess setup screen similarly someday.
Yes, you're right - Subprocess runs on the same engine/thread while Start Process runs on a separate engine for load balancing. Subprocess is best for synchronous calls when you need activity chaining (users flow seamlessly between parent-child forms) or pass variables by reference. Start Process synchronous mode makes sense when you need the child's output but don't need activity chaining - you get better performance, engine distribution, and autoscale support. Use Subprocess for tightly coupled processes, Start Process for loosely coupled ones that still need to return data.
Hi ,Are there any real time example where we can apply this .
Synchronous Start Process: Say You want to call a process that fetches customer details from a database/integration and return that data to the calling interface or process. Also it can be used for processes used for document generations. At completion Parent process can get new document generated or use the data from the store procedure call.
Synchronous Subprocess: You want to break a complex form into multiple steps using subprocesses, and maintain activity chaining for a seamless user experience.
Thank you .
Subprocess: Employee onboarding: HR fills basic info --> subprocess for IT equipment selection (user picks laptop/phone)--> returns to main form to complete setup (activity chained).The subprocess is used because the employee needs to actively interact with forms during the equipment selection.Start Process : Invoice processing: Main process calls "Calculate Tax" process → waits for tax amount → continues with payment processing (no user interaction needed).Start Process is used because no user interaction is needed - just the calculated result.Use Subprocess when users need to interact across processes. Use Start Process when you just need the output data, not user interaction.