Let me see if I understand.
You created a custom widget and are using the widget's applyContext method to get the GUID.
You then can use that GUID to do things like call Microflows.
If you are asking about best practice, then yes, that is how custom widgets receive context.
Everything you said, if I understand correctly, sounds perfectly fine and normal.
I don't know the full scope of your widget, however, so I couldn't review it in its entirety.
I have used modeler version 5.0 so I hope the following is possible in your configuration. I had a similar requirement and created a transient entity in the data model. (Persistable setting to no) As non-persistent entities do not exist in the database, you will have to supply data for the dataview. So you configure the data view to get its data from a microflow. In the microflow, create a new object of the entity and commit it. You may set values, these would appear on the page. Be sure to check the option to update the client. A normal submit button would just commit the object, which is no use here. So I added a microflow button to the data view control bar and removed the save button. The microflow button would call the microflow doing the actual work. And it will receive the transient object as parameter. Note that you may want to close the page from within your microflow. This ensures that a fresh object is created every time the page is shown. Even when you show another page from your microflow, the start page will be in the stack. This may come in handy but when control is returned to your start page, no new object will be created as the page was already loaded.
I hope this helps