Error occurred when saving: The Scheduler has been Shutdown - получаю такую ошибку когда пробую опубликовать БП, происходит часто, после того как начали использовать фоновые таски, помогает рестарт сайта.

 

7.18.5 .net core

Нравится

2 комментария

Добрый день!

Судя по ошибке, она возникает по причине отключения планировщика. Перезапуск помогает поскольку с ним заново запускается и планировщик. Вы говорите, что проблема начала возникать после использования фоновых операций, следует в первую очередь проверить логику этих операций, нет ли в них отключения планировщика? Также стоит проверить логи приложения, в них можно найти информацию об отключении, что поможет в определении проблемы.

логика точно не при чем.

в какие логи смотреть конкретно? 

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

Здравствуйте!



Друзья, подскажите пожалуйста, можно ли включить кластерный режим планировщика в версии 7.2.2.707. У нас настроено горизонтальное масштабирование, но не работают веб сокеты если больше одной ноды. Есть документация по новым версиям: https://academy.terrasoft.ua/docs/user/razvertyvanie_onsite/nastroika_d…

Есть ли что-то подобное для нашей версии?

 

Нравится

2 комментария

Олег, здравствуйте.

В этой версии ещё нет полноценной поддержки веб-сокетов в ферме. Реализация этого функционала доступна в версии 7.12.1 и выше.

 

Что касается кластеризации планировщика, по умолчанию он и так должен быть включён, за это отвечает параметр \web.config:

 

<add key="quartz.jobStore.clustered" value="true" />

 

Но, чтобы это работало, нужно ещё исправить ключ:

<add key="quartz.scheduler.instanceId" value="auto" />

 

(написать в верхнем регистре)

<add key="quartz.scheduler.instanceId" value="AUTO" />

Спасибо, Олег.

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

Приветы. Буду очень признателен за помощь.

Есть таблица с такими колонками: 

1. Поле типа справочник - x. 

2. Поле типа справочник - y.

3. Поле типа дата - d.

 

Результат: 

Таблица, грид, где первая колонка со значениями поля - x с соответствующим заголовком.

Другие заголовки колонок после заголовка x - значение полей d. А на пересечении x и d - значение справочника y. 

Как то так:

Изображение удалено.

 

Буду рад любой помощи, гайду или указанием примера в системе :)

Sales 7.16

Нравится

3 комментария

Андрей, с версии 7.16 систему как раз добавили функциональность сводных таблиц. Настраивается в итогах, блок «список».

specs_dashboards_chart_summary_table.png

Точно можно делать столбцы по разным значениям одного справочника, а строки — другого. Если возможности построить так, как Вы хотите с группировкой по датам, нет, то можно сделать специальное поле в объекте и заполнять его по дате одинаковым значением для каждых суток или месяца.

 

Если что-то не подойдёт, кроме стандартной функциональности есть ещё стороннее дополнение для сводных таблиц.

Зверев Александр,

Фишка в том что бы это можно было редактировать :)

Тогда, наверное, так не получится. Разве что делать привязанное к этой таблице view с триггерами на изменение, реализующими сохранение в нужную запись таблицы, объект и деталь с редактируемым реестром по нему. Но это только для случая, если количество столбцов заранее известно и стабильно (например, дни одного месяца с 1 по 31, если в месяце меньше дней, как-то обработать).

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

Добрый день! Создала задание :

string schedulerJobGroupName = "AvtoSynchWithLDAPProcessGroup"; //- Любое имя
string jobProcessName = "SynchWithLDAPProcess"; //- Название процесса
string schedulerJobName = "AvtoSynchWithLDAPProcessJob"; //- Любое имя
TimeSpan start = TimeSpan.Parse("08:00");
TimeSpan end = TimeSpan.Parse("10:00");
TimeSpan currentTime = DateTime.Now.TimeOfDay;

if ((currentTime > start) && (currentTime end))
{      
        int startOffset = 900;
        AppScheduler.RemoveJob(schedulerJobName, schedulerJobGroupName);
        var job = AppScheduler.CreateProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
        var trigger = new SimpleTrigger(schedulerJobName, schedulerJobGroupName, DateTime.UtcNow.AddSeconds(startOffset));
        AppScheduler.Instance.ScheduleJob(job, trigger);
       
}
else
{
        int startOffset = 4;
        AppScheduler.RemoveJob(schedulerJobName, schedulerJobGroupName);
        var job = AppScheduler.CreateProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
        var trigger = new SimpleTrigger(schedulerJobName, schedulerJobGroupName, DateTime.UtcNow.AddHours(startOffset));
        AppScheduler.Instance.ScheduleJob(job, trigger);
}
return true;

Но при запуске выходит ошибка:

Date: 25.07.2017 18:40:45
Date (UTC): 25.07.2017 15:40:45

Exception Message: Невозможно получить значение колонки Name, так как она не была загружена
Exception Type: Terrasoft.Common.InvalidObjectStateException
Exception Source: Terrasoft.Core

Exception Stack Trace:
в Terrasoft.Core.Entities.EntityColumnValue.get_Value()
в Terrasoft.Core.Entities.Entity.GetTypedColumnValue[TResult](String valueName)
в Terrasoft.Core.Process.AvtoSynchWithLDAPProcess.AddToSchedulerScriptTaskExecute(ProcessExecutingContext context)
в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
в Terrasoft.Core.Process.Process.ProcessQueue(ProcessExecutingContext context)
в Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)
в Terrasoft.Core.Process.Process.Execute(UserConnection userConnection)
в Terrasoft.WebApp.VwSysProcessListPageEventsProcess`1.RunProcessScriptTaskExecute(ProcessExecutingContext context)
в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
в Terrasoft.WebApp.VwSysProcessListPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
в Terrasoft.WebApp.VwSysProcessListPageEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
в Terrasoft.WebApp.VwSysProcessListPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
в Terrasoft.WebApp.BaseGridPageEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
в Terrasoft.WebApp.VwSysProcessListPageEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
в Terrasoft.UI.WebControls.PageSchemaUserControl.ThrowEvent(String message)
в Terrasoft.WebApp.VwSysProcessListPageSchemaUserControl.RunProcessButtonClick(Object sender, EventArgs e)
в Terrasoft.UI.WebControls.Controls.ComponentAjaxEvent.OnEvent(Object sender, AjaxEventArgs e)
в Terrasoft.UI.WebControls.Controls.Observable.FireAsyncEvent(String eventName, ParameterCollection extraParams)
в Terrasoft.UI.WebControls.Controls.ScriptManager.RaisePostBackEvent(String eventArgument)
в Terrasoft.UI.WebControls.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Form:
submitAjaxEventConfig: {"config":{"viewStateMode":"include","extraParams":{}}}
__EVENTTARGET: ScriptManager
__EVENTARGUMENT: PageContainer_VwSysProcessSectionPage_Grid_RunProcessButton|event|Click
__EVENTVALIDATION: /wEdAAOvVXD1oYELeveMr0vHCmYPrFHW+cRWVtoBd62cCaTjNTaERVpf4hfzb6sOLwCZwG3iwlUNutEg7pkrfiOU+6PFHdO6xQ==
PageContainer$VwSysProcessSectionPage$BaseFolder$TreeGrid_SM: [{"Id":"48ac198d-3dc2-405b-bfd7-5bfd363160fd","Name":"Все процессы","FolderTypeId":"9dc5f6e6-2a61-4de8-a059-de30f4e74f24","FolderTypeName":"Статическая","FolderType_Order":2}]
PageContainer$VwSysProcessSectionPage$Grid$TreeGrid_SM: [{"Id":"5b272b28-60fb-458c-87ef-799e203b6ed7","Caption":"Синхронизировать данные о пользователях с LDAP (автомат)","Name":"AvtoSynchWithLDAPProcess","SysSchemaIsInherited":false,"SysSchemaStateInSolution":0,"SysSchemaFolderId":"26f0ae40-c453-4b43-aab9-74d44fab9515","SysSchemaFolderName":"BPMonline CRM","SysPackageId":"8d3fd2a7-c3e3-42d1-ae09-34167e1cadde","SysPackageName":"CustomPackage","MetaDataModifiedOn":"2017-07-25T18:36:00","SysSchemaManagerName":"ProcessSchemaManager","SysSchemaInSolutionVersion":26}]
PageContainer$VwSysProcessSectionPage$DetailGridContainer9108b52371ec480587413e79ba1bc9f3$TreeGrid_SM: [{"Id":"7acd0d26-2a90-431f-a34d-7b98378e59af","FolderId":"48ac198d-3dc2-405b-bfd7-5bfd363160fd","FolderName":"Все процессы","CreatedOn":"2017-07-25T17:59:17","CreatedById":"df41e401-9385-4e5d-9c4f-42d5e36b9f64","CreatedByName":"Астапеева Анастасия Александровна","ModifiedOn":"2017-07-25T17:59:17","ModifiedById":"df41e401-9385-4e5d-9c4f-42d5e36b9f64","ModifiedByName":"Астапеева Анастасия Александровна","ProcessListeners":0,"VwSysProcessId":"5b272b28-60fb-458c-87ef-799e203b6ed7"}]
customDataField: {tempData:"{MainActiveTabId:\"PageContainer_a44185aa4ca64df9b5473ab4c9eb700d_ff9f207cf36b14104a931c6f65e50343_e6a6bf2d0d784062adc3b1914c85df3a\",PageContainer_VwSysProcessSectionPage_DetailsTabPanel_Collapsed:\"false\",PageContainer_VwSysProcessSectionPage_DetailsTabPanel_ActiveTab:\"0\"}",pageContainers:"[\"PageContainer$CtiPageContainer\",\"PageContainer$VwSysProcessSectionPage\",\"PageContainer$VwSysProcessSectionPage$BaseFolder\",\"PageContainer$VwSysProcessSectionPage$Grid\",\"PageContainer$VwSysProcessSectionPage$analyticsGridPageContainer\",\"PageContainer$VwSysProcessSectionPage$DetailGridContainer9108b52371ec480587413e79ba1bc9f3\",\"PageContainer\"]",instanceId:"6591ba57-65e7-4649-ad94-defe454538ca",pageUId:"5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a",SysModule_selectedFolderId:"48ac198d-3dc2-405b-bfd7-5bfd363160fd",SysModule_activeDataSource:"PageContainer_VwSysProcessSectionPage_Grid_DataSource",tempUserContext:"[\"__VIEWSTATE6591ba57-65e7-4649-ad94-defe454538ca\"]"}
PageContainer_VwSysProcessSectionPage_BaseFolder_DataSource_ActiveRowPrimaryColumnValue: 48ac198d-3dc2-405b-bfd7-5bfd363160fd
PageContainer_VwSysProcessSectionPage_BaseFolder_DataSource_SelectedItemPrimaryColumnValues: ["48ac198d-3dc2-405b-bfd7-5bfd363160fd"]
PageContainer_VwSysProcessSectionPage_Grid_DataSource_ActiveRowPrimaryColumnValue: 5b272b28-60fb-458c-87ef-799e203b6ed7
PageContainer_VwSysProcessSectionPage_Grid_DataSource_SelectedItemPrimaryColumnValues: ["5b272b28-60fb-458c-87ef-799e203b6ed7"]
PageContainer_VwSysProcessSectionPage_DetailGridContainer9108b52371ec480587413e79ba1bc9f3_DataSource_ActiveRowPrimaryColumnValue: 7acd0d26-2a90-431f-a34d-7b98378e59af
PageContainer_VwSysProcessSectionPage_DetailGridContainer9108b52371ec480587413e79ba1bc9f3_DataSource_SelectedItemPrimaryColumnValues: ["7acd0d26-2a90-431f-a34d-7b98378e59af"]
PageContainer_Collapsed: false
PageContainer_MultiLevelTabs_ActiveTab: PageContainer_a44185aa4ca64df9b5473ab4c9eb700d_ff9f207cf36b14104a931c6f65e50343_e6a6bf2d0d784062adc3b1914c85df3a
PageContainer_SearchEdit: Поиск>
PageContainer_CtiPageContainer_NumberEdit: Введите номер телефона>
PageContainer_CtiPageContainer_TransferNumberEdit: Введите номер телефона>
ext-comp-1018: true
ext-comp-1007_ActiveTab: ext-comp-1008
ext-comp-1010_ActiveTab: ext-comp-1011
PageContainer_TopControlLayout_Collapsed: false
PageContainer_CtiControlLayout_Collapsed: false
PageContainer_ContentControlLayout_Collapsed: false
PageContainer_TopLeftControlLayout_Collapsed: false
PageContainer_TopRightControlLayout_Collapsed: false
PageContainer_LogoControlLayout_Collapsed: false
PageContainer_NavigationControlLayout_Collapsed: false
PageContainer_NavigationButtonsControlLayout_Collapsed: false
PageContainer_ControlLayout1_Collapsed: false
PageContainer_MultiLevelTabs_tools_Collapsed: false
PageContainer_CtiPageContainer_Collapsed: false
PageContainer_CtiPageContainer_MainControlLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_Collapsed: false
PageContainer_VwSysProcessSectionPage_MainControlLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_LeftControlLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_RightControlLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_CustomSearchContainer_Collapsed: false
PageContainer_VwSysProcessSectionPage_FolderLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_FilterEditLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_BaseFolder_Collapsed: false
PageContainer_VwSysProcessSectionPage_BaseFolder_TreeGrid_Collapsed: false
PageContainer_VwSysProcessSectionPage_FilterEdit_Collapsed: false
PageContainer_VwSysProcessSectionPage_FilterEdit_toolbar_Collapsed: false
PageContainer_VwSysProcessSectionPage_GridTabPanel_Collapsed: false
PageContainer_VwSysProcessSectionPage_GridTabPanel_ActiveTab: 0
PageContainer_VwSysProcessSectionPage_GridTab_Collapsed: false
PageContainer_VwSysProcessSectionPage_GridTab_TabActivated: true
PageContainer_VwSysProcessSectionPage_DetailsTabPanel_Collapsed: false
PageContainer_VwSysProcessSectionPage_DetailsTabPanel_ActiveTab: 0
PageContainer_VwSysProcessSectionPage_DetailTab9108b52371ec480587413e79ba1bc9f3_Collapsed: false
PageContainer_VwSysProcessSectionPage_DetailTab9108b52371ec480587413e79ba1bc9f3_TabActivated: true
PageContainer_VwSysProcessSectionPage_Grid_Collapsed: false
PageContainer_VwSysProcessSectionPage_Grid_ButtonsControlLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_Grid_TreeGrid_Collapsed: false
PageContainer_VwSysProcessSectionPage_DetailGridContainer9108b52371ec480587413e79ba1bc9f3_Collapsed: false
PageContainer_VwSysProcessSectionPage_DetailGridContainer9108b52371ec480587413e79ba1bc9f3_ButtonsControlLayout_Collapsed: false
PageContainer_VwSysProcessSectionPage_DetailGridContainer9108b52371ec480587413e79ba1bc9f3_TreeGrid_Collapsed: false
PageContainer_VwSysProcessSectionPage_BaseFolder_DataSource_ActiveRow: {"isNew":false,"changes":null}

SessionID: vjhiulo4tqt3g2qjohn3szj5
Request URL: /0/ViewPage.aspx?Id=5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a&ActiveTabId=PageContainer_a44185aa4ca64df9b5473ab4c9eb700d_ff9f207cf36b14104a931c6f65e50343_e6a6bf2d0d784062adc3b1914c85df3a
Request Path: /0/ViewPage.aspx
Request UrlReferrer: http://afina.pbank.ru/0/ViewPage.aspx?Id=5e5f9a9e-aa7d-407d-9e1e-1c24c3f...
Request Type: POST
User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
User Host Address: 10.1.3.154
User: baal
Is Authenticated: True
Authentication Type: Forms
Is Secure Connection: False

Application Version: 5.4.0.2460
Application Path: C:\WebAppReloaded\App\Terrasoft.WebApp\
Application Virtual Path: /0
Application Trust Level: Full
Machine Name: AFINA
Is Local: False

Process ID: 11108
Process Name: w3wp.exe
Process Account Name: PBANK\adminmts
Thread Account Name: PBANK\adminmts
OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1
Net Framework Version: 4.0.30319.36365
DBExecutor Type: MSSqlExecutor

Нравится

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

Не знаю в чем была ошибка... Но получилось сделать так:

string schedulerJobGroupName = "AvtoSynchWithLDAPProcessGroup"; //- Любое имя
string jobProcessName = "SynchWithLDAPProcess"; //- Название процесса
string schedulerJobName = "AvtoSynchWithLDAPProcessJob"; //- Любое имя
TimeSpan start = TimeSpan.Parse("08:00");
TimeSpan end = TimeSpan.Parse("10:00");
TimeSpan currentTime = DateTime.Now.TimeOfDay;
 
if ((currentTime > start) && (currentTime < end))
{	
	int startOffset = 15;
	AppScheduler.ScheduleMinutelyProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Solution.Name, UserConnection.CurrentUser.Name, startOffset);
 
} 
else
{
	int startOffset = 240;
	AppScheduler.ScheduleMinutelyProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Solution.Name, UserConnection.CurrentUser.Name, startOffset);
}
return true;

Все-таки есть вопрос: При запуске процесса вручную, в QRTZ_TRIGGERS он создается, с интервалом запуска, на текущий момент, и дальше запускается согласно этого интервала, а мне нужно, что бы при автоматическом запуске в QRTZ_TRIGGERS он анализировал текущее время и выбирал интервал согласно процесса... Такое возможно?

Добрый день, Анастасия!

Дело в том, что при запуске из QRTZ_TRIGGERS процесс стартует по заранее определенному расписанию. Рекомендую использовать CRON выражение, с его помощью можете задать необходимый Вам промежуток времени, допустим, каждый день в 3 ночи.

"Мотков Илья" написал:

Добрый день, Анастасия!

Дело в том, что при запуске из QRTZ_TRIGGERS процесс стартует по заранее определенному расписанию. Рекомендую использовать CRON выражение, с его помощью можете задать необходимый Вам промежуток времени, допустим, каждый день в 3 ночи.


А если мне нужно, каждый день с 8 до 10 каждые 15 минут, а с 10 до 8 каждые 4 часа, при этом ручной запуск не будет выполняться (кроме первого раза) выражение CRON сможет так реализовать?

Анастасия, могут быть разные варианты.

Можно создать по триггеру на каждый запуск в определённое время суток (8:00, 8:15, ..., 10:00, 14:00, ...). А можно при каждом запуске корректировать триггер с вычисленной датой следующего запуска (или удалять и создавать новый).

Посмотреть, какие бывают выражения для триггеров и какое время получится по выражению, можно при помощи калькулятора http://www.cronmaker.com/.

"Зверев Александр" написал:

Анастасия, могут быть разные варианты.

Можно создать по триггеру на каждый запуск в определённое время суток (8:00, 8:15, ..., 10:00, 14:00, ...). А можно при каждом запуске корректировать триггер с вычисленной датой следующего запуска (или удалять и создавать новый).

Посмотреть, какие бывают выражения для триггеров и какое время получится по выражению, можно при помощи калькулятора http://www.cronmaker.com/.


Спасибо за подсказку, пытаюсь разобраться, как сделать по лучше.
А вы не подскажите, где и как посмотреть какой Триггер в QRTZ какой процесс выполняет, кроме как в интерфейсе?

В базе данных вся информация о триггерах кварца расположена в таблицах с названием, начинающимся на QRTZ. Вероятно, название процесса где-то в таблице QRTZ_JOB_DETAILS в поле JOB_DATA. Но там всё нечитаемо, сжато во внутреннем формате Quartz.

"Зверев Александр" написал:

В базе данных вся информация о триггерах кварца расположена в таблицах с названием, начинающимся на QRTZ. Вероятно, название процесса где-то в таблице QRTZ_JOB_DETAILS в поле JOB_DATA. Но там всё нечитаемо, сжато во внутреннем формате Quartz.


Печаль... Все-равно спасибо большое.

"Зверев Александр" написал:

Анастасия, могут быть разные варианты.

Можно создать по триггеру на каждый запуск в определённое время суток (8:00, 8:15, ..., 10:00, 14:00, ...). А можно при каждом запуске корректировать триггер с вычисленной датой следующего запуска (или удалять и создавать новый).

Посмотреть, какие бывают выражения для триггеров и какое время получится по выражению, можно при помощи калькулятора http://www.cronmaker.com/.

Кстати вот еще интересная статья :
https://www.ibm.com/developerworks/ru/library/j-quartz/index.html

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

Здравствуйте! Разбираюсь с планировщиком.
Пытаюсь добавить в планировщик BPMOnline 5.4 бизнес-процесс
Создал страницу, добавил на нее кнопку, при нажатии на которую, процесс должен быть добавлен в планировщик.
Добавил в Usings "Terrasoft.Core.Scheduler"
Код кнопки:

// Создание задания для запуска процесса.
var job = AppScheduler.CreateProcessJob("ProcessJob", null, "Process",
    "Dev", "Supervisor");
var trigger = new CronTriggerImpl("ProcessTrigger", null, "0 0 17 * * ?");
AppScheduler.Instance.ScheduleJob(job, trigger);
Page.ResultEdit.Value = "Done!";
return true;

Сделал все как описано в примере SDK
Но при компиляции возникает ошибка:
пропущена директива using или ссылка на сборку "CronTriggerImpl"

Нравится

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

Здравствуйте, Эмин.

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Эмин!
Необходимо еще подключить namespace
Quartz.Impl.Triggers

"Андрей Каспаревич" написал:

Здравствуйте, Эмин!

Необходимо еще подключить namespace

Quartz.Impl.Triggers

С уважением,

Каспаревич Андрей

Эксперт 3-й линии поддержки


Здравствуйте, Андрей!
Добавил в Usings
Quartz.Impl.Triggers
При компиляции такая ошибка

Имя типа или пространства имен "Triggers" отсутствует в пространстве имен "Quartz.Impl" (пропущена ссылка на сборку?)

Пробовал просто добавлять namespace "Quartz", но тогда ошибка на "CronTriggerImpl"

Здравствуйте, Эмин!
Приношу извинения, не протестировал на 5.х. Дело в том, что в 5.х используется старая версия Quartz.NET, в которой еще нет CronTriggerImpl, а в BPMonline - более новая, в которой CronTriggerImpl уже доступен.
Есть два варианта выхода из данной ситуации:
1. Немного "поизвращаться" и реализовать нужный функционал без CronTriggerImpl.
2. Написать нам в поддержку и инициировать переход на более новую версию Quartz.NET. Подмена библиотеки может привести к ошибкам в работе базовой функциональности, поэтому должно проводить комплексное тестирование, что займет достаточно много вермени.

"Андрей Каспаревич" написал:

Здравствуйте, Эмин!

Приношу извинения, не протестировал на 5.х. Дело в том, что в 5.х используется старая версия Quartz.NET, в которой еще нет CronTriggerImpl, а в BPMonline - более новая, в которой CronTriggerImpl уже доступен.

Есть два варианта выхода из данной ситуации:

1. Немного "поизвращаться" и реализовать нужный функционал без CronTriggerImpl.

2. Написать нам в поддержку и инициировать переход на более новую версию Quartz.NET. Подмена библиотеки может привести к ошибкам в работе базовой функциональности, поэтому должно проводить комплексное тестирование, что займет достаточно много вермени.

С уважением,

Каспаревич Андрей

Эксперт 3-й линии поддержки


Спасибо за помощь!
Я так понимаю, в 5.4 используется Quartz 1.x. В доках для него есть описание класса CronTrigger. Попробую использовать его.

"Андрей Каспаревич" написал:
Есть два варианта выхода из данной ситуации:

1. Немного "поизвращаться" и реализовать нужный функционал без CronTriggerImpl.

2. Написать нам в поддержку и инициировать переход на более новую версию Quartz.NET. Подмена библиотеки может привести к ошибкам в работе базовой функциональности, поэтому должно проводить комплексное тестирование, что займет достаточно много вермени.

С уважением,

Каспаревич Андрей

Эксперт 3-й линии поддержки


Добрый день, Андрей. К сожалению, использовать CronTrigger не вышло (запуска БП не происходит, хотя добавление проходит без ошибок)
Подскажите, пожалуйста, как можно реализовать запуск БП каждый день без CronTrigger?

Здравствуйте, Эмин.

Кронтриггер дает удобный функционал для планирования запуска, но запланировать выполнение джоба по не меняющемуся интервалу можно и без него:

string syncProcessName = "Process1";
string syncJobGroupName = "MyProcessGroup";
string syncJobName = "MyJobName";
int periodInMinutes = 1440;
AppScheduler.ScheduleMinutelyProcessJob(syncJobName, syncJobGroupName, syncProcessName,
	UserConnection.Solution.Name, UserConnection.CurrentUser.Name, periodInMinutes);

Выполнение такого кода добавит выполнение БП Process1 раз в сутки.

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

А не поинтересоваться ли мне "семеркой"... :smile:

Расскажите, пожалуйста, что изменилось (или не изменилось) в планировщике для 7ки?
Понятно, что используется видимо Quartz 2.x вместо единички в пятой версии BPM.
Есть возможность передавать параметры в процесс при создании Job.
Что интересно:
- механизм планирования заданий остался прежний - AppScheduler + Quartz и работает все в пределах IIS?
- что будет с моими Job которые я создал в BPM для запуска каждый день в 0:00, если настали праздники и пользователи в систему не ходят, а сайт на хостинге планово/внепланово перезагрузили, или сам хостинг обслуживали да IIS рестартовали - в случае 5ки мои Job не стартуют заново автоматически пока я хоть стартовую страничку не открою, тем самым не разбужу сайт. В 7-ке так же получится?
- в процессах 7ки появился так понимаю таймер (для выполнения шага по времени или с отсрочкой и т.д.) - он основан на Quartz?

В 7-ке я новичок:cool: не пинайте и не ругайте сильно, если бы было время покопаться в системе, знал бы ответы сам... сейчас из-за нюансов работы Scheduler в пятой версии появились мысли переделать все по 7-ую...

Нравится

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

Александр,

1) механизм планирования заданий остался прежний - AppScheduler + Quartz и работает все в пределах IIS?

Остался прежним

2) что будет с моими Job которые я создал в BPM для запуска каждый день в 0:00, если настали праздники и пользователи в систему не ходят, а сайт на хостинге планово/внепланово перезагрузили, или сам хостинг обслуживали да IIS рестартовали - в случае 5ки мои Job не стартуют заново автоматически пока я хоть стартовую страничку не открою, тем самым не разбужу сайт. В 7-ке так же получится?

Все также как и в 5-ке. Пока сайт лоадера не «поднять» Quartz не запуститься.

3) в процессах 7ки появился так понимаю таймер (для выполнения шага по времени или с отсрочкой и т.д.) - он основан на Quartz?

Таймер основан на кварце. Если нужны подробности - сообщите.

Дмитрий, спасибо! В принципе ситуация понятна.

А подскажите, пожалуйста, где именно прописывается код планировщика?

Создайте бизнес-процесс с одного элемента "Скрипт" (Начало-Скрипт-Конец). В этом скрипте прописываете код планировщика, сохраняетесь, публикуетесь, запускаете процесс (в этот момент добавляется какое либо задание в планировщик), удаляете процесс.

Дмитрий, спасибо большое!

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