What is the best approach to add CreatedBy/ModifiedBy Attributes within an Entity

What is the best approach to add CreatedBy/ModifiedBy Attributes within an Entity

I'm looking for the best way to implement tracking of changes at the record level within an entity. Specifically, the attributes of CreatedBy (user), CreatedDate (date time), ModifiedBy (user), ModifiedDate (date time).

Are there system values that are automatically appended to every entity and updated automatically when the record is created or modified?.  If so, how do I access/provide visibility?

Or, must I manually add attributes of this type?  If so, how do I update them?
I think there are only two main ways of doing this.

1) Add a database triggers to update these field whenever a record is created or inserted. Note that this is outside Outsystems and you have to maintain this yourself.

2) Create a data layer espace that contains the tables and then publicly exposes Actions that perform these functions. That is, you create a CreateRecord, UpdateRecord, etc which takes the record to be created or updated, updates the created and updated fields, and then calls the platform Create and Update.
I was thinking this would be relatively simple and straightforward.  But I guess not.  So basically that means the following:

1. There is no way to incorporate the CurrDateTime() attached to an attribute other than as the Default Value?
2. There is no way to simply incorporate a session variable to populate a "user" type of field?
Gerry's #2 approach is the BEST approach to this, period. You should never be directly accessing the Create/Delete/Update Entity actions from your screens... I know, that's the default behavior with IntelliWarp... but it's really not a sound practive. Make a business logic layer which handles all of these things.

You can use Session.UserId for the user ID in your business layer, but keep in mind that actions run in timers, processes, Web Services, etc. have a null Session.UserId so never assume that it has a value.