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));