<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Own UserManagement -problem with using tx:annotation-driven in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139979#M98051</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;i wish to realize user management with own tables in other database for user and user groups for activiti explorer using declarative approach for transactions with additional transaction mananger.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; Into activiti explorer must be possible only change user email and password. But i have the problem with declarative approach for transactions :evil:&amp;nbsp; :evil: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if i use declarative approach for transactions (also turn on via&lt;/SPAN&gt;&lt;EM&gt; &amp;lt;tx:annotation-driven transaction-manager="myTransactionManager"/&amp;gt; &lt;/EM&gt;&lt;SPAN&gt; in spring configuration ) the &lt;/SPAN&gt;&lt;EM&gt;Cannot convert value of type [$Proxy6 implementing org.activiti.engine.impl.interceptor.Session,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.driveit.CustomUserManager&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp; exception will be thrown :shock: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy6 implementing org.activiti.engine.impl.interceptor.Session,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'com.driveit.CustomUserManager' for property 'customUserManager'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy6 implementing org.activiti.engine.impl.interceptor.Session,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.driveit.CustomUserManager] for property 'customUserManager': no matching editors or conversion strategy found&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:485)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:516)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:510)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1406)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1365)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 51 more&lt;BR /&gt;Caused by: java.lang.IllegalStateException: Cannot convert value of type [$Proxy6 implementing org.activiti.engine.impl.interceptor.Session,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.driveit.CustomUserManager] for property 'customUserManager': no matching editors or conversion strategy found&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:241)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:470)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 57 more&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;The my user manager is registered as bean in spring configuration (beacuse it is needed &lt;/SPAN&gt;&lt;STRONG&gt;imho &lt;/STRONG&gt;&lt;SPAN&gt;for @Transacitonal ). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If i comment out this &lt;/SPAN&gt;&lt;EM&gt;tx:annotation-driven &lt;/EM&gt;&lt;SPAN&gt; setting, the my user manager will be correctly&amp;nbsp; injected.&amp;nbsp; :!: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But the declarative transactional management is turned off :-((&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What is wrong???&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks a lot for your help!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S The classes and configs&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;package com.driveit;&lt;BR /&gt;&lt;BR /&gt;import java.util.List;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.identity.Group;&lt;BR /&gt;import org.activiti.engine.identity.User;&lt;BR /&gt;import org.activiti.engine.identity.UserQuery;&lt;BR /&gt;import org.activiti.engine.impl.Page;&lt;BR /&gt;import org.activiti.engine.impl.UserQueryImpl;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.IdentityInfoEntity;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.UserEntity;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.UserManager;&lt;BR /&gt;import org.springframework.transaction.annotation.Transactional;&lt;BR /&gt;public class CustomUserManager extends UserManager {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public User createNewUser(String userId) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return super.createNewUser(userId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;// other methods of "activiti"-UserManager &lt;BR /&gt;}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;custom factory&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;import org.activiti.engine.impl.interceptor.Session;&lt;BR /&gt;import org.activiti.engine.impl.interceptor.SessionFactory;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;public class CustomUserManagerFactory implements SessionFactory {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CustomUserManager customUserManager;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Class&amp;lt;?&amp;gt; getSessionType() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// original UserManager&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return org.activiti.engine.impl.persistence.entity.UserManager.class;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void setCustomUserManager(CustomUserManager customUserManager) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.customUserManager = customUserManager;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Session openSession() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Customized UserManger extended from&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// org.activiti.engine.impl.persistence.entity.UserManager&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return customUserManager;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Spring configuration &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;….&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="dbProperties"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="location" value="classpath:db.properties" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!– Allow other PropertyPlaceholderConfigurer to run as well –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="ignoreUnresolvablePlaceholders" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="driverClassName" value="${jdbc.driver}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="url" value="${jdbc.url}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="username" value="${jdbc.username}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="password" value="${jdbc.password}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="defaultAutoCommit" value="false" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="driverClassName" value="${jdbc.driver}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="url" value="${jdbc.url}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="username" value="${jdbc.username}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="password" value="${jdbc.password}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="defaultAutoCommit" value="false" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="transactionManager"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="dataSource" ref="dataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myTransactionManager"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="dataSource" ref="myDataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;!– &amp;lt;tx:annotation-driven transaction-manager="myTransactionManager"/&amp;gt; –&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="dataSource" ref="dataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="transactionManager" ref="transactionManager" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="databaseSchemaUpdate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="jobExecutorActivate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="customFormTypes"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean class="org.activiti.explorer.form.UserFormType" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/property&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="customSessionFactories"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ref bean="myCustomUserManagerFactory" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!– &amp;lt;bean class="com.driveit.CustomUserManagerFactory" /&amp;gt; &amp;lt;bean class="com.your.app.CUstomGroupManagerFactory" &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myCustomUserManager" class="com.driveit.CustomUserManager"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myCustomUserManagerFactory" class="com.driveit.CustomUserManagerFactory"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="customUserManager" ref="myCustomUserManager" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;….&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;whole spring configuration :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;BR /&gt;&amp;lt;beans xmlns="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt;"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsi="&lt;A href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/A&gt;" xmlns:context="&lt;A href="http://www.springframework.org/schema/context" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/context&lt;/A&gt;"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:tx="&lt;A href="http://www.springframework.org/schema/tx" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/tx&lt;/A&gt;" xmlns:jee="&lt;A href="http://www.springframework.org/schema/jee" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/jee&lt;/A&gt;"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xsi:schemaLocation="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/context" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/context&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/context/spring-context-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/context/spring-context-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/tx" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/tx&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/tx/spring-tx-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/tx/spring-tx-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/jee" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/jee&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/jee/spring-jee-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/jee/spring-jee-3.1.xsd&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!– This Spring config file is NOT used in Alfresco, as the Activiti engine &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is wired in a different way there –&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="demoDataGenerator" class="org.activiti.explorer.demo.DemoDataGenerator"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init-method="init"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="processEngine" ref="processEngine" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="createDemoUsersAndGroups" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="createDemoProcessDefinitions" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="createDemoModels" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="dbProperties"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="location" value="classpath:db.properties" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!– Allow other PropertyPlaceholderConfigurer to run as well –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="ignoreUnresolvablePlaceholders" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="driverClassName" value="${jdbc.driver}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="url" value="${jdbc.url}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="username" value="${jdbc.username}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="password" value="${jdbc.password}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="defaultAutoCommit" value="false" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="driverClassName" value="${jdbc.driver}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="url" value="${jdbc.url}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="username" value="${jdbc.username}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="password" value="${jdbc.password}" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="defaultAutoCommit" value="false" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="transactionManager"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="dataSource" ref="dataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myTransactionManager"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="dataSource" ref="myDataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;!– &amp;lt;tx:annotation-driven transaction-manager="myTransactionManager"/&amp;gt; –&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="dataSource" ref="dataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="transactionManager" ref="transactionManager" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="databaseSchemaUpdate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="jobExecutorActivate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="customFormTypes"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean class="org.activiti.explorer.form.UserFormType" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/property&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="customSessionFactories"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ref bean="myCustomUserManagerFactory" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!– &amp;lt;bean class="com.driveit.CustomUserManagerFactory" /&amp;gt; &amp;lt;bean class="com.your.app.CUstomGroupManagerFactory" &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/property&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myCustomUserManager" class="com.driveit.CustomUserManager"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="myCustomUserManagerFactory" class="com.driveit.CustomUserManagerFactory"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="customUserManager" ref="myCustomUserManager" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destroy-method="destroy"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="processEngineConfiguration" ref="processEngineConfiguration" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="repositoryService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factory-method="getRepositoryService" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="runtimeService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factory-method="getRuntimeService" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="taskService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factory-method="getTaskService" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="historyService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factory-method="getHistoryService" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="managementService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factory-method="getManagementService" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="identityService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factory-method="getIdentityService" /&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean id="activitiLoginHandler" class="org.activiti.explorer.ui.login.DefaultLoginHandler"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="identityService" ref="identityService" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;/beans&amp;gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 13 Apr 2013 05:58:24 GMT</pubDate>
    <dc:creator>udoderk</dc:creator>
    <dc:date>2013-04-13T05:58:24Z</dc:date>
    <item>
      <title>Own UserManagement -problem with using tx:annotation-driven</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139979#M98051</link>
      <description>Hi all,i wish to realize user management with own tables in other database for user and user groups for activiti explorer using declarative approach for transactions with additional transaction mananger. Into activiti explorer must be possible only change user email and password. But i have the prob</description>
      <pubDate>Sat, 13 Apr 2013 05:58:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139979#M98051</guid>
      <dc:creator>udoderk</dc:creator>
      <dc:date>2013-04-13T05:58:24Z</dc:date>
    </item>
    <item>
      <title>Re: Own UserManagement -problem with using tx:annotation-driven</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139980#M98052</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The problem is, that user manager is just not interface. To avoid &lt;/SPAN&gt;&lt;STRONG&gt;cglib black magic&lt;/STRONG&gt;&lt;SPAN&gt; ;-)) just an interface must be used as method parameter or as return value of methods, related to user management. That is currenlty is not possible without change of activiti engine and activiti explorer core classes usage of AOP @Transactional annotation.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thus i change some activiti engine classes and introduce the user manager interface to achieve usage of @Transactional;-))&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Firstly, i define the ICustomUserManager interface:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;package com.driveit;&lt;BR /&gt;&lt;BR /&gt;import java.util.List;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.identity.Group;&lt;BR /&gt;import org.activiti.engine.identity.User;&lt;BR /&gt;import org.activiti.engine.identity.UserQuery;&lt;BR /&gt;import org.activiti.engine.impl.Page;&lt;BR /&gt;import org.activiti.engine.impl.UserQueryImpl;&lt;BR /&gt;import org.activiti.engine.impl.db.DbSqlSession;&lt;BR /&gt;import org.activiti.engine.impl.db.PersistentObject;&lt;BR /&gt;import org.activiti.engine.impl.history.HistoryManager;&lt;BR /&gt;import org.activiti.engine.impl.interceptor.Session;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.AttachmentManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.ByteArrayManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.DeploymentManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.ExecutionManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.GroupManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.HistoricDetailManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.IdentityInfoEntity;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.IdentityInfoManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.IdentityLinkManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.MembershipManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.ModelManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.ProcessDefinitionManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.ResourceManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.TaskManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.UserEntity;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.UserManager;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.VariableInstanceManager;&lt;BR /&gt;&lt;BR /&gt;public interface ICustomUserManager extends Session {&lt;BR /&gt;&lt;BR /&gt; // ///from user manager /////&lt;BR /&gt; User createNewUser(String userId);&lt;BR /&gt;&lt;BR /&gt; void insertUser(User user);&lt;BR /&gt;&lt;BR /&gt; void updateUser(UserEntity updatedUser);&lt;BR /&gt;&lt;BR /&gt; UserEntity findUserById(String userId);&lt;BR /&gt;&lt;BR /&gt; void deleteUser(String userId);&lt;BR /&gt;&lt;BR /&gt; List&amp;lt;User&amp;gt; findUserByQueryCriteria(UserQueryImpl query, Page page);&lt;BR /&gt;&lt;BR /&gt; long findUserCountByQueryCriteria(UserQueryImpl query);&lt;BR /&gt;&lt;BR /&gt; List&amp;lt;Group&amp;gt; findGroupsByUser(String userId);&lt;BR /&gt;&lt;BR /&gt; UserQuery createNewUserQuery();&lt;BR /&gt;&lt;BR /&gt; IdentityInfoEntity findUserInfoByUserIdAndKey(String userId, String key);&lt;BR /&gt;&lt;BR /&gt; List&amp;lt;String&amp;gt; findUserInfoKeysByUserIdAndType(String userId, String type);&lt;BR /&gt;&lt;BR /&gt; Boolean checkPassword(String userId, String password);&lt;BR /&gt;&lt;BR /&gt; List&amp;lt;User&amp;gt; findPotentialStarterUsers(String proceDefId);&lt;BR /&gt;&lt;BR /&gt; // ///////&lt;BR /&gt;&lt;BR /&gt; // //////////from abstract manager //////////&lt;BR /&gt;&lt;BR /&gt; void insert(PersistentObject persistentObject);&lt;BR /&gt;&lt;BR /&gt; void delete(PersistentObject persistentObject);&lt;BR /&gt;&lt;BR /&gt; DbSqlSession getDbSqlSession();&lt;BR /&gt;&lt;BR /&gt; &amp;lt;T&amp;gt; T getSession(Class&amp;lt;T&amp;gt; sessionClass);&lt;BR /&gt;&lt;BR /&gt; DeploymentManager getDeploymentManager();&lt;BR /&gt;&lt;BR /&gt; ResourceManager getResourceManager();&lt;BR /&gt;&lt;BR /&gt; ByteArrayManager getByteArrayManager();&lt;BR /&gt;&lt;BR /&gt; ProcessDefinitionManager getProcessDefinitionManager();&lt;BR /&gt;&lt;BR /&gt; ModelManager getModelManager();&lt;BR /&gt;&lt;BR /&gt; ExecutionManager getProcessInstanceManager();&lt;BR /&gt;&lt;BR /&gt; TaskManager getTaskManager();&lt;BR /&gt;&lt;BR /&gt; IdentityLinkManager getIdentityLinkManager();&lt;BR /&gt;&lt;BR /&gt; VariableInstanceManager getVariableInstanceManager();&lt;BR /&gt;&lt;BR /&gt; HistoricProcessInstanceManager getHistoricProcessInstanceManager();&lt;BR /&gt;&lt;BR /&gt; HistoricDetailManager getHistoricDetailManager();&lt;BR /&gt;&lt;BR /&gt; HistoricActivityInstanceManager getHistoricActivityInstanceManager();&lt;BR /&gt;&lt;BR /&gt; HistoricVariableInstanceManager getHistoricVariableInstanceManager();&lt;BR /&gt;&lt;BR /&gt; HistoricTaskInstanceManager getHistoricTaskInstanceManager();&lt;BR /&gt;&lt;BR /&gt; UserManager getUserManager();&lt;BR /&gt;&lt;BR /&gt; GroupManager getGroupManager();&lt;BR /&gt;&lt;BR /&gt; IdentityInfoManager getIdentityInfoManager();&lt;BR /&gt;&lt;BR /&gt; MembershipManager getMembershipManager();&lt;BR /&gt;&lt;BR /&gt; AttachmentManager getAttachmentManager();&lt;BR /&gt;&lt;BR /&gt; HistoryManager getHistoryManager();&lt;BR /&gt;/////from session ////&lt;BR /&gt; void close();&lt;BR /&gt;&lt;BR /&gt; void flush();&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;Then realized own user factory using user manager interface &lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;package com.driveit;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.impl.interceptor.Session;&lt;BR /&gt;import org.activiti.engine.impl.interceptor.SessionFactory;&lt;BR /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;BR /&gt;&lt;BR /&gt;public class CustomUserManagerFactory implements SessionFactory {&lt;BR /&gt; @Autowired&lt;BR /&gt; ICustomUserManager customUserManager;&lt;BR /&gt;&lt;BR /&gt; public Class&amp;lt;?&amp;gt; getSessionType() {&lt;BR /&gt;&amp;nbsp; // original UserManager&lt;BR /&gt;&amp;nbsp; return ICustomUserManager.class;&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; public void setCustomUserManager(ICustomUserManager customUserManager) {&lt;BR /&gt;&amp;nbsp; this.customUserManager = customUserManager;&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; public Session openSession() {&lt;BR /&gt;&amp;nbsp; // Customized UserManger extended from&lt;BR /&gt;&amp;nbsp; // org.activiti.engine.impl.persistence.entity.UserManager&lt;BR /&gt;&amp;nbsp; return customUserManager;&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; user manager&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;package com.driveit;&lt;BR /&gt;&lt;BR /&gt;import java.util.List;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.identity.Group;&lt;BR /&gt;import org.activiti.engine.identity.User;&lt;BR /&gt;import org.activiti.engine.identity.UserQuery;&lt;BR /&gt;import org.activiti.engine.impl.Page;&lt;BR /&gt;import org.activiti.engine.impl.UserQueryImpl;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.IdentityInfoEntity;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.UserEntity;&lt;BR /&gt;import org.activiti.engine.impl.persistence.entity.UserManager;&lt;BR /&gt;import org.springframework.transaction.annotation.Transactional;&lt;BR /&gt;&lt;BR /&gt;public class CustomUserManager extends UserManager implements ICustomUserManager {&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public User createNewUser(String userId) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.createNewUser(userId);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; @Transactional("myTransactionManager")&lt;BR /&gt; public void insertUser(User user) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; super.insertUser(user);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; @Transactional("myTransactionManager")&lt;BR /&gt; public void updateUser(UserEntity updatedUser) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; super.updateUser(updatedUser);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public UserEntity findUserById(String userId) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findUserById(userId);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public void deleteUser(String userId) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; super.deleteUser(userId);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public List&amp;lt;User&amp;gt; findUserByQueryCriteria(UserQueryImpl query, Page page) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findUserByQueryCriteria(query, page);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public long findUserCountByQueryCriteria(UserQueryImpl query) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findUserCountByQueryCriteria(query);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public List&amp;lt;Group&amp;gt; findGroupsByUser(String userId) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findGroupsByUser(userId);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public UserQuery createNewUserQuery() {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.createNewUserQuery();&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public IdentityInfoEntity findUserInfoByUserIdAndKey(String userId,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String key) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findUserInfoByUserIdAndKey(userId, key);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public List&amp;lt;String&amp;gt; findUserInfoKeysByUserIdAndType(String userId,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String type) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findUserInfoKeysByUserIdAndType(userId, type);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public Boolean checkPassword(String userId, String password) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.checkPassword(userId, password);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public List&amp;lt;User&amp;gt; findPotentialStarterUsers(String proceDefId) {&lt;BR /&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR /&gt;&amp;nbsp; return super.findPotentialStarterUsers(proceDefId);&lt;BR /&gt; }&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;SPAN&gt;Then i adjusted org.activiti.engine.impl.persistence.AbstractManager - change visibility of protected methods to public.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Then i adjusted the org.activiti.engine.impl.interceptor.CommandContext.getUserManager() method as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp; public ICustomUserManager getUserManager() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp; getSession(ICustomUserManager.class);&lt;BR /&gt;&amp;nbsp; }&lt;/CODE&gt;&lt;SPAN&gt;(ICustomUserManager&amp;nbsp; interface will be returned not acitiviti-UserManager)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Then i added the following javas&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;/activiti-explorer/src/org/activiti/engine/impl/UserQueryImpl.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/CheckPassword.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/CreateUserCmd.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/CreateUserQueryCmd.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/DeleteUserCmd.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/GetUserPictureCmd.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/SaveUserCmd.java&lt;BR /&gt;/activiti-explorer/src/org/activiti/engine/impl/cmd/SetUserPictureCmd.java&lt;/UL&gt;&lt;SPAN&gt; to compile that, because the user manager will be called &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The spring activiti configuration:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;BR /&gt;&amp;lt;beans xmlns="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt;"&lt;BR /&gt; xmlns:xsi="&lt;A href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/A&gt;" xmlns:context="&lt;A href="http://www.springframework.org/schema/context" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/context&lt;/A&gt;"&lt;BR /&gt; xmlns:tx="&lt;A href="http://www.springframework.org/schema/tx" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/tx&lt;/A&gt;" xmlns:jee="&lt;A href="http://www.springframework.org/schema/jee" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/jee&lt;/A&gt;"&lt;BR /&gt; xmlns:aop="&lt;A href="http://www.springframework.org/schema/aop" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/aop&lt;/A&gt;"&lt;BR /&gt; xsi:schemaLocation="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/context" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/context&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/context/spring-context-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/context/spring-context-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/tx" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/tx&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/tx/spring-tx-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/tx/spring-tx-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/aop" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/aop&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/aop/spring-aop-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/aop/spring-aop-3.1.xsd&lt;/A&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/jee" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/jee&lt;/A&gt; &lt;A href="http://www.springframework.org/schema/jee/spring-jee-3.1.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/jee/spring-jee-3.1.xsd&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;!– This Spring config file is NOT used in Alfresco, as the Activiti engine &lt;BR /&gt;&amp;nbsp; is wired in a different way there –&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="demoDataGenerator" class="org.activiti.explorer.demo.DemoDataGenerator"&lt;BR /&gt;&amp;nbsp; init-method="init"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="processEngine" ref="processEngine" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="createDemoUsersAndGroups" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="createDemoProcessDefinitions" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="createDemoModels" value="true" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="dbProperties"&lt;BR /&gt;&amp;nbsp; class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="location" value="classpath:db.properties" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;!– Allow other PropertyPlaceholderConfigurer to run as well –&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="ignoreUnresolvablePlaceholders" value="true" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="driverClassName" value="${jdbc.driver}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="url" value="${jdbc.url}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="username" value="${jdbc.username}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="password" value="${jdbc.password}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="defaultAutoCommit" value="false" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="driverClassName" value="${jdbc.driver}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="url" value="${jdbc.url}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="username" value="${jdbc.username}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="password" value="${jdbc.password}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="defaultAutoCommit" value="false" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="transactionManager"&lt;BR /&gt;&amp;nbsp; class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="dataSource" ref="dataSource" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="myTransactionManager"&lt;BR /&gt;&amp;nbsp; class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="dataSource" ref="myDataSource" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;tx:annotation-driven transaction-manager="myTransactionManager"/&amp;gt;&amp;nbsp; &lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="dataSource" ref="dataSource" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="transactionManager" ref="transactionManager" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="databaseSchemaUpdate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="jobExecutorActivate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="customFormTypes"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean class="org.activiti.explorer.form.UserFormType" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/list&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="customSessionFactories"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;list&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ref bean="myCustomUserManagerFactory" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– &amp;lt;bean class="com.driveit.CustomUserManagerFactory" /&amp;gt; &amp;lt;bean class="com.your.app.CUstomGroupManagerFactory" &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/list&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="myCustomUserManager" class="com.driveit.CustomUserManager"&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt; &amp;lt;context:annotation-config/&amp;gt; &lt;BR /&gt; &amp;lt;bean id="myCustomUserManagerFactory" class="com.driveit.CustomUserManagerFactory"&amp;gt;&lt;BR /&gt; &amp;lt;!–&amp;nbsp; &amp;lt;property name="customUserManager" ref="myCustomUserManager" /&amp;gt;&amp;nbsp; –&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"&lt;BR /&gt;&amp;nbsp; destroy-method="destroy"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="processEngineConfiguration" ref="processEngineConfiguration" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="repositoryService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp; factory-method="getRepositoryService" /&amp;gt;&lt;BR /&gt; &amp;lt;bean id="runtimeService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp; factory-method="getRuntimeService" /&amp;gt;&lt;BR /&gt; &amp;lt;bean id="taskService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp; factory-method="getTaskService" /&amp;gt;&lt;BR /&gt; &amp;lt;bean id="historyService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp; factory-method="getHistoryService" /&amp;gt;&lt;BR /&gt; &amp;lt;bean id="managementService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp; factory-method="getManagementService" /&amp;gt;&lt;BR /&gt; &amp;lt;bean id="identityService" factory-bean="processEngine"&lt;BR /&gt;&amp;nbsp; factory-method="getIdentityService" /&amp;gt;&lt;BR /&gt;&lt;BR /&gt; &amp;lt;bean id="activitiLoginHandler" class="org.activiti.explorer.ui.login.DefaultLoginHandler"&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="identityService" ref="identityService" /&amp;gt;&lt;BR /&gt; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;/beans&amp;gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;Same operations must be processed with group manager.[size=150] So such solution is really suboptimal [/size]without support from activiti core side (but this is not &lt;/SPAN&gt;&lt;A href="http://forums.activiti.org/en/viewtopic.php?f=6&amp;amp;t=6341&amp;amp;p=23533#p23533" rel="nofollow noopener noreferrer"&gt;planned currenlty&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S i tested successfully the startup and add the new user to activiti&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 14 Apr 2013 14:02:22 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139980#M98052</guid>
      <dc:creator>udoderk</dc:creator>
      <dc:date>2013-04-14T14:02:22Z</dc:date>
    </item>
    <item>
      <title>Re: Own UserManagement -problem with using tx:annotation-driven</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139981#M98053</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hmm i see your point. I'm wondering if there is an 'easy' solution to this without breaking too much stuff.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Would you mind creating a new Jira issue so we can discuss further there and we could plan it if we come to consensus?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 09:49:12 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139981#M98053</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2013-04-15T09:49:12Z</dc:date>
    </item>
    <item>
      <title>Re: Own UserManagement -problem with using tx:annotation-driven</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139982#M98054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Hmm i see your point. I'm wondering if there is an 'easy' solution to this without breaking too much stuff.&lt;BR /&gt;&lt;BR /&gt;Would you mind creating a new Jira issue so we can discuss further there and we could plan it if we come to consensus?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Ok:-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the issue &lt;/SPAN&gt;&lt;EM&gt;New UserManagement API for usage with Spring AOP &lt;/EM&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;A href="http://jira.codehaus.org/browse/ACT-1650" rel="nofollow noopener noreferrer"&gt;http://jira.codehaus.org/browse/ACT-1650&lt;/A&gt;&lt;SPAN&gt; was created.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks a lot for your replay!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 11:15:13 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139982#M98054</guid>
      <dc:creator>udoderk</dc:creator>
      <dc:date>2013-04-15T11:15:13Z</dc:date>
    </item>
    <item>
      <title>Re: Own UserManagement -problem with using tx:annotation-driven</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139983#M98055</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks. I think it was a design mistake anyway not to make that code an interface.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Apr 2013 10:25:26 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/own-usermanagement-problem-with-using-tx-annotation-driven/m-p/139983#M98055</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2013-04-16T10:25:26Z</dc:date>
    </item>
  </channel>
</rss>

