Примеры разработки процессов с обработчиками для docx, xlsx файлов

# Введение

В данном руководстве рассмотрены примеры разработки и выполнения процессов с использованием обработчиков

  • office.excel.handler.ExcelReadHandler
  • office.excel.handler.ExcelSaveHandler
  • office.doc.DocxHandler

предназначенных для работы с docx, xlsx файлами.

Описание конфигураций данных обработчиков в руководстве по работе с обработчиками

Пример разработки и выполнения процесса officeExcel содержащего обработчики Excel.

Сценарий процесса.

Данный процесс является примером применения обработчиков Excel. Выполняется чтение данных из входного файла, при этом используется обработчик “Excel: Прочесть данные из файла”, затем считанные данные отображаются на форме и доступны пользователю для редактирования. Второй Excel обработчик “Сохранить данные в файл” записывает отредактированные данные в файл, при этом используется входной файл шаблона. Далее процесс переходит в узел-действие “Download xlsx”, где пользователь имеет возможность скачать созданный xlsx файл.

Разработка графа бизнес-процесса.

Для создания процесса officeExcel используем язык JPDL. Выбирая элементы палитры: “Начало”, “Окончание”, “Узел-действие”, “Переход” нарисуем следующий граф бизнес-процесса:

DevExcel ru1.png

На переходах к узлам-действиям необходимо расположить обработчики. Класс и конфигурации обработчиков будут рассмотрены далее.

Создание переменных и ролей

В данном бизнес-процессе будет использоваться лишь одна роль-дорожка.
Для ее создания необходимо перейти на вкладку Роли и нажать “Создать”. В появившемся окне введите название “Роль1”:

DevExcel ru2.png

«Роль1» не имеет инициализатора т.к. будет использована в стартовом состоянии и проинициализируется пользователем, запустившим экземпляр процесса. Также данная роль-дорожка будет использована и для всех остальных узлов требующих роль-дорожку.
Для установки роли необходимо выделить узел и в его свойствах, в поле Роль/Value выбрать или ввести “Роль1”

Далее создадим переменные, для этого необходимо перейти на вкладку “Переменные” и нажать “Создать”, в появившемся окне требуется ввести имя переменной, а также выбрать ее формат.

DevExcel ru3 1.png

Описание переменных:
Переменная Тип Описание
НазваниеТаблицы Строка Название таблицы
список1 Список(Строка) 1-й столбец таблицы
список2 Список(Дробное число) 2-й столбец таблицы
список3 Список(Целое число) 3-й столбец таблицы
сейчас Дата со временем Дата/время создания xlsx файла
ExcelFile Файл Переменная созданного файла xlsx

Более подробно о назначении данных переменных будет рассказано далее.

Создание графических форм и валидация переменных

Процесс содержит две формы, в узле-действии “Edit table” и “Download xlsx” соответственно, для их создания выполните следующие действия.

Кликните на узле-действии правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (левой кнопкой мыши):

DevExcel ru4.png

Используем тип формы «HTML форма + freemarker теги»

В узле “Edit table” переходим на вкладку “Код”, где создаем разметку следующего вида:

Excel ex pic5.png

Далее переходим на вкладку дизайн:

Excel ex pic6.png

Здесь также необходимо расположить следующие элементы:

  • Freemarker тег “Ввод переменной” для ввода переменной “НазваниеТаблицы”
  • Три Freemarker тега “EditLinkedLists” для заполнения/редактирования списков, на основе которых будет создана таблица

В поле “Название переменной” указываем “список1”, “список2”, “список3” соответственно для каждого из трех тегов, расположенных в ячейках “Название”, “Цена”, “Количество”.

В результате форма должна принять следующий вид:

Excel ex pic8 1.png

Далее необходимо создать файл валидации и настроить проверку переменных:

DevExcel ru5.png

Используем валидатор “Обязательное поле”:

Excel ex pic11.png

Аналогичным способом создается форма для узла-действия “Download xlsx”, которая необходима для загрузки созданного xlsx файла с таблицей.

Форма имеет следующий вид:

DevExcel ru6 1.png

Здесь используется Freemarker тег “Отобразить переменную”, в поле “название переменной” выбираем переменную “ExcelFile”

Настройка обработчиков

Первый обработчик необходим для выполнения чтения данных из Excel файла.

Класс обработчика – “Excel: Прочесть данные из файла”

DevExcel ru7.png

Конфигурация:

Excel ex pic14 1.png

Входной файл – задан в виде пути к файлу, содержит следующие входные данные:

Лист “Sheet0”

Excel ex pic15.png

Эти данные будут считаны в “список1” (Страница по номеру 1, начальная строка 1, столбец 1, массив по вертикали)

Лист “Sheet1”

Excel ex pic16.png

Эти данные будут считаны в “список2” (Страница по названию “Sheet1”, начальный столбец 2, строка 2, массив по горизонтали)

Лист “Sheet2”

Excel ex pic17.png

Эти данные будут считаны в переменную “НазваниеТаблицы” (отдельная ячейка на странице по номеру 3, столбец 2, строка 4)

Второй обработчик необходим для определения Даты/времени создания xlsx файла.

Класс обработчика – ExecuteFormulaActionHandler,

DevExcel ru8.png

конфигурация:

Excel ex pic19.png

Т.е. переменная “сейчас” будет проинициализирована результатом выполнения функции “current_date_time()”, которая возвращает текущую дату/время

Третий обработчик – “Excel: Сохранить данные в файл”, предназначен для сохранения данных в файл Excel

Excel ex pic20.png

Конфигурация:

Excel ex pic21 1.png

Входной файл – в данном обработчике это файл шаблона, на основе которого будет создан xlsx файл результата. Задан с помощью пути к файлу и имеет следующий вид:

Excel ex pic22.png

Выходной файл: Имя – Report.xls, используем файловую переменную ExcelFile;

Остальные параметры (отдельные ячейки и вертикальные массивы) заданы в соответствии с позициями на основе входного файла шаблона;

Таким образом данный обработчик должен создать файл Excel Report.xls, в котором будет создана таблица представленная в шаблоне, и заполнена данными из переменных “НазваниеТаблицы”, “Сейчас”, “список1”, “список2”, “список3”;

Загрузка и выполнение процесса

Загружаем разработанный процесс на сервер, для этого пользуемся функцией “Экспорт архива процесса” с установленной опцией “Экспорт на WFE сервер”.

После запуска процесса, срабатывает обработчик Excel, который выполняет чтение данных из входного файла:

Excel ex pic23.png

Переходим в список заданий.

В задании “Edit table” вводим название таблицы, редактируем текущие данные, а также заполняем третий столбец таблицы:

Excel ex pic25.png

Если все данные введены, то далее сработает обработчик сохранения данных в Excel файл Report.xls, управление перейдет в узел “Download Xls”, где будет возможность скачать созданный файл:

Excel ex pic26.png

Кликнув на ссылку Report.xls, нам будет предоставлена возможность скачать данный файл.
Полученный файл имеет вид:

Excel ex pic27.png

Файл был создан согласно заданной конфигурации обработчика, а также с применением входного файла шаблона.

История выполнения процесса:

Excel ex pic28.png

Пример разработки и выполнения процесса officeDocx содержащего обработчик Docx

Сценарий процесса

На стартовой форме процесса пользователь создает и заполняет данными таблицу, вводит ее название. Далее срабатывает обработчик DocxHandler, который на основе шаблона и таблицы с данными создает Docx файл, к сформированной таблице применяется стиль. После чего генерируется ссылка для скачивания полученного файла.

Разработка графа бизнес-процесса

Для создания процесса officeDocx используем язык JPDL. Выбирая элементы палитры: “Начало”, “Окончание”, “Узел-действие”, “Переход” нарисуем следующий граф бизнес-процесса:

DevDocx ru1.png

На переходе к узлу-действию необходимо расположить два обработчика. Класс и конфигурации обработчиков будут рассмотрены далее.

Создание переменных и ролей

В данном бизнес-процессе будет использоваться лишь одна роль-дорожка.
Для ее создания необходимо перейти на вкладку Роли и нажать “Создать”. В появившемся окне введите название “Роль1”:

Docx ex pic2.png

«Роль1» не имеет инициализатора т.к. будет использована в стартовом состоянии и проинициализируется пользователем, запустившим экземпляр процесса. Также данная роль-дорожка будет использована и для узла-действия “ Download Docx ”.
Для установки роли необходимо выделить узел и в его свойствах, в поле Роль/Value выбрать или ввести “Роль1”

Далее создадим переменные, для этого необходимо перейти на вкладку “Переменные” и нажать “Создать”, в появившемся окне требуется ввести имя переменной, а также выбрать ее тип.

DevDocx ru2 1.png

Описание переменных:
Переменная Тип Описание
НазваниеТаблицы Строка Название таблицы
список1 Список(Строка) 1-й столбец таблицы
список2 Список(Дробное число) 2-й столбец таблицы
список3 Список(Целое число) 3-й столбец таблицы
сейчас Дата со временем Дата/время создания docx файла
wordResult Файл Переменная созданного файла docx

Более подробно о назначении данных переменных будет рассказано далее.

Создание графических форм и валидация переменных

Кликните на стартовый узел графа бизнес-процесса правой кнопкой мыши и выберите команду «Форма» > «Создать форму» (левой кнопкой мыши):

DevDocx ru3.png

Используем тип формы «HTML форма + freemarker теги»

Создаем форму следующего вида:

Docx ex pic5 1.png

Здесь расположено:

  • Тег “ввод переменной” для “НазваниеТаблицы”;
  • теги “ввод переменной” для заполнения данными списков, на основе которых будет создана таблица;

Полученный код формы:

Docx ex pic10 1.png

Далее необходимо создать файл валидации и настроить проверку переменных.

Все переменные, используемые на данной форме должны быть обязательными, поэтому используем валидаторы “Обязательное поле”:

Docx ex pic12 1.png

Аналогичным способом создается форма для узла-действия “Download Docx”, которая необходима для загрузки созданного docx файла с таблицей.

Форма имеет следующий вид:

Docx ex pic13 1.png

Здесь используется тег “Ввод переменной”, выбираем переменную “wordResult”

Настройка обработчиков

Первый обработчик необходим для определения Даты/времени создания docx файла.

Класс обработчика – ExecuteFormulaActionHandler,

DevDocx ru4.png

конфигурация:

Docx ex pic15.png

Т.е. переменная “сейчас” будет проинициализирована результатом выполнения функции “current_date_time()”, которая возвращает текущую дату/время

Второй обработчик – “обработчик файлов Docx”, предназначен для сохранения данных в файл docx

DevDocx ru5.png

Конфигурация:

Docx ex pic17 1.png

Входной файл (шаблон) создадим непосредственно в бизнес-процессе, подробнее в следующем пункте.

Выходной файл – здесь задано имя Report.docx, а также используется файловая переменная, которая будет указывать на созданный docx файл

Создание шаблона

Создадим файл шаблона docx непосредственно в бизнес-процессе.

Для этого в конфигураторе обработчика docx нажимаем на «Создать» напротив «Входного файла», и формируем шаблон следующего вида:

Docx ex pic18 1.png

Таким образом, предполагается что:

  • ${сейчас} — будет заменено обработчиком на значение переменной “сейчас”, в которой хранится дата/время создания docx файла;
  • ${НазваниеТаблицы} – будет заменено на значение переменной НазваниеТаблицы;
  • ${список1},${список2},${список3} – это столбцы таблицы;

Создание стиля

Создадим в шаблоне новый стиль таблиц, например следующего вида:

Docx ex pic19 1.png

Для этого вызовем соответствующее меню с помощью комбинации клавиш ALT+CTRL+SHIFT+S, и выберем “Создать стиль”

Docx ex pic20.png

Действия необходимые для создания стилей выбираются в зависимости от используемого пакета office и описаны в соответствующих справках по данным пакетам, также могут быть отличия в зависимости от версии (для данного примера использовался MS Office 2010)

Загрузка и выполнение процесса

Загружаем разработанный процесс на сервер, для этого пользуемся функцией “Экспорт архива процесса” с установленной опцией “Экспорт на WFE сервер”.

Запустив данный процесс, мы попадаем на стартовую форму.

Здесь вводим название таблицы, вводим данные, а также выбираем файл ранее созданного шаблона:

Docx ex pic22 1.png

Если все данные введены, то далее сработают обработчики и будет создан docx файл, управление перейдет в узел “Download Docx”, где будет возможность скачать созданный файл:

Docx ex pic23 1.png

Кликнув на ссылку Report.docx, нам будет предоставлена возможность скачать данный файл.

Полученный файл:

Docx ex pic24 1.png

Файл был создан согласно заданной конфигурации обработчика, к таблице был применен созданный стиль.