Hi All.

In case when in one server action I have modification of Data Entities and Site Property, do all "actions" are covered by the same transaction? 



Hi Jakub,

What are you trying to do ? Its not clear.. Are you trying to update data in an entity & the value of a site property ? Can you elaborate your scenario ? 

Thanks Marko,

In my scenario i have to be sure that in case of any unexpected error all data changed by me will be rolled back. One of variables is stored in site properties, couse it have to be accesible to all sessions, and because it is used very offen, i have used site property. It's pseudo system date.

And as I'm sure how transactions are handled with data entities, i'm not sure about site properties. It's also saved in database, but i'm not sure is this operation (changing site property) is handled with the same transaction as the others.

Also this question is because during the tests there was a server error reported to user "There was an error processing uour request. Please try again later..." and after that, pseudo system date is changed, and I dont have any Entities changed. So maybe assuming that site property can act as Entity data is wrong. I'm thinking aloud...

So maybe question should be: What are site properties - technicaly ?

BR, Jakub

Hi Jakub Lubowicki,

Interesting question, site properties are a "Global variable that has a constant value, or a value that does not change often." [1]

"Site properties should be seen as constants, not variables. If you change them on each screen or on each session consider using a database table to store site property information and the corresponding backoffice functionality for its management." [2]

Does this answer your question?

Cheers!


[1] https://success.outsystems.com/Documentation/11/Reference/OutSystems_Language/Data/Handling_Data/Site_Property

[2] https://success.outsystems.com/Documentation/Best_Practices/Performance_Best_Practices/Performance_Best_Practices_-_Logic

Thanks Marco,

I will explain why I took this aproach. 

Busines need is to have independent system date, not related to "real date". All actions in the system are based on this date, it can be thousands a day. This pseudo system date is changed once a day.

So putting it to some Entitiy with parameters will couse reads on every operation, using site property for this purpose seemed to be a good choice.

Except this, is there somewhere any extra information about site properties like posts from Ricardo Silva - "Understanding the OutSystems .... "

Cheers !

Hi Jakub Lubowicki,

Use caching in Entities (not a site property) and I think your problem is solved ;)

Maro,

That was my firts thought. But please tell me, i will cache method to get my system date, and in some moment i will change this date, how this agregate will know that I have changed the value? Or is there a way to force refresh of cached data ?

Solution

Hi Jakub Lubowicki,

You can consider the following:

  1. use an interval of cache that is lower than the frequency of update the data, in a way should be impossible to have cache in non valid scenarios. 
  2. invalidate the cache at the query eSpace.
  3. if none of the above is good enough think adding this approach: every time you modify the date, add a new record and mark it as active (extra attribute), then use a methods to fetch only the active one.

See here more info: 

https://success.outsystems.com/Support/Enterprise_Customers/Maintenance_and_Operations/Cache_Invalidation_in_OutSystems_11

Does this help?

Solution

Thank You very much Marco, this should solve my problem.

Jakub

Great to know Jakub Lubowicki,

Please mark the post as solved, in case you solved your question.

Cheers!