TalisMS is mostly a Middleware like FW. Or to put it simpler, there is a Request being sent to the code via any type of “door” or IO device, like HTTP, CLI, Keyboard etc. That request goes through a chain (ChainLink) of objects which build a Response object, each step adds a bit of info to the Response. This Response object is being returned at the end to the requesting IO device. The Response/Request objects are easily serialized, which means I can easily distribute this system over many machines/languages, as the Response/Request objects should be the only dependencies between each step of the process.
Each Chain/request/Flow also has a Context object associated with it. The Context object is injected to each ChainLink by the parent link. The purpose of the Context is to make some resources or general data available to all the ChainLinks in the flow, like resources, API connections (can be sockets), File pointers etc.
While within the same instance of TalisMS there is no issue, if the Response/Request are transferred to another message processing system, or even another instance of TalisMS (Remember, this system is designed to be in a distributed environment) the Context object will not follow, it is not Serializable.
This becomes the responsibility of the developer to make sure, if there is a need, that what ever is encapsulated in the Context and needs to be transferred, will be added as a serialized piece of data to the Request object.