The change from 2.x to 3.x did remove the systems from the PulseEngine
The workflow of 2.x was
- Specify the data you want from Pulse
- Pulse would run, and pull that data back in an array
- The Pulse Engine would then use reflection to populate CDM classes with data from the array
- Users would get Pulse data via these CDM classes
This is actually pretty inefficient, since you specify the data you want, and its comes back in an array in the order you specified it, then items 3 and 4 are essentially unnecessary and only add to your run time.
The driving change for 3.x was to optimize the data exchange between C++ and Java, and provide the data to the user in a more simple fashion. The list returned contains the values of the data you requested in the units you requested.
But if you are using these CDM classes in a way where its just easier in your architecture to use a set of objects rather than an array, it would be pretty simple to create a new class that encapsulates all the CDM data containers (systems, compartments and substances) and uses reflection to push the array to the CDM classes like it did before. (Bringing back the code that did items 3 and 4 above)
But this would be adding a layer of complexity and time to your program that may not be necessary.
Is this something you are interested in?
The intent of this change was to optimize end users application of Pulse