I am posing the question of how to use Smart Objects the 'right' way in an overall architecture design. I am starting to think of Smart Objects as Classes and using them accordingly but then I quickly start running into issues.
For example, we are writing a system where a user places an 'Order' to start a workflow process - there are many different kinds of orders but each of them have the same set of base data; a situation where I would typically make a base 'order' class and extend from it for each specific order type. In the Smart Object world, we don't quite have inheritance yet so would I make a smart object to represent the base order data and one to represent specific order types, and have the order form deal with them both, tying them together by 'OrderId'? So one order form would have an instance of the 'base order' smart object for the common data and a 'specific order' smart object for the data specific to the type of order being ordered? Is that a good approach, or should I just make one smart object that has both the base and specific data for each order type, to heck with the redundant base order data in each smart object?
Secondly, we have a number of situations where the user may continually append line items to an order, like a parent-child relationship. Specifically, they place an order for a service and within the order they may specify one to many items to perform the service on. It is easy to represent and capture this data in InfoPath via repeating tables, but how to shove it into a Smart Object? Would I createa smart object to represent one of these items, and create them on the fly for each item the user specifies in their order? Or would the order smart object just stick these child selections into a multi-value or comma-delimited property? Are hierarchical smart objects possible in any way?
I hope the experts out there can point me in the right direction here, I need to nail down the architecture for our project soon and I just have so many questions!