Hi HuiSheng,
thanks for your comment.
I would go for option 1 (in fact has already tested that and it seems to work properly for signaling). Another thing is to keep the approuch consistent since we expose main process instance as Execution I would say we shall give same type for sub process instance.
Another question was about securing SubProcessActivity to do not signal it while sub process is still active. I did a small fix that throws an exception when user tries to signal sub process while it is not finished. Do you think it is right way to do?