Flowable 엔진 사용 권한 관리

6585 단어 ALLISJAVA
워 크 플 로 엔진 Flowable 은 Activiti 엔진 Fork 에서 나 온 버 전 으로 더욱 우호 적 이 고 Activiti 와 완전히 호 환 되 어 추천 할 만 합 니 다(사실은 flowable.org 를 방문 하 는 것 이 activiti.org 를 방문 하 는 것 보다 빠 르 기 때 문 입 니 다).본 논문 에서 토론 한 방안 은 모두 Activiti 엔진 에 사용 할 수 있다.
Flowable 은 자신의 사용자 권한 체 계 를 가지 고 있 지만 우리 의 업무 시스템 은 더욱 완선 한 사용자 권한 을 제공 하기 때문에 이 두 사용 자 를 통합 시 키 는 것 은 우리 가 실천 에서 반드시 해결 해 야 할 문제 이다.정부 가 제공 한 방안 은 세 가지 밖 에 없다.하 나 는 동기 화 사용자 데이터 이다.둘째,확장 코드 로 자신의 UserEntityManager 등 을 실현 한다.셋째,보기 로 원래 의 몇 개의 시 계 를 대체 하 는 것 이다.세 번 째 방안 이 가장 간단 하고 코드 를 쓸 필요 가 없 음 이 분명 하 다.
본문 에서 토론 한 것 은 바로 방안 3 이다.Flowable 이 제공 하 는 권한 체 계 는 비교적 간단 합 니 다.사용자 User-그룹 Group 이지 만 우리 의 업무 시스템 은 사용자 User-부서 Group-역할 Role 입 니 다.예 를 들 어 저 희 는'조직 부 비서'나'조직 부 부장'과 같은 구분 이 있 습 니 다.원래 의 Flowable 은 간단 한'관리자'나'사용자'만 있 습 니 다.저희 가 해 야 할 일 은'부서-역할'을'Group'에 어떻게 비 추 는 지 입 니 다.
다음은 사용자 보기 의 대 표를 구체 적 으로 실현 하여 두 시스템 의 통 일 된 사용자 인증 을 해결 하 는 방법 에 대해 본론 으로 들 어가 보 겠 습 니 다.
우선,우 리 는 먼저 Flowable 중의 세 장의 시 계 를 이름 을 바 꿉 니 다.
시계
새 시계 이름
ACT_ID_USER
XXX_ACT_ID_USER
ACT_ID_GROUP
XXX_ACT_ID_GROUP
ACT_ID_MEMBERSHIP
XXX_ACT_ID_MEMBERSHIP
우 리 는 이러한 몇 장의 업무 표 가 Flowable 에 투사 되 어야 하 며,아래 에 나 누 어 서술 해 야 한다.
사용자 테이블(tuser)
필드 이름
설명 하 다.
id
사용자 ID
login_name
로그 인 이름(계 정)
real_name
실제 이름(이름 표시)
email
메 일 박스
avatar_url
프로필 사진 ID
암호 필드 가 있 습 니 다.저희 업무 표 에 암호 화 되 어 저장 되 어 있 기 때문에 Flowable 에 서 는 명문 이기 때문에 특별한 처리 가 필요 합 니 다.그래서 여 기 는 고려 하지 않 고 000000 으로 비밀 번 호 를 만 듭 니 다.우 리 는 그것 을 Flowable 의 사용자 표 에 투사 합 니 다.보 기 를 만 들 수 있 습 니 다.이름 은 ACT 입 니 다.ID_USER,문장 아래 에서 보 여 줍 니 다.
select 
t1.login_name as ID_,
t1.login_type as REV_,
t1.real_name as FIRST_,
concat('',t1.id) as LAST_,
t1.email as EMAIL_,
'000000' as PWD_,
t1.avatar_url as PICTURE_ID_
from oa_system.t_user t1
union 
select ID_,REV_,FIRST_,LAST_,EMAIL_,PWD_,PICTURE_ID_ 
from XXXX_ACT_ID_USER

여기 서 저 희 는 앞 에 xxx 로 이름 을 바 꾸 겠 습 니 다.act_id_user 의 시계 도 유 니 온 을 통 해 들 어 옵 니 다.원래 의 데모 사용 자 를 포함 할 수 있 습 니 다.필요 하지 않 으 면 이 유 니 온 을 생략 할 수 있 습 니 다.
부서 표(tgroup)
필드 이름
설명 하 다.
id
부서 ID
pid
상급 부서 ID
group_name
부서 명
group_master_id
부서 별 관리 학교 리더 ID
이곳 의 groupmaster_id 는 이 부서 의 관리 학교 지도 자 를 기록 하 는 데 사용 되 며 부서 지도 자 를 제외 한 다른 사용자 권한 에 영향 을 줄 수 있 는 필드 입 니 다.
캐릭터 리스트(trole)
필드 이름
설명 하 다.
id
캐릭터 ID
role_code
캐릭터 코드
role_name
캐릭터 이름(표시 에 사용)
그 다음 에 우 리 는 이 두 장의 시 계 를 합 쳐 서 Flowable Group 에 투사 해 야 하기 때문에 이렇게 할 수 있 습 니 다.
select 
concat(t1.id,':',t2.role_code) as ID_, 
1 as REV_, 
concat(t1.group_name,':',t2.role_name) as NAME_,
case when t1.id=1 and t2.role_code='system' then 'security-role' 
else 'assignment' end as TYPE_
from oa_system.t_group t1,oa_system.t_role t2 
union
select ID_,REV_,NAME_,TYPE_ 
from XXXX_ACT_ID_GROUP

저 희 는 짝 퉁 을 그룹 ID 와 캐릭터 의 구분자 로 사용 합 니 다.예 를 들 어 4:security 는 ID 가 4 인 부서 의 비서 역할 을 나타 내 고 이 를 Flowable 중의 Group ID 로 하 는 동시에 저희 업무 표 에 system 이 라 고 하 는 역할 을 고려 해 야 합 니 다.시스템 관리자 이기 때문에 Flowable 중의 관리자 로 도 합 니 다.이렇게 되면 우 리 는 큰 표(보기),N 개 부서*M 개 캐릭터 의 기록 수 를 얻 을 수 있 습 니 다.
관계 표(tgroup_role_user)
필드 이름
설명 하 다.
group_id
부서 ID
role_id
캐릭터 ID
user_id
사용자 ID
우리 의 사용 자 는 서로 다른 부서 에서 서로 다른 역할 을 할 수 있 음 이 분명 하 다.마찬가지 로,우 리 는 그것 을 Flowable 에 비 추 었 다.
select 
t3.login_name as USER_ID_, 
concat(t1.group_id,':',t2.role_code) as GROUP_ID_ 
from oa_system.t_group_role_user t1 
left join oa_system.t_role t2 on t1.role_id=t2.id 
left join oa_system.t_user t3 on t3.id=t1.user_id
union
select 
t2.login_name as USER_ID_,
concat(t1.id,':president') as GROUP_ID_ 
from oa_system.t_group t1 left join oa_system.t_user t2 on t1.group_master_id=t2.id 
where t1.group_master_id is not null 
union
select USER_ID_,GROUP_ID_ from XXXX_ACT_ID_MEMBERSHIP

여기 서 우 리 는 세 개의 조회 자 구 를 만 들 었 는데,그 중 두 번 째 는 부서 의 분 관 학교 지도 라 는 개념 을 처리 하 는 것 이다.부서 의 정상 적 인 리더 가 manager 이기 때문에 사용자 가 이 부서 의 president 에 배정 되면 그 를 리더 로 배치 하 는 것 이다.
이로써 우 리 는 보기 로 표 USER,GROUP,MEMBERSHIP 세 장 을 실 현 했 습 니 다.이 제 는 업무 시스템 의 사용자 가 Flowable 에 정상적으로 접근 할 수 있 습 니 다.예 를 들 어,우 리 는 이렇게 candidateGroups="12:security"를 동적 으로 설정 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기