The save method should be called only when you are "activating" the CR and not during the approval process. You might need to return a success parameter or something from the check method.
However, one thing for sure, you must not save during check because check will be called at different points of time and not only during activation.