Just a comment...
PTC provides a mechanism to prevent checkin if ModelCheck errors are > some value.
We are of the opinion that this is not the best way to handle. You want the data checked in - possibly to allow another user to fix the problems that caused the errors.
Instead, you need to prevent the data from maturing such that it can be used by the business (e.g. prevent getting to Released state). We added code in our Promotion workflow that branches if any affected object has ModelCheck errors (ignores warnings). This works very well.