In case anyone reads this post nowadays (like me)...
Since Mx5 you can use the getExecutionType() method on the IContext class. You could write a simple Java action for this. The method returns one of the ExecutionType Enum constants: CLIENT, CLIENT_ASYNC, CLIENT_ASYNC_MONITORED, CUSTOM, SCHEDULED_EVENT, UNKNOWN or WEB_SERVICE.
I would create two microflows that wrap the real microflow and pass a different value for a boolean parameter.
You could use a java action that checks if the current context is a sudo context. If so it is run from either another microflow/java action or it is triggered from a scheduled event.
edit: blegh, my bad, you should not get the context but rather the session and check if that is a systemsession if so then it should be a scheduled event or a microflow that is triggered specifically within that system session. Other then that you cannot check if a microflow is triggered from a scheduled event. If you really want to check that in your microflow you should add an extra layer to your microflows and add a boolean as input parameter, scheduledEvent. You could then fill this boolean with the appropriate value.
Create an entity with attributes
1.User 2.Date 3.ObjectName 4.Message
Create a microflow with parameters Object and Message. Both string.
Create an object and set the values as follow:
you can place this infront of any microflow, using a microflow call.
the parameters for the call will be objectname, which is the microflow it is placed in. and the message can be that which is being retrieved or called.
with this you can track which users are calling the microflow
Then obviously you must create a report where this will be displayed.
Maybe you can expand on this by adding a boolean parameter to check when a SE calls the microflow or something
Your own solution is the best / simplest ;)