1. 程式人生 > >activiti-用戶與用戶組

activiti-用戶與用戶組

target entity uri set task 法律 nbsp mem acitiviti

https://my.oschina.net/acitiviti/blog/283892

activiti學習筆記3-用戶與用戶組

收藏 安世博

發表於 3年前

  • 閱讀 5507
  • 收藏 10
  • 點贊 0
  • 評論 2
摘要: activiti

(本博客都是純文本手工代碼,錯誤難免,需要在eclipse中自己調整錯誤代碼)

activiti默認建立用戶表,默認的用戶表可以構建簡單的用戶管理功能。

一、表結構

acitiviti建立了默認用戶表:

技術分享

1,從表的名字可以一目了然的看到,activiti其實提供了一個簡單的用戶表結構,用戶組與用戶之間通過映射表進行關聯,用戶信息是一個單獨的表;

2,如果要擴展成權限表,只需要增加一個權限表,然後和用戶表進行映射,或者和用戶組進行映射,即可成為一個簡單的權限管理結構表;

3,用戶體系表和activiti的其他表沒有外鍵關聯,說明acitivi允許你使用自己創建的用戶體系表,這樣可以和spring security或者shiro容易的結合在一起;

二、操作用戶組與用戶表

1,創建用戶組:

//newGroup方法創建Group實例
Group group = identityService.newGroup("1");
group.setName("經理組");
group.setType("manager");
// 自定義方法保存用戶組
public void createGroup(IdentityService identityService, String id,String name, String type) {
  Group group = identityService.newGroup(id);
  group.setName(name);
  group.setType(type);
  identityService.saveGroup(group);}
createGroup(identityService, "1", "經理組", "typeManager");

2,保存、刪除用戶組

identityService.saveGroup(group);
identityService.deleteGroup("1");

3,查詢用戶組

//調用listPage方法,從索引為2的記錄開始,查詢3條記錄
List<Group> datas = identityService.createGroupQuery().list();
  for (Group data : datas) {
      System.out.println(data.getId() + "---" + data.getName() + " ");}
//其他類似查詢方法
identityService.createGroupQuery().listPage();//分頁返回查詢結果
identityService.createGroupQuery().count();//結果總數
identityService.createGroupQuery().groupName("managerA").singleResult();//查詢到多個時會拋出異常
identityService.createGroupQuery().groupNameLike("%managerA%").singleResult();//
identityService.createGroupQuery().groupId("1").singleResult();//
identityService.createGroupQuery().groupType("typeA").singleResult();//
identityService.createGroupQuery().orderByGroupId().asc().list();//結果升序
identityService.createGroupQuery().orderByGroupName().desc().list();//結果降序

4,添加,保存,刪除用戶

User user = identityService.newUser("新用戶ID");
identityService.saveUser(user);
identityService.deleteUser(id);

5,驗證用戶密碼

identityService。checkPassword("用戶的ID","用戶密碼");

6,用戶數據查詢

//與group查詢類似
List<User> datas = identityService.createGroupUser().list();

7,設置認證用戶

identityService.setAuthenticatedUserId("用戶ID");

認證用戶的作用是設置流程發起人:

在流程開始之前設置,會自動在表ACT_HI_PROCINST 中的START_USER_ID_中設置用戶ID:

//流程發起前設置發起人,記錄在流程歷史中
identityService.setAuthenticatedUserId("kitty");
//開始流程
runtimeService.startProcessInstanceByKey("XML中的ID");
//查詢流程發起人
logger.info(historyService.createHistoricProcessInstanceQuery()
	            .startedBy("ketty").singleResult().getProcessDefinitionId());

applyUserId

擴展:設置BPMN開始節點initiator初始化參數applyUserId:

//XML圖中設置其實節點初始化參數,其實就是節點人
<startevent id="startevent1" name="Start" activiti:initiator="applyUserId"></startevent>

接受參數applyUserId,流程返回發起人(<userTask>中):

activiti:assignee="${applyUserId}"

8,設置用戶信息INFO表

//設置用戶info信息,設置後type字段變成userinfo
identityService.setUserInfo("INFO表USER_ID","INFO表KEY","INFO表VALUE");
//設置賬號信息,設置後TYPE字段變成account,一個用戶可以用多個賬號
identityService.setUserAccount("INFO表USER_ID","INFO表KEY","INFO表VALUE");

9,查詢用戶信息INFO表

identityService.getUserInfo("INFO表USER_ID","INFO表KEY");
identityService.getUserAccount("INFO表USER_ID","INFO表KEY");//不推薦使用

二、用戶與用戶組關系

1,設置用戶與用戶組關系

identityService.createMembership("用戶ID","組ID");//綁定
identityService.deleteMembership("用戶ID","組ID");//刪除

2,查詢用戶與用戶組關系

List<Group> datas = identityService.createGroupQuery().groupMember(user.getId()).list();
List<User> datas = identityService.createUserQuery().MemberOfGroup(group.getId()).list();

三、創建用戶與用戶組通用方法

1,用戶

//創建用戶方法
public void creatUser(IdentityService identityService, String id, String first, String email, String passwd) {
    // 使用newUser方法創建User實例
    User user = identityService.newUser(id);
    // 設置用戶的各個屬性
    user.setFirstName(first);
    user.setLastName("none");
    user.setEmail(email);
    user.setPassword(passwd);
    // 使用saveUser方法保存用戶
    identityService.saveUser(user);}
//具體創建
IdentityService identityService = engine.getIdentityService();
creatUser(identityService, "user1", "德瑪西亞", "[email protected]", "123");

2,組

// 將用戶組數據保存到數據庫中
public void createGroup(IdentityService identityService, String id,String name, String type) {
    // 調用newGroup方法創建Group實例
    Group group = identityService.newGroup(id);
    group.setName(name);
    group.setType(type);
    identityService.saveGroup(group);
}
// 寫入用戶組數據
IdentityService identityService = engine.getIdentityService();
createGroup(identityService, "group1", "Group A", "type A");

? 著作權歸作者所有

activiti-用戶與用戶組