BizTalk - продвигайте несколько ценностей, подписывайтесь на одно из них

Краткая версия: можно ли каким-то образом продвигать свойство с несколькими значениями, чтобы порты отправки могли подписаться на одно из значений в списке?

Расширенная версия: в базе данных у меня есть картографическая информация, где мы сопоставляем людей с местоположениями. человек может работать в нескольких местах, и в этом месте может работать много людей. Взаимоотношения между местоположениями и людьми (тысячами людей) поддерживаются группой эксплуатации с использованием скважинного приложения, которое обновляет базу данных.

На Biztalk приходит сообщение, содержащее несколько человек.

В настоящее время BizTalk получает сообщение, извлекает список людей из сообщения и выгружает сообщения в базу данных sql со связанным списком людей. SQL разрешает отношения человек / местоположение и записывает отдельный список местоположений в связанную таблицу. У нас есть порт приема, который запускает запрос и публикует в почтовом ящике сообщение из базы данных с продвигаемым свойством, содержащим местоположение. Отсюда у нас есть несколько портов отправки, каждый из которых подписывается на определенное место.

Проблема в том, что это неэффективный процесс. Сообщение публикуется несколько раз в окне сообщений Biztalk (один раз для входящих и как минимум один раз для исходящих).

Можно ли с помощью компонента конвейера продвигать местоположения, в которые должно идти сообщение, а затем иметь порты отправки, которые подписываются на определенное местоположение? Проблема в том, что некоторые порты отправки должны быть ReST, а некоторые - SOAP, поэтому интеграция между местоположениями может быть разной. Я не видел, чтобы найти способ опубликовать несколько свойств с несколькими значениями таким образом, чтобы порты отправки могли подписаться на одно из этих значений. Ищу идеи ...


person Jeremy    schedule 28.06.2019    source источник
comment
В скольких местах может работать один человек? Если это небольшое число, у вас может быть несколько продвинутых свойств контекста, например location1, location2 и location3, а затем в вашем порту отправки location1 == Location A или location2 == Location A или location3 == Location A. Это, конечно, стало бы очень громоздким для многих местоположений. Вы также можете захотеть иметь значение местоположения для всех местоположений и добавить его как выражение или ко всем портам отправки.   -  person Dijkgraaf    schedule 30.06.2019
comment
@dijkgraff - Очень сложно сказать, обычно от 1 до 3 мест, обычно до 6, но теоретически может быть и больше.   -  person Jeremy    schedule 03.07.2019


Ответы (1)


Забавно, такая же ситуация возникла буквально на прошлой неделе ... во всяком случае ...

Да, с помощью предиката Bitwise And в фильтре. Это опция &. Вам нужно будет сопоставить каждое местоположение со значением (степень 2), но каждое свойство может поддерживать до 32 параметров (64, если поддерживается uint64, что ... ммм .... извините, я просто не помню :)

Если вам нужно больше, просто добавьте второй групповой фильтр, Восток, Запад или что-то еще.

person Johns-305    schedule 28.06.2019