IBM Process Designer 8.5: чтение и запись данных в Coach View
В Coach View среды IBM Process Designer 8.5 взаимодействие с переменными происходит через JavaScript, который разделён на блоки.
Есть основной блок и блоки, код в которых выполняется по соответствующему действию:
В данной заметке опишу работу с входящим бизнес объектом (далее БО) и входящими параметрами. Подключение происходит во вкладке «Переменные», в которых можно указать только один БО и сколько угодно параметров. В БО должны передаваться данные, которые в дальнейшем будем отображать в Coach View, а в параметры передаются данные, которые влияют на отображение информации из БО.
Работаем с чтением и записью данных в IBM Process Designer 8.5
Чтение данных из БО и параметров
Для чтения данных необходимо использовать метод .get ('value'). Если в интерфейсе, в котором используется ваш Coach View не привязана переменная, которую вы собираетесь прочитать через этот метод, то произойдет ошибка, поэтому читать данные из переменных необходимо следующим образом:
// Чтение БО
var data = this.context.binding ? this.context.binding.get("value") : null;
if (data) {
// ваш код
}
// Чтение параметра
var title = this.context.options.title ? this.context.options.title.get("value") : null;
if (title) {
// ваш код
}
Если вы делаете интерактивный элемент, например таблицу, в которой можно менять значения, то может понадобиться сохранять измененные данные в БО или параметры. С записью данных в IBM Process Desinger всё немного хитрее.
В БО помимо самих данных содержатся свойства о выделенном элементе. Это может пригодиться, если данные отображаются в таблице, в которой можно выбрать строку. БО содержит для этого следующие свойства:
- listSelectedIndex
- listAllSelectedIndices
- listSelected
- listAllSelected
Для обновления значения выделенной строки можно использовать только свойство listAllSelectedIndices, остальные свойства доступны только для чтения.
Обновить значение можно следующим образом:
var data = this.context.binding ? this.context.binding.get("value") : null;
if (data) {
var index = 0; // Номер выделенной строки
data.set("listAllSelectedIndices" , [index]);
// Обновляем БО
this.context.binding.set("value", data);
}
Запись и обновление данных в БО
Например, необходимо изменить поле в БО. Для обновления данных в IBM Process Designer у сложных БО нужно использовать следующий способ:
var data = this.context.binding ? this.context.binding.get("value").items : null;
Обратите внимание, что при считывании переменной мы сразу обращаемся к массиву items, который содержит объекты с данными (если обратиться к массиву с данными после чтения через .get ('value'), перезаписать его и обновить БО, то данные не обновятся). Теперь можем изменить значение в БО и сохранить значение:
data[0].name = 'Новое имя';
this.context.binding.set("value", data);
Подробнее о работе с переменными можно прочитать в статье на IBM Knowledge Center: Binding data and configuration options.
P.S.: За время работы на проекте с IBM Process Designer у меня накопился опыт использования этой системы с не совсем очевидным её поведением. О чём и собираюсь писать в ближайших заметках.
Надеюсь информация была полезна для вас, если возникнут вопросы по среде IBM Process Designer 8.5 или 7.5 — пишите в комментарии, постараюсь подробно на них ответить. До скорых встреч!