Class DefaultDeploymentHandler
- java.lang.Object
-
- org.camunda.bpm.engine.impl.repository.DefaultDeploymentHandler
-
- All Implemented Interfaces:
DeploymentHandler
public class DefaultDeploymentHandler extends java.lang.Object implements DeploymentHandler
-
-
Field Summary
Fields Modifier and Type Field Description protected ProcessEngine
processEngine
protected RepositoryService
repositoryService
-
Constructor Summary
Constructors Constructor Description DefaultDeploymentHandler(ProcessEngine processEngine)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<java.lang.String>
determineDeploymentsToResumeByDeploymentName(CandidateDeployment candidateDeployment)
This method is called in the last stage of the deployment process, if a Process Application deployment is performed.java.util.Set<java.lang.String>
determineDeploymentsToResumeByProcessDefinitionKey(java.lang.String[] processDefinitionKeys)
This method is called in the last stage of the deployment process, if a Process Application deployment is performed.java.lang.String
determineDuplicateDeployment(CandidateDeployment candidateDeployment)
This method is called in the second stage of the deployment process, when the previously calledDeploymentHandler.shouldDeployResource(Resource, Resource)
method determines that none of the provided resources for deployment satisfy the comparison criteria, i.e.protected boolean
resourcesDiffer(Resource resource, Resource existing)
boolean
shouldDeployResource(Resource newResource, Resource existingResource)
This method is called in the first stage of the deployment process.
-
-
-
Field Detail
-
processEngine
protected ProcessEngine processEngine
-
repositoryService
protected RepositoryService repositoryService
-
-
Constructor Detail
-
DefaultDeploymentHandler
public DefaultDeploymentHandler(ProcessEngine processEngine)
-
-
Method Detail
-
shouldDeployResource
public boolean shouldDeployResource(Resource newResource, Resource existingResource)
Description copied from interface:DeploymentHandler
This method is called in the first stage of the deployment process. It determines if there is a difference between a
Resource
that is included in the set of resources provided for deployment, and a Resource of the same name, already deployed to the Process Engine with a previous Deployment. The method will be called for every (new, existing) Resource pair. If a Resource of the same name doesn't exist in the Process Engine database, the new Resource is deployed by default and this method is not called.An implementation should define the comparison criteria for the two provided Resources. For the default comparison criteria, see
shouldDeployResource(Resource, Resource)
.The output of this method (Boolean) will determine if
newResource
is included in the list of Resources to be deployed (true), or not (false).- Specified by:
shouldDeployResource
in interfaceDeploymentHandler
- Parameters:
newResource
- is a resource that is part of the new Deployment.existingResource
- is the most recently deployed resource that has the same resource name.- Returns:
true
, if the new Resource satisfies the comparison criteria, orfalse
if not.
-
determineDuplicateDeployment
public java.lang.String determineDuplicateDeployment(CandidateDeployment candidateDeployment)
Description copied from interface:DeploymentHandler
This method is called in the second stage of the deployment process, when the previously called
DeploymentHandler.shouldDeployResource(Resource, Resource)
method determines that none of the provided resources for deployment satisfy the comparison criteria, i.e. there are no new Resources to deploy. This method then determines aDeployment
already present in the Process Engine database that is a duplicate of the new Deployment.An implementation should determine what defines a duplicate Deployment.
The returned Deployment ID (String) will be used to retrieve the corresponding Deployment from the Process Engine database. This Deployment will then be registered with the JobExecutor and the Process Application (if a Process Application Deployment is performed). Furthermore, any Process Definitions that this Deployment contains will be scheduled for activation, if a Process Definition Activation Date was set.
- Specified by:
determineDuplicateDeployment
in interfaceDeploymentHandler
- Parameters:
candidateDeployment
- a wrapper for the set of Resources provided for deployment and the name under which they should have been deployed. At this stage, it should be assumed that all of the Resources of this set didn't satisfy the comparison criteria and will not be deployed.- Returns:
- the Deployment ID of the Deployment determined to be a duplicate of the data
provided by the
candidateDeployment
.
-
determineDeploymentsToResumeByProcessDefinitionKey
public java.util.Set<java.lang.String> determineDeploymentsToResumeByProcessDefinitionKey(java.lang.String[] processDefinitionKeys)
Description copied from interface:DeploymentHandler
This method is called in the last stage of the deployment process, if a Process Application deployment is performed. An additional condition is that the
ProcessApplicationDeploymentBuilder.resumePreviousVersions()
flag of the Process Application Deployment Builder is set, andProcessApplicationDeploymentBuilder.resumePreviousVersionsBy(String)
()} is set to the default,ResumePreviousBy.RESUME_BY_PROCESS_DEFINITION_KEY
value.The implementation of this method determines a
Set
of Deployment IDs of Deployments already present in the Process Engine database. These deployments will then be registered with the Process Application, so that any Java classes that the Process Application provides can be utilised by the Process Definitions of the Deployments.- Specified by:
determineDeploymentsToResumeByProcessDefinitionKey
in interfaceDeploymentHandler
- Parameters:
processDefinitionKeys
- are the Process Definition Keys of a subset of Process Resources provided for deployment. The subset includes Process Definition Keys from:- Processes from Resources that will not be deployed to the
Process Engine database due to the outcome of the
DeploymentHandler.shouldDeployResource(Resource, Resource)
method. - Processes from Resources that will be deployed to the Process Engine database, that update an existing Process Definition, i.e. there is a Process Definition with the same key present in the Process Engine database.
DeploymentHandler.shouldDeployResource(Resource, Resource)
determines that all of the provided resources should be deployed to the database, and there are no Process Definitions with the same key already present in the database (i.e. the Process Resources are completely new), this method will not be called.- Processes from Resources that will not be deployed to the
Process Engine database due to the outcome of the
- Returns:
- a
Set
of deployment IDs of Deployments already present in the Process Engine database, that should be resumed (registered with theJobExecutor
and registered with the newly deployed Process Application).
-
determineDeploymentsToResumeByDeploymentName
public java.util.Set<java.lang.String> determineDeploymentsToResumeByDeploymentName(CandidateDeployment candidateDeployment)
Description copied from interface:DeploymentHandler
This method is called in the last stage of the deployment process, if a Process Application deployment is performed. An additional condition is that the
ProcessApplicationDeploymentBuilder.resumePreviousVersions()
flag of the Process Application Deployment Builder is set, andProcessApplicationDeploymentBuilder.resumePreviousVersionsBy(String)
()} is set to theResumePreviousBy.RESUME_BY_DEPLOYMENT_NAME
value.The implementation of this method should determine a set of Deployment IDs of Deployments with the same name, that are already present in the Process Engine database.
- Specified by:
determineDeploymentsToResumeByDeploymentName
in interfaceDeploymentHandler
- Parameters:
candidateDeployment
- a wrapper for the set of resources that were provided for deployment and the name that should be used for this deployment. This information can be used to find any Deployments of the same name already present in the Process Engine database. The set of Resources can then be used, if needed, to filter out the resulting Deployments according to a given criteria.- Returns:
- a
Set
of deployment IDs of Deployments already present in the Process Engine database, that should be resumed (registered with theJobExecutor
and registered with the newly deployed Process Application).
-
-