A BPML package document consists of one or more top-level definitions within the given target name and can import multiple definitions from other namespaces. Defines a process. A process is an activity set that is not contained within any other activity. Declares a service type definition that is implemented by this process. The normative attributes refer to a WSCI interface definition. Declares a process input/output parameter. The parameter name and type are required. The type can reference an XSD element or simple/complex type definition. The parameter may be optional or required, and a default value may be specified for optional parameters. The parameter may serve as input, output or both.

Connects two operations in two different port types. A synchronous connector is always of direct type, an asynchronous connector can be either direct or publish.

If the connector references a WSDL operation, the port type name is given by the portType attribute and the operation name is given by the name attribute and both attributes must be used.

Declares a property and its value in the current context.

The xpath attribute specifies an XPath expression that extracts the value from other instance properties.

The value element allows any static value to be specified in the form of mixed content in any schema. A null value is specified using the xsi:null attribute.

Other extension element can be used instead of the xpath attribute or value element, e.g. an XQueryX query.

If neither attribute or elements are used, the value is obtained form a property with the same name in the parent context is such a property (and context) do exist.

The base type type for all activity elements, those defined in BPML and those defined in other namespaces. It defines the optional name attribute and allows the documentation element. To define a new activity type (in a different namespace), define an element that extends the activity type and is in the substitution group of this element.

A collection of one or more activities that are performed in the same context.

The context definition is required in order to override any declaractions given in a parent context. An empty context element and a missing context element are equivalent.

Any activity element defined in BPML and any activity element that can substitute activity are allowed. At least one activity must be present in the activity set.

A condition expression. The expression is given as character data. If no extension attributes are used, the condition must be formulated as an XPath expression. Otherwise, the interpretation of the expression depend on the extension attributes used. The base type for all event handlers. An event handler defined the event to which it responds and the activity set that will be executed in response to that event.

An event handler that is triggered by an action. The event handler is triggered only if the action can be performed atomicly (including any failure condition).

If the action references a WSDL operation, the action can only reference a one-way or a request-response operation. Notification and solicit-response operations are not valid events.

An event handler that is triggered by a timeout.

The time-out is specified by a property that is either a date/time instant or a time duration, as specified by the type attribute.

For time duration, a reference point that is different than the instantiation of the event handler can be specified using the reference attribute. This could be a date/time instant property or a reference to the start or end time of an activity, transaction or process.

An event handler that is triggered by a fault.

The fault code is specified by its fully qualified name. If the fault code is unspecified, this event handler will respond to any fault for which no specified event handler exists.

Constructs an output from a fixed value, an XPath expression or another type of expression. The xpath attribute, value element and extension element are mutually exclusive. Constructs an output to be used by a message part. Specifies the message part by its unqualified name. Constructs an output to be used by an input parameter. Specifies the parameter by its unqualified name.

Defines the local declarations in the context of an activity set.

The process element defines a nested process that will be instantiated in that context and overrides any other definition with the same name that would be visible in this context.

The property element declares the value of a property as being local in this context and either copies the value from the parent context, or assigns a new value to the property.

The connect element connects two port type definitions that are local to this context, such as messages sent and received along these port types are not visible outside this context.

The exception elements defines event handlers for unexpected conditions that could occur while in this context and will cause the event handlers to be executed instead of any ongoing activity in this context.

The transaction element defines the transaction associated with this context. This can be an atomic or open transaction. The transaction name must be different than an activity, process or property name. Open and atomic transactions can be nested inside an outer open transaction.

Other context specific definitions are allowed using extension elements. The semantic of such contexts is not defined by BPML.

Activity set that is executed when compensating for the transaction. Parameters can be passsed to the activity set from the compensate activity. Only input parameters are allowed. Activty set to perform upon completion of all the activities in the context, or upon completion of all activities in an event handler, or upon termination of the context, but prior to the context being discarded.

Performs an atomic action.

If the action references a WSDL operation, the port type name is given by the portType attribute and the operation name is given by the operation attribute and both attributes must be used.

The action can be correlated to zero or more correlations using the correlate element.

The service instance against which the action is performed can be identified using the locate element. When referring to a WSDL operation, this element is used for both notification and solicit-response operations.

A complex action may involve the execution of a nested process, by instantiating that process and waiting for it to complete within the confines of the action. This can be done using the call. When referring to a WSDL operation this element is used only for request-response operations.

Other type of actions are supported by using extension attributes, in replacement to the portType and operation attributes.

Locates a service instance. Uses properties and a locator mechanism to locate the service instance.

If the property contains the end-point of the service instance, the property attribute names that property and no extension element should be used.

Otherwise, the locator attribute references a locator definition which defines the mechanism for locating the service instance.

Zero properties are required when referencing a static locator definition. One or more properties are required for a dynamic locator.

Correlates an action by referencing the correlation definition and indicating whether the correlation instance is instantiated by this action, or was instantiated before. The default is false. Executes all the activities in the activity set in no particular order (possibly but not necessarily in parallel).

Assigns a new value to the specified property.

The xpath attribute specifies an XPath expression that extracts the value from the instance properties.

The value element allows any static value to be specified in the form of mixed content in any schema. A null value is specified using the xsi:null attribute.

Other extension element can be used instead of the xpath attribute or value element, e.g. an XQueryX query.

Invokes a process and waits for it complete. The process must be defined in the same package (and namespace) and its definition must be accessible in the current context.

Selects one activity set and executes it.

The activity set is selected by an event handler. Two or more event handlers must be specified and the events must not overlap.

Compensate for all transaction instances that have completed in the current context.

The transaction instances are identified by the transaction name. A completed transaction instance can be compensated exactly once. This activity waits for all compensations to conclude.

Represents the passage of time.

The delay-out is specified by a property that is either a date/time instant or a time duration, as specified by the type attribute.

For time duration, a reference point that is different than the beginning of this activity can be specified using the reference attribute. This could be a date/time instant property or a reference to the start or end time of an activity, transaction or process.

An activity that does nothing. Can be used where an activity set is required, but no activity is performed (e.g. onMessage).

Causes a fault to occcur in the current context.

Repeats the activity set once for each item.

The select attribute is an XPath expression that is evaluated against the process instance properties and results in zero or more items. This activity is repeated once for each item in the list.

The current item is assigned to the property bpml:current that is local to the context of the activity set.

Waits for all instances of the specified process that were spawned in the current context to complete.

This activity does not wait for instances that were invoked by calling them. It will wait for instances that were spawned in the current context after the beginning of the activity.

If the count attribute is used, it provides the name of a property whose value is the number of process instance to wait for. This activity will wait until that number of instances has completed, whether before or during execution of the activity.

Executes all the activities in serial order.

Instantiates a process without waiting for it to complete.

The process must be defined in the same package (and namespace) and its definition must be accessible in the current context.

The instance list in the current context is modified, such that join can be used to wait for all process instances to complete.

Selects one activity set and executes it.

For each case, its condition is evaluated and if true, that activity set is executed. In such a case, no other condition will be evaluated.

Conditions are evaluated in the order in which the case elements are specified.

If all conditions have evaluated to false, the activity set specified by the default element is executed. If that element is missing, the activity completes immediately.

Repeats the activity set until the condition is met (evaluates to true). The activity set will be repreated one or more times. Repeats the activity set while the condition is met (evaluates to true). The activity set will be repreated zero or more times. Simple type representing a list of QNames. Allowed transaction types: atomic or open. Allowed transaction participation types: supports, always or never. Allowed instantiation types: message or other. Allowed scope types: public or private. Parameter use types: required or optional. Time constraint types: duration or date/time instance. Connector types: direct or publish. Simple type representing an expression, possibly but not necessarily XPath. Cannot hold an empty string. Time reference: a property name or reference to the start (/@start) or end (/@end) time of an activity, transaction or process in the current context. This complex type forms the basis for all elements that allow human-readable documentation to be added. This element allows documentation to appear as mixed content using any schema without validation. We recommend the use of XHTML or a similar schema. This type is a container for any valid XML value, represented as mixed content. Instance count is a numeric value higher than one or the value 'unbounded'. The name of a transaction being compensated or the special value '#all'. Instance of activity, transaction or process. Contains the instance identifier. Instance property type: activity, transaction or process. Allowed instance state types for all instance properties.