There is a simple way to do this.
Set up persistence on all the Items that can trigger the rule.
If your rule is triggered by multiple Items instead of a Group, make sure the Items are members of a Group anyway.
Inside your Rule you can get the Item that was most recently updated (i.e. the the triggering Item) with the following line:
val trigger = gMyGroup.members.sortBy[lastUpdate].last
This assumes that updates to the members of the Group do not occur so close together (hundreds of milliseconds or less) that an update occurs between the time that the last update occurred and line above finishes.
Also, realize that for a Rule that uses a Group Item received update as the trigger, the Rule will be triggered multiple times for one update to an Item in that Group.
In addition, you cannot use a periodic cron strategy (e.g. everyMinute) because you need the timestamp of the most recent value to be when the Item was actually updated, not when the cron time period ended.
Finally, ALL of the Items in the Group must have been persisted to the DB at least once before the above rule will work. When an Item has not been persisted, lastUpdate returns null.