org.camunda.bpm.application
Class AbstractProcessApplication

java.lang.Object
  extended by org.camunda.bpm.application.AbstractProcessApplication
All Implemented Interfaces:
ProcessApplicationInterface
Direct Known Subclasses:
EjbProcessApplication, EmbeddedProcessApplication, ServletProcessApplication

public abstract class AbstractProcessApplication
extends Object
implements ProcessApplicationInterface

Author:
Daniel Meyer

Field Summary
protected  boolean isDeployed
           
protected  BeanELResolver processApplicationBeanElResolver
           
protected  ELResolver processApplicationElResolver
           
protected  ProcessApplicationScriptEnvironment processApplicationScriptEnvironment
           
protected  VariableSerializers variableSerializers
           
 
Constructor Summary
AbstractProcessApplication()
           
 
Method Summary
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.
 ELResolver getElResolver()
          This allows the process application to provide a custom ElResolver to the process engine.
 Map<String,List<ExecutableScript>> getEnvironmentScripts()
          see ProcessApplicationScriptEnvironment.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)
          see ProcessApplicationScriptEnvironment.getScriptEngineForName(String, boolean)
 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.
 void setVariableSerializers(VariableSerializers variableSerializers)
           
 void undeploy()
          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, wait
 
Methods inherited from interface org.camunda.bpm.application.ProcessApplicationInterface
getReference
 

Field Detail

processApplicationElResolver

protected ELResolver processApplicationElResolver

processApplicationBeanElResolver

protected BeanELResolver processApplicationBeanElResolver

processApplicationScriptEnvironment

protected ProcessApplicationScriptEnvironment processApplicationScriptEnvironment

variableSerializers

protected VariableSerializers variableSerializers

isDeployed

protected boolean isDeployed
Constructor Detail

AbstractProcessApplication

public AbstractProcessApplication()
Method Detail

deploy

public void deploy()
Description copied from interface: 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.

Specified by:
deploy in interface ProcessApplicationInterface

undeploy

public void undeploy()
Description copied from interface: 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.

Specified by:
undeploy in interface ProcessApplicationInterface

createDeployment

public void createDeployment(String processArchiveName,
                             DeploymentBuilder deploymentBuilder)
Description copied from interface: 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.

Specified by:
createDeployment in interface ProcessApplicationInterface
Parameters:
processArchiveName - the name of the processArchive which is currently being deployed.
deploymentBuilder - the DeploymentBuilder used to construct the deployment.

getName

public String getName()
Specified by:
getName in interface ProcessApplicationInterface
Returns:
the name of this process application

autodetectProcessApplicationName

protected abstract String autodetectProcessApplicationName()
Override this method to autodetect an application name in case the ProcessApplication annotation was used but without parameter.


execute

public <T> T execute(Callable<T> callable)
          throws ProcessApplicationExecutionException
Description copied from interface: ProcessApplicationInterface
The default implementation simply modifies the Context ClassLoader

Specified by:
execute in interface ProcessApplicationInterface
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: ProcessApplicationInterface
Is invoked instead of 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.

Specified by:
execute in interface ProcessApplicationInterface
Parameters:
callable - to be executed "within" the context of this process application.
invocationContext - of the current invocation, can be null
Returns:
the result of the callback
Throws:
ProcessApplicationExecutionException

getProcessApplicationClassloader

public ClassLoader getProcessApplicationClassloader()
Description copied from interface: 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.

Specified by:
getProcessApplicationClassloader in interface ProcessApplicationInterface
Returns:
the ClassLoader that can be used to load classes and resources from this process application.

getRawObject

public ProcessApplicationInterface getRawObject()
Description copied from interface: ProcessApplicationInterface
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. (ie. from a Callable implementation passed to the method.).

Specified by:
getRawObject in interface ProcessApplicationInterface

getProperties

public Map<String,String> getProperties()
Description copied from interface: ProcessApplicationInterface

override this method in order to provide a map of properties.

The properties are made available globally through the ProcessApplicationService

Specified by:
getProperties in interface ProcessApplicationInterface
See Also:
ProcessApplicationService, ProcessApplicationInfo.getProperties()

getElResolver

public ELResolver getElResolver()
Description copied from interface: 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)

Specified by:
getElResolver in interface ProcessApplicationInterface

getBeanElResolver

public BeanELResolver getBeanElResolver()
Description copied from interface: 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.

Specified by:
getBeanElResolver in interface ProcessApplicationInterface

initProcessApplicationElResolver

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.

Returns:
the process application ElResolver.

getExecutionListener

public ExecutionListener getExecutionListener()
Description copied from interface: 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.

Specified by:
getExecutionListener in interface ProcessApplicationInterface
Returns:
an ExecutionListener or null.

getTaskListener

public TaskListener getTaskListener()
Description copied from interface: 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.

Specified by:
getTaskListener in interface ProcessApplicationInterface
Returns:
a TaskListener or null.

getScriptEngineForName

public ScriptEngine getScriptEngineForName(String name,
                                           boolean cache)
see ProcessApplicationScriptEnvironment.getScriptEngineForName(String, boolean)


getEnvironmentScripts

public Map<String,List<ExecutableScript>> getEnvironmentScripts()
see ProcessApplicationScriptEnvironment.getEnvironmentScripts()


getProcessApplicationScriptEnvironment

protected ProcessApplicationScriptEnvironment getProcessApplicationScriptEnvironment()

getVariableSerializers

public VariableSerializers getVariableSerializers()

setVariableSerializers

public void setVariableSerializers(VariableSerializers variableSerializers)


Copyright © 2016 camunda services GmbH. All rights reserved.