Activiti 自定义用户管理和组管理
最近在研究如何自定义Activiti用户和组管理模块(Example:连接keystone用户管理模块,实际当中使用时当然可以将keystone转变为其他第三方用户管理模块),整理了一下心得,避免后人踩坑。
本文站立在activiti源代码中的activiti-webapp-rest2模块的肩膀上。
借助大神—Nadav Azaria— 2012年的文章《Activiti Authentication And Identity Management Tutorial》 开始全新的自定义之旅。
Activiti为我们提供的这样的入口,想想activiti的ldap模块的原理就应该清楚了,不过仍然疑惑的是如何才能构建activiti能够识别的class,并且如何向activiti引擎进行注册?
很显然,SessionFactory为我们提供了这样的接口。
首先,建立OwnUserManagerFactory和OwnGroupManagerFactory 均需继承activiti的SessionFactory。稍后我们将实现ManagerFactory中引用的class。
public class OwnUserManagerFactory implements SessionFactory {
private KeystoneConnection keystoneConnection;
public OwnUserManagerFactory (KeystoneConnection keystoneConnection) {
this.keystoneConnection = keystoneConnection;
}
public Class<?> getSessionType() {
return UserIdentityManager.class;
}
public Session openSession() {
return new OwnUserManager(this.getKeystoneConnection());
}
public KeystoneConnection getKeystoneConnection() {
return keystoneConnection;
}
public void setKeystoneConnection(KeystoneConnection keystoneConnection) {
this.keystoneConnection = keystoneConnection;
}
}
public class OwnGroupMagagerFactory implements SessionFactory {
private KeystoneConnection keystoneConnection;
public OwnGroupMagagerFactory(KeystoneConnection keystoneConnection) {
this.keystoneConnection = keystoneConnection;
}
@Override
public Class<?> getSessionType() {
return GroupIdentityManager.class;
}
@Override