Schema for jPDL 4 process descriptions; element process is the top level element. A jPDL process definition description; This is the top level element in a jPDL process file. The process name. Multiple processes can be deployed with the same name, as long as they have a different version. The key can be used to provide a short acronym that will replace the name as the basis for the generated process definition id Indicates the sequence number of this version for all processes with the same name. By specifying a version automatic deployment can figure out if this process is already deployed or not. for extensibility Start event the resource name of the form in the deployment. End event. sets the state of the execution explicitely End cancel event. End cancel event. A wait state. When an execution arrives in this activity, the execution will wait until an external trigger is received with execution.signal() or execution.getActivityInstance().signal() Decision gateway: selects one path out of many alternatives. When an execution comes in, exactly one outgoing transition is taken. The script text that will be evaluated. Identification of the scripting language to use. The script that will be evaluated and resolve to the name of the outgoing transition. Identification of the scripting language to use for the expr attribute. Spawns multiple concurrent paths of execution. Spawns multiple concurrent paths of execution. Evaluates a piece of text as a script Performs a hibernate query Performs a hibernate SQL query Sends an email Invokes a method on a java object. Either the java class is instantiated with reflection, or the java object is fetched from the environment. Then values from the environment are injected into the fields and a method is executed. Uses a user defined, custom implementation of ActivityBehaviour Creates a task in the task component. the resource name of the form in the deployment. Waits while a sub process instance is being executed and continues when the sub process instance ends. Events on which listeners can be registered. Identifies the sub process by the id. This means that a specific version of a process definition is referenced Identifies the sub process by the key. This means that the latest version of the process definition with the given key is referenced. The latest version of the process is looked up each time the activity executes. Expression that is evaluated when the sub process instance ends. The value is then used for outcome transition mapping. Scope enclosing a number of activities. Events on which listeners can be registered. the null value A reference to an object in the current environment The name of the referred object The current environment. A lookup from JNDI through the InitialContext A java.util.List Implementation class for this list. Indicates if this collection should be synchronized with Collections.synchronizedList(List) A java.util.Map Implementation class for this map. Indicates if this collection should be synchronized with Collections.synchronizedList(List) A java.util.Set The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. Implementation class for this set. Indicates if this collection should be synchronized with Collections.synchronizedSet(Set) A java.util.Properties A file on the file system A file as a resource in the classpath the contents is fetched by loading a url optionally indicates if the content of referenced file in attributes 'file', 'resource' or 'url' is XML. The default is the plain properties format with a space or the equals character (=) separating key and value on each line. the name of the string object the actual string value A java.lang.Byte The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. A java.lang.Character The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. A java.lang.Double The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. java.lang.Boolean.FALSE The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. A java.lang.Float The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. A java.lang.Integer The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. A java.lang.Long The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. a java.lang.Short The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. java.lang.Boolean.TRUE The name of the object. It's optional and serves as an id to refer to this object from other object declarations. This name can also be used lookup the object programmatically. Any java object that will be created by reflection. .

There are three main ways to create an object: by constructor or by a factory object or a static factory method.

Using the constructor: Then the class attribute must provide the fully qualified class name. In case another constructor then the default is targetted, a constructor child element can be provided. The factory attribute should not be provided for using a constructor.

Using a factory: Then the factory attribute or one factory element must be provided along with the attribute method.

Using a static factory method: Then the class and method attributes should be specified. There should be no reference to a factory attribute of element.

Construction and initialization: all objects (constructor and factory) are build in two phases: construction and initialisation phase. During construction all is done until a pointer is obtained to the object. In initialisation, operations are applied to the object until it is ready to be used. The separation between construction and initialisation is made to allow for bidirectional references. In that case, at least one of both ends can not be fully initialised before it is injected into the other end.

Operations: after construction, various operations can be applied to objects like e.g. direct field injection, injection through setters, method invocation, enlist with the standard transaction, subscribe the object as a listener to an observable

Arguments: There are two different places for arguments. The arg elements for the factory method invocation should be placed as child elements under the object element. The arg elements for the constructor should be placed as child elements under the constructor element.

Contains one element that describes the factory object. Specifies the arguments to use for a non-default constructor. The factory method arguments. Injects a value into a member field of this object. Exactly one child element must specify the value. The member field name Injects a value through a setter method. Exactly one child element must specify the value. The name of the property (without the 'set' prefix) Invokes a method the method name The fully qualified class name The class to instantiate. The class to instantiate. The name of the factory object The factory method name Indicates if the member fields and setter properties should be automatically wired based on matching the property names and types with the object names and types
The method arguments. Each 'arg' element should have exactly one child element that represents the value of the argument. The java class name representing the type of the method. This is optional and can be used to indicate the appropriate method in case of method overloading. Field injections from the environment invocation. Method arguments. The name of the method to invoke. The class to instantiate. Expression that resolves to the target object on which the method should be invoked. The language in which attribute 'expr' is to be resolved. The variable name to store the return value The content of this expression element is the script text that will be evaluated. This is mutually exclusive with the expression attribute. The script text that will be evaluated. This is mutually exclusive with the expression element. Identification of the scripting language to use. Name of the variable in which the result of the script evaluation will be stored The query text. Query parameters. Name of the variable in which the result of the script evaluation will be stored Does this query return a unique result or a list The id of this activity. The name should be unique in the complete scope of the process. Graphical information used by process designer tool. To specify async continuations. sync is the default. the assignment attributes will be used in tasks and swimlanes to specify to whom these respectively are assigned. Expression that resolves to a userId referencing the person to which the task or swimlane will be assigned. Expression language for the assignee attribute. Expression that resolves to a comma separated list of userId's. All the referred people will be candidates for take the task or swimlane. Expression language for the candidate-users attribute. Resolves to a comma separated list of groupId's. All the referred people will be candidates to take the task or swimlane. Expression language for the candidate-groups attribute. A process role. The outgoing transitions. The first in the list will be the default outgoing transition. Name of this outgoing transition Name of the destination activity of this transition. Graphical information used by process designer tool. A transition from one activity to another. A list of event listeners that will be notified when the event is fired The event identification. start, end, take or any other custom event. The name of the sub process variable. An expression for which the resulting value will be used as value. Language of the expression. Name of the process variable in the super process execution.. A list of event listeners that will be notified when the timer fires Timer duedate expression that defines the duedate of this timer relative to the creation time of the timer. E.g. '2 hours' or '4 business days' Timer duedate expression that defines repeated scheduling relative to the last timer fire event. E.g. '2 hours' or '4 business days' Absolute time in format HH:mm dd/MM/yyyy (see SimpleDateFormat). The format for the absolute time can be customized in the jbpm configuration. URL reference to the attachment Name of the attachment resource on the classpath File reference to the attachment list of email address separated by ',' (comma) ';' (semicolon) '|' or whitespace list of user ids that are resolved to the email address against configured identity component. user ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace list of group ids that are resolved to the email address against configured identity component. group ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace Reference to the email template Information to migrate instances of previously deployed process definitions to the new one The migration handler specifies the name of a class to be executed while migrating the process instance. One activity mapping will be present for each activity of which the name changed. The name of the activity in the previously deployed process definition. The name of the activity in the newly deployed process definition