For several reasons I'm working on a (OCL-based) implementation of the BPEL validator. Currently I'm hanging on SA00010 and want to find out how the "original" validator checks the rule.

The validation rule seems to be implemented in org.eclipse.bpel.validator.rules.VariableValidator. Actually there are three methods that implement the rule for MessageType, Element and Type nodes. But I don't get the point how these methods actually validate the rule. Basically, all methods do the same: They check whether the attribute node is not null (e.g. checkAttributeNode (mNode, fElementNode, AT_ELEMENT , KIND_NODE) ), but as far as I see the result of this check is not used.

So I have two questions:
1. What is the idea behind validating SA00010 as it has been done here (The description "make sure that * is visible from the imports" does not help me much)?
2. Why is it sufficient to do it the way as in the VariableValidator?

Looking at checkAttributeNode() it does not *just* check to see if the node reference is null, but also reports an error if the reference is unresolved - for example, if a variable's type is known (i.e. has been defined somewhere). This happens in BasicAdapter#isResolved().

Not sure if this helps, but the validator is described here (but you have probably already seen this page).

Hmm, looks like the links from the Validation Rules are broken - they're supposed to display the source code from CVS (I think). I'll try to fix this as time permits.