Often within a series of related business process definitions/services a collection of data is passed between them. If the collection of data is modified then the input and output variables and data mappings need to be updated for all these BPDs/services. Some BPDs/services may not need to access this data directly and may only need to pass the data onto other BPDs/services. Introducing a data envelope significantly reduces this maintenance overhead and provides a flexible mechanism for passing data indirectly between two BPDs/services without the BPDs/services in-between being aware of the data being transferred.
A Teamworks variable type is used to define a data envelope, as illustarted in figure 1. The data envelope variable type contains the entire collection data that is passed between the series of processes/services. The processes/services only reference the data envelope, so when the collection of data is modified then the input and output variables and data mappings do not need to be modified. The processes/services which are unaware of the contents of the data envelope do not need to be modified at all.
Figure 2 illustrates an example use of the data envelope design pattern which has been taken from the Send & Chase model (attached). The figure shows a series of BPDs and services that each have the following input and output parameters: