Class BpmnParse

  • All Implemented Interfaces:
    org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

    public class BpmnParse
    extends Parse
    Specific parsing of one BPMN 2.0 XML file, created by the BpmnParser. Instances of this class should not be reused and are also not threadsafe.
    Author:
    Tom Baeyens, Bernd Ruecker, Joram Barrez, Christian Stettler, Frederik Heremans, Falko Menge, Esteban Robles, Daniel Meyer, Saeid Mirzaei, Nico Rehwaldt, Ronny Bräunlich, Christopher Zell, Deivarayan Azhagappan, Ingo Richtsmeier
    • Field Detail

      • MULTI_INSTANCE_BODY_ID_SUFFIX

        public static final java.lang.String MULTI_INSTANCE_BODY_ID_SUFFIX
        See Also:
        Constant Field Values
      • PROPERTYNAME_DOCUMENTATION

        public static final java.lang.String PROPERTYNAME_DOCUMENTATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_INITIATOR_VARIABLE_NAME

        public static final java.lang.String PROPERTYNAME_INITIATOR_VARIABLE_NAME
        See Also:
        Constant Field Values
      • PROPERTYNAME_HAS_CONDITIONAL_EVENTS

        public static final java.lang.String PROPERTYNAME_HAS_CONDITIONAL_EVENTS
        See Also:
        Constant Field Values
      • PROPERTYNAME_CONDITION

        public static final java.lang.String PROPERTYNAME_CONDITION
        See Also:
        Constant Field Values
      • PROPERTYNAME_CONDITION_TEXT

        public static final java.lang.String PROPERTYNAME_CONDITION_TEXT
        See Also:
        Constant Field Values
      • PROPERTYNAME_VARIABLE_DECLARATIONS

        public static final java.lang.String PROPERTYNAME_VARIABLE_DECLARATIONS
        See Also:
        Constant Field Values
      • PROPERTYNAME_TIMER_DECLARATION

        public static final java.lang.String PROPERTYNAME_TIMER_DECLARATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_MESSAGE_JOB_DECLARATION

        public static final java.lang.String PROPERTYNAME_MESSAGE_JOB_DECLARATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_ISEXPANDED

        public static final java.lang.String PROPERTYNAME_ISEXPANDED
        See Also:
        Constant Field Values
      • PROPERTYNAME_START_TIMER

        public static final java.lang.String PROPERTYNAME_START_TIMER
        See Also:
        Constant Field Values
      • PROPERTYNAME_COMPENSATION_HANDLER_ID

        public static final java.lang.String PROPERTYNAME_COMPENSATION_HANDLER_ID
        See Also:
        Constant Field Values
      • PROPERTYNAME_IS_FOR_COMPENSATION

        public static final java.lang.String PROPERTYNAME_IS_FOR_COMPENSATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_EVENT_SUBSCRIPTION_JOB_DECLARATION

        public static final java.lang.String PROPERTYNAME_EVENT_SUBSCRIPTION_JOB_DECLARATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_THROWS_COMPENSATION

        public static final java.lang.String PROPERTYNAME_THROWS_COMPENSATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_CONSUMES_COMPENSATION

        public static final java.lang.String PROPERTYNAME_CONSUMES_COMPENSATION
        See Also:
        Constant Field Values
      • PROPERTYNAME_JOB_PRIORITY

        public static final java.lang.String PROPERTYNAME_JOB_PRIORITY
        See Also:
        Constant Field Values
      • PROPERTYNAME_TASK_PRIORITY

        public static final java.lang.String PROPERTYNAME_TASK_PRIORITY
        See Also:
        Constant Field Values
      • PROPERTYNAME_EXTERNAL_TASK_TOPIC

        public static final java.lang.String PROPERTYNAME_EXTERNAL_TASK_TOPIC
        See Also:
        Constant Field Values
      • PROPERTYNAME_CLASS

        public static final java.lang.String PROPERTYNAME_CLASS
        See Also:
        Constant Field Values
      • PROPERTYNAME_EXPRESSION

        public static final java.lang.String PROPERTYNAME_EXPRESSION
        See Also:
        Constant Field Values
      • PROPERTYNAME_DELEGATE_EXPRESSION

        public static final java.lang.String PROPERTYNAME_DELEGATE_EXPRESSION
        See Also:
        Constant Field Values
      • PROPERTYNAME_VARIABLE_MAPPING_CLASS

        public static final java.lang.String PROPERTYNAME_VARIABLE_MAPPING_CLASS
        See Also:
        Constant Field Values
      • PROPERTYNAME_VARIABLE_MAPPING_DELEGATE_EXPRESSION

        public static final java.lang.String PROPERTYNAME_VARIABLE_MAPPING_DELEGATE_EXPRESSION
        See Also:
        Constant Field Values
      • PROPERTYNAME_RESOURCE

        public static final java.lang.String PROPERTYNAME_RESOURCE
        See Also:
        Constant Field Values
      • PROPERTYNAME_LANGUAGE

        public static final java.lang.String PROPERTYNAME_LANGUAGE
        See Also:
        Constant Field Values
      • CONDITIONAL_EVENT_DEFINITION

        public static final java.lang.String CONDITIONAL_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • ESCALATION_EVENT_DEFINITION

        public static final java.lang.String ESCALATION_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • COMPENSATE_EVENT_DEFINITION

        public static final java.lang.String COMPENSATE_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • TIMER_EVENT_DEFINITION

        public static final java.lang.String TIMER_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • SIGNAL_EVENT_DEFINITION

        public static final java.lang.String SIGNAL_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • MESSAGE_EVENT_DEFINITION

        public static final java.lang.String MESSAGE_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • ERROR_EVENT_DEFINITION

        public static final java.lang.String ERROR_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • CANCEL_EVENT_DEFINITION

        public static final java.lang.String CANCEL_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • LINK_EVENT_DEFINITION

        public static final java.lang.String LINK_EVENT_DEFINITION
        See Also:
        Constant Field Values
      • CONDITION_EXPRESSION

        public static final java.lang.String CONDITION_EXPRESSION
        See Also:
        Constant Field Values
      • VARIABLE_EVENTS

        public static final java.util.List<java.lang.String> VARIABLE_EVENTS
      • PROPERTYNAME_TYPE

        @Deprecated
        public static final java.lang.String PROPERTYNAME_TYPE
        Deprecated.
      • POTENTIAL_STARTER

        protected static final java.lang.String POTENTIAL_STARTER
        See Also:
        Constant Field Values
      • CANDIDATE_STARTER_USERS_EXTENSION

        protected static final java.lang.String CANDIDATE_STARTER_USERS_EXTENSION
        See Also:
        Constant Field Values
      • CANDIDATE_STARTER_GROUPS_EXTENSION

        protected static final java.lang.String CANDIDATE_STARTER_GROUPS_EXTENSION
        See Also:
        Constant Field Values
      • ATTRIBUTEVALUE_T_FORMAL_EXPRESSION

        protected static final java.lang.String ATTRIBUTEVALUE_T_FORMAL_EXPRESSION
        See Also:
        Constant Field Values
      • PROPERTYNAME_IS_MULTI_INSTANCE

        public static final java.lang.String PROPERTYNAME_IS_MULTI_INSTANCE
        See Also:
        Constant Field Values
      • CAMUNDA_BPMN_EXTENSIONS_NS

        public static final Namespace CAMUNDA_BPMN_EXTENSIONS_NS
      • XSI_NS

        public static final Namespace XSI_NS
      • BPMN_DI_NS

        public static final Namespace BPMN_DI_NS
      • OMG_DI_NS

        public static final Namespace OMG_DI_NS
      • BPMN_DC_NS

        public static final Namespace BPMN_DC_NS
      • deployment

        protected DeploymentEntity deployment
        The deployment to which the parsed process definitions will be added.
      • processDefinitions

        protected java.util.List<ProcessDefinitionEntity> processDefinitions
        The end result of the parsing: a list of process definition.
      • errors

        protected java.util.Map<java.lang.String,​Error> errors
        Mapping of found errors in BPMN 2.0 file
      • escalations

        protected java.util.Map<java.lang.String,​Escalation> escalations
        Mapping of found escalation elements
      • jobDeclarations

        protected java.util.Map<java.lang.String,​java.util.List<JobDeclaration<?,​?>>> jobDeclarations
        Mapping from a process definition key to his containing list of job declarations
      • sequenceFlows

        protected java.util.Map<java.lang.String,​TransitionImpl> sequenceFlows
        A map for storing sequence flow based on their id during parsing.
      • elementIds

        protected java.util.List<java.lang.String> elementIds
        A list of all element IDs. This allows us to parse only what we actually support but still validate the references among elements we do not support.
      • participantProcesses

        protected java.util.Map<java.lang.String,​java.lang.String> participantProcesses
        A map for storing the process references of participants
      • messages

        protected java.util.Map<java.lang.String,​MessageDefinition> messages
        Mapping containing values stored during the first phase of parsing since other elements can reference these messages. All the map's elements are defined outside the process definition(s), which means that this map doesn't need to be re-initialized for each new process definition.
      • signals

        protected java.util.Map<java.lang.String,​SignalDefinition> signals
      • importers

        protected java.util.Map<java.lang.String,​XMLImporter> importers
      • prefixs

        protected java.util.Map<java.lang.String,​java.lang.String> prefixs
      • targetNamespace

        protected java.lang.String targetNamespace
      • HUMAN_PERFORMER

        protected static final java.lang.String HUMAN_PERFORMER
        See Also:
        Constant Field Values
      • POTENTIAL_OWNER

        protected static final java.lang.String POTENTIAL_OWNER
        See Also:
        Constant Field Values
      • RESOURCE_ASSIGNMENT_EXPR

        protected static final java.lang.String RESOURCE_ASSIGNMENT_EXPR
        See Also:
        Constant Field Values
      • FORMAL_EXPRESSION

        protected static final java.lang.String FORMAL_EXPRESSION
        See Also:
        Constant Field Values
      • ASSIGNEE_EXTENSION

        protected static final java.lang.String ASSIGNEE_EXTENSION
        See Also:
        Constant Field Values
      • CANDIDATE_USERS_EXTENSION

        protected static final java.lang.String CANDIDATE_USERS_EXTENSION
        See Also:
        Constant Field Values
      • CANDIDATE_GROUPS_EXTENSION

        protected static final java.lang.String CANDIDATE_GROUPS_EXTENSION
        See Also:
        Constant Field Values
      • DUE_DATE_EXTENSION

        protected static final java.lang.String DUE_DATE_EXTENSION
        See Also:
        Constant Field Values
      • FOLLOW_UP_DATE_EXTENSION

        protected static final java.lang.String FOLLOW_UP_DATE_EXTENSION
        See Also:
        Constant Field Values
      • PRIORITY_EXTENSION

        protected static final java.lang.String PRIORITY_EXTENSION
        See Also:
        Constant Field Values
    • Constructor Detail

    • Method Detail

      • parseRootElement

        protected void parseRootElement()
        Parses the 'definitions' root element
      • collectElementIds

        protected void collectElementIds()
      • parseDefinitionsAttributes

        protected void parseDefinitionsAttributes()
      • resolveName

        protected java.lang.String resolveName​(java.lang.String name)
      • parseImports

        protected void parseImports()
        Parses the rootElement importing structures
      • getImporter

        protected XMLImporter getImporter​(java.lang.String importType,
                                          Element theImport)
      • parseMessages

        public void parseMessages()
        Parses the messages of the given definitions file. Messages are not contained within a process element, but they can be referenced from inner process elements.
      • parseSignals

        protected void parseSignals()
        Parses the signals of the given definitions file. Signals are not contained within a process element, but they can be referenced from inner process elements.
      • parseErrors

        public void parseErrors()
      • parseEscalations

        protected void parseEscalations()
      • createEscalation

        protected Escalation createEscalation​(java.lang.String id,
                                              Element element)
      • parseProcessDefinitions

        public void parseProcessDefinitions()
        Parses all the process definitions defined within the 'definitions' root element.
      • parseCollaboration

        public void parseCollaboration()
        Parses the collaboration definition defined within the 'definitions' root element and get all participants to lookup their process references during DI parsing.
      • parseProcess

        public ProcessDefinitionEntity parseProcess​(Element processElement)
        Parses one process (ie anything inside a <process> element).
        Parameters:
        processElement - The 'process' element.
        Returns:
        The parsed version of the XML: a ProcessDefinitionImpl object.
      • parseLanes

        protected void parseLanes​(Element laneSetElement,
                                  LaneSet laneSet)
      • parseScope

        public void parseScope​(Element scopeElement,
                               ScopeImpl parentScope)
        Parses a scope: a process, subprocess, etc. Note that a process definition is a scope on itself.
        Parameters:
        scopeElement - The XML element defining the scope
        parentScope - The scope that contains the nested scope.
      • filterIntermediateCatchEvents

        protected java.util.HashMap<java.lang.String,​Element> filterIntermediateCatchEvents​(java.util.List<Element> activityElements)
      • filterCompensationHandlers

        protected java.util.HashMap<java.lang.String,​Element> filterCompensationHandlers​(java.util.List<Element> activityElements)
      • parseIntermediateCatchEvents

        protected void parseIntermediateCatchEvents​(Element scopeElement,
                                                    ScopeImpl parentScope,
                                                    java.util.Map<java.lang.String,​Element> intermediateCatchEventElements)
      • parseProcessDefinitionCustomExtensions

        protected void parseProcessDefinitionCustomExtensions​(Element scopeElement,
                                                              ProcessDefinition definition)
      • parseStartAuthorization

        protected void parseStartAuthorization​(Element scopeElement,
                                               ProcessDefinition definition)
      • parsePotentialStarterResourceAssignment

        protected void parsePotentialStarterResourceAssignment​(Element performerElement,
                                                               ProcessDefinitionEntity processDefinition)
      • parseAssociations

        protected void parseAssociations​(Element scopeElement,
                                         ScopeImpl parentScope,
                                         java.util.Map<java.lang.String,​Element> compensationHandlers)
      • parseCompensationHandlerForCompensationBoundaryEvent

        protected ActivityImpl parseCompensationHandlerForCompensationBoundaryEvent​(ScopeImpl parentScope,
                                                                                    ActivityImpl sourceActivity,
                                                                                    java.lang.String targetRef,
                                                                                    java.util.Map<java.lang.String,​Element> compensationHandlers)
      • parseAssociationOfCompensationBoundaryEvent

        protected void parseAssociationOfCompensationBoundaryEvent​(Element associationElement,
                                                                   ActivityImpl sourceActivity,
                                                                   ActivityImpl targetActivity)
      • parseCompensationHandlers

        protected void parseCompensationHandlers​(ScopeImpl parentScope,
                                                 java.util.Map<java.lang.String,​Element> compensationHandlers)
      • parseStartEvents

        public void parseStartEvents​(Element parentElement,
                                     ScopeImpl scope)
        Parses the start events of a certain level in the process (process, subprocess or another scope).
        Parameters:
        parentElement - The 'parent' element that contains the start events (process, subprocess).
        scope - The ScopeImpl to which the start events must be added.
      • parseProcessDefinitionStartEvent

        protected void parseProcessDefinitionStartEvent​(ActivityImpl startEventActivity,
                                                        Element startEventElement,
                                                        Element parentElement,
                                                        ScopeImpl scope)
      • parseStartFormHandlers

        protected void parseStartFormHandlers​(java.util.List<Element> startEventElements,
                                              ProcessDefinitionEntity processDefinition)
      • parseCompensationEventSubprocess

        protected void parseCompensationEventSubprocess​(ActivityImpl startEventActivity,
                                                        Element startEventElement,
                                                        ActivityImpl scopeActivity,
                                                        Element compensateEventDefinition)
      • parseErrorStartEventDefinition

        protected void parseErrorStartEventDefinition​(Element errorEventDefinition,
                                                      ActivityImpl startEventActivity)
      • setErrorCodeVariableOnErrorEventDefinition

        protected void setErrorCodeVariableOnErrorEventDefinition​(Element errorEventDefinition,
                                                                  ErrorEventDefinition definition)
        Sets the value for "camunda:errorCodeVariable" on the passed definition if it's present.
        Parameters:
        errorEventDefinition - the XML errorEventDefinition tag
        definition - the errorEventDefintion that can get the errorCodeVariable value
      • setErrorMessageVariableOnErrorEventDefinition

        protected void setErrorMessageVariableOnErrorEventDefinition​(Element errorEventDefinition,
                                                                     ErrorEventDefinition definition)
        Sets the value for "camunda:errorMessageVariable" on the passed definition if it's present.
        Parameters:
        errorEventDefinition - the XML errorEventDefinition tag
        definition - the errorEventDefintion that can get the errorMessageVariable value
      • activityAlreadyContainsJobDeclarationEventType

        protected boolean activityAlreadyContainsJobDeclarationEventType​(java.util.List<EventSubscriptionJobDeclaration> jobDeclarationsForActivity,
                                                                         EventSubscriptionJobDeclaration jobDeclaration)
        Assumes that an activity has at most one declaration of a certain eventType.
      • parseActivities

        public void parseActivities​(java.util.List<Element> activityElements,
                                    Element parentElement,
                                    ScopeImpl scopeElement)
        Parses the activities of a certain level in the process (process, subprocess or another scope).
        Parameters:
        activityElements - The list of activities to be parsed. This list may be filtered before.
        parentElement - The 'parent' element that contains the activities (process, subprocess).
        scopeElement - The ScopeImpl to which the activities must be added.
      • validateActivities

        public void validateActivities​(java.util.List<ActivityImpl> activities)
      • validateActivity

        protected void validateActivity​(ActivityImpl activity)
      • validateOutgoingFlows

        protected void validateOutgoingFlows​(ActivityImpl activity)
      • validateExclusiveGateway

        public void validateExclusiveGateway​(ActivityImpl activity)
      • parseIntermediateLinkEventCatchBehavior

        protected void parseIntermediateLinkEventCatchBehavior​(Element intermediateEventElement,
                                                               ActivityImpl activity,
                                                               Element linkEventDefinitionElement)
      • parseIntermediateMessageEventDefinition

        protected void parseIntermediateMessageEventDefinition​(Element messageEventDefinition,
                                                               ActivityImpl nestedActivity)
      • parseIntermediateThrowEvent

        public ActivityImpl parseIntermediateThrowEvent​(Element intermediateEventElement,
                                                        ScopeImpl scopeElement)
      • parseThrowCompensateEventDefinition

        protected CompensateEventDefinition parseThrowCompensateEventDefinition​(Element compensateEventDefinitionElement,
                                                                                ScopeImpl scopeElement,
                                                                                java.lang.String parentElementId)
      • validateCatchCompensateEventDefinition

        protected void validateCatchCompensateEventDefinition​(Element compensateEventDefinitionElement,
                                                              java.lang.String parentElementId)
      • parseBoundaryCompensateEventDefinition

        protected void parseBoundaryCompensateEventDefinition​(Element compensateEventDefinition,
                                                              ActivityImpl activity)
      • parseMultiInstanceLoopCharacteristics

        public ScopeImpl parseMultiInstanceLoopCharacteristics​(Element activityElement,
                                                               ScopeImpl scope)
        Parses loopCharacteristics (standardLoop/Multi-instance) of an activity, if any is defined.
      • getIdForMiBody

        public static java.lang.String getIdForMiBody​(java.lang.String id)
      • createActivityOnScope

        public ActivityImpl createActivityOnScope​(Element activityElement,
                                                  ScopeImpl scopeElement)
        Parses the generic information of an activity element (id, name, documentation, etc.), and creates a new ActivityImpl on the given scope element.
      • setActivityAsyncDelegates

        protected void setActivityAsyncDelegates​(ActivityImpl activity)
        Sets the delegates for the activity, which will be called if the attribute asyncAfter or asyncBefore was changed.
        Parameters:
        activity - the activity which gets the delegates
      • addMessageJobDeclaration

        protected void addMessageJobDeclaration​(MessageJobDeclaration messageJobDeclaration,
                                                ActivityImpl activity,
                                                boolean exclusive)
        Adds the new message job declaration to existing declarations. There will be executed an existing check before the adding is executed.
        Parameters:
        messageJobDeclaration - the new message job declaration
        activity - the corresponding activity
        exclusive - the flag which indicates if the async should be exclusive
      • exists

        protected boolean exists​(MessageJobDeclaration msgJobdecl,
                                 java.lang.String procDefKey,
                                 java.lang.String activityId)
        Checks whether the message declaration already exists.
        Parameters:
        msgJobdecl - the message job declaration which is searched
        procDefKey - the corresponding process definition key
        activityId - the corresponding activity id
        Returns:
        true if the message job declaration exists, false otherwise
      • removeMessageJobDeclarationWithJobConfiguration

        protected void removeMessageJobDeclarationWithJobConfiguration​(ActivityImpl activity,
                                                                       java.lang.String jobConfiguration)
        Removes a job declaration which belongs to the given activity and has the given job configuration.
        Parameters:
        activity - the activity of the job declaration
        jobConfiguration - the job configuration of the declaration
      • parseDocumentation

        public java.lang.String parseDocumentation​(Element element)
      • parseDocumentation

        public static java.lang.String parseDocumentation​(java.util.List<java.lang.String> docStrings)
      • isCompensationHandler

        protected boolean isCompensationHandler​(Element activityElement)
      • parseExclusiveGateway

        public ActivityImpl parseExclusiveGateway​(Element exclusiveGwElement,
                                                  ScopeImpl scope)
        Parses an exclusive gateway declaration.
      • parseInclusiveGateway

        public ActivityImpl parseInclusiveGateway​(Element inclusiveGwElement,
                                                  ScopeImpl scope)
        Parses an inclusive gateway declaration.
      • parseParallelGateway

        public ActivityImpl parseParallelGateway​(Element parallelGwElement,
                                                 ScopeImpl scope)
        Parses a parallel gateway declaration.
      • parseResultVariable

        protected java.lang.String parseResultVariable​(Element element)
      • parseServiceTask

        public ActivityImpl parseServiceTask​(Element serviceTaskElement,
                                             ScopeImpl scope)
        Parses a serviceTask declaration.
      • parseServiceTaskLike

        public void parseServiceTaskLike​(ActivityImpl activity,
                                         java.lang.String elementName,
                                         Element serviceTaskElement,
                                         Element camundaPropertiesElement,
                                         ScopeImpl scope)
        Parameters:
        elementName -
        serviceTaskElement - the element that contains the camunda service task definition (e.g. camunda:class attributes)
        camundaPropertiesElement - the element that contains the camunda:properties extension elements that apply to this service task. Usually, but not always, this is the same as serviceTaskElement
        scope -
      • validateServiceTaskLike

        protected void validateServiceTaskLike​(ActivityImpl activity,
                                               java.lang.String elementName,
                                               Element serviceTaskElement)
      • parseBusinessRuleTask

        public ActivityImpl parseBusinessRuleTask​(Element businessRuleTaskElement,
                                                  ScopeImpl scope)
        Parses a businessRuleTask declaration.
      • parseDmnBusinessRuleTask

        protected ActivityImpl parseDmnBusinessRuleTask​(Element businessRuleTaskElement,
                                                        ScopeImpl scope)
        Parse a Business Rule Task which references a decision.
      • parseAsynchronousContinuationForActivity

        protected void parseAsynchronousContinuationForActivity​(Element activityElement,
                                                                ActivityImpl activity)
        Parse async continuation of an activity and create async jobs for the activity.

        When the activity is marked as multi instance, then async jobs create instead for the multi instance body. When the wrapped activity has async characteristics in 'multiInstanceLoopCharacteristics' element, then async jobs create additionally for the wrapped activity.
      • parseAsynchronousContinuation

        protected void parseAsynchronousContinuation​(Element element,
                                                     ActivityImpl activity)
        Parse async continuation of the given element and create async jobs for the activity.
        Parameters:
        element - with async characteristics
        activity -
      • addJobDeclarationToProcessDefinition

        protected void addJobDeclarationToProcessDefinition​(JobDeclaration<?,​?> jobDeclaration,
                                                            ProcessDefinition processDefinition)
      • parseExternalServiceTask

        protected void parseExternalServiceTask​(ActivityImpl activity,
                                                Element serviceTaskElement,
                                                Element camundaPropertiesElement)
      • validateFieldDeclarationsForEmail

        protected void validateFieldDeclarationsForEmail​(Element serviceTaskElement,
                                                         java.util.List<FieldDeclaration> fieldDeclarations)
      • validateFieldDeclarationsForShell

        protected void validateFieldDeclarationsForShell​(Element serviceTaskElement,
                                                         java.util.List<FieldDeclaration> fieldDeclarations)
      • parseStringFieldDeclaration

        protected FieldDeclaration parseStringFieldDeclaration​(Element fieldDeclarationElement,
                                                               Element serviceTaskElement,
                                                               java.lang.String fieldName)
      • parseExpressionFieldDeclaration

        protected FieldDeclaration parseExpressionFieldDeclaration​(Element fieldDeclarationElement,
                                                                   Element serviceTaskElement,
                                                                   java.lang.String fieldName)
      • getStringValueFromAttributeOrElement

        protected java.lang.String getStringValueFromAttributeOrElement​(java.lang.String attributeName,
                                                                        java.lang.String elementName,
                                                                        Element element,
                                                                        java.lang.String ancestorElementId)
      • parseTask

        public ActivityImpl parseTask​(Element taskElement,
                                      ScopeImpl scope)
        Parses a task with no specific type (behaves as passthrough).
      • parseHumanPerformer

        protected void parseHumanPerformer​(Element taskElement,
                                           TaskDefinition taskDefinition)
      • parsePotentialOwner

        protected void parsePotentialOwner​(Element taskElement,
                                           TaskDefinition taskDefinition)
      • parseHumanPerformerResourceAssignment

        protected void parseHumanPerformerResourceAssignment​(Element performerElement,
                                                             TaskDefinition taskDefinition)
      • parsePotentialOwnerResourceAssignment

        protected void parsePotentialOwnerResourceAssignment​(Element performerElement,
                                                             TaskDefinition taskDefinition)
      • getAssignmentId

        protected java.lang.String getAssignmentId​(java.lang.String expression,
                                                   java.lang.String prefix)
      • parseCommaSeparatedList

        protected java.util.List<java.lang.String> parseCommaSeparatedList​(java.lang.String s)
        Parses the given String as a list of comma separated entries, where an entry can possibly be an expression that has comma's. If somebody is smart enough to write a regex for this, please let us know.
        Returns:
        the entries of the comma separated list, trimmed.
      • parseTaskListener

        protected TaskListener parseTaskListener​(Element taskListenerElement,
                                                 java.lang.String taskElementId)
      • parseEndEvents

        public void parseEndEvents​(Element parentElement,
                                   ScopeImpl scope)
        Parses the end events of a certain level in the process (process, subprocess or another scope).
        Parameters:
        parentElement - The 'parent' element that contains the end events (process, subprocess).
        scope - The ScopeImpl to which the end events must be added.
      • parseBoundaryEvents

        public void parseBoundaryEvents​(Element parentElement,
                                        ScopeImpl flowScope)
        Parses the boundary events of a certain 'level' (process, subprocess or other scope). Note that the boundary events are not parsed during the parsing of the bpmn activities, since the semantics are different (boundaryEvent needs to be added as nested activity to the reference activity on PVM level).
        Parameters:
        parentElement - The 'parent' element that contains the activities (process, subprocess).
        flowScope - The ScopeImpl to which the activities must be added.
      • parseBoundaryTimerEventDefinition

        public void parseBoundaryTimerEventDefinition​(Element timerEventDefinition,
                                                      boolean interrupting,
                                                      ActivityImpl boundaryActivity)
        Parses a boundary timer event. The end-result will be that the given nested activity will get the appropriate ActivityBehavior.
        Parameters:
        timerEventDefinition - The XML element corresponding with the timer event details
        interrupting - Indicates whether this timer is interrupting.
        boundaryActivity - The activity which maps to the structure of the timer event on the boundary of another activity. Note that this is NOT the activity onto which the boundary event is attached, but a nested activity inside this activity, specifically created for this event.
      • parseBoundarySignalEventDefinition

        public void parseBoundarySignalEventDefinition​(Element element,
                                                       boolean interrupting,
                                                       ActivityImpl signalActivity)
      • parseBoundaryMessageEventDefinition

        public void parseBoundaryMessageEventDefinition​(Element element,
                                                        boolean interrupting,
                                                        ActivityImpl messageActivity)
      • parseTimerStartEventDefinitionForEventSubprocess

        protected void parseTimerStartEventDefinitionForEventSubprocess​(Element timerEventDefinition,
                                                                        ActivityImpl timerActivity,
                                                                        boolean interrupting)
      • parseIntermediateSignalEventDefinition

        protected void parseIntermediateSignalEventDefinition​(Element element,
                                                              ActivityImpl signalActivity)
      • parseSignalCatchEventDefinition

        protected void parseSignalCatchEventDefinition​(Element element,
                                                       ActivityImpl signalActivity,
                                                       boolean isStartEvent)
      • parseSignalEventDefinition

        protected EventSubscriptionDeclaration parseSignalEventDefinition​(Element signalEventDefinitionElement,
                                                                          boolean isThrowing,
                                                                          java.lang.String signalElementId)
        Parses the Signal Event Definition XML including payload definition.
        Parameters:
        signalEventDefinitionElement - the Signal Event Definition element
        isThrowing - true if a Throwing signal event is being parsed
        Returns:
      • parseIntermediateTimerEventDefinition

        protected void parseIntermediateTimerEventDefinition​(Element timerEventDefinition,
                                                             ActivityImpl timerActivity)
      • parseExpression

        protected Expression parseExpression​(Element parent,
                                             java.lang.String name)
      • parseBoundaryErrorEventDefinition

        public void parseBoundaryErrorEventDefinition​(Element errorEventDefinition,
                                                      ActivityImpl boundaryEventActivity)
      • parseBoundaryEscalationEventDefinition

        protected void parseBoundaryEscalationEventDefinition​(Element escalationEventDefinitionElement,
                                                              boolean cancelActivity,
                                                              ActivityImpl boundaryEventActivity)
      • findEscalationForEscalationEventDefinition

        protected Escalation findEscalationForEscalationEventDefinition​(Element escalationEventDefinition,
                                                                        java.lang.String escalationElementId)
        Find the referenced escalation of the given escalation event definition. Add errors if the referenced escalation not found.
        Returns:
        referenced escalation or null, if referenced escalation not found
      • createEscalationEventDefinitionForEscalationHandler

        protected EscalationEventDefinition createEscalationEventDefinitionForEscalationHandler​(Element escalationEventDefinitionElement,
                                                                                                ActivityImpl escalationHandler,
                                                                                                boolean cancelActivity,
                                                                                                java.lang.String parentElementId)
      • addEscalationEventDefinition

        protected void addEscalationEventDefinition​(ScopeImpl catchingScope,
                                                    EscalationEventDefinition escalationEventDefinition,
                                                    Element element,
                                                    java.lang.String escalationElementId)
      • addTimerListenerDeclaration

        protected void addTimerListenerDeclaration​(java.lang.String listenerId,
                                                   ScopeImpl scope,
                                                   TimerDeclarationImpl timerDeclaration)
      • parseBoundaryConditionalEventDefinition

        public BoundaryConditionalEventActivityBehavior parseBoundaryConditionalEventDefinition​(Element element,
                                                                                                boolean interrupting,
                                                                                                ActivityImpl conditionalActivity)
        Parses the given element as conditional boundary event.
        Parameters:
        element - the XML element which contains the conditional event information
        interrupting - indicates if the event is interrupting or not
        conditionalActivity - the conditional event activity
        Returns:
        the boundary conditional event behavior which contains the condition
      • parseIntermediateConditionalEventDefinition

        public ConditionalEventDefinition parseIntermediateConditionalEventDefinition​(Element element,
                                                                                      ActivityImpl conditionalActivity)
        Parses the given element as intermediate conditional event.
        Parameters:
        element - the XML element which contains the conditional event information
        conditionalActivity - the conditional event activity
        Returns:
        returns the conditional activity with the parsed information
      • parseConditionalStartEventForEventSubprocess

        public ConditionalEventDefinition parseConditionalStartEventForEventSubprocess​(Element element,
                                                                                       ActivityImpl conditionalActivity,
                                                                                       boolean interrupting)
        Parses the given element as conditional start event of an event subprocess.
        Parameters:
        element - the XML element which contains the conditional event information
        interrupting - indicates if the event is interrupting or not
        conditionalActivity - the conditional event activity
        Returns:
      • parseConditionalEventDefinition

        protected ConditionalEventDefinition parseConditionalEventDefinition​(Element element,
                                                                             ActivityImpl conditionalActivity)
        Parses the given element and returns an ConditionalEventDefinition object.
        Parameters:
        element - the XML element which contains the conditional event information
        conditionalActivity - the conditional event activity
        Returns:
        the conditional event definition which was parsed
      • parseSubProcess

        public ActivityImpl parseSubProcess​(Element subProcessElement,
                                            ScopeImpl scope)
        Parses a subprocess (formally known as an embedded subprocess): a subprocess defined within another process definition.
        Parameters:
        subProcessElement - The XML element corresponding with the subprocess definition
        scope - The current scope on which the subprocess is defined.
      • parseCallActivity

        public ActivityImpl parseCallActivity​(Element callActivityElement,
                                              ScopeImpl scope,
                                              boolean isMultiInstance)
        Parses a call activity (currently only supporting calling subprocesses).
        Parameters:
        callActivityElement - The XML element defining the call activity
        scope - The current scope on which the call activity is defined.
      • parseVersion

        protected void parseVersion​(Element callingActivityElement,
                                    ActivityImpl activity,
                                    BaseCallableElement callableElement,
                                    java.lang.String bindingAttributeName,
                                    java.lang.String versionAttributeName)
      • parseVersionTag

        protected void parseVersionTag​(Element callingActivityElement,
                                       ActivityImpl activity,
                                       BaseCallableElement callableElement,
                                       java.lang.String bindingAttributeName,
                                       java.lang.String versionTagAttributeName)
      • parseInputParameter

        protected void parseInputParameter​(Element elementWithParameters,
                                           CallableElement callableElement)
      • attributeValueEquals

        protected boolean attributeValueEquals​(Element element,
                                               java.lang.String attribute,
                                               java.lang.String comparisonValue)
      • parseCallableElementProvider

        protected CallableElementParameter parseCallableElementProvider​(Element parameterElement,
                                                                        java.lang.String ancestorElementId)
      • parseProperties

        public void parseProperties​(Element element,
                                    ActivityImpl activity)
        Parses the properties of an element (if any) that can contain properties (processes, activities, etc.) Returns true if property subelemens are found.
        Parameters:
        element - The element that can contain properties.
        activity - The activity where the property declaration is done.
      • parseProperty

        public void parseProperty​(Element propertyElement,
                                  ActivityImpl activity)
        Parses one property definition.
        Parameters:
        propertyElement - The 'property' element that defines how a property looks like and is handled.
      • parsePropertyCustomExtensions

        public void parsePropertyCustomExtensions​(ActivityImpl activity,
                                                  Element propertyElement,
                                                  java.lang.String propertyName,
                                                  java.lang.String propertyType)
        Parses the custom extensions for properties.
        Parameters:
        activity - The activity where the property declaration is done.
        propertyElement - The 'property' element defining the property.
        propertyName - The name of the property.
        propertyType - The type of the property.
      • parseSequenceFlow

        public void parseSequenceFlow​(Element processElement,
                                      ScopeImpl scope,
                                      java.util.Map<java.lang.String,​Element> compensationHandlers)
        Parses all sequence flow of a scope.
        Parameters:
        processElement - The 'process' element wherein the sequence flow are defined.
        scope - The scope to which the sequence flow must be added.
        compensationHandlers -
      • parseSequenceFlowConditionExpression

        public void parseSequenceFlowConditionExpression​(Element seqFlowElement,
                                                         TransitionImpl seqFlow)
        Parses a condition expression on a sequence flow.
        Parameters:
        seqFlowElement - The 'sequenceFlow' element that can contain a condition.
        seqFlow - The sequenceFlow object representation to which the condition must be added.
      • parseConditionExpression

        protected Condition parseConditionExpression​(Element conditionExprElement,
                                                     java.lang.String ancestorElementId)
      • parseExecutionListenersOnScope

        public void parseExecutionListenersOnScope​(Element scopeElement,
                                                   ScopeImpl scope)
        Parses all execution-listeners on a scope.
        Parameters:
        scopeElement - the XML element containing the scope definition.
        scope - the scope to add the executionListeners to.
      • isValidEventNameForScope

        protected boolean isValidEventNameForScope​(java.lang.String eventName,
                                                   Element listenerElement,
                                                   java.lang.String ancestorElementId)
        Check if the given event name is valid. If not, an appropriate error is added.
      • parseExecutionListenersOnTransition

        public void parseExecutionListenersOnTransition​(Element activitiElement,
                                                        TransitionImpl activity)
      • parseExecutionListener

        public ExecutionListener parseExecutionListener​(Element executionListenerElement,
                                                        java.lang.String ancestorElementId)
        Parses an ExecutionListener implementation for the given executionListener element.
        Parameters:
        executionListenerElement - the XML element containing the executionListener definition.
      • parseDiagramInterchangeElements

        public void parseDiagramInterchangeElements()
      • parseBPMNDiagram

        public void parseBPMNDiagram​(Element bpmndiagramElement)
      • parseBPMNPlane

        public void parseBPMNPlane​(Element bpmnPlaneElement)
      • parseBPMNShape

        public void parseBPMNShape​(Element bpmnShapeElement)
      • parseDIBounds

        protected void parseDIBounds​(Element bpmnShapeElement,
                                     HasDIBounds target)
      • parseBPMNEdge

        public void parseBPMNEdge​(Element bpmnEdgeElement)
      • getProcessDefinition

        public ProcessDefinitionEntity getProcessDefinition​(java.lang.String processDefinitionKey)
      • name

        public BpmnParse name​(java.lang.String name)
        Overrides:
        name in class Parse
      • sourceResource

        public BpmnParse sourceResource​(java.lang.String resource,
                                        java.lang.ClassLoader classLoader)
        Overrides:
        sourceResource in class Parse
      • parseBooleanAttribute

        public java.lang.Boolean parseBooleanAttribute​(java.lang.String booleanText,
                                                       boolean defaultValue)
      • parseBooleanAttribute

        public java.lang.Boolean parseBooleanAttribute​(java.lang.String booleanText)
      • parseDoubleAttribute

        public java.lang.Double parseDoubleAttribute​(Element element,
                                                     java.lang.String attributeName,
                                                     java.lang.String doubleText,
                                                     boolean required)
      • isStartable

        protected boolean isStartable​(Element element)
      • isExclusive

        protected boolean isExclusive​(Element element)
      • isAsyncBefore

        protected boolean isAsyncBefore​(Element element)
      • isAsyncAfter

        protected boolean isAsyncAfter​(Element element)
      • isServiceTaskLike

        protected boolean isServiceTaskLike​(Element element)
      • hasConnector

        protected boolean hasConnector​(Element element)
      • getJobDeclarations

        public java.util.Map<java.lang.String,​java.util.List<JobDeclaration<?,​?>>> getJobDeclarations()
      • getJobDeclarationsByKey

        public java.util.List<JobDeclaration<?,​?>> getJobDeclarationsByKey​(java.lang.String processDefinitionKey)
      • parseActivityInputOutput

        protected void parseActivityInputOutput​(Element activityElement,
                                                ActivityImpl activity)
      • checkActivityInputOutputSupported

        protected boolean checkActivityInputOutputSupported​(Element activityElement,
                                                            ActivityImpl activity,
                                                            IoMapping inputOutput)
      • checkActivityOutputParameterSupported

        protected boolean checkActivityOutputParameterSupported​(Element activityElement,
                                                                ActivityImpl activity)
      • ensureNoIoMappingDefined

        protected void ensureNoIoMappingDefined​(Element element)
      • addTimeCycleWarning

        protected void addTimeCycleWarning​(Element timeCycleElement,
                                           java.lang.String type,
                                           java.lang.String timerElementId)
      • ensureNoExpressionInMessageStartEvent

        protected void ensureNoExpressionInMessageStartEvent​(Element element,
                                                             EventSubscriptionDeclaration messageStartEventSubscriptionDeclaration,
                                                             java.lang.String parentElementId)