SimPEL
Skip to end of metadata
Go to start of metadata
  • Variables assignment (foo = bar) has a by-copy semantic (like in BPEL) and not by-reference (like in most other languages).

Optional target namespace declaration. For process elements it defaults to ODE target namespace. Namespaces are optional. When no namespace is provided for the process, a default one is assumed.

Importing documents definitions. After import, elements can be referenced relatively.

Variable declaration is optional and mostly used to add some specific behavior to them. Modifiers in a variable declaration are its type, unique and external:

Subsequently variable assignment is fairly classic. Javascript code is supported natively anytime an expression can be passed (rvalues) or at some specific places of the process declaration (like before the process definition).

XML is a native type and can directly be included in-line, just like in E4X (including inner expressions). So creating an XML literal fragment is as easy as:

Process definition

Code that's surrounded by curly brackets is always assumed to be sequential, statements will be executed in the order they're defined.

Pick syntax, receive is the same thing without the pick wrapper

Flow, each block is a sequence. The signal and join instructions are here to model links,

If, else if and else:

While:

Repeat until:

Sequential foreach and parrallel foreach are two different constructs. Allow break?

Invoke syntax - toParts? fromParts?

Throw, faultVar is optional:

Wait, support now()+duration expression

Partner links must be defined before being used (but no explicit role definition is needed) and are associated with the closest surrounding scope. How they are bound to an endpoint or interface (service/port, Java class, ...) is outside of the scope of SimPEL and is meant to be specified by a deployment descriptor.

Correlation is achieved by declaring a function that will extract a value from a message and match it against another value. So there's no real correlation set per se, just a set of functions used to extract data from messages. We also introduce a special variable declarator that allows for some variables to be unique (and indexed).

We've separated the fault handling role of scopes (try...catch) from the eventing role (*Handlers).

For all variables that are passed inside blocks (mostly receive and event), a context can be provided as well. The is meant to introduce security context manipulations:

Examples

Hello world example

External counter example

Function definition in Javascript that returns an xpath function, plain javascript inside and allows to "hook" other expression languages. Those functions are also used for correlation (see later).

Labels
  • No labels