@@ -230,6 +230,7 @@ counter_number - код поля "Номер заявки"
...
@@ -230,6 +230,7 @@ counter_number - код поля "Номер заявки"
Кнопка **«Отправить тестовое письмо»** позволяет проверить работу уведомления прямо из маршрута, отправкой уведомления на почту. (Для этого в приложении должна быть настроена почтовая служба). После нажатия на кнопку система предложит выбрать уже созданную заявку в реестре, для того чтобы отправить письмо на указанную в заявке почту.
Кнопка **«Отправить тестовое письмо»** позволяет проверить работу уведомления прямо из маршрута, отправкой уведомления на почту. (Для этого в приложении должна быть настроена почтовая служба). После нажатия на кнопку система предложит выбрать уже созданную заявку в реестре, для того чтобы отправить письмо на указанную в заявке почту.
Этап 4. Назначение исполнителя
Этап 4. Назначение исполнителя
-------------------------------
Вход - заявка поступившая менеджеру
Вход - заявка поступившая менеджеру
...
@@ -394,3 +395,176 @@ counter_number - код поля "Номер заявки"
...
@@ -394,3 +395,176 @@ counter_number - код поля "Номер заявки"
Создание этапа маршрута
Создание этапа маршрута
^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^
**Шаг 1.** В маршруте добавляем новый этап.
**Шаг 2.** В настройках этапа:
* указываем наименование этапа (например, «Смена статуса на "В работе"»);
* в поле **«Событие»** вставляем название созданного скрипта интерпретатора.
**Шаг 3.** Сохраняем этап.
Скрипт интерпретатора для этапа 4
^^^^^^^^^^^^^^^^^^^^^^^^
Теперь когда мы умеем добавлять блокирующий процесс в маршрут, создаем еще один скрипт интерпретатора для переноса данных из формы завершения этапа 4 в основную форму.
**Шаг 1.** Для начала добавляем на основную форму заявки поле **«Исполнитель»** из формы завершения. Поле должно иметь аналогичный код.
**Шаг 2.** Сохраняем форму заявки
**Шаг 3.** Правой кнопкой мыши по нужной папке → добавить → интеграция → скрипт интерпретатора
**Шаг 4.** В редактор кода добавляем скрипт, который переносит данные с формы завершения на основную форму:
Пример такого блокирующего процесса:
.. code-block:: javascript
var result = true;
var message = 'ok';
function getHttpClient(){
let client = new org.apache.commons.httpclient.HttpClient();
let creds = new org.apache.commons.httpclient.UsernamePasswordCredentials(login, password);
for (let key in fieldData) field[key] = fieldData[key];
return field;
},
getValue: function(data, cmpID) {
data = data.data ? data.data : data;
for(let i = 0; i < data.length; i++)
if (data[i].id === cmpID) return data[i];
return null;
},
setValue: function(asfData, cmpID, data) {
let field = this.getValue(asfData, cmpID);
if(field) {
for (let key in data) {
if(key === 'id' || key === 'type') continue;
field[key] = data[key];
}
return field;
} else {
asfData = asfData.data ? asfData.data : asfData;
field = this.createField(data);
field.id = cmpID;
asfData.push(field);
return field;
}
}
}
function processesFilter(processes) {
let result = [];
function search(p) {
p.forEach(function(x) {
if (x.typeID == 'ASSIGNMENT_ITEM' && x.finished) result.push(x);
if (x.subProcesses.length > 0) search(x.subProcesses);
});
}
search(processes);
return result.sort(function(a, b) {
return new Date(b.finished) - new Date(a.finished);
});
}
try {
let processes = processesFilter(getProcesses(documentID));
if(!processes.length) throw new Error('Не найденно завершенной работы');
let resultFormWork = getWorkCompletionData(processes[0].actionID);
if(!resultFormWork || !resultFormWork.result.hasOwnProperty('dataUUID')) throw new Error('Не найдена форма завершения');
let completionFormData = getFormData(resultFormWork.result.dataUUID);
let newFormData = [];
let matching = [];
//поля для сопоставления с фз на основную форму
matching.push({from: ‘поле на форме завершения’, to: ‘поле основной формы’});
matching.forEach(function (id) {
let fromData = UTILS.getValue(completionFormData, id.from);
if (fromData) UTILS.setValue(newFormData, id.to, fromData);
});
mergeFormData(dataUUID, newFormData);
} catch (err) {
message = err.message;
}
**Шаг 5.** Находим в скрипте блок сопоставления полей matching и заменяем текст внутри кавычек
* from - код поля "Исполнитель" в форме завершения
* to - код поля "Исполнитель" в осноной форме, куда переносим значение
Пример:
До:
После:
**Шаг 6.** Присваиваем скрипту интерпретатора наименование, например ``event.blocking.interpreter.completion_form_responsible``
**Шаг 7.** При необходимости добавляем описание и указываем авторизационные данные как мы это делали ранее
**Шаг 8.** После того как все готово, сохраняем сущность и переходим к добавлению этапа в маршрут.
Добавление дополнительного шага для этапа 4
------------------------------------------
**Шаг 1.** Добавляем этап с типом действия "Блокирующий процесс":
* Наименование - перенос данных с формы завершения
* Событие - вставляем код созданного нами скрипта интерпретатора для переноса данных из формы завершения (``event.blocking.interpreter.completion_form_responsible``)
**Шаг 2.** Сохраняем этап и переходим к формированию правильного порядка этапов. Нам необходимо передвинуть этап с переносом формы завершения непосредственно под этап с формой завершения.
**Шаг 3.** Для переноса этапа зажимаем кнопку (пример кнопки) рядом с цифрой этапа и двигая строку в нужное место
(скрин)
Теперь все этапы располагаются в правильном порядке.