|
Пример использования пользовательского расширения
Очень часто в процессах возникает задача вычисления даты с учетом рабочего календаря. Для того, чтобы аналитики могли реализовывать такую логику вычисления в модели бизнес-процесса без помощи программиста, создадим пользовательское расширение "Добавить N рабочих дней" на вкладке Сценарии Дизайнера ELMA в блоке Пользовательские расширения (рис. 1).

Рис. 1. Карточка пользовательского расширения. Вкладка "Настройки отображения"
На вкладке Параметры необходимо задать 2 входных свойства (Начальная дата, тип Дата/Время; Интервал в днях, тип Целое число) и 1 выходное свойство (Расчетная дата, тип Дата/Время).

Рис. 2. Карточка пользовательского расширения. Вкладка "Параметры"
На вкладке Сценарий добавим расчет даты с учетом рабочего календаря:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Parameters = EleWise.ELMA.Workflow.Models.Parameters.CA_DobavitjNRabochihDney;
using EleWise.ELMA.Scheduling;
using EleWise.ELMA.Services;
namespace EleWise.ELMA.Model.Scripts
{
///
/// Модуль сценариев пользовательского расширения "Добавить N рабочих дней"
///
//Внимание! Для корректной работы программы не изменяйте название класса
public class CA_DobavitjNRabochihDney_Scripts
{
//Внимание! В классе должен быть метод Execute с данной сигнатурой
public void Execute(Parameters parameters)
{
var calendar = Locator.GetServiceNotNull<IProductionCalendarService>();
parameters.RaschetnayaData = calendar.EvalTargetTime(parameters.NachaljnayaData.Value,
TimeSpan.FromDays((double)parameters.IntervalVDnyah));
}
}
}

Рис. 3. Карточка пользовательского расширения. Вкладка "Сценарий"
Пользовательское расширение готово, опубликуем его и убедимся, что оно теперь доступно в блоке Plug-ins боковой панели инструментов карточки процесса (рис. 4).

Рис. 4. Пользовательское расширение "Добавить N рабочих дней" в блоке "Plug-ins" на графической модели процесса
Пользовательское расширение добавляется на графическую модель процесса с боковой панели инструментов. Рассмотрим простой процесс выставления счета для оплаты товара (рис. 5).

Рис. 5. Карта процесса "Выставить счет"
Менеджер по продажам выставляет счет, указывая его номер, дату и контрагента. После выставления счета бухгалтер должен подтвердить поступление оплаты по счету. Счет действителен в течении 3-х рабочих дней. Если счет не был оплачен своевременно, менеджер по продажам должен выставить счет повторно.
Далее приведены настройки формы задачи "Выставить счет клиенту" (рис. 6), входные/выходные атрибуты расширения "Добавить N рабочих дней" (рис .7) и настройки эскалации по таймеру из операции "Подтвердить оплату по счету" (рис. 8).

Рис. 6. Настройки формы задачи "Выставить счет клиенту"

Рис. 7. Входные/выходные атрибуты расширения "Добавить N рабочих дней"

Рис. 8. Настройки эскалации из операции "Подтвердить оплату по счету"
См. также: