如何得到jBPM4.4中所有用户的信息

成長中的丫頭 2012-07-04

当然通过identityService的findUsers()可以得到用户的,通过user可以得到所在的组,但是我目前的问题是:如何得到membership表中的name字段,也就是
createMembership(String userId, String groupId, String role);

该语句执行时输入的role字段的值?
identityService中好像只有user跟group类,没有Membership。怎么获得Membership呢?

PS:现在系统只简单应用,所以直接使用了jbpm的用户表,只是想查到这个值,不想重新设计用户表。
guofengcn 2012-07-04
api里是没有提供Membership的,但是在pvm内部是有MembershipImpl这个类的,如果你想找出role这个属性,那需要你去扩展一个cmd了。
成長中的丫頭 2012-07-04
guofengcn 写道
api里是没有提供Membership的,但是在pvm内部是有MembershipImpl这个类的,如果你想找出role这个属性,那需要你去扩展一个cmd了。

刚开始弄,想问下是不是下面这样,模仿internal里面实现啊?
public class IdentityServiceExtend extends IdentityServiceImpl{

	 public List<MembershipImpl> findMemberships() {
		 System.out.println("IdentityServiceExtend"+commandService);
		    return commandService.execute(new FindMembershipsCmd());
	}
}

public class IdentitySessionExtend {
	protected Session session;
	public List<MembershipImpl> findMemberships() {
	    List<?> memberships = session.createCriteria(MembershipImpl.class).list();
	    return CollectionUtil.checkList(memberships, MembershipImpl.class);
	  }
}
public class FindMembershipsCmd implements Command<List<MembershipImpl>> {

	@Override
	public List<MembershipImpl> execute(Environment environment)
			throws Exception {
		// TODO Auto-generated method stub
		IdentitySessionExtend identitySession = environment.get(IdentitySessionExtend.class);
		System.out.println("FindMembershipsCmd.execute()"+identitySession.toString());
	    return identitySession.findMemberships();
	}

}


commandService为null呢,这个应该怎么取,还是我完全理解错了?
成長中的丫頭 2012-07-04
http://www.oecp.cn/hi/yangtaoorange/blog/4216
参考了这个,给后来人做参考吧,已经搞定了,我弄复杂了,谢谢guofengcn 提供思路
guofengcn 2012-07-05
一般情况下原生的API难免不够用,项目中都会扩展一个CustomService,执行的都是各种扩展是CMD,例如回退,会签,代理等等都需要自己去实现。
chenchuan 2012-07-06
个人建议,最好还是不要用jbpm自己提供的组织机构 ,提供相关服务接口给jbpm就好了
Global site tag (gtag.js) - Google Analytics