RestApiDeveloperGuide
Руководство по работе с Resr API
Версия 4.6.0
© 2015-2025, ООО "Процессные технологии"
# Введение
RunaWFE REST API - restful API RunaWFE–сервера, предоставляющий доступ к большинству доступных операций внутри системы (работа с определениями БП, БП, задачами, пользователями, отношениями, логами и т.д.).
OpenApi спецификация находится <a href="https://github.com/processtech/runawfe-free-server/blob/master/wfe-restapi-client/src/main/resources/api-docs.json">тут</a>,
исходный код - <a href="https://github.com/processtech/runawfe-free-server/tree/master/wfe-restapi/src/main/java/ru/runa/wfe/rest/impl">тут</a>.
Аутентификация происходит стандартным способом - посредством передачи JWT в заголовке Authorization (e.g. '-H "Authorization: Bearer ${jwt}")').
Авторизация - путем передачи данных (зачастую логина и пароля) в соответствующие методы и получения JWT (подробнее - <a href="#auth">в отдельном блоке</a>).
Базовый урл - /restapi (например, для localhost - localhost/restapi/)
# Краткая информация об основных API
Краткая информация об основных API
# Auth API
Базовый урл - /auth (например, для localhost - localhost/restapi/auth).
Отвечает за авторизацию пользователей и содержит 3 метода:
- /basic - авторизация по логину и паролю
- /kerberos - авторизация по kerberos токену
- /trusted - авторизация по trusted принципу
# Definition API
Базовый урл - /definition (например, для localhost - localhost/restapi/definition).
Отвечает за работу с определениями БП, основные методы:
- / - загрузка нового определения БП
- /list - получение определений БП по заданному фильтру
- /{id} - получение определения БП по id
# Примеры
# Java
В примерах ниже для удобства будут использоваться
- Jackson (для сериализации в JSON),
- клиентская библиотека wfe-restapi (содержащая все необходимые dto),
- а также Jetty (для выполнения HTTP запросов), пример зависимостей:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>ru.runa.wfe</groupId>
<artifactId>wfe-restapi</artifactId>
<classifier>client</classifier>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>javax-websocket-client-impl</artifactId>
</dependency>
# Авторизация по логину и паролю
import com.fasterxml.jackson.databind.ObjectMapper;
import org.eclipse.jetty.client.HttpClient;
import ru.runa.wfe.rest.dto.WfeCredentials;
...
try {
HttpClient httpClient = new HttpClient();
httpClient.start();
WfeCredentials credentials = new WfeCredentials();
credentials.setLogin("Administrator");
credentials.setPassword("wf");
String token = httpClient.POST("localhost/restapi/" + "auth/basic")
.header("Content-type", "application/json")
.content(new StringContentProvider(new ObjectMapper().writeValueAsString(credentials)))
.send().getContentAsString();
httpClient.stop();
} catch (Exception e) {
// exception handling
}
# Загрузка нового определения БП
import org.eclipse.jetty.client.HttpClient;
...
try {
HttpClient httpClient = new HttpClient();
httpClient.start();
String token = getToken(httpClient);
byte[] file = Files.readAllBytes(Paths.get(System.getProperty("user.dir") + "bp.par"));
httpClient.newRequest("localhost/restapi/" + "definition/")
.method(HttpMethod.PUT)
.header("Content-type", "multipart/form-data")
.header("Authorization", "Bearer " + token)
.param("categories", "")
.content(new BytesContentProvider(file))
.send().getContentAsString();
httpClient.stop();
} catch (Exception e) {
// exception handling
}
# Curl
# Авторизация по логину и паролю
curl -X POST "http://localhost/restapi/auth/basic" \
-H "Content-Type: application/json" \
-d '{"login":"Administrator", "password":"wf"}'
# Загрузка нового определения БП
curl -X PUT "http://localhost/restapi/definition/" \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer ${jwt}" \
-F "categories=" \
--data-binary "@$(pwd)/bp.par"