- 浏览: 457889 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (233)
- 技术日志 (87)
- portal (7)
- jBPM/Activiti (34)
- Roller学习 (18)
- Java基础、网站开发 (19)
- 收藏URL (4)
- UML (3)
- linux操作 (7)
- 工作环境准备 (8)
- Mina (15)
- tomcat (8)
- Mylyn (3)
- sina网站 (2)
- 规则引擎 (3)
- 工作记录 (11)
- html(5) (9)
- 手机开发 (3)
- oracle (26)
- 常用的 (2)
- maven (8)
- hadoop (0)
- xml (7)
- 错误解决 (5)
- linux (1)
- c# (2)
- c++ (1)
- node.js (1)
- 银行业务知识 (1)
- Java调试 (0)
最新评论
-
tomcatmeng:
请问候选用户是怎样task自己的任务,看网上说先根据任务id先 ...
jBPM4.4:ForEach的使用--动态设置参与人数 -
maoweiwer:
友情提醒:如果是在MYSQL下创建数据库,则还需要更改\jbp ...
jBPM4.4: 创建数据库表 -
zybing:
ganjiang 写道有点疑惑,请lz指点,1.那个“depl ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤 -
zybing:
ganjiang 写道有点疑惑,请lz指点,1.那个“depl ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤 -
ganjiang:
有点疑惑,请lz指点,1.那个“deployId”不知是那个i ...
jBPM4.4:如何图示化显示当前的流程执行到了哪一步骤
jbPM4.4中的用户:
见:http://zybing.iteye.com/admin/blogs/778919
在jbpm.wire.bindings.xml配置中,
这2个和用户相关:
<binding class="org.jbpm.pvm.internal.wire.binding.IdentitySessionBinding" /> <binding class="org.jbpm.pvm.internal.wire.binding.IdentityServiceBinding" />
----------------
先看org.jbpm.pvm.internal.wire.binding.IdentityServiceBinding
这个是对外服务,提供的Identity Service类的绑定:
实现(主要的parse函数):
public Object parse(Element element, Parse parse, Parser parser) { ObjectDescriptor descriptor = new ObjectDescriptor(IdentityServiceImpl.class); descriptor.addInjection("commandService", new ReferenceDescriptor(CommandService.NAME_TX_REQUIRED_COMMAND_SERVICE)); return descriptor; }
这里加载了IdentityServiceImpl,实现了IdentityService接口;
IdentityServiceImpl实现了对外用户服务的功能,每个功能一个command;如:
public void createUser(String userId, String givenName, String familyName) { commandService.execute ( new CreateUserCmd(userId, givenName, familyName)); }
创建用户,其实是创建一个CreateUserCmd命令,然后又commandService去执行;
看CreateUserCmd:
具体的执行是是调用IdentitySession的对应功能:
public Void execute(Environment environment) throws Exception { IdentitySession identitySession = environment.get(IdentitySession.class); identitySession.createUser(userId, givenName, familyName, businessEmail); return null; }
再看其他的一些方法,也都是如此;都是调用IdentiitySession的对应功能;
--------------------------------------------------------------------------------
IdentitySession:
IdentitySession是内部实现用户功能的接口:
在jbpm.wire.bindings.xml配置中,
<binding class="org.jbpm.pvm.internal.wire.binding.IdentitySessionBinding" />
先看org.jbpm.pvm.internal.wire.binding.IdentitySessionBinding
public Object parse(Element element, Parse parse, Parser parser) { ObjectDescriptor objectDescriptor = new ObjectDescriptor(IdentitySessionImpl.class); objectDescriptor.addTypedInjection("session", Session.class); return objectDescriptor; }
是在加载IdentitySession:具体的实现是IdentitySessionImpl;
看IdentitySessionImpl中的具体方法:
public String createUser(String userName, String givenName, String familyName, String businessEmail) { try { User user = findUserById(userName); if (user != null) { throw new JbpmException("Cannot create user, userId: [" + userName + "] has been used"); } } catch(Exception ex) { throw new JbpmException("Cannot create user, error while validating", ex); } UserImpl user = new UserImpl(userName, givenName, familyName); user.setBusinessEmail(businessEmail); long dbid = EnvironmentImpl.getFromCurrent(DbidGenerator.class).getNextId(); user.setDbid(dbid); session.save(user); return user.getId(); }
这个就是在调用数据库,获取数据了;
IdentitySession返回的用户,也是Interface: org.jbpm.api.identity.User;组是Group接口;
jBPM中的实现:org.jbpm.pvm.internal.identity.impl.UserImpl
--------------------------------------------------------------------------------
jBPM4.4改成自己的用户体系:
自己继承IdentitySession,实现接口方法;譬如为MyIdentitySessionImpl;
知道有2种方式把MyIdentitySessionImpl接入到系统中:
1. 自己实现一个IdentitySessionBinding,
在配置文件jbpm.wire.bindings.xml配置中,
把这个注释掉
<binding class="org.jbpm.pvm.internal.wire.binding.IdentitySessionBinding" />
绑定自己写的IdentitySessionBinding
2. 直接在transaction-context中指定自己的Session实现:
在配置文件jbpm.cfg.xml中:
<transaction-context> <object class="MyIdentitySessionImpl" /> </transaction-context>
==============================================================
SpringSecurity的(DB)用户:
见:http://zybing.iteye.com/admin/blogs/548085
SpringSecurity的用户配置为:authenticationManager
用Roller中的配置来说明一下:
<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers"> <list> <ref local="daoAuthenticationProvider"/> <!-- Uncomment this for LDAP/SSO configuration <ref local="ldapAuthProvider"/> --> <!-- Uncomment this for CAS/SSO configuration <ref local="casAuthenticationProvider"/> --> <ref local="anonymousAuthenticationProvider"/> <!-- rememberMeAuthenticationProvider added programmatically --> </list> </property> </bean>
如果是用的DB的用户管理,authenticationManager配的是daoAuthenticationProvider;
daoAuthenticationProvider的配置:
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="jdbcAuthenticationDao"/> <property name="userCache" ref="userCache"/> </bean>
daoAuthenticationProvider的配置属性有3个:
- userDetailsService: 这个负责从DB中获取用户对象
- userCache : 定义了用户对象如何缓存:
有2个选项:- nullUserCache 不用缓存
- EhCacheBasedUserCache: 通过EhCache进行缓存(见下面的例子)
- passwordEncoder: 定义了用户口令如何加密的:
有3个选项:- PlaintextPasswordEncoder: 就用明文,不加密
- ShaPasswordEncoder: 用Sha加密
- Md5PasswordEncoder:用Md5加密
其中userDetailsService是主角。
cache配置如下:
<bean id="userCache" class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache"> <property name="cache"> <bean class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager"> <bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/> </property> <property name="cacheName" value="userCache"/> </bean> </property> </bean>
userDetailsService:其中只有一个方法,就是loadUserByUsername,返回UserDetails接口(就是包括获取用户属性的一些方法)
UserDetails接口在SpringSecurity中有一个user类具体的实现;
UserDetails中,有一个方法是获取用户权限的,返回:grantedAuthority[], 这也是一个接口,就是获取到权限的名字,具体的实现GrantedAuthorityImpl。
==============================================================
把jBPM用户和SpringSecurity用户都整合到自己的系统中来:
自己的系统是SSH的,通过Hibernate访问数据库,进行ORM的,
jBPM也配置成通过spring整合Hibernate的方式;
自己系统中,配置自己的userService,
把jBPM以及SpringSecurity的从数据库获取用户的地方,改成通过自己的userService获取用户对象。
不过这样获取的用户对方是自己的类,还要在jBPM中,在SpringSecurity中,通过转换成他们系统的 用户实现类;
如果系统直接绑定了jBPM和SpringSecurity,自己的用户类就直接实现jBPM和SpringSecurity的用户接口,这样转换都省掉了,不过这样代码的适用范围就小了,看个人实际情况吧。
发表评论
-
新公司新的环境 --- 开发环境说明
2013-10-17 05:37 968到了新公司,开发环境和原来的公司几乎不同,虽说开发环境不同简 ... -
Java中JSON解析器的一点见解
2013-08-15 17:25 1446最终采用了Jackson JSON ... -
npm设置代理 以及 重定向
2013-07-30 10:49 3648node.js通过npm安装模块,npm的代理设置法:npm ... -
windows7访问xp的共享目录
2013-07-18 20:17 2057新装了了一台win7,无法访问到xp的共享目录,怎么调都不行 ... -
Access restriction: The type XXX is not accessible due to restriction on require
2013-01-06 09:14 1116引用rt.jar中的一个类,结 ... -
JVM崩溃
2012-07-03 10:19 1645程序本来好好的, 做了一次大修改,测试的时候发现在某些场合下, ... -
关于泛型中<? extends A> 和 <? super A>的差别
2012-05-22 16:05 1186天下文章一大抄, 继续抄 来源: 百度上搜索&quo ... -
泛型类型的子类及通配符的使用
2012-05-22 15:30 1531最近碰到一个泛型的问题, 就在网上找技术贴, 挖坟挖出个08年 ... -
Calendar中的Time/isTimeSet
2012-05-03 14:15 1190在调试程序,在Eclipse的watch窗口,发现Cal ... -
Java中getResourceAsStream的用法
2012-02-14 10:12 1364Java中getResourceAsStream的用 ... -
Tomcat没有说支持WebSocket,只能用Jetty了
2012-01-18 11:11 1346Tomcat没有说支持WebSocket,只能用Jetty了 -
做网站需要注意的地方以及需要采用的技术、产品
2012-01-16 10:24 1168整个网站: 内容组织 1. 前台技术 ... -
【HTML】块级元素的盒子属性
2012-01-09 09:42 1734html中的块级元素:标记节、division、标题、段落、列 ... -
CSS几种定义方式
2012-01-09 09:26 18581. 针对标记的定义: <style ty ... -
HTML中的注释
2012-01-09 09:05 1307在HTML中的注释是 <!-- --> ... -
警告:编码 UTF8 的不可映射字符
2011-12-27 10:38 1970今天也遇到了这个问题,网上查了一下,天下文章一大抄,也抄了过来 ... -
从JBPM4以后的走向
2011-12-23 09:47 2096从JBPM4以后, 原来jBPM的设计师Tom Baeye ... -
【】ActiveX回调JS函数
2011-11-03 14:11 1982控件回调JS函数 http://blog.163 ... -
【xml】在页面中使用XML同步对象
2011-10-31 10:30 1232在页面中,需要获得XML数据,这个数据有控件进行获取,为了保证 ... -
【xml】SchemaLocation、import、include
2011-10-27 16:27 3191在xml中,定义了namespace,如果要验证xml文档的有 ...
相关推荐
【JBPM4.4+Spring+EXT 整合详解】 JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程自动化。版本4.4是JBPM的一个重要里程碑,它提供了强大的工作流设计、执行和监控能力...
【JBPM4.4+Hibernate3.5.4+Spring3.0.4+Struts2.1.8整合】的整个过程涉及到多个关键组件的集成,这些组件都是Java企业级开发中的重要部分。首先,JBPM(Business Process Management)是一个开源的工作流引擎,它...
在Jbpm4.4中整合Spring,可以利用Spring的这些优势,比如将Jbpm的流程实例管理、任务分配等操作集成到Spring容器中,实现流程服务的声明式配置和管理。 **3. Hibernate4整合** Hibernate4是流行的ORM(对象关系映射...
【jbpm4.4+SSH】是一个集成的Java企业级应用框架,主要涉及的是工作流管理系统jbpm4.4与Spring、Struts2(SSH)三大框架的整合。jbpm4是一个开源的工作流程管理系统,它提供了流程定义、执行、监控和优化等一系列...
这个集成项目是基于特定版本的这些技术,包括jbpm4.4(业务流程管理),spring2.5.6(依赖注入和事务管理),hibernate 3.6(对象关系映射),以及struts2.2.1(MVC框架)。下面将详细介绍这些组件以及它们如何协同...
3. **持久化**:jbpm4.4使用JPA(Java Persistence API)来保存流程实例和相关数据到数据库中,确保数据的持久性和可恢复性。 4. **任务服务**:提供了一套API来处理任务的分配、接收、完成和查询,使得业务用户...
【jbpm4.4+s2sh请假流程例子】是一个典型的结合了jbpm4.4工作流引擎和Struts2、Spring、Hibernate(S2SH)框架的实战项目,旨在演示如何在企业级应用中实现一个完整的请假流程。在这个例子中,jbpm4.4作为流程管理的...
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习
父项目中,根据Maven的规范,配置了相关依赖包的引用,包括:Jbpm4.4的引用包引用、Junit4.9的测试包引用,hibernate的引用包,以及应用服务器Jboss的Client引用等。 接口中,提供了部署流程、创建实例、获得当前...
JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为第一部分,需要下载第二部分一起解压才可用,下载地址:http://download.csdn.net/detail/zf723182723/4385173)
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
JBPM4.4还提供了可视化的流程设计器,用户可以通过拖拽方式构建流程图,大大简化了流程开发过程。 【SSH2】 SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。SSH2...
jbpm4.4提供了图形化的流程设计工具,支持工作流定义语言(WSDL),并且与Java EE应用服务器紧密集成,可以方便地在企业级应用中部署和运行流程。 【SSH2】在这里指的是Spring、Struts和Hibernate三个开源框架的...
这个系统利用了jbpm4.4(Java Business Process Management)作为工作流引擎,SSH(Struts2、Spring、Hibernate)作为后端开发框架,Oracle数据库存储数据,以及jQuery EasyUI作为前端界面库。下面将详细介绍这些...
在本项目中,Shiro被用于权限控制,它可以灵活地根据用户的角色和权限来决定是否允许访问特定的资源,甚至细化到按钮级别,实现了细粒度的权限管理。 【JBPM4.4工作流引擎】 JBPM(Java Business Process ...
**jbpm4.4 + Servlet 知识点详解** jbpm4.4 是一个流行的开源工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。结合Servlet技术,可以构建出高效的Web应用程序,实现流程自动化。在这个...
【jbpm4.4+tomcat+s2sh】是一个基于Java EE的完整开发流程,它结合了jBPM 4.4(一个轻量级的工作流管理系统),Tomcat(一个流行的Java应用服务器),以及SSH(Struts2、Spring和Hibernate三大Java Web开发框架的...
【JBPM4.4+SSH2完整整合jar包】是一个包含了一系列Java库的压缩包,主要用于帮助开发者在Java环境中实现业务流程管理(BPM)与Spring(SSH中的S)、Struts(SSH中的H)和Hibernate(SSH中的H)的深度集成。...