Как выполнить сохраненный процесс один раз после обработки файла EDI в BizTalk? - PullRequest
2 голосов
/ 29 декабря 2011

Это более общий вопрос архитектуры; У меня есть несколько идей, но я думаю, что мы не можем быть единственными, кому когда-либо нужно было это делать.

При обработке файла EDI HIPAA с помощью BizTalk (например, заявки на медицинское обслуживание 837) он разделяется на несколько файлов заявок, и любые оркестровки, через которые он проходит, выполняются одновременно (ну, практически). Мне нужно выполнить хранимую процедуру только один раз после того, как каждая заявка была сохранена в базе данных, поэтому процедура явно не может выполняться из той же оркестровки, которая сохраняет данные.

Предложения? Спасибо!

Bill

Ответы [ 3 ]

0 голосов
/ 03 января 2012

Я могу придумать несколько вариантов, но я не знаю, как гарантировать, что вы обработаете все документы без последовательной обработки документа или проверки его на предмет количества претензий. Несколько вариантов:

  1. Вместо того, чтобы позволить конвейеру выполнять разбиение, вы можете выполнить разбиение в оркестровке и обрабатывать их последовательно, а не параллельно.
  2. Опять же, одна оркестровка выполняет разделение, но перед началом разделения подсчитывает количество документов и выполняет отдельный процесс, который опрашивает то количество документов, которое будет зафиксировано в базе данных. Это позволит вам, по крайней мере, запускать все вспомогательные документы асинхронно.
  3. Создайте компонент конвейера, который проверяет документ перед тем, как разрешить компоненту EDI выполнять разбиение, и аналогично тому, как описано выше, имеет отдельный опрос процесса для завершения всех заявок.

Кажется, что самая большая проблема здесь заключается в том, что вы делаете в случае сбоя одного из утверждений, вам понадобится некоторая стратегия отката, если вы хотите зафиксировать только после завершения полного файла.

0 голосов
/ 19 января 2012

Мы решили использовать одну (а не несколько) схему HIPAA, поэтому файлы заявок превращаются в одно сообщение XML, содержащее несколько циклов 2000A. Затем мы перебираем эти циклы, отображаем их и запускаем процесс после завершения.

0 голосов
/ 31 декабря 2011

Один из способов сделать это - использовать триггер вставки в таблицу данных, в которой хранится требование.

С одной стороны, это очень простое решение для ваших требований.Тем не менее, вы должны убедиться, что это хорошо задокументировано.Функциональность, встроенную в триггеры, сложно поддерживать.

...