What's valid and what's not in the Orchestration expression shape?

“if” and “while” statements are handled by the decision shape – you cannot put an “if” or “while” into an expression shape.

Ternary ops are not supported (viz., ?:).

Comments work fine, but you need at least one statement in the expression box.

Simple types (integer, string, floating point) cannot have the dot operator applied to them, (viz., no member access)

For non-simple types, you can only access public member functions and properties and static literal fields.

Compound assignment (+=, -=, *=, etc) is not supported.

Nor is more than one assignment operator in a statement.

Assignment within an “if” or “while” predicate is not supported.

Increment, decrement are not supported (++, --).

For message parts, the only member access allowed is on distinguished fields.

Indexers or parameterized properties are not supported.

Delegates and events are not supported.

foreach, for, do/while, break and continue are not supported.

All valid expression statements are of the form:

Dotted-name = expression ;

Obj.funcall(…) ;

Where:

Dotted-name :

             Identifier,

             Identifier . Dotted-name

Thanks to Paul R for this info.