生活随笔
收集整理的這篇文章主要介紹了
flowable用户组的处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景
flowable有自己的用戶賬號信息,用戶信息,用戶組信息,其實這些用戶信息都我們系統可能都存在,那么我們如何去使用一份數據呢?
1.我們可以建立視圖直接取我們的組織信息,這個可以參考相關的文檔
2.我們可以把組織數據同步到flowable的表中
我們這邊的處理時以同步的機制來做的,把我們的數據同步到flowable的表中,這樣的好處就是我們不用改動flowable的表結構,flowable升級的話,對我們沒有任何影響
具體做法如下:
1.在我們的MDM系統(組織管理系統)通過rabbitmq的消息隊列的方式發送到消息隊列里面,以后有任何的改動都發送消息。
2.在我們流程中心添加一個監聽器,實時監聽這個隊列的數據,然后把數據添加到我們的flowable表中,實現實時同步的效果。
@Component
@RabbitListener(queues = FlowConstant.FLOWABLE_MDM_DATA_QUEUE, containerFactory = "rabbitListenerContainerFactory")
public class MdmDataSyncReceiver {private static Logger logger = LoggerFactory.getLogger(MdmDataSyncReceiver.class);@Resourceprivate ICompanyService companyService;@Resourceprivate IDepartmentService departmentService;@Resourceprivate IUserVoService userVoService;@RabbitHandlerpublic void process(@Payload String message) {if (StringUtils.isNotBlank(message)) {try {JSONObject map = JSONObject.parseObject(message);JSONArray datas = map.getJSONArray("datas");String type = map.getString("synEhr");if (null != datas && null != type) {switch (SynMDMEnum.getEnum(type)) {case COMPANY:List<CompanyVo> companyVos = JSONArray.parseArray(datas.toJSONString(), CompanyVo.class);companyService.insertOrUpdateList(companyVos.stream().filter(companyVo -> companyVo.getStatus().equals(1)).collect(Collectors.toList()));break;case DEPARTMENT:List<DepartmentVo> departmentVos = JSONArray.parseArray(datas.toJSONString(), DepartmentVo.class);departmentVos.forEach(param -> {if (null != param.getIscancle() && null != param.getStatus()&& param.getIscancle().equals(0)&& param.getStatus().equals(DepartmentStatusEnum.Y.getCode())&& param.getDelFlag().equals(FlowConstant.NO_DELETE_FLAG)) {param.setStatus(DeptStatusEnum.ON.getCode());} else {param.setStatus(DeptStatusEnum.OFF.getCode());}});departmentService.insertOrUpdateList(departmentVos);break;case PERSONAL:List<PersonVo> personVos = JSONArray.parseArray(datas.toJSONString(), PersonVo.class);personVos.forEach(param -> {if (null != param.getStatus() && null != param.getPoststatus()&& param.getStatus().equals(1)&& param.getPoststatus().equals(1)&& param.getDelFlag().equals(FlowConstant.NO_DELETE_FLAG)) {param.setStatus(PersonStatusEnum.ON.getCode());} else {param.setStatus(PersonStatusEnum.OFF.getCode());}});userVoService.insertOrUpdateList(personVos);break;default:}}} catch (Exception e) {logger.error("MdmDataSyncReceiver-error", e);}}}}
在這里我們做了好幾張擴展表,以把公司,部門,人員,同步下來。
總結
以上是生活随笔為你收集整理的flowable用户组的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。