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(…) ;


Dotted-name :


             Identifier .  Dotted-name

Thanks to Paul R for this info.

Comments (5)

  1. Schalk says:

    Thanks Scott.

    Sooooo. About those All Blacks…

    That makes it, what, 3 tries vs 8 in the TrNations.

  2. Balaji says:

    Somehow it didn’t give me an error when I use this in an expression shape. What I’m missing??

    if(iRecordCount == 0) {throw new System.Exception("My error Description");}

  3. Ayjay... says:

    Cheers for that Scott…

    This link from Charles Young is also worth a read:

    Comparing XLANG/s and C#


    I’ve seen loads of things you can’t do with XLANG/s, love to see some posts on what you can do with it 😉

  4. Balaji says:

    Ok, I found out.

    "if" statement do work in Expression shape but not in "Message Assignment". Please refer my earlier comment.