Репозиторий с шаблоном разработки «Периодические поручения».
Шаблон позволяет:
- настроить расписание и параметры рассылки периодических поручений
- автоматически формировать периодические поручения на основании расписания
Состав объектов разработки:
- Справочник «График исполнения поручения»
- Справочник «Расписание отправки поручения»
- Фоновый процесс «Отправка периодических поручений»
- Фоновый процесс «Актуализация расписания отправки периодических поручений»
- Асинхронный обработчик по созданию записей расписания отправки периодических поручений по графику
- Асинхронный обработчик по закрытию записей расписания отправки периодических поручений по графику
- Асинхронный обработчик по созданию и старту периодического поручения по расписанию
Поскольку шаблон разработки не содержит перекрытий объектов коробочного решения, конфликты при публикации не возникнут. Это позволяет использовать функциональность, как при старте нового проекта, так и в ходе сопровождения существующих инсталляций системы.
Общее описание и инструкцию по использованию шаблона см. тут
Note
Замечания и пожеланию по развитию шаблона разработки фиксируйте через Issues. При оформлении ошибки, опишите сценарий для воспроизведения. Для пожеланий приведите обоснование для описываемых изменений - частоту использования, бизнес-ценность, риски и/или эффект от реализации.
Внимание! Изменения будут вноситься только в новые версии.
- Перекрытие задачи на исполнение поручения: добавление флажка «Периодическое» (только просмотр) на карточку задачи, который будет устанавливаться фоновым процессом и/или при создании графика исполнения поручения и добавление действий "Создать график" и "Показать график"
Пример названия свойства - IsPeriodic
Тип - Логическое
Пример отображаемого имени - "Периодичность"
Заполнение свойства при создании поручения:
_obj.IsPeriodic = false;Пример вычислений на кнопке "Создать график" (Выполнение):
_obj.Save();
var schedule = DirRX.PeriodicActionItemsTemplate.PublicFunctions.Module.CreateScheduleFromActionItem(_obj);
schedule.ShowModal();
if (!schedule.State.IsInserted)
{
_obj.IsPeriodic = true;
_obj.Save();
}Пример вычислений на кнопке "Создать график" (Возможность выполнения):
return !_obj.State.IsChanged &&
_obj.AccessRights.CanUpdate() &&
DirRX.PeriodicActionItemsTemplate.RepeatSettings.AccessRights.CanCreate() &&
!Locks.GetLockInfo(_obj).IsLockedByOther &&
_obj.IsPeriodic != true;Пример вычислений на кнопке "Показать график" (Выполнение):
DirRX.PeriodicActionItemsTemplate.PublicFunctions.Module.ShowScheduleForActionItem(_obj);Пример вычислений на кнопке "Показать график" (Возможность выполнения):
return _obj.IsPeriodic == true;Пример заполнения свойства "Периодическое" при создании периодического поручения:
Заменить данные строчки кода в серверной функции public virtual void StartActionItemFromScheduleItem(IScheduleItem scheduleItem) модуля PeriodicActionItemsTemplate
// FIXME: На реальных проектах переделать на заполнение свойств из перекрытий.
((Sungero.Domain.Shared.IExtendedEntity)task).Params.Add("CreatedAsPeriodic", true);На
<Решение, в котором перекрыто поручение>.ActionItemExecutionTasks.As(task).IsPeriodic = true;- Перекрытие типа документа (входящее письмо, приказ, распоряжение и т.д.): добавление действий "Создать график" и "Показать график"
Пример вычислений на кнопке "Создать график" (Выполнение):
DirRX.PeriodicActionItemsTemplate.PublicFunctions.Module.CreateScheduleFromDocument(_obj).ShowModal();Пример вычислений на кнопке "Создать график" (Возможность выполнения):
return DirRX.PeriodicActionItemsTemplate.PublicFunctions.Module.CanCreatePeriodicScheduleForDocument(_obj);Пример вычислений на кнопке "Показать график" (Выполнение):
DirRX.PeriodicActionItemsTemplate.PublicFunctions.Module.ShowSchedulesForDocument(_obj);Пример вычислений на кнопке "Показать график" (Возможность выполнения):
return DirRX.PeriodicActionItemsTemplate.PublicFunctions.Module.CanShowPeriodicScheduleForDocument(_obj);- При открытии карточки настройки периода открывать сразу вкладку «Расписание».
- Вынесение списка настроек на обложку модуля «Делопроизводство».
Для работы требуется установленный Directum RX версии 4.7 и выше.
- Склонировать репозиторий rx-template-recurringactionitems в папку.
- Указать в config.yml в разделе DevelopmentStudio:
GIT_ROOT_DIRECTORY: '<Папка из п.1>'
REPOSITORIES:
repository:
- '@folderName': 'work'
'@solutionType': 'Work'
'@url': 'https://github.com/DirectumCompany/rx-template-recurringactionitems.git'
- '@folderName': 'base'
'@solutionType': 'Base'
'@url': ''Возможные варианты:
A. Fork репозитория
- Сделать fork репозитория rx-template-recurringactionitems для своей учетной записи.
- Склонировать созданный в п. 1 репозиторий в папку.
- Указать в config.yml в разделе DevelopmentStudio:
GIT_ROOT_DIRECTORY: '<Папка из п.2>'
REPOSITORIES:
repository:
- '@folderName': 'work'
'@solutionType': 'Work'
'@url': https://github.com/DirectumCompany/rx-template-recurringactionitems.git'
- '@folderName': 'base'
'@solutionType': 'Base'
'@url': ''B. Подключение на базовый слой.
Вариант не рекомендуется, так как при выходе версии шаблона разработки не гарантируется обратная совместимость.
- Склонировать репозиторий rx-template-recurringactionitems в папку.
- Указать в config.yml в разделе DevelopmentStudio:
GIT_ROOT_DIRECTORY: '<Папка из п.1>'
REPOSITORIES:
repository:
- '@folderName': 'work'
'@solutionType': 'Work'
'@url': '<Адрес репозитория для рабочего слоя>'
- '@folderName': 'base'
'@solutionType': 'Base'
'@url': ''
- '@folderName': 'base'
'@solutionType': 'Base'
'@url': 'https://github.com/DirectumCompany/rx-template-recurringactionitems.git'
C. Копирование репозитория в систему контроля версий.
Рекомендуемый вариант для проектов внедрения.
- В системе контроля версий с поддержкой git создать новый репозиторий.
- Склонировать репозиторий rx-template-recurringactionitems в папку с ключом
--mirror. - Перейти в папку из п. 2.
- Импортировать клонированный репозиторий в систему контроля версий командой:
git push –mirror <Адрес репозитория из п. 1>