<?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 Re: Separating out User Management in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71914#M46648</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;We have a similar requirement, and have extended the org.activiti.engine.impl.persistence.entity.UserManager, using our Spring services to fetch users, and transform them to an Activiti User.&amp;nbsp; We also needed to create a custom SessionFactory (CustomUserManagerFactory) which is a factory for our cutom UserManager.&amp;nbsp; The same pattern can be used to provide custom groups if needed.&amp;nbsp; Here is a sample of the classes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;@Service&lt;BR /&gt;class CustomUserManagerFactory implements SessionFactory {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Autowired&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomUserManager customUserManager;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&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;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt; public Session openSession() {&lt;BR /&gt;&amp;nbsp; // Customized UserManger extended from 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;@Component&lt;BR /&gt;public class CustomUserManager extends UserManager {&lt;BR /&gt;&lt;BR /&gt; @Autowired&lt;BR /&gt; private UserService userService;&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public UserEntity findUserById(String username) {&lt;BR /&gt;&amp;nbsp; Assert.notNull(username, "username must not be null");&lt;BR /&gt;&amp;nbsp; com.our.app.model.User user = getUserService().findUserByusername(username);&lt;BR /&gt;&amp;nbsp; return toActivitiUser(user);&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;They can then be wired into spring:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&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="databaseType" value="${activiti.databaseType}" /&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="${activiti.databaseSchemaUpdate}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="jobExecutorActivate" value="${activiti.jobExecutorActivate}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &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;bean class="com.your.app.CustomUserManagerFactory" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean class="com.your.app.CUstomGroupManagerFactory" /&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;/CODE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 16 Nov 2011 20:55:46 GMT</pubDate>
    <dc:creator>rkroll</dc:creator>
    <dc:date>2011-11-16T20:55:46Z</dc:date>
    <item>
      <title>Separating out User Management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71913#M46647</link>
      <description>Hi,&amp;nbsp;&amp;nbsp; I have a centralized user management system which I want to use in my application in which Activiti is used as a process management tool.&amp;nbsp;&amp;nbsp; I dont want to have the pain of syncing the users with activiti user database.&amp;nbsp;&amp;nbsp; If I see the tasks APIs in Activiti, it doesn't validate the users are th</description>
      <pubDate>Tue, 20 Sep 2011 09:11:55 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71913#M46647</guid>
      <dc:creator>agarwalk</dc:creator>
      <dc:date>2011-09-20T09:11:55Z</dc:date>
    </item>
    <item>
      <title>Re: Separating out User Management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71914#M46648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;We have a similar requirement, and have extended the org.activiti.engine.impl.persistence.entity.UserManager, using our Spring services to fetch users, and transform them to an Activiti User.&amp;nbsp; We also needed to create a custom SessionFactory (CustomUserManagerFactory) which is a factory for our cutom UserManager.&amp;nbsp; The same pattern can be used to provide custom groups if needed.&amp;nbsp; Here is a sample of the classes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;@Service&lt;BR /&gt;class CustomUserManagerFactory implements SessionFactory {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Autowired&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomUserManager customUserManager;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&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;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt; public Session openSession() {&lt;BR /&gt;&amp;nbsp; // Customized UserManger extended from 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;@Component&lt;BR /&gt;public class CustomUserManager extends UserManager {&lt;BR /&gt;&lt;BR /&gt; @Autowired&lt;BR /&gt; private UserService userService;&lt;BR /&gt;&lt;BR /&gt; @Override&lt;BR /&gt; public UserEntity findUserById(String username) {&lt;BR /&gt;&amp;nbsp; Assert.notNull(username, "username must not be null");&lt;BR /&gt;&amp;nbsp; com.our.app.model.User user = getUserService().findUserByusername(username);&lt;BR /&gt;&amp;nbsp; return toActivitiUser(user);&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;They can then be wired into spring:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&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="databaseType" value="${activiti.databaseType}" /&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="${activiti.databaseSchemaUpdate}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;property name="jobExecutorActivate" value="${activiti.jobExecutorActivate}" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &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;bean class="com.your.app.CustomUserManagerFactory" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean class="com.your.app.CUstomGroupManagerFactory" /&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;/CODE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Nov 2011 20:55:46 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71914#M46648</guid>
      <dc:creator>rkroll</dc:creator>
      <dc:date>2011-11-16T20:55:46Z</dc:date>
    </item>
    <item>
      <title>Re: Separating out User Management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71915#M46649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;To answer the initial question: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You can use activiti without the internal identity management. So assigning a user task to any "string" is fine and one of the intended ways to use activiti. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Plugging into activiti identity management (as the previous post shows) is necessary if you want users from an external source to be able to log into the activiti explorer. But if you are just embedding the engine, this is not required.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Nov 2011 08:20:32 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71915#M46649</guid>
      <dc:creator>meyerd</dc:creator>
      <dc:date>2011-11-18T08:20:32Z</dc:date>
    </item>
    <item>
      <title>Re: Separating out User Management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71916#M46650</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;To answer the initial question: &lt;BR /&gt;You can use activiti without the internal identity management. So assigning a user task to any "string" is fine and one of the intended ways to use activiti.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;It's acceptable for me.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Plugging into activiti identity management (as the previous post shows) is necessary if you want users from an external source to be able to log into the activiti explorer.&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;But if you are just embedding the engine, this is not required.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;I am confused with the conclusion. So, could you show some sample ? Or more detail description?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Dec 2011 04:10:17 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/separating-out-user-management/m-p/71916#M46650</guid>
      <dc:creator>lykm02</dc:creator>
      <dc:date>2011-12-27T04:10:17Z</dc:date>
    </item>
  </channel>
</rss>

