Добрый день!
Вобщем мне дали на сопровождение Workflow. И я слежу за журналом. Просматриваю ошибочные.
И вот одна ошибка которая стала появляться не дает покоя. Разработка не моя, поэтому меня это вводит в ступор, сама суть.
Вот суть:
1) Запуск ПО (WS9*) настроен на событие PURCHASEORDERCHANGE объекта BUS2002.
2) Далее нет никаких условии, циклов, и первым стоит Операция на основе стандартной задачи (далее TS9*)
В операции поток данных настроен (BINDING) - все как положено, передаем параметр, и возвращаем список обработчиков (&EX_AGENTS&)
Типы совпадают!
3) Основа TS9*: Это фоновый вызов метода из Z-класса, тобишь все самописное.
Входной и выходной параметры метода класса как раз теже самые что и в контейнере (причем все необъязательные).
Код метода класса довольно таки прост: Из входящего параметра (который является структурой),
мы получаем необходимые поля и по этим значениям, ЕСЛИ они не пустые, считываем из Z-таблицы по этим полученным данным
обработчиков (US). В коде не идет считывание из контейнера ничего.
!!! И в конце метода стоит RAISE, если вдруг ничего не нашли, т. е. нет обработчиков!!!
НО!!! В самой ТЗ9* не настроена передача параметров (BINDING) - ни IMPORT ни EXPORT, все пустое.
Т. е. по идее в метод ничего не передаем и ничего не получаем.
Версия ПО - всего ОДНА! Задачи и ПО одинаковые - и в разработке, и в тесте, и в продуктиве!
Больно простая ПО, т. к. собственно после получения следующим этапом идет всего-лишь одна диалоговая операция,
где обработчиком будут именно полученные в предыдущей операции.
Так вот незадача: например в день если вдруг будут запущено 5 потоков операции, то 4 ПРОХОДЯТ без проблем.
А одна валится в ошибку!
Ошибка как раз та самая RAISE.
В логах, журналах смотрю контейнеры - все передаются без проблем, значения есть.
Причем как в ошибочных так и в нормальных.
Интересный момент: по логу сам смотрю контейнеры тех 4 ПО которые прошли без проблем,
прохожу по алгоритму метода и нахожу в той самой Z-таблице нужные записи.
а в той которая ошибочна, как раз таки действительно такой записи по ключу в Z-таблице нет.
КАК в метод может передаваться параметр, если он не настроен в потоке данных самой задачи ???
Если бы все потоки были бы ошибочными, я бы не думая просто сделал бы BINDING. Но ведь в основном он как-то передал.
Загадка которая мне не дает покоя.
Кто-нибудь с таким сталкивался? Может еще где-то может как-то передаваться, в момент запуска фоновой задачи?
Куда мне надо смотреть, в какую сторону