...
- Array types are limited to primitive, built in, and embedded entity types. They are intended to allow embedded values that are transported along with a message or entity and consequently
- Queue, Set and Map types can only be used with non embedded entities and may only use other non embedded entities as their values.
Tip |
---|
Thinks of arrays as being for use with messages and embedded entities. Collections are for use in referencing non embedded embedded entities elsewhere in an application's state graph. |
...
Code Block | ||
---|---|---|
| ||
public interface IMessage extends IRogNode, IRogMessage, IRogValidatable{ /** * Tests if this object has any validation errors. */ public boolean isValid(); /** * Collects validation errors into the provided list. It is illegal for the * caller to hold onto the List of XStrings beyond the lifespace of this * object. * * @param results A results list into which validation errors will be collected. * @param beanPathPrefix The bean path prefix to use when identifying invalid * fields or null if validating a top level entity. */ public void getValidationErrors(List<XString> results, String beanPathPrefix); } |
Model Evolution and Compatibility
Because Message and Entities are serialized and deserialized it is important that modeled objects can evolve over time without breaking the ability to deserialize objects from a previous evolution of a model. For example if the type of a message field is changed from one release of your application to the next, a receiver that is still on an older version that receives the message won't be able to deserialize the message. To ensure that such such issues don't occur follow the set of guidelines and rules outlined below. Similarly if your application is configured to persist to a transaction log and you later try to read from the transaction log with the newly generated code it won't be able to read from the older serialization.
...
There are a few additional compatibility issues to consider if the generated code will be shared between multiple projects which is covered in Runtime Compatibility
Next Steps
Once you have modeled your messages and state, you'll need to decide on what message encoding to generate and generate the state The following sections cover these topics.
...