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.
HH:mm dd/MM/yyyy
(see SimpleDateFormat). The format for the absolute time can be customized in the
jbpm configuration.