1. Since BPM Tools model the process – they kind of control the overall application.
2. Therefore your architecture is nothing but the architecture of the BPM Tool (and any external integration points).
3. You should avoid building UI outside BPM Tools. This is because any human Task/Activity requires the BPM Tool to throw a Task(UI) at the end user. This UI is visible only if the user logs into the BPM tool itself. Therfore you can’t really build any of this UI in a separate external application (without extensive workarounds).
4. You should not attempt to use BPM tools as a small part of a bigger overall solution. It should be other way round. BPM tool should be the main solution. If this is not done, you will derive very little benefit from the tool, and make your architecture complex (by resorting to inevitable workarounds).
5. Remember that BPM Tool is doing all of these: Controlling Process Flow, Throwing UI at the User, Collecting data and storing it in its own Process Database, Providing extensive reporting. So, if you try to do any of these activities outside the BPM Tool, you will not just not benefit from the tool, but also have to resort to find ways to make these things work outside the BPM Tool.
6. You can always store data in your own custom database too at any point in the Process.