In my case, I use parameters for the transient Fragment windows that I'm displaying.
I use scopes for building different CDI object hierarchies. Say you have 3 open IntelliJ projects, each distinct window gets a ProjectScope. When you wire up those 3 views, things like "filename" will appear several times through the app, one per window. If you want to display a dialog from one of these 3 Views, create a fragment and pass in the arguments. This is referred to as "MDI" in the docs. You write your program as though there were just one window at a time and the scope lets you bring up more than one mini-app without any crosstalk.