In our application we are only using work level urgency and not assignment level. This is because business does not treat different assignments differently but only case as a whole.
Now the get next work functionality (specifically the list view) uses only assignment level urgency to prioritize assignments. However to achieve our specific need, we need to have work level urgency. To achieve this i have 2 possible options. This post is to identify which options is inline with pega's best practice.
Option 1: Join the list view with work table and retrieve work urgency directly in list view for sorting.
Option 2: Create new assignment level SLAs which will behave same as work level SLAs and set the assignment urgency. This would then avoid customizing deprecated list view rule.
If your work object's urgency is what you care about, you could also use a declarative to set the value on the assignment at the time of creation. Much of it depends on how dynamic that value is. Definitely, if you are going to update the overall urgency, that mechanism will need to update the assignment urgency, regardless of how you choose to do it.
So the assignment urgency is always based on your work urgency. That means in my opinion the assignment urgency always reflects the work urgency and can therefore be used without any changes of the OOTB rules.
What I wrote above was just the first half of the truth as I found out later. To achieve the described behavior you need to implement a Declare OnChange to update the assignment urgency whenever the work urgency changes.