新聞中心
很多時(shí)候,JBPM自己提供的用戶系統(tǒng)是不夠用的,這時(shí)候就要求我們自己去擴(kuò)展自己的用戶體系。JBPM允許外掛一個(gè)用戶體系。

成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為海滄等服務(wù)建站,海滄等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為海滄企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
如果想嵌入自己的用戶體系,只需如下幾步:
一:創(chuàng)建MyUserImpl,MyGroupImpl,MyMembershipImpl三個(gè)類,分別實(shí)現(xiàn)接口User,Group。由于類MyMembershipImpl是獨(dú)立的,因此沒(méi)有必要繼承或?qū)崿F(xiàn)其他接口。
MyUserImpl 的主要代碼:
Java代碼
- public class MyUserImpl implements Serializable, User {
- private static final long serialVersionUID = 1L;
- private long dbid;
- private String id;
- private String username;//用戶名
- private String password;//密碼
- private String sex;//性別
- private int age;//年齡
- private String tel;//電話號(hào)碼
- public String getUsername() {
- return username;
- }
- public long getDbid() {
- return dbid;
- }
- .
- .//省略部分setter和getter方法
- .
- public String getId() {
- return this.id;
- }
- }
MyGroupImpl 的主要代碼:
Java代碼
- public class MyGroupImpl implements Serializable, Group {
- private static final long serialVersionUID = 1L;
- private long dbid;
- private String groupName;
- private String groupType;
- private MyGroupImpl parentGroup;
- public long getDbid() {
- return dbid;
- }
- public void setDbid(long dbid) {
- this.dbid = dbid;
- }
- //省略部分gettrer和setter方法
- public String getType() {
- return null;
- }
- }
MyMembershipImpl 的主要代碼:
Java代碼
- public class MyMembershipImpl implements Serializable {
- private static final long serialVersionUID = 1L;
- protected long dbid;
- protected User user;
- protected Group group;
- protected String role;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- public Group getGroup() {
- return group;
- }
- public void setGroup(Group group) {
- this.group = group;
- }
- public String getRole() {
- return role;
- }
- public void setRole(String role) {
- this.role = role;
- }
- public long getDbid() {
- return dbid;
- }
- public void setDbid(long dbid) {
- this.dbid = dbid;
- }
- }
當(dāng)然,上面三個(gè)類里面的字段可能不滿足實(shí)際需求,但是沒(méi)有關(guān)系,我們可以添加新的字段。
二:第一步完成了,那么就開始第二步。第二步的主要任務(wù)就是將這些類映射到數(shù)據(jù)庫(kù)里。由于JBPM的持久層的操作采用的是Hibernate進(jìn)行的。所以我們必須編寫一個(gè)Hibernate的映射文件將實(shí)體類映射到數(shù)據(jù)庫(kù)。這個(gè)映射文件可以寫在任何位置,但一般建議寫到ClassPath路徑下面。具體的代碼如下:
XML代碼
- xml version="1.0"?>
- >
- id>
property> property> property> property> property> property> - class>
- id>
property> property> - column="parent"
- class="en.estar.jbpm.identify.MyGroupImpl"
- foreign-key="FK_GROUP_PARENT"/>
- class>
- id>
- column="USER_"
- class="en.estar.jbpm.identify.MyUserImpl"
- foreign-key="FK_MEM_USER"/>
- column="GROUP_"
- class="en.estar.jbpm.identify.MyGroupImpl"
- foreign-key="FK_MEM_GROUP"/>
- class>
- hibernate-mapping>
上面的代碼是仿照J(rèn)BPM默認(rèn)的映射文件jbpm.identity.hbm.xml寫的。這個(gè)文件可以在JBPM的源代碼里面找到,導(dǎo)入jar包時(shí),它被封裝在jbpm.jar里面。映射文件配置好了之后,只需在hibernate的配置文件jbpm.hibernate.cfg.xml中加上一句話 就行了。當(dāng)然,resource的路徑根據(jù)實(shí)際情況而定。
三:通過(guò)以上兩步,就完成了由實(shí)體類到數(shù)據(jù)庫(kù)的映射,也就是說(shuō),當(dāng)你啟動(dòng)tomcat運(yùn)行JBPM的時(shí)候,數(shù)據(jù)庫(kù)里就會(huì)多出三張表:JBPM4_MyUser,JBPM4_MyGroup,JBPM4_MyMembership。雖然如此,但是這只是利用了hibernate的自動(dòng)生成數(shù)據(jù)表的功能產(chǎn)生了三個(gè)表而已,JBPM憑什么知道我需要使用的是我新創(chuàng)建的這三張表,而不會(huì)去調(diào)用原來(lái)的那三張表呢?答案是,他不知道。
所以我們要繼續(xù)進(jìn)行配置。找到j(luò)bpm的一個(gè)配置文件叫:jbpm.cfg.xml。在這個(gè)文件里面原來(lái)有一句話:
import resource="jbpm.identity.cfg.xml"。我們可以去查看jbpm.identity.cfg.xml 的實(shí)際內(nèi)容,結(jié)果里面就一句話: 。有了這句話,就相當(dāng)于告訴了JBPM,它將會(huì)去調(diào)用JBPM自帶的關(guān)于用戶體系操作的一個(gè)接口IdentitySession。這個(gè)類的實(shí)現(xiàn)IdentitySessionImpl里就會(huì)默認(rèn)去調(diào)用JBPM自帶的用戶關(guān)系管理的數(shù)據(jù)表。所以為了改變JBPM的這種習(xí)慣,我們就必須自己創(chuàng)建一個(gè)類,并實(shí)現(xiàn)接口IdentitySession。這樣JBPM就會(huì)去調(diào)用我們自己的實(shí)現(xiàn),而不會(huì)再去調(diào)用它自己的東東。要實(shí)現(xiàn)這個(gè)只需要把他的配置文件jbpm.identity.cfg.xml 的import resource="jbpm.identity.cfg.xml“注釋掉,然后加上一句:
XML代碼
- object>
- transaction-context>
這樣就OK了。下面的任務(wù)就是去實(shí)現(xiàn)MesIdentitySessionImpl中的方法了。不過(guò)我認(rèn)為,里邊的方法沒(méi)有必要全部實(shí)現(xiàn),把幾個(gè)find開頭的方法實(shí)現(xiàn)了就行了,其他的諸如,創(chuàng)建用戶,創(chuàng)建組,刪除用戶等等之類的,我們就沒(méi)有必要實(shí)現(xiàn)了,必要的時(shí)候我們可以自己?jiǎn)为?dú)寫方法實(shí)現(xiàn),就不需要放到該類當(dāng)中了。
文章名稱:JBPM4.4中嵌入自己的用戶體系
瀏覽路徑:http://www.dlmjj.cn/article/djecjdh.html


咨詢
建站咨詢
