Добрый день!
Есть услуги, чьё открытие занимает значительное время. Можете описать логику автоматического перезапуска обработчиков таких услуг?
Правильно ли я понимаю, ...
1) ... что если обработчик завершился с нулевым кодом, но не вызывал itemtype.open, он не будет перезапущен?
2) ... что если обработчик завершился с ненулевым кодом и дёрнул runningoperation.edit c errorxml, то он будет когда-либо перезапущен?
3) ... что если обработчик завершился с ненулевым кодом и дёрнул task.edit, то он не будет перезапущен, а открывать услугу должен пользователь?
4) ... что после того, как обработчик завершился с нулевым кодом без вызова любых функций BILLmanager, можно дёрнуть runningoperation.edit с errorxml, и тогда обработчик будет когда-либо перезапущен?
5) ... что для услуг из пункта 1 биллинг периодически вызывает Sync в надежде, что будет вызван itemtype.open?
Кроме того, есть ли возможность показать пользователю ошибку, попросить дозаполнить/поменять поля из заказа услуги, и перезапустить обработчик? Либо вернуть деньги, если всё совсем плохо.
С уважением, Борис Долгов.
ISPlicense.ru - администрирование и разработка плагинов к продуктам ISPsystem, лицензии и прочее.
Добрый день, Борис.
За политику перезапуска отвечает сам обработчик. У биллинга логика простая. Если сейчас операция не запущена, он ее перезапускает. Обработчики которые делаем мы имеют следующую логику - после 10 неудачных попыток обработчик зовет runningoperation.setmanual и создает задачу через task.edit. Все, больше ничего. Никакой Sync не связан с обработкой операций.
runningoperation.edit с errorxml - существует только для того чтобы сохранить лог, который можно посмотреть в списке текущих операций. На перезапуск ни как не влияет.
runningoperation.setmanual - говорит, что больше не нужно перезапускать автоматически операцию.
А как определяется, что операция запущена -- по процессу, или по тому, что обработчик не сделал itemtype.open или service.postresume?
Есть ли возможность как-то показать пользователю ошибку, чтобы он исправил её сам (без ручной обработки провайдером)? Как это было сделано для SSL в 4 биллинге.
С уважением, Борис Долгов.
ISPlicense.ru - администрирование и разработка плагинов к продуктам ISPsystem, лицензии и прочее.
Определяется по запущенности процесса.
Плагинами можно все что угодно сделать. Позвать runningoperation.setmanual. Создать отдельную функцию, которую вызывать при ошибке. В ней сохранять подробности. В desktop добавить warning_notify (как для непроверенных email). Сделать функцию в которой клиент исправит что-то и после этого функция перезапустит операцию.Есть ли возможность как-то показать пользователю ошибку, чтобы он исправил её сам (без ручной обработки провайдером)? Как это было сделано для SSL в 4 биллинге.
>Определяется по запущенности процесса.
А что делать, если услуга долго открывается? Неужели должен висеть процесс, пока она не откроется?
>Плагинами можно все что угодно сделать.
Понятно. Я надеялся, что есть встроенный метод
Последний раз редактировалось Boris A Dolgov; 20.08.2016 в 04:20.
С уважением, Борис Долгов.
ISPlicense.ru - администрирование и разработка плагинов к продуктам ISPsystem, лицензии и прочее.