A frequent AwareIM additional feature request is additional always in context objects to reduce dependence on SystemSettings and LoggedInRegularUser. I understand the common problem just using SystemSettings and LoggedInRegularUser is they get way too large (too many attributes).
I am guilty of having an enormous SystemSettings that has hit the mySQL row size limit. Not only is this ugly it adds a performance burden on AwareIM as it always loads this enormous row. I’ve found a ”work around” that seems to solve my problem and I’m keen to get critique from the learned AwareIM community.
As an example of the “work around” I have a set of 12 SystemSettings attributes that contain the current last 12 month as text “2019/April” through “2020/March”. These are used as column headings of a Query whose columns slide one month every month (so the query only shows the last 12 months columns). Anyway storing these in SystemSettings as ColHead_1 , ColHead_2 etc they render in the Query by using the token syntax of <<SystemSettings.ColHead_1>> <<SystemSettings.ColHead_2>> but this of course adds yet another 12 attributes to my already bloated SystemSettings.
So what I had done instead is create a separate object QueryCol with attributes Head_1, Head_2 etc and a single reference attribute from SystemSettings to the QueryCol object called ps_QueryCol. This reference has to be set once (I do it from my VP login processes). Then I change <<SystemSettings.ColHead_1>> <<SystemSettings.ColHead_2>> to <<SystemSettings.ps_QueryCol.Head_1>> <<SystemSettings.ps_QueryCol.Head_2>>. This seems to work fine. So I’m thinking rather than shoving everything into SystemSettings it would be better to create different objects and reference them from SystemSettings. Apart from reducing the bloat of SystemSettings I like the tidiness of having more smaller objects housing distinct sets of attributes.
I assume the same thing could be done to extend LoggedInRegularUser.
Am I missing something?..