ddumas wroteThis sounds interesting, but I am not understanding the concept of a temporary non-persisted BO, or a concept of a subprocess and reverting back to another process.
So far, I understand how to:
Model a BO in the config tool, Let's call that TempBO
When I issue a CREATE TempBO, even via a PROCESS, it always persists in the database.
RUN Process USING TempBO
Can you explain a bit more?
Dave
There are multiple types of BO:
Database AwareIM
Database External
LDAP
Not Persisted

Non persisted BOs exist only for the time that the process that created them runs. Consider them as akin to temporary variables (they aren't but you can pretend).
Create a BO that is non persisted, and give it a peer single attribute for your SendMemberMessages
So Process1 looks like
CREATE TempBO
Process2
Process 2 takes TempBO as an input
CREATE SendMemberMessage WITH [all your attribute values]
TempBO.psSMM=SendMemberMessage
At the end of Process2 control will return to Process1. You can chain multiple processes together. This is necessary where for example you do a FIND which returns more than one BO onto which you need to do other operations.
eg FIND all StudentExams returns 25 results. If you want to apply a grade based on the exam score you need to look at each one individually. The only way to achieve that is to create a subprocess (ie another process that you call from the current process). The subprocess when it runs would receive StudentExam as an input and these would be fed to the process one at a time.
This is obviously an example - there's more efficient ways to do this but I needed an example.
There is greater opportunity for code reuse if you make your processes smaller and allow them to be called from other processes when needed.
For example: If you can call an external API from multiple places, write the code for calling the API within one process and then reuse that process every time you want to call the API. This reduces the risk of typos etc.