Цель:
Получить ссылки на все задачи по процесса по идентификатору процесса
Как можно получить задачи?
Информацию по задачам процесса можно получить выполнив API запрос на получение экземпляра процесса по идентификатору.
Пример:
Поиск будем осуществлять на странице. Для этого:
1 Создадим интерфейс в нужном разделе(приложении) или форму.
2 Добавим необходимые контекстные переменные:
В переменной «Задачи процесса» будет одно строковое поле task_link. В него будем записывать сформированную ссылку.
3 Вынесем на форму поле для ввода идентификатора процесса, добавим кнопку и таблицу со списком задач:
Таблица представлена виджет-кодом следующим образом:
HTML:
<style type="text/css">
table {
border: 1px solid #D9D9D9;
padding-left: 3px;
padding-right: 3px;
}
tr th {
background-color: #f8f8f8;
}
</style>
<table border="1" cellpadding="0" cellspacing="0">
<tr align="center">
<th >Наименование задачи</th>
</tr>
<% for (const item of Context.data.process_task) { %>
<tr><td>
<%= item.task_link %>
</td></tr>
<% } %>
</table>
4 Кнопку привязываем к методу, который выполняет запрос, формирует и записывает ссылки на задачи в таблицу:
Код:
async function findAllTaskByProcess(): Promise<void> {
//создать таблицу
let table = Context.fields.process_task.create();
//получаем экземпляр процесса по идентификатору
const resp = await fetch(encodeURI("https://x5lktdqsv6jmk.elma365.ru/pub/v1/bpm/instance/"+ Context.data.process_id! +"/get"), {
method: 'post',
headers: {
'X-TOKEN': '5d98a66d-3a0d-410a-84d'
}
});
if(!resp.ok) {
throw new Error(resp.statusText);
}
else {
const temp = (await resp.json())!;
if(temp["data"] && temp["data"]["__tasks"]) { //в объекте __tasks хранятся все объекты задач экземпляра процесса
let tasks = temp["data"]["__tasks"];
for (var task in tasks) { //для каждой задачи получаем необходимые id задачи и его наименование и формируем ссылку
let row = table.insert();
row.task_link = "<a href='(p:task/"+tasks[task]["__id"]+")'>" + tasks[task]["__name"] + "</a>";
}
}
}
Context.data.process_task = table;
}
Где:
Результат: