flowable用户组的处理
Posted 小学生05101
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
@Resource
private ICompanyService companyService;
@Resource
private IDepartmentService departmentService;
@Resource
private IUserVoService userVoService;
@RabbitHandler
public 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用户组的处理的主要内容,如果未能解决你的问题,请参考以下文章
手把手教大家在 Spring Boot 中处理 flowable 中的用户和组
手把手教大家在 Spring Boot 中处理 flowable 中的用户和组