#Вакансия 

#FullStack Developer [.NET+JS or Creatio or MS Dynamics CRM]

#Удалённо #fulltime

Компания : CRMGURU

 ====

?‍♀Мы — компания - интегратор

?Более 10 лет выступаем для проектов крупного бизнеса, как #CRM- реализатор

?Работаем с #Creatio и #MSDynamicsCRM

?‍♂Включая интеграции разных подсистем.

?Скоро #НовыйГод и начало Нового проекта

?В ТОП-1 на Рынке страховых услуг субъекта

?‍♀Собираем в команду специалистов

?‍?CREATIO - РАЗРАБОТЧИКОВ и ?‍?БИЗНЕС-АНАЛИЗа- евангелистов.

✈Проект с нуля, высонагруженная система

?Планируется более 30 интеграций

?От 3000 пользователей на старте автоматизации.

???Приглашаю обсудить! ?

TG/Skype: ❤?@id390499615 (@artalex1234)

Нравится

Поделиться

1 комментарий

smiley Skype/ Telegram artalex1234

? hr@crmguru.ru

Показать все комментарии

В связи с попытками использовать AppScheduler для запуска процессов по расписанию возник вопрос стабильности и устойчивости.
Неясно как поведет себя созданное с помощью AppScheduler.Instance.ScheduleJob(job, trigger) задание при нештатных ситуациях. Задание согласно триггеру должно выполняться бесконечно с неким интервалом времени.
Делаем страшное - перезагружаем сайт в IIS (можно еще страшнее - перезагрузить IIS или перезагрузить сервер целиком). Что будет с работой задания? Оно само поднимется или надо "помочь"?
Вопросы публикую, так как сам пока не нашел закономерности и точного ответа. У меня после перезапуска сайта джоб ожил, но только после того, как я запустил клиентское приложение - зашел в BPM. Может быть это совпадение?

Нравится

10 комментариев

"The problem with IIS is the application pool that gets recycled and won't start serving before the first web request that will wake it from sleeping state. Thus it's quite impossible for Spring.NET/Quartz.NET to take actions as the process isn't running and there's no way to keep the process running programmatically."

Похоже проблема есть...
И с решением будет сложно :cry:

Наблюдение на данный момент такое.
Есть уже описанный джоб. Запущен клиент. Делаем "больно" сайту, перезапускаем его. Клиент остается живым, джоб погибает и признаков жизни не подает. Реанимировать его пока сумел только повторным запуском клиента (т.е. выходим и заходим на уже перезапущенный сайт - видим что джоб спокойно начинает работу).

Кстати, какая версия IIS используется на хостинге bpmonline - IIS 7.5?
Под нее есть "разогрев", официальный плагин, который имитирует request от реального приложения, тем самым ускоряя последующую работу приложения и решая проблему продолжения работы джоба. В версию IIS8.0 данное расширение уже встроено...

Александр, добрый день.

Попробуйте использовать этот плагин.

"Олейник Дмитрий" написал:Попробуйте использовать этот плагин.

На iis 7.5 не дало ожидаемого результата. Возможно, что-то делал неправильно.

Последнее наблюдение - quartz возобновляет свою работу, если после перезагрузки сайта просто перезайти на главную страницу сайта, даже без авторизации.

Новости с полей :)
"Разогрев" результатов не дал.
Если поменять для пула "Режим управляемого контейнера" на "Классический", то quartz job прекрасно переживает перезапуск сайта. После перезапуска сервера понятное дело погибает (точнее переходит в какой-то хитрый режим ожидания) и работать начинает только после попытки загрузить заново страницу авторизации.
Поэтому в принципе пока эксперименты в данном направлении заканчиваю, они похоже будут безрезультатными. Scheduler в рамках IIS это тупиковое направление. Надо придумывать что-то другое.

Чем чреват классический режим пула в контексте BPMOnline, кстати (в рамках расширения кругозора)?

И еще есть вопрос: как обстоят дела с использованием cron-подобного планировщика на хостинге, где размещен bpmonline? Возможности такой нет?

Александр, постараюсь "завлечь" в ветку разработчиков для предоставления комментариев.

"Олейник Дмитрий" написал:Александр, постараюсь "завлечь" в ветку разработчиков для предоставления комментариев.

Видимо завлечь разработчиков не так то просто :smile:
Скучно им тут...

Александр, приветствую!

"Александр Кудряшов" написал:"Разогрев" результатов не дал.

- Здесь нужно смотреть, что именно за приложение вы прогревали: WebApp или WebApp.Loader
Как вы уже отметили, процессы начинают запускаться, как только зайти на страницу авторизации. Это связано с тем, что страница относится к приложению WebApp.Loader, в котором и хостится инстанс Scheduler'а, выполняющий задания.
Фактически, "кустарный прогрев" можно настроить, заставив любое клиентское приложение вызывать регулярно (например, раз в 10 мин.) url страницы авторизации или Auth-сервис.
Таким образом можно решить задачу с условным названием Задания с высоким уровнем требований к регулярному запуску

Что касается процессов, которые после запуска будут независимы от IIS и, соответственно, устойчивы к перезапуску сайта - их выполнение придется реализовывать в контексте отдельного приложения.
Варианты (продумал на лету, пока детально проблем не распишу):
1. можно запускать по планировщику exe-файл, в котором выполнять логику задания;
2. организовать windows-сервис, который будет осуществлять хостинг кода заданий и иметь некий API для их старта;
3. Отдельный сайт, с отличным от основного приложения Application пулом - для него IIS, соответственно, будет запускать отдельный W3WP процесс

Михаил, спасибо за ответ!

Пока по данной теме однозначного решения не нашел...
Наблюдение следующее: если для пула приложений выбрать "Режим управляемого конвейера" "Встроенный", то после перезапуска сайта джобы работу не продолжают. Если выставить "Классический" - то джобы работают даже после перезапуска сайта. Это радует, однако есть вопрос - есть ли принципиальная разница именно для BPMOnline 5x какой пул использовать?
Реально ли решить вопрос с использованием на хостинге bpmonline.com с использованием "классического" режима?
Это хотя бы решает половину проблемы ;)

Александр, этот режим не проверялся и не тестировался. Не известно как он может повлиять на работу других модулей. Поэтому его использование не желательно.

"Олейник Дмитрий" написал:Александр, этот режим не проверялся и не тестировался. Не известно как он может повлиять на работу других модулей. Поэтому его использование не желательно.

Понятно... Дмитрий, спасибо за ответ.

Показать все комментарии

Необходимо выполнить процедуру или запрос по расписанию, а у Вас установлен SQL Express, где нету JOBs?
Не проблема! Воспользуемся Batch файлом и запускаем его по расписанию (Windows расписанию! :wink:)

Для SQL Server 2005 или 2008 берем sqlcmd.exe, а для SQL Server 2000 - osql.exe
Пишим батник:

@ECHO OFF

sqlcmd -Q "exec myproc" -Sserver1\instance1 -dMYDATABASE -E -oE:\DATA\Output.txt

@ECHO ON

Запускаем!
Интересуют детали? Вам сюда: http://msdn.microsoft.com/en-us/library/ms162773.aspx

PS: Другой вариант - это SQLScheduler Но его я не тестировал. Если у Вас был опыт использования - отпишите!
http://www.lazycoding.com/products.aspx

Нравится

Поделиться

5 комментариев

Кстати с Firebird и Oracle тожке так можно.

Не знаю как SQLScheduler, но в mssql server есть SQL Server Agent где можно планировать так называемые Job-ы: sql и power shell скрипты и даже программировать на VB и JScript. Но единственное, его нет в express и compact edition.

"Осауленко Александр" написал:но в mssql server есть SQL Server Agent где можно планировать так называемые Job-ы

Читаем первый пост: SQL Express

--
www.it-sfera.com.ua

Звыняйтэ :)

Кому интересно, написал батник для резервного копирования базы под SQL Express! :wink:

--
www.it-sfera.com.ua

Показать все комментарии