Сортировать:

Новое Популярное

Комментарий от Александр Носов 19 апреля 2021, 14:11

Смысл Unit-тестов заключается в том, чтобы автоматически тестировать код бизнес логики на простых сценариях. Вы же предлагаете изменить бизнес логику так, чтобы для тестов код проходил по одному сценарию, а для продуктива по другому.

Комментарий от Виктор Избитский 14 апреля 2021, 21:10

Олег Точенюк 14 апреля 2021, 19:59

Да нет,, просто не часто приходится переписывать систему, так что ну совсем не хватает производительности. Если случился дамп, то вряд ли перезапуск поможет, так как это что-то серьзное, ну у меня так обычно происходит. Осталное если честно времени особо не занимает, обычно больше времени, опять же у меня, занимает, это перепроектирование программы, которая изначально была расчитана на одни поток, чтобы она стало многопоточной.  Ну или изначальное проектирование мультипоточной программы.
 
Опять же если у вас все время пишутся мультипоточные программы, то конечно предложенный вариант удобен. Мне просто, за последние 3 года, адЫн раз пришлось такое делать и то связано это не с ускорением работы, а там просто параллельно процессы в мультимандантной среде запускались из мастер манданта, ну чтобы не тормозить процесс, все запускалось в параллельных процессах.
 
Но еще раз, в целом если вы делаете это раз в зеленую луну, как я например, то  проще выучить синтаксис стандарта и этого вполне достаточно.

Олег, я с вами согласен. Разумеется, если необходимость в параллельных вычислениях появляется один раз в пятилетку, то можно (и, наверное, нужно) использовать стандартные средства и благополучно забыть об этом.
У меня в то же время несколько другой опыт. Довольно часто приходится прибегать к распараллеливанию, чтобы обеспечить разумное время выполнения программы. Отсюда и создание этого API.

Комментарий от Олег Точенюк 14 апреля 2021, 19:59

Виктор Избитский 14 апреля 2021, 14:24

Олег, да, перед созданием этого API мне действительно не нравилось то, что вы назвали: для каждого нового отчета приходится создавать RFC ФМ, писать метод/процедуру, обработку ошибок, попытку перезапуска задачи, если, например, случился дамп.
Т.е. каждый раз приходится реализовывать процесс распараллеливания заново. А если использовать предложенную разработку, этого делать уже не нужно. По большому счету нужно только описать бизнес логику и все.
Может быть как раз из-за описанных проблем вы и использовали параллельное выполнение не так часто? ;-)

Да нет,, просто не часто приходится переписывать систему, так что ну совсем не хватает производительности. Если случился дамп, то вряд ли перезапуск поможет, так как это что-то серьзное, ну у меня так обычно происходит. Осталное если честно времени особо не занимает, обычно больше времени, опять же у меня, занимает, это перепроектирование программы, которая изначально была расчитана на одни поток, чтобы она стало многопоточной.  Ну или изначальное проектирование мультипоточной программы.
 
Опять же если у вас все время пишутся мультипоточные программы, то конечно предложенный вариант удобен. Мне просто, за последние 3 года, адЫн раз пришлось такое делать и то связано это не с ускорением работы, а там просто параллельно процессы в мультимандантной среде запускались из мастер манданта, ну чтобы не тормозить процесс, все запускалось в параллельных процессах.
 
Но еще раз, в целом если вы делаете это раз в зеленую луну, как я например, то  проще выучить синтаксис стандарта и этого вполне достаточно.

Комментарий от Александр Носов 14 апреля 2021, 16:38

Виктор Избитский 14 апреля 2021, 14:37

Текст вывода процента выполненных задач можно изменить, в отчете ZCONCURRENCY_API. Ищите вызов метода cl_progress_indicator=>progress_indicate.
Если в zif_capi_callable~call будет вызов MESSAGE TYPE 'S' ***, то статус будет отображаться корректно. Мерцаний и прочего нет. Т.е. все выглядит так, как-будто сообщения TYPE 'S' игнорируются.

Благодарю за ответы. Попробую библиотеку как будет подходящая задача.

Комментарий от Виктор Избитский 14 апреля 2021, 14:37

Александр Носов 14 апреля 2021, 14:02

А где настраивается текст вывода процента выполненных задач?
И еще вопрос, если в zif_capi_callable~call будет вызов MESSAGE TYPE 'S' ***, корректно ли будет статус отображаться (не будут ли мерцания или сброс текста)?

Текст вывода процента выполненных задач можно изменить, в отчете ZCONCURRENCY_API. Ищите вызов метода cl_progress_indicator=>progress_indicate.
Если в zif_capi_callable~call будет вызов MESSAGE TYPE 'S' ***, то статус будет отображаться корректно. Мерцаний и прочего нет. Т.е. все выглядит так, как-будто сообщения TYPE 'S' игнорируются.

Комментарий от Виктор Избитский 14 апреля 2021, 14:24

Олег Точенюк 14 апреля 2021, 11:58

"избежать существующих сложностей, возникающих при распараллеливании программ в ABAP" - А какие сложности то? Оформить вызов RFC и возвратную процедуру/метод написать? Честно не понял в чем біыли найдены сложности сложности? Ни разу не возникало если честно. Хотя в реальности раза 3 использовал параллельное выполнение.

Олег, да, перед созданием этого API мне действительно не нравилось то, что вы назвали: для каждого нового отчета приходится создавать RFC ФМ, писать метод/процедуру, обработку ошибок, попытку перезапуска задачи, если, например, случился дамп.
Т.е. каждый раз приходится реализовывать процесс распараллеливания заново. А если использовать предложенную разработку, этого делать уже не нужно. По большому счету нужно только описать бизнес логику и все.
Может быть как раз из-за описанных проблем вы и использовали параллельное выполнение не так часто? ;-)

Комментарий от Александр Носов 14 апреля 2021, 14:02

Виктор Избитский 14 апреля 2021, 13:32

Александр, спасибо за хорошие вопросы.
На счет примеров задач:
Могу привести примеры из модуля HCM. Пожалуй одна из самых распространенных задач это сбор какой-либо информации по сотрудникам и вывод ее, например, в MS Excel. Т.е. необходимо создать отчет. Время выполнения отчета в основном будет зависеть от количества задействованных процессов, количества обрабатываемых сотрудников и алгоритма считывания информации. Поэтому строгих цифр выигрыша в производительности привести не получится. Все очень зависит от конкретной ситуации. На практике был отчет, который до распараллеливания выполнялся более 4 часов, после распараллеливания ~15 минут.
По вопросам:
1. Да, процент выполненных задач выводится

2. На сколько я понял, вы имеете в виду ноты 734205 и 710920.
Я посмотрел код SPTA Framework'а, который используется в API и в нем, перед вызовом CALL FUNCTION STARTING NEW TASK нет проверки того, что еще есть свободные сеансы пользовательского интерфейса. Т.е. это ограничение стандартного фреймворка, и расширять его пока кажется плохой идеей. Добавил описание этого ограничения в документацию на GitHub.

А где настраивается текст вывода процента выполненных задач?
И еще вопрос, если в zif_capi_callable~call будет вызов MESSAGE TYPE 'S' ***, корректно ли будет статус отображаться (не будут ли мерцания или сброс текста)?

Комментарий от Виктор Избитский 14 апреля 2021, 13:32

Александр Носов 14 апреля 2021, 09:31

Интересная библиотека, Виктор, спасибо. Хочется еще услышать примеры реальных задач и цифр в выигрыше в производительности. Также есть несколько вопросов:
1. Может ли библиотека выводить в строке состояния процент выполненных задач?
2. Как насчет распараллеливания пакетного ввода? Там помимо ограничения максимального количества задач нужно проверять еще доступные диалоги, иначе будут дампы если пользователь решит открыть еще один режим во время выполнения параллельных операций.

Александр, спасибо за хорошие вопросы.
На счет примеров задач:
Могу привести примеры из модуля HCM. Пожалуй одна из самых распространенных задач это сбор какой-либо информации по сотрудникам и вывод ее, например, в MS Excel. Т.е. необходимо создать отчет. Время выполнения отчета в основном будет зависеть от количества задействованных процессов, количества обрабатываемых сотрудников и алгоритма считывания информации. Поэтому строгих цифр выигрыша в производительности привести не получится. Все очень зависит от конкретной ситуации. На практике был отчет, который до распараллеливания выполнялся более 4 часов, после распараллеливания ~15 минут.
По вопросам:
1. Да, процент выполненных задач выводится

2. На сколько я понял, вы имеете в виду ноты 734205 и 710920.
Я посмотрел код SPTA Framework'а, который используется в API и в нем, перед вызовом CALL FUNCTION STARTING NEW TASK нет проверки того, что еще есть свободные сеансы пользовательского интерфейса. Т.е. это ограничение стандартного фреймворка, и расширять его пока кажется плохой идеей. Добавил описание этого ограничения в документацию на GitHub.

Комментарий от Олег Точенюк 14 апреля 2021, 11:58

"избежать существующих сложностей, возникающих при распараллеливании программ в ABAP" - А какие сложности то? Оформить вызов RFC и возвратную процедуру/метод написать? Честно не понял в чем біыли найдены сложности сложности? Ни разу не возникало если честно. Хотя в реальности раза 3 использовал параллельное выполнение.

Комментарий от Александр Носов 14 апреля 2021, 09:31

Интересная библиотека, Виктор, спасибо. Хочется еще услышать примеры реальных задач и цифр в выигрыше в производительности. Также есть несколько вопросов:
1. Может ли библиотека выводить в строке состояния процент выполненных задач?
2. Как насчет распараллеливания пакетного ввода? Там помимо ограничения максимального количества задач нужно проверять еще доступные диалоги, иначе будут дампы если пользователь решит открыть еще один режим во время выполнения параллельных операций.

Комментарий от Андрей Кокурин 25 марта 2021, 07:27

Приветствую, спасибо за отзыв, за ошибки прошу прощения. Исправлюсь

Комментарий от Вячеслав Шиболов 11 марта 2021, 09:21

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

Комментарий от Никита Чазов 04 марта 2021, 14:51

Олег Точенюк 28 июля 2020, 18:31

Ну вот картинки исправили, все должно отображаться.

К сожалению проблема вновь актуальна. Но и без этого можно разобраться, спасибо за понятную статью!

Комментарий от Роман Бондарев 03 марта 2021, 08:08

Вячеслав Шиболов 28 ноября 2020, 14:42

Это в большей части рекомендации вендора

Можно ссылочку Вас попросить указать на данную рекомендацию

Комментарий от Олег Башкатов 25 февраля 2021, 19:28

Александр Грибов 25 февраля 2021, 07:25

Олег, это не статья, но целый научный труд :) Спасибо за подробные разъяснения, за рассмотрение разных подходов, объём проделанной работы поражает. Что побудило тебя так глубоко погрузиться в вопрос?
 
P.S. Какое-то время назад тоже пользовался нечётким поиском. Был проект по распознаванию отсканированных счетов-фактур, использовал нечёткий поиск для поиска материалов по наименованию. Cэкономили немало времени и сберегли человеческие нервы :) Наверное, тоже изложу свой наколеночный вариант в статье...

Александр, спасибо за обратную связь!
 
>>>Что побудило тебя так глубоко погрузиться в вопрос?
в OData есть опция search_string и paging (top/skip) - как правило, эффективнее переложить эти задачи на БД.
 
>>>>Был проект по распознаванию отсканированных счетов-фактур ..... Наверное, тоже изложу свой вариант в статье...
Ждем :-) про такое молчать не стоит - нужно делиться :-)

Комментарий от Александр Грибов 25 февраля 2021, 07:25

Олег, это не статья, но целый научный труд :) Спасибо за подробные разъяснения, за рассмотрение разных подходов, объём проделанной работы поражает. Что побудило тебя так глубоко погрузиться в вопрос?
 
P.S. Какое-то время назад тоже пользовался нечётким поиском. Был проект по распознаванию отсканированных счетов-фактур, использовал нечёткий поиск для поиска материалов по наименованию. Cэкономили немало времени и сберегли человеческие нервы :) Наверное, тоже изложу свой наколеночный вариант в статье...

Комментарий от Ирина Алешина 11 февраля 2021, 14:34

Поздравляю команду SAPLAND!Только вперед!!

Комментарий от Елена Рыбакова 10 февраля 2021, 16:01

Иван Иванов 09 февраля 2021, 20:45

Вау, новый сайт очень крутой!

Иван, спасибо! :)

Комментарий от Иван Иванов 09 февраля 2021, 20:45

Вау, новый сайт очень крутой!