MhFindRelations

Поддерживается только производитель.Компонент для поиска связи пакета и БО внешней системы в MessageHub

URI format

<span style="color: rgb(0,0,0);">mhfindrelations:[pbcSysName][?options]</span>

Options:

pbcSysName

  • String

  • URI Path (@UriPath)

  • Наименование pbc, к которому относится передаваемый объект

  • QCA

entityExternalObjectIdNameMap

  • Map<String, String>

  • URI Param (@UriParam)

  • Тип: Мапа с содержанием того, у каких сущностей какое поле является внешним идентификатором

  • Map.of("CorporateAction", "corpActId")

ignorableFields

  • Set<String>

  • URI Param (@UriParam)

  • Поля, для которых не нужно выполнять сопоставление

  • Set.of("Name", "Surname")

Пример использования:

String requestTopic = "unknown".equals(channelPrefix) ? QMM_MSGPACKAGERELATIONS_FIND_MASS : channelPrefix + QMM_MSGPACKAGERELATIONS_FIND_MASS;

String replyTopic = "unknown".equals(channelPrefix) ? QMM_MSGPACKAGERELATIONS_FIND_MASS_REPLY : channelPrefix + QMM_MSGPACKAGERELATIONS_FIND_MASS_REPLY;

logDebug("requestTopic : " + requestTopic + ", replyTopic : " + replyTopic);

MhRelationRequest request = new MhRelationRequest();

//КД

Map<String, String> entityExternalObjectIdNameMap = Map.of("CorporateAction", "corpActId");

Map<String, Object> endpointMap = Map.of("pbcSysName", "QCA",

"entityExternalObjectIdNameMap", entityExternalObjectIdNameMap);

var endpoint = mhFindRelationsComponent.createEndpoint("mhfindrelations", endpointMap);

CorporateAction corporateAction = objectMapper.readValue(exchange.getIn().getBody().toString(), CorporateAction.class);

exchange.getIn().getHeaders().put("dqMessageGuid", corporateAction.getDqMessageGuid());

exchange.getIn().getHeaders().put("correlationId", corporateAction.getCorrelationId());

request.setCorporateAction(corporateAction);

request.setSecurity(Security.builder().securityId(corporateAction.getSecurityProfileId()).build());

exchange.getIn().setBody(request);

endpoint.createProducer().process(exchange);

logDebug("ответ от mhfindrelations по КД: " + exchange.getIn().getBody().toString());

MsgPackageRelationsFindMassReplyList list = Optional.ofNullable(objectMapper.readValue(exchange.getIn().getBody().toString(), MsgPackageRelationsFindMassReplyList.class)).orElse(new MsgPackageRelationsFindMassReplyList());

logDebug("ответ от mhfindrelations по КД после парсинга: " + list);

//ЦБ

Map<String, String> entityExternalObjectIdNameMap2 = Map.of("Security", "securityId");

Map<String, Object> endpointMap2 = Map.of("pbcSysName", "QMDF",

"entityExternalObjectIdNameMap", entityExternalObjectIdNameMap2);

var endpoint2 = mhFindRelationsComponent.createEndpoint("mhfindrelations", endpointMap2);

exchange.getIn().setBody(request);

endpoint2.createProducer().process(exchange);

logDebug("ответ от mhfindrelations по ЦБ: " + exchange.getIn().getBody().toString());

MsgPackageRelationsFindMassReplyList list2 = Optional.ofNullable(objectMapper.readValue(exchange.getIn().getBody().toString(), MsgPackageRelationsFindMassReplyList.class)).orElse(new MsgPackageRelationsFindMassReplyList());

logDebug("ответ от mhfindrelations по ЦБ после парсинга: " + list2);

request.setMsgPackageRelationsFindMassReplyList(List.of(list, list2));

exchange.getIn().setHeader("entityName", "CorpActUploadMessage");

exchange.getIn().setBody(objectMapper.writeValueAsString(request));