Parent/Child Relationships Revisited
The technique is easiest to understand with an example. Let's assume we have a parent input process with 3 optional children. Normally, if the user was in Child #1, and they wanted to see some information from Child #3, they would have to return to the parent screen, then select the other child.
There is a way this can be set up so that they can go directly from one Child to another. The first step is to attach each of the other Children to the various Child Processes as Optional Children. In other words, Child 1 would have Child 2 and Child 3 as optional children, Child 2 would have Child 1 and Child 3 as optional children, and Child 3 would have Child 1 and Child 2 as optional children. In the additional attributes of each of these links, make sure you select END BEFORE for the Parent Disposition. The child constraints can be the same as if each of these Optional Children were being invoked directly from the parent. In other words, you can constrain the child records to fields in the Parent PCF file, even though the Parent PCF file is not the PCF file of the current process. This works because APPX still has the values from the parent record, and therefore they can be used in the constraint. You may also have to change the images on each Child to include references to the other optional children. In other words, on Child 1, you should include references to Child 2 and Child 3 on the image, so the user knows they can use those options. Ideally, image for the optional child legend should be the same for all three processes so the user is unaware that anything is changing. This is even more important in a GUI environment, the buttons should be in the same place regardless of what child is running, not bouncing all over the screen as they move from child to child.
How does it work? If the user is already in a Child process, and they select one of the other children, APPX will end the child they are currently in (because its Parent Disposition is set to END BEFORE) and then run the next child. This removes the first child from the process tree, so when they end the new child, they will return to the parent record. This is true, no matter how many times they flip between the three optional children.
The end result is a look & feel similar to a tabbed dialog box in Windows. A tabbed dialog box lets you click on any tab, any time, to switch between different screens. This technique lets you do the same thing with APPX's Optional Children.
That's it! The one thing to watch out for is code in the Post Invocation EP of the optional children. Since the Parent Disposition is set to END BEFORE, this code will never run. You may have to move it to the End of Process EP of the child.
Do you have a tip you want to pass on? Contact Us.