org.camunda.bpm.engine.impl.bpmn.deployer
Class BpmnDeployer

java.lang.Object
  extended by org.camunda.bpm.engine.impl.AbstractDefinitionDeployer<ProcessDefinitionEntity>
      extended by org.camunda.bpm.engine.impl.bpmn.deployer.BpmnDeployer
All Implemented Interfaces:
Deployer

public class BpmnDeployer
extends AbstractDefinitionDeployer<ProcessDefinitionEntity>

Deployer responsible to parse BPMN 2.0 XML files and create the proper ProcessDefinitionEntitys. Overwrite this class if you want to gain some control over this mechanism, e.g. setting different version numbers, or you want to use your own BpmnParser.

Author:
Tom Baeyens, Joram Barrez, Bernd Ruecker

Field Summary
static String[] BPMN_RESOURCE_SUFFIXES
           
protected  BpmnParser bpmnParser
           
protected  ExpressionManager expressionManager
           
protected static PropertyMapKey<String,List<JobDeclaration<?,?>>> JOB_DECLARATIONS_PROPERTY
           
static BpmnParseLogger LOG
           
 
Fields inherited from class org.camunda.bpm.engine.impl.AbstractDefinitionDeployer
DIAGRAM_SUFFIXES, idGenerator
 
Constructor Summary
BpmnDeployer()
           
 
Method Summary
protected  void addAuthorizations(ProcessDefinitionEntity processDefinition)
           
protected  void addAuthorizationsFromIterator(Set<Expression> exprSet, ProcessDefinitionEntity processDefinition, org.camunda.bpm.engine.impl.bpmn.deployer.BpmnDeployer.ExprType exprType)
           
protected  void addDefinitionToDeploymentCache(DeploymentCache deploymentCache, ProcessDefinitionEntity definition)
          Add a definition to the deployment cache
protected  void addEventSubscription(ProcessDefinitionEntity processDefinition, EventSubscriptionDeclaration eventDefinition)
           
protected  void addEventSubscriptions(ProcessDefinitionEntity processDefinition)
           
protected  void addMessageStartEventSubscription(EventSubscriptionDeclaration messageEventDefinition, ProcessDefinitionEntity processDefinition)
           
protected  void addSignalStartEventSubscription(EventSubscriptionDeclaration signalEventDefinition, ProcessDefinitionEntity processDefinition)
           
protected  void addTimerDeclarations(ProcessDefinitionEntity processDefinition)
           
protected  void adjustStartEventSubscriptions(ProcessDefinitionEntity newLatestProcessDefinition, ProcessDefinitionEntity oldLatestProcessDefinition)
          adjust all event subscriptions responsible to start process instances (timer start event, message start event).
protected  void createJobDefinition(ProcessDefinition processDefinition, JobDeclaration<?,?> jobDeclaration)
           
protected  void createResource(String name, byte[] bytes, DeploymentEntity deploymentEntity)
           
protected  void definitionAddedToDeploymentCache(DeploymentEntity deployment, ProcessDefinitionEntity definition, Properties properties)
          Called after a definition was added to the deployment cache.
protected  List<EventSubscriptionEntity> filterSubscriptionsOfDifferentType(EventSubscriptionDeclaration eventSubscription, List<EventSubscriptionEntity> subscriptionsForSameMessageName)
          It is possible to deploy a process containing a start and intermediate message event that wait for the same message or to have two processes, one with a message start event and the other one with a message intermediate event, that subscribe for the same message.
protected  ProcessDefinitionEntity findDefinitionByDeploymentAndKey(String deploymentId, String definitionKey)
          Find a definition entity by deployment id and definition key.
protected  ProcessDefinitionEntity findLatestDefinitionByKeyAndTenantId(String definitionKey, String tenantId)
          Find the last deployed definition entity by definition key and tenant id.
 BpmnParser getBpmnParser()
           
protected  DbEntityManager getDbEntityManager()
           
protected  EventSubscriptionManager getEventSubscriptionManager()
           
 ExpressionManager getExpressionManager()
           
protected  JobDefinitionManager getJobDefinitionManager()
           
protected  JobManager getJobManager()
           
protected  ProcessDefinitionManager getProcessDefinitionManager()
           
protected  String[] getResourcesSuffixes()
           DON'T KEEP DEPLOYMENT-SPECIFIC STATE
protected  void handlePersistedDefinition(ProcessDefinitionEntity definition, ProcessDefinitionEntity persistedDefinition, DeploymentEntity deployment, Properties properties)
           
protected  boolean hasTenantId(EventSubscriptionEntity cachedSubscription, String tenantId)
           
protected  boolean isSameMessageEventSubscriptionAlreadyPresent(EventSubscriptionDeclaration eventSubscription, String tenantId)
           
protected  boolean isSubscriptionForIntermediateEvent(EventSubscriptionEntity subscriptionEntity)
           
protected  boolean isSubscriptionForStartEvent(EventSubscriptionEntity subscriptionEntity)
           
protected  boolean isSubscriptionOfDifferentTypeAsDeclaration(EventSubscriptionEntity subscriptionEntity, EventSubscriptionDeclaration declaration)
           
protected  void persistDefinition(ProcessDefinitionEntity definition)
          Persist definition entity into the database.
protected  void persistedDefinitionLoaded(DeploymentEntity deployment, ProcessDefinitionEntity definition, ProcessDefinitionEntity persistedDefinition)
          Called when a previous version of a definition was loaded from the persistent store.
protected  void removeObsoleteEventSubscriptions(ProcessDefinitionEntity processDefinition, ProcessDefinitionEntity latestProcessDefinition)
           
protected  void removeObsoleteTimers(ProcessDefinitionEntity processDefinition)
           
 void setBpmnParser(BpmnParser bpmnParser)
           
 void setExpressionManager(ExpressionManager expressionManager)
           
protected  List<ProcessDefinitionEntity> transformDefinitions(DeploymentEntity deployment, ResourceEntity resource, Properties properties)
          Transform the resource entity into definition entities.
protected  void updateJobDeclarations(List<JobDeclaration<?,?>> jobDeclarations, ProcessDefinitionEntity processDefinition, boolean isNewDeployment)
           
 
Methods inherited from class org.camunda.bpm.engine.impl.AbstractDefinitionDeployer
deploy, ensureNoDuplicateDefinitionKeys, generateDefinitionId, getCommandContext, getDefinitionDiagramResourceName, getDeploymentCache, getDiagramResourceForDefinition, getDiagramSuffixes, getGeneralDiagramResourceName, getIdGenerator, getNextVersion, getProcessEngineConfiguration, isResourceHandled, loadDefinitions, parseDefinitionResources, persistDefinitions, postProcessDefinitions, registerDefinition, setIdGenerator, stripDefinitionFileSuffix, transformResource, updateDefinitionByLatestDefinition, updateDefinitionByPersistedDefinition
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

public static BpmnParseLogger LOG

BPMN_RESOURCE_SUFFIXES

public static final String[] BPMN_RESOURCE_SUFFIXES

JOB_DECLARATIONS_PROPERTY

protected static final PropertyMapKey<String,List<JobDeclaration<?,?>>> JOB_DECLARATIONS_PROPERTY

expressionManager

protected ExpressionManager expressionManager

bpmnParser

protected BpmnParser bpmnParser
Constructor Detail

BpmnDeployer

public BpmnDeployer()
Method Detail

getResourcesSuffixes

protected String[] getResourcesSuffixes()
DON'T KEEP DEPLOYMENT-SPECIFIC STATE

Specified by:
getResourcesSuffixes in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Returns:
the list of resource suffixes for this cacheDeployer

transformDefinitions

protected List<ProcessDefinitionEntity> transformDefinitions(DeploymentEntity deployment,
                                                             ResourceEntity resource,
                                                             Properties properties)
Description copied from class: AbstractDefinitionDeployer
Transform the resource entity into definition entities.

Specified by:
transformDefinitions in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Parameters:
deployment - the deployment the resources belongs to
resource - the resource to transform
Returns:
a list of transformed definition entities

findDefinitionByDeploymentAndKey

protected ProcessDefinitionEntity findDefinitionByDeploymentAndKey(String deploymentId,
                                                                   String definitionKey)
Description copied from class: AbstractDefinitionDeployer
Find a definition entity by deployment id and definition key.

Specified by:
findDefinitionByDeploymentAndKey in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Parameters:
deploymentId - the deployment id
definitionKey - the definition key
Returns:
the corresponding definition entity or null if non is found

findLatestDefinitionByKeyAndTenantId

protected ProcessDefinitionEntity findLatestDefinitionByKeyAndTenantId(String definitionKey,
                                                                       String tenantId)
Description copied from class: AbstractDefinitionDeployer
Find the last deployed definition entity by definition key and tenant id.

Specified by:
findLatestDefinitionByKeyAndTenantId in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Returns:
the corresponding definition entity or null if non is found

persistDefinition

protected void persistDefinition(ProcessDefinitionEntity definition)
Description copied from class: AbstractDefinitionDeployer
Persist definition entity into the database.

Specified by:
persistDefinition in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Parameters:
definition - the definition entity

addDefinitionToDeploymentCache

protected void addDefinitionToDeploymentCache(DeploymentCache deploymentCache,
                                              ProcessDefinitionEntity definition)
Description copied from class: AbstractDefinitionDeployer
Add a definition to the deployment cache

Specified by:
addDefinitionToDeploymentCache in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Parameters:
deploymentCache - the deployment cache
definition - the definition to add

definitionAddedToDeploymentCache

protected void definitionAddedToDeploymentCache(DeploymentEntity deployment,
                                                ProcessDefinitionEntity definition,
                                                Properties properties)
Description copied from class: AbstractDefinitionDeployer
Called after a definition was added to the deployment cache.

Overrides:
definitionAddedToDeploymentCache in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Parameters:
deployment - the deployment of the definition
definition - the definition entity

persistedDefinitionLoaded

protected void persistedDefinitionLoaded(DeploymentEntity deployment,
                                         ProcessDefinitionEntity definition,
                                         ProcessDefinitionEntity persistedDefinition)
Description copied from class: AbstractDefinitionDeployer
Called when a previous version of a definition was loaded from the persistent store.

Overrides:
persistedDefinitionLoaded in class AbstractDefinitionDeployer<ProcessDefinitionEntity>
Parameters:
deployment - the deployment of the definition
definition - the definition entity
persistedDefinition - the loaded definition entity

handlePersistedDefinition

protected void handlePersistedDefinition(ProcessDefinitionEntity definition,
                                         ProcessDefinitionEntity persistedDefinition,
                                         DeploymentEntity deployment,
                                         Properties properties)
Overrides:
handlePersistedDefinition in class AbstractDefinitionDeployer<ProcessDefinitionEntity>

updateJobDeclarations

protected void updateJobDeclarations(List<JobDeclaration<?,?>> jobDeclarations,
                                     ProcessDefinitionEntity processDefinition,
                                     boolean isNewDeployment)

createJobDefinition

protected void createJobDefinition(ProcessDefinition processDefinition,
                                   JobDeclaration<?,?> jobDeclaration)

adjustStartEventSubscriptions

protected void adjustStartEventSubscriptions(ProcessDefinitionEntity newLatestProcessDefinition,
                                             ProcessDefinitionEntity oldLatestProcessDefinition)
adjust all event subscriptions responsible to start process instances (timer start event, message start event). The default behavior is to remove the old subscriptions and add new ones for the new deployed process definitions.


addTimerDeclarations

protected void addTimerDeclarations(ProcessDefinitionEntity processDefinition)

removeObsoleteTimers

protected void removeObsoleteTimers(ProcessDefinitionEntity processDefinition)

removeObsoleteEventSubscriptions

protected void removeObsoleteEventSubscriptions(ProcessDefinitionEntity processDefinition,
                                                ProcessDefinitionEntity latestProcessDefinition)

addEventSubscriptions

protected void addEventSubscriptions(ProcessDefinitionEntity processDefinition)

addEventSubscription

protected void addEventSubscription(ProcessDefinitionEntity processDefinition,
                                    EventSubscriptionDeclaration eventDefinition)

addMessageStartEventSubscription

protected void addMessageStartEventSubscription(EventSubscriptionDeclaration messageEventDefinition,
                                                ProcessDefinitionEntity processDefinition)

isSameMessageEventSubscriptionAlreadyPresent

protected boolean isSameMessageEventSubscriptionAlreadyPresent(EventSubscriptionDeclaration eventSubscription,
                                                               String tenantId)

hasTenantId

protected boolean hasTenantId(EventSubscriptionEntity cachedSubscription,
                              String tenantId)

filterSubscriptionsOfDifferentType

protected List<EventSubscriptionEntity> filterSubscriptionsOfDifferentType(EventSubscriptionDeclaration eventSubscription,
                                                                           List<EventSubscriptionEntity> subscriptionsForSameMessageName)
It is possible to deploy a process containing a start and intermediate message event that wait for the same message or to have two processes, one with a message start event and the other one with a message intermediate event, that subscribe for the same message. Therefore we have to find out if there are subscriptions for the other type of event and remove those.

Parameters:
eventSubscription -
subscriptionsForSameMessageName -

isSubscriptionOfDifferentTypeAsDeclaration

protected boolean isSubscriptionOfDifferentTypeAsDeclaration(EventSubscriptionEntity subscriptionEntity,
                                                             EventSubscriptionDeclaration declaration)

isSubscriptionForStartEvent

protected boolean isSubscriptionForStartEvent(EventSubscriptionEntity subscriptionEntity)

isSubscriptionForIntermediateEvent

protected boolean isSubscriptionForIntermediateEvent(EventSubscriptionEntity subscriptionEntity)

addSignalStartEventSubscription

protected void addSignalStartEventSubscription(EventSubscriptionDeclaration signalEventDefinition,
                                               ProcessDefinitionEntity processDefinition)

addAuthorizationsFromIterator

protected void addAuthorizationsFromIterator(Set<Expression> exprSet,
                                             ProcessDefinitionEntity processDefinition,
                                             org.camunda.bpm.engine.impl.bpmn.deployer.BpmnDeployer.ExprType exprType)

addAuthorizations

protected void addAuthorizations(ProcessDefinitionEntity processDefinition)

createResource

protected void createResource(String name,
                              byte[] bytes,
                              DeploymentEntity deploymentEntity)

getDbEntityManager

protected DbEntityManager getDbEntityManager()

getJobManager

protected JobManager getJobManager()

getJobDefinitionManager

protected JobDefinitionManager getJobDefinitionManager()

getEventSubscriptionManager

protected EventSubscriptionManager getEventSubscriptionManager()

getProcessDefinitionManager

protected ProcessDefinitionManager getProcessDefinitionManager()

getExpressionManager

public ExpressionManager getExpressionManager()

setExpressionManager

public void setExpressionManager(ExpressionManager expressionManager)

getBpmnParser

public BpmnParser getBpmnParser()

setBpmnParser

public void setBpmnParser(BpmnParser bpmnParser)


Copyright © 2017 camunda services GmbH. All rights reserved.