Репозиторий с шаблоном разработки «Периодические поручения».
Шаблон позволяет:
- настроить расписание и параметры рассылки периодических поручений
- автоматически формировать периодические поручения на основании расписания
Состав объектов разработки:
- Справочник «График исполнения поручения»
- Справочник «Расписание отправки поручения»
- Фоновый процесс «Отправка периодических поручений»
- Фоновый процесс «Актуализация расписания отправки периодических поручений»
- Асинхронный обработчик по созданию записей расписания отправки периодических поручений по графику
- Асинхронный обработчик по закрытию записей расписания отправки периодических поручений по графику
- Асинхронный обработчик по созданию и старту периодического поручения по расписанию
Поскольку шаблон разработки не содержит перекрытий объектов коробочного решения, конфликты при публикации не возникнут. Это позволяет использовать функциональность, как при старте нового проекта, так и в ходе сопровождения существующих инсталляций системы.
Общее описание и инструкцию по использованию шаблона см. тут
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 в папку.
- Указать в _ConfigSettings.xml DDS:
<block name="REPOSITORIES">
<repository folderName="Base" solutionType="Base" url="" />
<repository folderName="RX" solutionType="Base" url="<адрес локального репозитория>" />
<repository folderName="<Папка из п.1>" solutionType="Work"
url="https://github.com/DirectumCompany/rx-template-recurringactionitems" />
</block>
Возможные варианты:
A. Fork репозитория
- Сделать fork репозитория rx-template-recurringactionitems для своей учетной записи.
- Склонировать созданный в п. 1 репозиторий в папку.
- Указать в _ConfigSettings.xml DDS:
<block name="REPOSITORIES">
<repository folderName="Base" solutionType="Base" url="" />
<repository folderName="<Папка из п.2>" solutionType="Work"
url="<Адрес репозитория gitHub учетной записи пользователя из п. 1>" />
</block>
B. Подключение на базовый слой.
Вариант не рекомендуется, так как при выходе версии шаблона разработки не гарантируется обратная совместимость.
- Склонировать репозиторий rx-template-recurringactionitems в папку.
- Указать в _ConfigSettings.xml DDS:
<block name="REPOSITORIES">
<repository folderName="Base" solutionType="Base" url="" />
<repository folderName="<Папка из п.1>" solutionType="Base"
url="<Адрес репозитория gitHub>" />
<repository folderName="<Папка для рабочего слоя>" solutionType="Work"
url="https://github.com/DirectumCompany/rx-template-recurringactionitems" />
</block>
C. Копирование репозитория в систему контроля версий.
Рекомендуемый вариант для проектов внедрения.
- В системе контроля версий с поддержкой git создать новый репозиторий.
- Склонировать репозиторий rx-template-recurringactionitems в папку с ключом
--mirror
. - Перейти в папку из п. 2.
- Импортировать клонированный репозиторий в систему контроля версий командой:
git push –mirror <Адрес репозитория из п. 1>