<jbpm-configuration>

  <!-- 
    This configuration is used when there is no jbpm.cfg.xml file found in the 
    root of the classpath.  It is a very basic configuration without persistence
    and message services.  Only the authorization service installed.
    You can parse and create processes, but when you try to use one of the 
    unavailable services, you'll get an exception.
  -->
  
  <jbpm-context>
    <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
    <!-- Logging Service (begin) -->
    <service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
    <!-- Logging Service (end) -->
    <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
    <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />
    <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
    <service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
  </jbpm-context>

  <!-- entries pointing to default configuration resources in jbpm-jpdl.jar -->
  <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties" />
  <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties" />
  <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties" />
  <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml" />
  <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml" />
  <string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml" />
  <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml" />
  <string name="resource.mail.templates" value="jbpm.mail.templates.xml" />

  <!-- alternate delegation class loader
  <string name="jbpm.class.loader" value="context" />
  -->
  <bean name="process.class.loader.factory" class="org.jbpm.instantiation.SharedProcessClassLoaderFactory" singleton="true" />
  <bean name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl" singleton="true" />

  <!-- make sure the block size matches the length in ByteArray.hbm.xml -->
  <int name="jbpm.byte.block.size" value="1024" singleton="true" />

  <bean name="jbpm.expression.evaluator" class="org.jbpm.jpdl.el.impl.ExpressionEvaluatorImpl" singleton="true" />
  <bean name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true" />
  <!-- custom function mapper
  <bean name="jbpm.function.mapper" class="org.example.FunctionMapperImpl" />
  -->
  <!-- user code interceptor
  <bean name="jbpm.user.code.interceptor" class="org.example.UserCodeInterceptorImpl" />
  -->

  <string name="jbpm.mail.smtp.host" value="localhost" />
  <string name="jbpm.mail.from.address" value="jbpm@noreply" />
  <bean name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true" />
  
  <bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
    <field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
    <field name="name"><string value="JbpmJobExecutor" /></field>
    <field name="nbrOfThreads"><int value="1" /></field>
    <field name="idleInterval"><int value="5000" /></field>
    <field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
    <field name="maxLockTime"><int value="600000" /></field> <!-- 10 minutes -->
    <field name="lockMonitorInterval"><int value="60000" /></field> <!-- 1 minute -->
    <field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
  </bean>

</jbpm-configuration>
