Okay, so I don't think you can use row indexes in conditions (yet), so I would do the following:
- Create a section at the bottom of the form and set it to Hide Always and Save values.
- Add variables to store the values from each row
- Course 1, Instructor 1, Action 1
- Course 2, Instructor 2, Action 2
- etc.
- For each of those variables add a Function that grabs the value from the associated row of the table
- =INDEX(Table.Course,1),=INDEX(Table.Instructor,1)
- =INDEX(Table.Course,2),=INDEX(Table.Instructor,2)
- etc.
- In your process diagram, add an Inclusive Gateway with 6 user tasks (one for each possible row) and for the Conditions set them to something like
- Course1 != ""
- Course2 != ""
- etc.
- Set the assigned user based on the Instructor (you may or may not need a separate variable depending on your setup).
- Approval1: Assign to -> Instructor1
- Approval2: Assign to -> Instructor2
- Add an inclusive gateway after those tasks that merges the paths back together (inclusive should wait for all Active branches before proceeding to the next step).
Now, you will probably need to do a separate form for each user task because I can't think of a "cleaner" way to keep the tasks separated, but the hidden fields are what you would actually want to show along with some kind of "Response1" field (separate variable for each approval) and a standard Submit button on these additional forms instead of the table so you can track each approval/denial without affecting the other branches.
On your "Final" form, you could either show all the results in separate sections and set Field Rules to show if they have content, or you could use JavaScript to take all those fields and plug them back into the table with a "response" column added.
I wouldn't say this is necessarily an "elegant" solution, but it keeps all the tasks in the same business process, it allows you to separate the table rows, and it avoids problems with data being overwritten when users submit a form that requires changes to a shared table/fields.
The Indexes will only put values in for rows that have content, so if a user adds 3 rows, Rows 1-3 will populate and Conditions 1-3 will come back true, but Rows 4-6 will be empty and therefore the form should not hit those branches.