
Roberto,
1. In the 'component-model.xsd', the Switch element has the following element: <xsd:element ref="case" minOccurs="0" maxOccurs="unbounded"/>. Is the 'minOccurs' value ZERO correct? I think that this attribute should have the value 1 (one), unless there will exist an "otherwise" without a "case" element.
The switch element should allow one to specify only the "otherwise" clause, if no "case"s are defined. I am not sure that a simple <xsd:sequence> covers this correctly, but that is why there is a minOccurs="0".
2. Is it possible to have more than one cmp:switch element in the same level of a CDL and referring to the same lifecycle? If so, does the order of the switch matter?
Yes, this is allowed. Yes, order matters.
3. Should all the components execute a lifecycle operation or a switch can avoid a component to be called in a certain operation?
A switch can avoid components being called. However, this should be used carefully to ensure that the system is still left in a deterministic state after the transition has completed.
4. How to proceed when there is more than one ref to the same component? Should we execute more than one time the same operation on that component?
Good question. Cycles should be avoided, possibly an error case. However, as it is unspecified in the documentation, my recommendation would be to invoke the operation which should lead to a fault.
5. As we can have more than one "case" element for the swith, what does the otherwise mean? Should it execute when all case conditions are false or when the last one is false?
The case element follows that of BPEL. It is an "if-then-elseif" construct. Only one case should fire. Thus, the otherwise should only be used if all other case conditions are false. Stuart