Текущее время: Чт, мар 28 2024, 20:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Выбор между синхронным и асинхронным методом
СообщениеДобавлено: Вс, июн 21 2015, 12:24 
Начинающий
Начинающий

Зарегистрирован:
Ср, дек 22 2010, 18:01
Сообщения: 16
Всем доброго дня. У меня дилемма какой метод использовать для диалоговых задач пользователей. Требование заказчика: 1) работать с задачей может несколько пользователей, т.е. задача может быть динамической, при проваливании в ЭПО пользователь работает с перечнем данных и ставит индикаторы на тех что он обработал, и если к примеру было 3 пользователя которым надо было обработать 10 строк с данными и последний из них указал, что он выполнил свою часть работы и при этом одна строка осталась не обработанной ни одним из пользователе, то нужно чтобы статусы ЭПО у первых 2х пользователей перешли из статуса "Выполнено" в статус "В работе". 2) Процесс состоит из очень большого количества этапов, поэтому крайне желательно чтобы было как можно меньше фоновых задач, выполняющих определение параметров диалоговых задач (обработчики, сроки, требуемые даты запуска, приоритеты итп), т.е. чтобы параметры следущей задачи определялись на выходе из текущей 3) Пользователей не устраивает стандартный экран завершения задачи "Выход из ЭПО", который выходит при использовании синхронных методов, с индикатором требующим подтверждения задачи.
На текущий момент я остановился на использовании только синхронных методов для диалоговых задач, но меня в них не устраивает то, что находясь в обработке метода нельзя прям в нем вызвать изменение статуса ЭПО, приходится делать асинхронный вызов ФМ по установке статуса ЭПО после разблокировки ЭПО.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выбор между синхронным и асинхронным методом
СообщениеДобавлено: Пн, июн 22 2015, 16:58 
Ассистент
Ассистент

Зарегистрирован:
Вт, июн 20 2006, 11:21
Сообщения: 35
Пол: Мужской
Добрый день!
по вашему вопросу: Вот соображения по выбору между синхронным и асинхронным из хелпа: http://help.sap.com/saphelp_nw73ehp1/he ... ontent.htm
Вкратце, асинхронный необходим, если у вас изменения пишутся в update task. Логика такая - при использовании синхронного метода объект едет дальше по потоку не дожидаясь подтверждения завершения сохранения, и это чревато нарушением целостности.

прочие комментарии:
  • если не нравится стандартный экран завершения задачи "Выход из ЭПО", можно (но только при использовании синхронных методов):
    • его отключить
    • определять необходимость завершения своим кодом (с запросом пользователя или без)
    • по итогам предыдущего шага выстреливать или нет исключение EXIT_CANCELLED
  • у вас реально сложные требования и я не могу вникнуть во все тонкости, но рекомендую, по возможности, стремиться ближе к стандарту и к простоте. Иначе будет тяжело сопровождать. Например, ЭПО, который запускает изменение своего-же статуса через API - это очень хитро. Если есть возможность, упростите.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выбор между синхронным и асинхронным методом
СообщениеДобавлено: Пн, июн 22 2015, 21:40 
Начинающий
Начинающий

Зарегистрирован:
Ср, дек 22 2010, 18:01
Сообщения: 16
Спасибо за ответ.
"Вкратце, асинхронный необходим, если у вас изменения пишутся в update task. Логика такая - при использовании синхронного метода объект едет дальше по потоку не дожидаясь подтверждения завершения сохранения, и это чревато нарушением целостности." - в моем случае переход к следущей задаче происходит только после сохранения всех данных текущего этапа в базе данных.
"определять необходимость завершения своим кодом (с запросом пользователя или без)
по итогам предыдущего шага выстреливать или нет исключение EXIT_CANCELED" - расскажите пожалуйста подробнее по этим 2-м пунктам как и где это делать?
"у вас реально сложные требования и я не могу вникнуть во все тонкости, но рекомендую, по возможности, стремиться ближе к стандарту и к простоте. Иначе будет тяжело сопровождать. Например, ЭПО, который запускает изменение своего-же статуса через API - это очень хитро. Если есть возможность, упростите." - так мне поэтому и не нравится данная реализация, что она не стандартная, хочется реализовать стандартным способом, может предложите какие дополнительные инструменты, которые тут можно задействовать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выбор между синхронным и асинхронным методом
СообщениеДобавлено: Вт, июн 23 2015, 10:45 
Ассистент
Ассистент

Зарегистрирован:
Вт, июн 20 2006, 11:21
Сообщения: 35
Пол: Мужской
"определять необходимость завершения своим кодом..." - для примера можно взять метод APPROVE здесь ( http://help.sap.com/saphelp_erp60_sp/he ... ontent.htm )
Кроме того, наверняка этот метод есть у вас в системе - это часть стандартного примера.
В этом методе есть вызов ФМ SWX_FORMABS_APPROVE, в котором пользователю предлагается утвердить\отклонить заявку на отсутствие. Кроме утвердить\отклонить пользователь еще может отказаться от ввода - в таком случае ЭПО останется у него. Технически в этом случае ФМ вернет исключение ABORTED. Далее в коде метода идет обработка исключений и видно, что в случае ABORTED будет вызван макрос EXIT_CANCELLED. Вот это и оставит ЭПО в инбоксе у пользователя (со статусом В работе).
"у вас реально сложные требования.." - напишу отдельно


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB