You could consider doing a keepalive during your long running microflow? The Java API from ISession contains a keepAlive() function, you can consider to do this at strategic places in your microflow?
You don't want to overdo this but if on specific places in your microflow you'd run the function: this.getContext().getSession().keepAlive(); it would keep the session active and preventing the platform from collecting the session.
Also please note this keepAlive only works if you don't persist the sessions (without clustering). The keepAlive() function isn't one of our platform supported APIs and doesn't capture all cases. If you use clustering or persistentSessions you'll have to update and commit the session LastActive attribute field to the current date. This will make the platform think that the session was active.
BTW if you set the sessionTimeOut I would also recommend setting the customSetting: ClusterManagerActionInterval to reduce the unwanted effects. (Without specifying it the cluster manager is running twice per sessionTimeOut increasing this can have unwanted results).
See here for reference