Class AbstractProcessApplication
- All Implemented Interfaces:
ProcessApplicationInterface
- Direct Known Subclasses:
AbstractEjbProcessApplication,AbstractServletProcessApplication,EmbeddedProcessApplication,SpringProcessApplication
- Author:
- Daniel Meyer
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringprotected booleanprotected BeanELResolverprotected ELResolverprotected ProcessApplicationScriptEnvironmentprotected VariableSerializers -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract StringOverride this method to autodetect an application name in case theProcessApplicationannotation was used but without parameter.voidcreateDeployment(String processArchiveName, DeploymentBuilder deploymentBuilder) Override this method in order to programmatically add resources to the deployment created by this process application.voiddeploy()Deploy this process application into the runtime container.<T> TThe default implementation simply modifies the ContextClassLoader<T> Texecute(Callable<T> callable, InvocationContext invocationContext) Is invoked instead ofProcessApplicationInterface.execute(Callable)if a context is available.BeanELResolverReturns an instance ofBeanELResolverthat a process application caches.Provides the default Process Engine name to deploy to, if no Process Engine was defined inprocesses.xml.ELResolverThis allows the process application to provide a custom ElResolver to the process engine.Allows the process application to provide anExecutionListenerwhich is notified about all execution events in all of the process instances deployed by this process application.getName()Override this method to provide an environment-specificClassLoaderto be used by the process engine for loading resources from the process applicationprotected ProcessApplicationScriptEnvironmentoverride this method in order to provide a map of properties.SinceProcessApplicationInterface.getReference()may return a proxy object, this method returs the actual, unproxied object and is meant to be called from theProcessApplicationInterface.execute(Callable)method.getScriptEngineForName(String name, boolean cache) Allows the process application to provide aTaskListenerwhich is notified about all Task events in all of the process instances deployed by this process application.protected ELResolverInitializes the process application provided ElResolver.protected voidsetDefaultDeployToEngineName(String defaultDeployToEngineName) Programmatically set the name of the Process Engine to deploy to if no Process Engine is defined inprocesses.xml.voidsetVariableSerializers(VariableSerializers variableSerializers) voidundeploy()Undeploy this process application from the runtime container.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.camunda.bpm.application.ProcessApplicationInterface
getReference
-
Field Details
-
processApplicationElResolver
protected ELResolver processApplicationElResolver -
processApplicationBeanElResolver
protected BeanELResolver processApplicationBeanElResolver -
processApplicationScriptEnvironment
-
variableSerializers
-
isDeployed
protected boolean isDeployed -
defaultDeployToEngineName
-
-
Constructor Details
-
AbstractProcessApplication
public AbstractProcessApplication()
-
-
Method Details
-
deploy
public void deploy()Description copied from interface:ProcessApplicationInterfaceDeploy this process application into the runtime container.
NOTE: on some containers (like WildFly) the deployment of the process application is performed asynchronously and via introspection at deployment time. This means that there is no guarantee that the process application is fully deployed after this method returns.If you need a post deployment hook, use the @
PostDeployannotation.- Specified by:
deployin interfaceProcessApplicationInterface
-
undeploy
public void undeploy()Description copied from interface:ProcessApplicationInterfaceUndeploy this process application from the runtime container.
If your application needs to be notified of the undeployment, add a @
PreUndeploymethod to your subclass.- Specified by:
undeployin interfaceProcessApplicationInterface
-
createDeployment
Description copied from interface:ProcessApplicationInterfaceOverride this method in order to programmatically add resources to the deployment created by this process application.
This method is invoked at deployment time once for each process archive deployed by this process application.
NOTE: this method must NOT call the
DeploymentBuilder.deploy()method.- Specified by:
createDeploymentin interfaceProcessApplicationInterface- Parameters:
processArchiveName- the name of the processArchive which is currently being deployed.deploymentBuilder- theDeploymentBuilderused to construct the deployment.
-
getName
- Specified by:
getNamein interfaceProcessApplicationInterface- Returns:
- the name of this process application
-
autodetectProcessApplicationName
Override this method to autodetect an application name in case theProcessApplicationannotation was used but without parameter. -
execute
Description copied from interface:ProcessApplicationInterfaceThe default implementation simply modifies the ContextClassLoader- Specified by:
executein interfaceProcessApplicationInterface- Parameters:
callable- to be executed "within" the context of this process application.- Returns:
- the result of the callback
- Throws:
ProcessApplicationExecutionException
-
execute
public <T> T execute(Callable<T> callable, InvocationContext invocationContext) throws ProcessApplicationExecutionException Description copied from interface:ProcessApplicationInterfaceIs invoked instead ofProcessApplicationInterface.execute(Callable)if a context is available. The default implementation simply forward the call toProcessApplicationInterface.execute(Callable). A custom implementation can override the method to hook into the invocation.- Specified by:
executein interfaceProcessApplicationInterface- Parameters:
callable- to be executed "within" the context of this process application.invocationContext- of the current invocation, can benull- Returns:
- the result of the callback
- Throws:
ProcessApplicationExecutionException
-
getProcessApplicationClassloader
Description copied from interface:ProcessApplicationInterfaceOverride this method to provide an environment-specific
ClassLoaderto be used by the process engine for loading resources from the process applicationNOTE: the process engine must never cache any references to this
ClassLoaderor to classes obtained through thisClassLoader.- Specified by:
getProcessApplicationClassloaderin interfaceProcessApplicationInterface- Returns:
- the
ClassLoaderthat can be used to load classes and resources from this process application.
-
getRawObject
Description copied from interface:ProcessApplicationInterfaceSinceProcessApplicationInterface.getReference()may return a proxy object, this method returs the actual, unproxied object and is meant to be called from theProcessApplicationInterface.execute(Callable)method. (ie. from a Callable implementation passed to the method.).- Specified by:
getRawObjectin interfaceProcessApplicationInterface
-
getProperties
Description copied from interface:ProcessApplicationInterfaceoverride this method in order to provide a map of properties.
The properties are made available globally through the
ProcessApplicationService- Specified by:
getPropertiesin interfaceProcessApplicationInterface- See Also:
-
getElResolver
public ELResolver getElResolver()Description copied from interface:ProcessApplicationInterfaceThis allows the process application to provide a custom ElResolver to the process engine.
The process engine will use this ElResolver whenever it is executing a process in the context of this process application.
The process engine must only call this method from Callable implementations passed to
ProcessApplicationInterface.execute(Callable)- Specified by:
getElResolverin interfaceProcessApplicationInterface
-
getBeanElResolver
public BeanELResolver getBeanElResolver()Description copied from interface:ProcessApplicationInterfaceReturns an instance of
BeanELResolverthat a process application caches.Has to be managed by the process application since
BeanELResolverkeeps hard references to classes in a cache.- Specified by:
getBeanElResolverin interfaceProcessApplicationInterface
-
initProcessApplicationElResolver
protected ELResolver initProcessApplicationElResolver()Initializes the process application provided ElResolver. This implementation uses the Java SE
ServiceLoaderfacilities for resolving implementations ofProcessApplicationElResolver.If you want to provide a custom implementation in your application, place a file named
META-INF/org.camunda.bpm.application.ProcessApplicationElResolverinside your application which contains the fully qualified classname of your implementation. Or simply override this method.- Returns:
- the process application ElResolver.
-
getExecutionListener
Description copied from interface:ProcessApplicationInterfaceAllows the process application to provide an
ExecutionListenerwhich is notified about all execution events in all of the process instances deployed by this process application.If this method returns 'null', the process application is not notified about execution events.
- Specified by:
getExecutionListenerin interfaceProcessApplicationInterface- Returns:
- an
ExecutionListeneror null.
-
getTaskListener
Description copied from interface:ProcessApplicationInterfaceAllows the process application to provide a
TaskListenerwhich is notified about all Task events in all of the process instances deployed by this process application.If this method returns 'null', the process application is not notified about Task events.
- Specified by:
getTaskListenerin interfaceProcessApplicationInterface- Returns:
- a
TaskListeneror null.
-
getScriptEngineForName
-
getEnvironmentScripts
-
getProcessApplicationScriptEnvironment
-
getVariableSerializers
-
setVariableSerializers
-
getDefaultDeployToEngineName
Provides the default Process Engine name to deploy to, if no Process Engine was defined in
processes.xml.- Returns:
- the default deploy-to Process Engine name. The default value is "default".
-
setDefaultDeployToEngineName
Programmatically set the name of the Process Engine to deploy to if no Process Engine is defined in
processes.xml. This allows to circumvent the "default" Process Engine name and set a custom one.- Parameters:
defaultDeployToEngineName-
-