We've seen this problems many times with Oracle Workflow. I don't really know what the cause of the problem is, but it seemed to happen whenever we made a modification to the code (even though everything was compiled correctly). It might have happened on it's own or after some other modification (i wasn't really in charge of workflow).

We were able to work around it by reloading then recompiling all of the invalid objects in whatever package is in error, in our case WFCORE and WFENG. To recompile we just wrote a small script that generated a list of all invalid objects in the database and compiled them, a la

<font face="courier">
SELECT 'ALTER '||OBJECT_TYPE||' '||OWNER||'.'||OBJECT_NAME||' COMPILE;'
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID' AND OBJECT_TYPE <> 'PACKAGE BODY'
/
SELECT 'ALTER PACKAGE '||OWNER||'.'||OBJECT_NAME||' COMPILE BODY;'
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID' AND OBJECT_TYPE = 'PACKAGE BODY'
/
</font>

so reload whatever packages are complaining, then spool that output to another file, then run it and see if that fixes your problem.

if anybody knows the real reason for this, or how to prevent it, i'd love to hear it.