淘宝客必须建网站吗,教育行业网站建设审批,网站自己怎么做优化,网站建设 html背景
flowable有自己的用户账号信息#xff0c;用户信息#xff0c;用户组信息#xff0c;其实这些用户信息都我们系统可能都存在#xff0c;那么我们如何去使用一份数据呢#xff1f;
1.我们可以建立视图直接取我们的组织信息#xff0c;这个可以参考相关的文档 2.我们…背景
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:ListCompanyVo companyVos JSONArray.parseArray(datas.toJSONString(), CompanyVo.class);companyService.insertOrUpdateList(companyVos.stream().filter(companyVo - companyVo.getStatus().equals(1)).collect(Collectors.toList()));break;case DEPARTMENT:ListDepartmentVo 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:ListPersonVo 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);}}}}
在这里我们做了好几张扩展表以把公司部门人员同步下来。