Appian Community and Appian Academy are being upgraded. As a part of the upgrade, Appian Community is currently in read-only mode, and user registration is disabled until August 3. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!

The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.

Process Variable Consistency Across Parallel Flows and Exception Handling in Appian

Certified Senior Developer

Hi all,

 

I have a question about process variables behavior in parallel flows and exception handling.

 

Scenario:

- The parent process has a process variable (pv!x) initialized with value = 5.

- The process splits into two parallel branches.

- Both branches start with pv!x = 5.

 

Then:

- Branch A continues execution, updates pv!x, and reaches the merge point.

- The parent process continues and later updates pv!x = 6.

- Meanwhile, Branch B is still active and waiting in a task (for example, a user input or a task with an exception flow handling an error).

 

Question:

Will Branch B see the updated value (pv!x = 6) while it is still in that task/exception state, or will it continue working with the original value (pv!x = 5) that was evaluated when the branch started?

 

In other words:

Are process variables dynamically re-evaluated for already running parallel activities, or do they keep the value from the moment the activity started?

 

Thanks in advance!

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer

    Within a single process model, process variables (PVs) are global in scope. So, if Branch A updates pv!x to 6, then Branch B will see pv!x = 6, assuming the update has already occurred, because both branches are working on the same shared process state.

    However, when you introduce a subprocess (child process) in a branch, the behavior is different. At the moment the subprocess starts, it receives a copy of the process variable values from the parent.
    If pv!x is still 5 at that time, the subprocess will receive 5, even if the parent updates pv!x to 6 later.

    Therefore, subprocess interactions behave like pass-by-value, not pass-by-reference. Because:
    The child process receives a snapshot of the data at invocation time and It does not automatically see future updates made in the parent process.

Reply
  • 0
    Certified Lead Developer

    Within a single process model, process variables (PVs) are global in scope. So, if Branch A updates pv!x to 6, then Branch B will see pv!x = 6, assuming the update has already occurred, because both branches are working on the same shared process state.

    However, when you introduce a subprocess (child process) in a branch, the behavior is different. At the moment the subprocess starts, it receives a copy of the process variable values from the parent.
    If pv!x is still 5 at that time, the subprocess will receive 5, even if the parent updates pv!x to 6 later.

    Therefore, subprocess interactions behave like pass-by-value, not pass-by-reference. Because:
    The child process receives a snapshot of the data at invocation time and It does not automatically see future updates made in the parent process.

Children
No Data