Hello everyone,
I am trying to visualize the example stated in the Integration Patterns for Core Services Abstraction, real-time sync section of the Outsystems documentation
In the documentation, this example was given: ( Highlighted in Screenshot Below)
I'm having a hard time visualizing it. Say, I wanted to build that example in Outsystems. Is this how the "high-level" structure will be? (Image below)
In my diagram above (forgive me, I'm not good at diagrams), I made an example wherein Fleet Name, Fleet Number, and Fleet Vehicle Current Location is displayed on a screen. Let's say Fleet Name and Fleet Number rarely changes. So, I "cold-cache" that, right? Fleet Vehicle Current Location, on the other hand, changes often. So, I will have to fetch that from the API, right?
So basically, in the Fetch data action of my Screen UI, I will have an aggregate that fetches the "cold cached" data that rarely changes (Fleet Name, Fleet Number), and then I also have a call to fetch data from the API that gets the real-time Current Location of the Fleet vehicle? Kind of like this?
And in the CS module that will be the source of FleetDisplayData data fetch action will have something like this?
Looking forward to what your thoughts are. Feel free to be as detailed as possible, I am really getting into this architecture stuff and would love to drill the knowledge into my brain. Thank you.
Regards,
Zack
Hi,
Cold cache is indeed beneficial for performance if data does not change frequently.
So you are right, only cache the data that doesn't change frequently.
In the example that OutSystems gives in the link you shared, they distinguish summary fields (candidates for the cold cache) and detail fields (only required to show details for a single entry/record, and that are subject to frequent changes).
So understand that in an list screen with a table you would prefer to only query the cold cache, while when showing a detail screen, you can pass in the cold cache attributes from the current record of the list screen table, and call the external system API for the remaining detail fields.
This way only call the external system when you need the detail fields.
Daniel
Thanks Daniel. You're a beast! 💪