JBPM4.4 自定义用户组

来源:互联网 发布:python中的try except 编辑:程序博客网 时间:2024/06/13 07:45

发现JBPM4的权限方面略差一些以后,还是觉得可以续写接口,实现自定义用户组

 

贴出以下几个关键文件:

 

 

jbpm.identity.cfg.xml

 

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>         
  2. <jbpm-configuration>      
  3. <transaction-context>      
  4.      <object class="com.squall.jbpm.test.MesIdentitySessionImpl"/>       
  5.   </transaction-context>      
  6. </jbpm-configuration>    

 

 

MesUser.java

 

Java代码  收藏代码
  1. package com.squall.jbpm.test;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import java.sql.Blob;  
  6.   
  7. import org.jbpm.api.identity.User;  
  8.   
  9. public class MesUser implements Serializable, User {  
  10.   
  11.     private static final long serialVersionUID = 1L;  
  12.   
  13.     private String id;  
  14.   
  15.     private String userNo;// 员工工号  
  16.   
  17.     private String userName;// 员工姓名  
  18.   
  19.     private String userSex;// 性别  
  20.   
  21.     private String userPassword;// 密码  
  22.   
  23.     private String userType;// 类型  
  24.   
  25.     private String userMail;// 电子邮件  
  26.   
  27.     private String isValid;// 是否有效Y/N  
  28.   
  29.     private Blob signaturePic;// 电子签名  
  30.   
  31.     private String remarks;// 备注  
  32.   
  33.     protected long dbid; // 数据库内部自生成的ID  
  34.   
  35.     protected int dbversion;  
  36.   
  37.     public int getDbversion() {  
  38.   
  39.         return dbversion;  
  40.   
  41.     }  
  42.   
  43.     public MesUser() {  
  44.   
  45.     }  
  46.   
  47.     public MesUser(String id, String userName, String userMail) {  
  48.   
  49.         this.id = id;  
  50.   
  51.         this.userName = userName;  
  52.   
  53.         this.userMail = userMail;  
  54.   
  55.     }  
  56.   
  57.     public void setDbversion(int dbversion) {  
  58.   
  59.         this.dbversion = dbversion;  
  60.   
  61.     }  
  62.   
  63.     public long getDbid() {  
  64.   
  65.         return dbid;  
  66.   
  67.     }  
  68.   
  69.     public void setDbid(long dbid) {  
  70.   
  71.         this.dbid = dbid;  
  72.   
  73.     }  
  74.   
  75.     public void setId(String id) {  
  76.   
  77.         this.id = id;  
  78.   
  79.     }  
  80.   
  81.     public String getUserNo() {  
  82.   
  83.         return userNo;  
  84.   
  85.     }  
  86.   
  87.     public void setUserNo(String userNo) {  
  88.   
  89.         this.userNo = userNo;  
  90.   
  91.     }  
  92.   
  93.     public String getUserName() {  
  94.   
  95.         return userName;  
  96.   
  97.     }  
  98.   
  99.     public void setUserName(String userName) {  
  100.   
  101.         this.userName = userName;  
  102.   
  103.     }  
  104.   
  105.     public String getUserSex() {  
  106.   
  107.         return userSex;  
  108.   
  109.     }  
  110.   
  111.     public void setUserSex(String userSex) {  
  112.   
  113.         this.userSex = userSex;  
  114.   
  115.     }  
  116.   
  117.     public String getUserPassword() {  
  118.   
  119.         return userPassword;  
  120.   
  121.     }  
  122.   
  123.     public void setUserPassword(String userPassword) {  
  124.   
  125.         this.userPassword = userPassword;  
  126.   
  127.     }  
  128.   
  129.     public String getUserType() {  
  130.   
  131.         return userType;  
  132.   
  133.     }  
  134.   
  135.     public void setUserType(String userType) {  
  136.   
  137.         this.userType = userType;  
  138.   
  139.     }  
  140.   
  141.     public String getUserMail() {  
  142.   
  143.         return userMail;  
  144.   
  145.     }  
  146.   
  147.     public void setUserMail(String userMail) {  
  148.   
  149.         this.userMail = userMail;  
  150.   
  151.     }  
  152.   
  153.     public String getIsValid() {  
  154.   
  155.         return isValid;  
  156.   
  157.     }  
  158.   
  159.     public void setIsValid(String isValid) {  
  160.   
  161.         this.isValid = isValid;  
  162.   
  163.     }  
  164.   
  165.     public Blob getSignaturePic() {  
  166.   
  167.         return signaturePic;  
  168.   
  169.     }  
  170.   
  171.     public void setSignaturePic(Blob signaturePic) {  
  172.   
  173.         this.signaturePic = signaturePic;  
  174.   
  175.     }  
  176.   
  177.     public String getRemarks() {  
  178.   
  179.         return remarks;  
  180.   
  181.     }  
  182.   
  183.     public void setRemarks(String remarks) {  
  184.   
  185.         this.remarks = remarks;  
  186.   
  187.     }  
  188.   
  189.     public String getDisplayName() {  
  190.   
  191.         return userName + "(" + id + ")";  
  192.   
  193.     }  
  194.   
  195.     // 实现User接口所必须实现的几个方法  
  196.   
  197.     public String getId() {  
  198.   
  199.         return this.id;  
  200.   
  201.     }  
  202.   
  203.     public String getGivenName() {  
  204.   
  205.         return null;  
  206.   
  207.     }  
  208.   
  209.     public String getFamilyName() {  
  210.   
  211.         return null;  
  212.   
  213.     }  
  214.   
  215.     public String getBusinessEmail() {  
  216.   
  217.         return this.userMail;  
  218.   
  219.     }  
  220.   
  221. }  

 

 

 

MesGroup.java

 

Java代码  收藏代码
  1. package com.squall.jbpm.test;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import org.jbpm.api.identity.Group;  
  6.   
  7. public class MesGroup implements Serializable, Group {  
  8.   
  9.     private static final long serialVersionUID = 1L;  
  10.   
  11.     private String id;  
  12.   
  13.     private String groupName;// 组织名称  
  14.   
  15.     private String groupType;// 组织类型  
  16.   
  17.     private MesGroup parentGroup;// 父组织  
  18.   
  19.     private String remarks;// 备注  
  20.   
  21.     protected long dbid;  
  22.   
  23.     protected int dbversion;  
  24.   
  25.     public int getDbversion() {  
  26.   
  27.         return dbversion;  
  28.   
  29.     }  
  30.   
  31.     public void setDbversion(int dbversion) {  
  32.   
  33.         this.dbversion = dbversion;  
  34.   
  35.     }  
  36.   
  37.     public long getDbid() {  
  38.   
  39.         return dbid;  
  40.   
  41.     }  
  42.   
  43.     public void setDbid(long dbid) {  
  44.   
  45.         this.dbid = dbid;  
  46.   
  47.     }  
  48.   
  49.     public String getParentGroupID() {  
  50.   
  51.         return parentGroup != null ? parentGroup.getId() : null;  
  52.   
  53.     }  
  54.   
  55.     public String getParentGroupName() {  
  56.   
  57.         return parentGroup == null ? "xxx" : parentGroup.getGroupName();  
  58.   
  59.     }  
  60.   
  61.     public void setId(String id) {  
  62.   
  63.         this.id = id;  
  64.   
  65.     }  
  66.   
  67.     public String getGroupName() {  
  68.   
  69.         return groupName;  
  70.   
  71.     }  
  72.   
  73.     public void setGroupName(String groupName) {  
  74.   
  75.         this.groupName = groupName;  
  76.   
  77.     }  
  78.   
  79.     public String getGroupType() {  
  80.   
  81.         return groupType;  
  82.   
  83.     }  
  84.   
  85.     public void setGroupType(String groupType) {  
  86.   
  87.         this.groupType = groupType;  
  88.   
  89.     }  
  90.   
  91.     public MesGroup getParentGroup() {  
  92.   
  93.         return parentGroup;  
  94.   
  95.     }  
  96.   
  97.     public void setParentGroup(MesGroup parentGroup) {  
  98.   
  99.         this.parentGroup = parentGroup;  
  100.   
  101.     }  
  102.   
  103.     public String getRemarks() {  
  104.   
  105.         return remarks;  
  106.   
  107.     }  
  108.   
  109.     public void setRemarks(String remarks) {  
  110.   
  111.         this.remarks = remarks;  
  112.   
  113.     }  
  114.   
  115.     // 实现Group接口必须的几个方法  
  116.   
  117.     public String getName() {  
  118.   
  119.         return this.groupName;  
  120.   
  121.     }  
  122.   
  123.     public String getType() {  
  124.   
  125.         return this.groupType;  
  126.   
  127.     }  
  128.   
  129.     public String getId() {  
  130.   
  131.         return id;  
  132.   
  133.     }  
  134.   
  135. }  

 

 

 

 

MesGroupMember.java

 

Java代码  收藏代码
  1. package com.squall.jbpm.test;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class MesGroupMember implements Serializable {  
  6.   
  7.     private static final long serialVersionUID = 1L;  
  8.   
  9.     protected long dbid;  
  10.   
  11.     protected int dbversion;  
  12.   
  13.     private MesUser user;  
  14.   
  15.     private MesGroup group;  
  16.   
  17.     protected String role;  
  18.   
  19.     public int getDbversion() {  
  20.   
  21.         return dbversion;  
  22.   
  23.     }  
  24.   
  25.     public void setDbversion(int dbversion) {  
  26.   
  27.         this.dbversion = dbversion;  
  28.   
  29.     }  
  30.   
  31.     public long getDbid() {  
  32.   
  33.         return dbid;  
  34.   
  35.     }  
  36.   
  37.     public String getRole() {  
  38.   
  39.         return role;  
  40.   
  41.     }  
  42.   
  43.     public void setRole(String role) {  
  44.   
  45.         this.role = role;  
  46.   
  47.     }  
  48.   
  49.     public void setDbid(long dbid) {  
  50.   
  51.         this.dbid = dbid;  
  52.   
  53.     }  
  54.   
  55.     public MesGroup getGroup() {  
  56.   
  57.         return group;  
  58.   
  59.     }  
  60.   
  61.     public void setGroup(MesGroup group) {  
  62.   
  63.         this.group = group;  
  64.   
  65.     }  
  66.   
  67.     public String getUserNo() {  
  68.   
  69.         return user.getUserNo();  
  70.   
  71.     }  
  72.   
  73.     public String getUserID() {  
  74.   
  75.         return user.getId();  
  76.   
  77.     }  
  78.   
  79.     public String getUserName() {  
  80.   
  81.         return user.getUserName();  
  82.   
  83.     }  
  84.   
  85.     public MesUser getUser() {  
  86.   
  87.         return user;  
  88.   
  89.     }  
  90.   
  91.     public void setUser(MesUser user) {  
  92.   
  93.         this.user = user;  
  94.   
  95.     }  
  96.   
  97. }  

 

 

MesIdentitySessionImpl.java

 

Java代码  收藏代码
  1. package com.squall.jbpm.test;  
  2.   
  3. import java.util.Arrays;  
  4. import java.util.List;  
  5.   
  6. import org.hibernate.Session;  
  7. import org.hibernate.Transaction;  
  8. import org.hibernate.criterion.Projections;  
  9. import org.hibernate.criterion.Restrictions;  
  10. import org.jbpm.api.JbpmException;  
  11. import org.jbpm.api.identity.Group;  
  12. import org.jbpm.api.identity.User;  
  13. import org.jbpm.pvm.internal.env.BasicEnvironment;  
  14. import org.jbpm.pvm.internal.env.EnvironmentImpl;  
  15. import org.jbpm.pvm.internal.id.DbidGenerator;  
  16. import org.jbpm.pvm.internal.identity.spi.IdentitySession;  
  17.   
  18. @SuppressWarnings("unchecked")  
  19. public class MesIdentitySessionImpl implements IdentitySession {  
  20.   
  21.     protected Session session;  
  22.   
  23.     public MesIdentitySessionImpl() {  
  24.   
  25.         this.session = BasicEnvironment.getFromCurrent(Session.class);  
  26.   
  27.     }  
  28. /* 
  29.     public String createH() { 
  30.  
  31.         Test t = new Test(); 
  32.  
  33.         long dbid = EnvironmentImpl.getFromCurrent(DbidGenerator.class).getNextId(); 
  34.  
  35.         t.setDbid(dbid); 
  36.  
  37.         t.setId("abc"); 
  38.  
  39.         return null; 
  40.  
  41.     } 
  42. */  
  43.     public String createUser(String id, String userName,  
  44.   
  45.     String businessEmail, String familName) {  
  46.           
  47.         MesUser user = new MesUser(id, userName, businessEmail);  
  48.   
  49.         long dbid = EnvironmentImpl.getFromCurrent(DbidGenerator.class).getNextId();  
  50.   
  51.         user.setDbid(dbid);  
  52.         session.save(user);  
  53.         return user.getId();  
  54.   
  55.     }  
  56.   
  57.     public MesUser findUserById(String userId) {  
  58.   
  59.         return (MesUser) session.createCriteria(MesUser.class).add(  
  60.   
  61.         Restrictions.eq("id", userId)).uniqueResult();  
  62.   
  63.     }  
  64.   
  65.     public List<User> findUsersById(String... userIds) {  
  66.   
  67.         List<User> users = session.createCriteria(MesUser.class).add(  
  68.   
  69.         Restrictions.in("id", userIds)).list();  
  70.   
  71.         if (userIds.length != users.size()) {  
  72.   
  73.             throw new JbpmException("not all users were found: "  
  74.   
  75.             + Arrays.toString(userIds));  
  76.   
  77.         }  
  78.   
  79.         return users;  
  80.   
  81.     }  
  82.   
  83.     public List<User> findUsers() {  
  84.   
  85.         return session.createCriteria(MesUser.class).list();  
  86.   
  87.     }  
  88.   
  89.     public void deleteUser(String userId) {  
  90.   
  91.         // lookup the user  
  92.   
  93.         MesUser user = findUserById(userId);  
  94.   
  95.         // cascade the deletion to the memberships  
  96.   
  97.         List<MesGroupMember> memberships = session.createCriteria(  
  98.   
  99.         MesGroupMember.class).add(Restrictions.eq("user", user)).list();  
  100.   
  101.         // delete the related memberships  
  102.   
  103.         for (MesGroupMember membership : memberships) {  
  104.   
  105.             session.delete(membership);  
  106.   
  107.         }  
  108.   
  109.         // delete the user  
  110.   
  111.         session.delete(user);  
  112.   
  113.     }  
  114.   
  115.     public String createGroup(String groupName, String groupType,  
  116.   
  117.     String parentGroupId) {  
  118.   
  119.         MesGroup group = new MesGroup();  
  120.   
  121.         String groupId = groupType != null ? groupType + "." + groupName  
  122.   
  123.         : groupName;  
  124.   
  125.         group.setId(groupId);  
  126.   
  127.         long dbid = EnvironmentImpl.getFromCurrent(DbidGenerator.class)  
  128.   
  129.         .getNextId();  
  130.   
  131.         group.setDbid(dbid);  
  132.   
  133.         group.setGroupName(groupName);  
  134.   
  135.         group.setGroupType(groupType);  
  136.   
  137.         if (parentGroupId != null) {  
  138.   
  139.             MesGroup parentGroup = findGroupById(parentGroupId);  
  140.   
  141.             group.setParentGroup(parentGroup);  
  142.   
  143.         }  
  144.   
  145.         session.save(group);  
  146.   
  147.         return group.getId();  
  148.   
  149.     }  
  150.   
  151.     public List<User> findUsersByGroup(String groupId) {  
  152.   
  153.         return session.createCriteria(MesGroupMember.class).createAlias(  
  154.   
  155.         "group""g").add(Restrictions.eq("g.id", groupId))  
  156.   
  157.         .setProjection(Projections.property("user")).list();  
  158.   
  159.     }  
  160.   
  161.     public MesGroup findGroupById(String groupId) {  
  162.   
  163.         return (MesGroup) session.createCriteria(MesGroup.class).add(  
  164.   
  165.         Restrictions.eq("id", groupId)).uniqueResult();  
  166.   
  167.     }  
  168.   
  169.     public List<Group> findGroupsByUserAndGroupType(String userId,  
  170.   
  171.     String groupType) {  
  172.   
  173.         return session.createQuery(  
  174.   
  175.         "select distinct m.group" + " from "  
  176.   
  177.         + MesGroupMember.class.getName()  
  178.   
  179.         + " as m where m.user.id = :userId"  
  180.   
  181.         + " and m.group.type = :groupType").setString("userId",  
  182.   
  183.         userId).setString("groupType", groupType).list();  
  184.   
  185.     }  
  186.   
  187.     public List<Group> findGroupsByUser(String userId) {  
  188.   
  189.         List<Group> gList = session.createQuery(  
  190.   
  191.         "select distinct m.group" + " from "  
  192.   
  193.         + MesGroupMember.class.getName()  
  194.   
  195.         + " as m where m.user.id = :userId").setString(  
  196.   
  197.         "userId", userId).list();  
  198.   
  199.         return gList;  
  200.   
  201.     }  
  202.   
  203.     public List<Group> findGroups() {  
  204.   
  205.         return session.createCriteria(MesGroup.class).list();  
  206.   
  207.     }  
  208.   
  209.     public void deleteGroup(String groupId) {  
  210.   
  211.         // look up the group  
  212.   
  213.         MesGroup group = findGroupById(groupId);  
  214.   
  215.         // cascade the deletion to the memberships  
  216.   
  217.         List<MesGroupMember> memberships = session.createCriteria(  
  218.   
  219.         MesGroupMember.class).add(Restrictions.eq("group", group))  
  220.   
  221.         .list();  
  222.   
  223.         // delete the related memberships  
  224.   
  225.         for (MesGroupMember membership : memberships) {  
  226.   
  227.             session.delete(membership);  
  228.   
  229.         }  
  230.   
  231.         // delete the group  
  232.   
  233.         session.delete(group);  
  234.   
  235.     }  
  236.   
  237.     public void createMembership(String userId, String groupId, String role) {  
  238.   
  239.         MesUser user = findUserById(userId);  
  240.   
  241.         if (user == null) {  
  242.   
  243.             throw new JbpmException("user " + userId + " doesn't exist");  
  244.   
  245.         }  
  246.   
  247.         MesGroup group = findGroupById(groupId);  
  248.   
  249.         if (group == null) {  
  250.   
  251.             throw new JbpmException("group " + groupId + " doesn't exist");  
  252.   
  253.         }  
  254.   
  255.         MesGroupMember membership = new MesGroupMember();  
  256.   
  257.         membership.setUser(user);  
  258.   
  259.         membership.setGroup(group);  
  260.   
  261.         membership.setRole(role);  
  262.   
  263.         long dbid = EnvironmentImpl.getFromCurrent(DbidGenerator.class)  
  264.   
  265.         .getNextId();  
  266.   
  267.         membership.setDbid(dbid);  
  268.   
  269.         session.save(membership);  
  270.   
  271.     }  
  272.   
  273.     public void deleteMembership(String userId, String groupId, String role) {  
  274.   
  275.         MesGroupMember membership = (MesGroupMember) session.createCriteria(  
  276.   
  277.         MesGroupMember.class).createAlias("user""u").createAlias(  
  278.   
  279.         "group""g").add(Restrictions.eq("u.id", userId)).add(  
  280.   
  281.         Restrictions.eq("g.id", groupId)).uniqueResult();  
  282.   
  283.         session.delete(membership);  
  284.   
  285.     }  
  286.       
  287.   
  288. }  

 

 

applicationContext-hibernate.xml

 

Java代码  收藏代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"   
  2.          xmlns:aop="http://www.springframework.org/schema/aop"   
  3.          xmlns:context="http://www.springframework.org/schema/context"  
  4.           xmlns:p="http://www.springframework.org/schema/p"  
  5.          xmlns:tx="http://www.springframework.org/schema/tx"  
  6.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  7.          xsi:schemaLocation="  
  8.           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  9.           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  10.           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  11.           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
  12.    
  13.  <context:annotation-config />  
  14.   
  15. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"  
  16.   p:location="hibernate.properties"  
  17.   p:ignoreUnresolvablePlaceholders="true" />  
  18.   <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />  
  19.   <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />  
  20.   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  21.     <property name="dataSource" ref="dataSource" />  
  22.     <property name="mappingResources">  
  23.         <list>  
  24.             <value>jbpm.repository.hbm.xml</value>  
  25.             <value>jbpm.execution.hbm.xml</value>  
  26.             <value>jbpm.history.hbm.xml</value>  
  27.             <value>jbpm.task.hbm.xml</value>  
  28.             <value>jbpm.identity.hbm.xml</value>  
  29.         </list>  
  30.     </property>  
  31.   </bean>  
  32.     
  33.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  34.         <property name="sessionFactory" ref="sessionFactory"></property>  
  35.     </bean>  
  36.       
  37.   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  38.     <property name="driverClassName" value="${dataSource.driverClassName}" />  
  39.     <property name="url" value="${dataSource.url}" />  
  40.     <property name="username" value="${dataSource.username}" />  
  41.     <property name="password" value="${dataSource.password}" />  
  42.   </bean>  
  43. </beans>  

 

 

 

customize.hbm.xml

 

 

 

Xml代码  收藏代码
  1. <?xml version="1.0"?>   
  2.   
  3. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4.   
  5. <hibernate-mapping package="org.jbpm.pvm.internal.identity.impl" default-access="field">  
  6.   
  7.     <!-- 
  8.         ### USER ########################################################### 
  9.     -->  
  10.   
  11.     <class name="com.squall.jbpm.test.MesUser" table="JBPM4_CUSTOMIZE_USER">  
  12.   
  13.         <id name="dbid" column="DBID">  
  14.   
  15.             <generator class="assigned" />  
  16.   
  17.         </id>  
  18.   
  19.         <version name="dbversion" column="DBVERSION_" />  
  20.   
  21.         <property name="id" column="USERID_" /> <!-- 登陆ID -->  
  22.   
  23.         <property name="userNo" column="USERNO_" /> <!-- 员工工号 -->  
  24.   
  25.         <property name="userName" column="USERNAME_" /> <!-- 姓名 -->  
  26.   
  27.         <property name="userSex" column="USERSEX_" />  <!-- 性别 -->  
  28.   
  29.         <property name="userPassword" column="USERPASSWORD_" />  <!-- 密码 -->  
  30.   
  31.         <property name="userType" column="USERTYPE_" />  <!-- 类型 -->  
  32.   
  33.         <property name="userMail" column="USERMAIL_" />  <!-- 电子邮件 -->  
  34.   
  35.         <property name="signaturePic" column="SIGNATUREPIC_" /> <!-- 电子签名 -->  
  36.   
  37.         <property name="remarks" column="REMARKS_" /> <!-- 备注 -->  
  38.     </class>  
  39.   
  40.   
  41.   
  42.     <!-- 
  43.         ### MEMBERSHIP ##################################################### 
  44.     -->  
  45.   
  46.     <class name="com.squall.jbpm.test.MesGroupMember" table="JBPM4_CUSTOMIZE_MEMBERSHIP">  
  47.   
  48.         <id name="dbid" column="DBID_">  
  49.   
  50.             <generator class="assigned" />  
  51.   
  52.         </id>  
  53.   
  54.         <version name="dbversion" column="DBVERSION_" />  
  55.   
  56.         <many-to-one name="user" column="USER_" class="com.squall.jbpm.test.MesUser"  
  57.             foreign-key="FK_MEM_USER" index="IDX_MEM_USER" />  
  58.   
  59.         <many-to-one name="group" column="GROUP_" class="com.squall.jbpm.test.MesGroup"  
  60.   
  61.             foreign-key="FK_MEM_GROUP" index="IDX_MEM_GROUP" />  
  62.   
  63.         <property name="role" column="NAME_" />  
  64.   
  65.     </class>  
  66.   
  67.   
  68.   
  69.     <!-- 
  70.         ### GROUP ########################################################### 
  71.     -->  
  72.   
  73.     <class name="com.squall.jbpm.test.MesGroup" table="JBPM4_CUSTOMIZE_GROUP">  
  74.   
  75.         <id name="dbid" column="DBID_">  
  76.   
  77.             <generator class="assigned" />  
  78.   
  79.         </id>  
  80.   
  81.         <version name="dbversion" column="DBVERSION_" />  
  82.   
  83.         <!--  
  84.             private String groupID;//数据库内部ID号 private String groupName;//组织名称  
  85.   
  86.             private String groupType;//组织类型 private MesGroup parentGroup;//父组织  
  87.   
  88.             private String remarks;//备注  
  89.         -->  
  90.   
  91.         <property name="id" column="ID_" />  
  92.   
  93.         <property name="groupName" column="NAME_" />  
  94.   
  95.         <property name="groupType" column="TYPE_" />  
  96.   
  97.         <property name="remarks" column="REMARKS_" />  
  98.   
  99.         <many-to-one name="parentGroup" column="PARENT_" class="com.squall.jbpm.test.MesGroup"  
  100.   
  101.             foreign-key="FK_GROUP_PARENT" index="IDX_GROUP_PARENT" />  
  102.   
  103.     </class>  
  104.   
  105. </hibernate-mapping>   

 

 

 

 自己看看,懂了就OK了!