The point of a dashboard is to give the user pertinent information at a glance. The user's role is a good starting point however there is much more information you could collect to determine what dashboard elements are important to the user.
For example your users may have two roles however seeing both dashboards may not be appropriate for them. They may be a Project Manager 90% of the time and a Department Manager 10%. So to show dashboard elements for both roles with the same importance on screen would not be ideal.
It would be better to give the user the choice of what dashboard elements they wanted to see. For example you could allow them to select a profile from a predefined list or/and they could cherry pick elements form a central store. This approach allows the user to choose what elements are important to them.
Another approach would be for the application to learn about the users habits and build the dashboard elements based on that information. For example the user goes to the Project Manager pages all the time but has never gone to the Department Manager screens. Therefore the application could tailor the dashboard more to a Project Manager with maybe a 'see more' link off to the other dashboard elements.
A combination of all these would also work, allowing the user to pick and choose as they please but also the application suggesting dashboard elements based on their habits. For example if the user is always visiting the Project Manager pages as above but they have not chosen a Project Manager dashboard element the system could suggest that they add one.