public abstract class AbstractProcessApplication extends Object implements ProcessApplicationInterface
Modifier and Type | Field and Description |
---|---|
protected String |
defaultDeployToEngineName |
protected boolean |
isDeployed |
protected BeanELResolver |
processApplicationBeanElResolver |
protected ELResolver |
processApplicationElResolver |
protected ProcessApplicationScriptEnvironment |
processApplicationScriptEnvironment |
protected VariableSerializers |
variableSerializers |
Constructor and Description |
---|
AbstractProcessApplication() |
Modifier and Type | Method and Description |
---|---|
protected abstract String |
autodetectProcessApplicationName()
Override this method to autodetect an application name in case the
ProcessApplication annotation was used but without parameter. |
void |
createDeployment(String processArchiveName,
DeploymentBuilder deploymentBuilder)
Override this method in order to programmatically add resources to the
deployment created by this process application.
|
void |
deploy()
Deploy this process application into the runtime container.
|
<T> T |
execute(Callable<T> callable)
The default implementation simply modifies the Context
ClassLoader |
<T> T |
execute(Callable<T> callable,
InvocationContext invocationContext)
Is invoked instead of
ProcessApplicationInterface.execute(Callable) if a context is available. |
BeanELResolver |
getBeanElResolver()
Returns an instance of
BeanELResolver that a process application caches. |
String |
getDefaultDeployToEngineName()
Provides the default Process Engine name to deploy to, if no Process Engine
was defined in
processes.xml . |
ELResolver |
getElResolver()
This allows the process application to provide a custom ElResolver to the process engine.
|
Map<String,List<ExecutableScript>> |
getEnvironmentScripts()
|
ExecutionListener |
getExecutionListener()
Allows the process application to provide an
ExecutionListener which is notified about
all execution events in all of the process instances deployed by this process application. |
String |
getName() |
ClassLoader |
getProcessApplicationClassloader()
Override this method to provide an environment-specific
ClassLoader to be used by the process
engine for loading resources from the process application |
protected ProcessApplicationScriptEnvironment |
getProcessApplicationScriptEnvironment() |
Map<String,String> |
getProperties()
override this method in order to provide a map of properties.
|
ProcessApplicationInterface |
getRawObject()
Since
ProcessApplicationInterface.getReference() may return a proxy object, this method returs the actual, unproxied object and is
meant to be called from the ProcessApplicationInterface.execute(Callable) method. |
ScriptEngine |
getScriptEngineForName(String name,
boolean cache)
|
TaskListener |
getTaskListener()
Allows the process application to provide a
TaskListener which is notified about
all Task events in all of the process instances deployed by this process application. |
VariableSerializers |
getVariableSerializers() |
protected ELResolver |
initProcessApplicationElResolver()
Initializes the process application provided ElResolver.
|
protected void |
setDefaultDeployToEngineName(String defaultDeployToEngineName)
Programmatically set the name of the Process Engine to deploy to if no Process Engine
is defined in
processes.xml . |
void |
setVariableSerializers(VariableSerializers variableSerializers) |
void |
undeploy()
Undeploy this process application from the runtime container.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getReference
protected ELResolver processApplicationElResolver
protected BeanELResolver processApplicationBeanElResolver
protected ProcessApplicationScriptEnvironment processApplicationScriptEnvironment
protected VariableSerializers variableSerializers
protected boolean isDeployed
protected String defaultDeployToEngineName
public void deploy()
ProcessApplicationInterface
Deploy this process application into the runtime container.
NOTE: on some containers (like JBoss AS 7) 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 @PostDeploy
annotation.
deploy
in interface ProcessApplicationInterface
public void undeploy()
ProcessApplicationInterface
Undeploy this process application from the runtime container.
If your application needs to be notified of the undeployment,
add a @PreUndeploy
method to your subclass.
undeploy
in interface ProcessApplicationInterface
public void createDeployment(String processArchiveName, DeploymentBuilder deploymentBuilder)
ProcessApplicationInterface
Override 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.
createDeployment
in interface ProcessApplicationInterface
processArchiveName
- the name of the processArchive which is currently being deployed.deploymentBuilder
- the DeploymentBuilder
used to construct the deployment.public String getName()
getName
in interface ProcessApplicationInterface
protected abstract String autodetectProcessApplicationName()
ProcessApplication
annotation was used but without parameter.public <T> T execute(Callable<T> callable) throws ProcessApplicationExecutionException
ProcessApplicationInterface
ClassLoader
execute
in interface ProcessApplicationInterface
callable
- to be executed "within" the context of this process application.ProcessApplicationExecutionException
public <T> T execute(Callable<T> callable, InvocationContext invocationContext) throws ProcessApplicationExecutionException
ProcessApplicationInterface
ProcessApplicationInterface.execute(Callable)
if a context is available.
The default implementation simply forward the call to
ProcessApplicationInterface.execute(Callable)
. A custom implementation can override the method
to hook into the invocation.execute
in interface ProcessApplicationInterface
callable
- to be executed "within" the context of this process application.invocationContext
- of the current invocation, can be null
ProcessApplicationExecutionException
public ClassLoader getProcessApplicationClassloader()
ProcessApplicationInterface
Override this method to provide an environment-specific ClassLoader
to be used by the process
engine for loading resources from the process application
NOTE: the process engine must never cache any references to this ClassLoader
or to classes obtained through this ClassLoader
.
getProcessApplicationClassloader
in interface ProcessApplicationInterface
ClassLoader
that can be used to load classes and resources from this process application.public ProcessApplicationInterface getRawObject()
ProcessApplicationInterface
ProcessApplicationInterface.getReference()
may return a proxy object, this method returs the actual, unproxied object and is
meant to be called from the ProcessApplicationInterface.execute(Callable)
method. (ie. from a Callable implementation passed to
the method.).getRawObject
in interface ProcessApplicationInterface
public Map<String,String> getProperties()
ProcessApplicationInterface
override this method in order to provide a map of properties.
The properties are made available globally through the ProcessApplicationService
getProperties
in interface ProcessApplicationInterface
ProcessApplicationService
,
ProcessApplicationInfo.getProperties()
public ELResolver getElResolver()
ProcessApplicationInterface
This 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)
getElResolver
in interface ProcessApplicationInterface
public BeanELResolver getBeanElResolver()
ProcessApplicationInterface
Returns an instance of BeanELResolver
that a process application caches.
Has to be managed by the process application since BeanELResolver
keeps
hard references to classes in a cache.
getBeanElResolver
in interface ProcessApplicationInterface
protected ELResolver initProcessApplicationElResolver()
Initializes the process application provided ElResolver. This implementation uses the
Java SE ServiceLoader
facilities for resolving implementations of ProcessApplicationElResolver
.
If you want to provide a custom implementation in your application, place a file named
META-INF/org.camunda.bpm.application.ProcessApplicationElResolver
inside your application
which contains the fully qualified classname of your implementation. Or simply override this method.
public ExecutionListener getExecutionListener()
ProcessApplicationInterface
Allows the process application to provide an ExecutionListener
which 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.
getExecutionListener
in interface ProcessApplicationInterface
ExecutionListener
or null.public TaskListener getTaskListener()
ProcessApplicationInterface
Allows the process application to provide a TaskListener
which 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.
getTaskListener
in interface ProcessApplicationInterface
TaskListener
or null.public ScriptEngine getScriptEngineForName(String name, boolean cache)
public Map<String,List<ExecutableScript>> getEnvironmentScripts()
protected ProcessApplicationScriptEnvironment getProcessApplicationScriptEnvironment()
public VariableSerializers getVariableSerializers()
public void setVariableSerializers(VariableSerializers variableSerializers)
public String getDefaultDeployToEngineName()
Provides the default Process Engine name to deploy to, if no Process Engine
was defined in processes.xml
.
protected void setDefaultDeployToEngineName(String defaultDeployToEngineName)
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.
defaultDeployToEngineName
- Copyright © 2019. All rights reserved.