From 22ef9426e589b4b9a7173f79be93b730cc25f644 Mon Sep 17 00:00:00 2001 From: loppi Date: Mon, 24 Mar 2025 17:06:31 +0700 Subject: [PATCH 1/3] [+] Add new methods to RequestManager interface #SCR-33 --- API/scripts.om.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/API/scripts.om.d.ts b/API/scripts.om.d.ts index 10f7372..13f0caa 100644 --- a/API/scripts.om.d.ts +++ b/API/scripts.om.d.ts @@ -565,6 +565,9 @@ export interface RequestManager { log(message: string, print?: boolean): this; logStatusMessage(message: string, print?: boolean): this; setStatusMessage(message: string): this; + getRequestId(): string | null; + getScriptName(): string | null; + getScriptLongId(): string | null; } export interface UserInfo { From d462b738aa205fde88bd567674f29777d2f23989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BA=D0=B0=D1=80=D0=BE=D0=B2?= Date: Tue, 29 Apr 2025 11:38:50 +0300 Subject: [PATCH 2/3] script info methods vol 1 --- API/common.md | 26 +++++++++++++++++++++++++- API/scriptChains.md | 15 +++++++++++++-- appendix/glossary.md | 12 ++++++++++++ changelog.md | 1 + 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/API/common.md b/API/common.md index 9e1b410..e6a601e 100644 --- a/API/common.md +++ b/API/common.md @@ -75,7 +75,7 @@ copyData(): CopyData; ```js apiServiceRequestInfo(): ApiService.RequestInfo | null; ``` -Возвращает ссылку на интерфейс [`ApiService.RequestInfo`](./apiService.md#request-info), если скрипт вызван через API Service, или `null` иначе. +Возвращает ссылку на интерфейс [`ApiService.RequestInfo`](./apiService.md#request-info), если скрипт вызван через API Service, или `null` иначе.   @@ -211,6 +211,9 @@ interface RequestManager { log(message: string, print?: boolean): this; logStatusMessage(message: string, print?: boolean): this; setStatusMessage(message: string): this; + getRequestId(): string | null; + getScriptName(): string | null; + getScriptLongId(): string | null; } ``` Интерфейс для записи в лог (устаревший функционал) и работы со статусными сообщениями. Все функции возвращают `this`. @@ -244,6 +247,27 @@ setStatusMessage(message: string): this;   +```js +getRequestId(): string | null; +``` +Каждый запуск скрипта должен существовать в рамках пользовательского или системного [запроса](../appendix/glossary.md#request). Метод предполагает возможность вернуть `null`, но такое поведение можно смело считать багом системы запуска скриптов. Возвращает идентификатор [запроса](../appendix/glossary.md#request), по которому можно найти запись о запуске скрипта в истории запуска скриптов в `web`-интерфейсе (`Macros` -> `Scripts` -> `Launch History`) и в панели администратора `Requests` -> `History`, если запрос на запуск скрипта был сделан пользователем. Скрипты, запущенные по расписанию или через систему API сервисов считаются системными. + +  + +```js +getScriptName(): string | null; +``` +Возвращает имя сущности текущего исполняемого скрипта кроме случая запуска сниппета кода с помощью метода [`ResultActionsInfo.makeCodeExecutionAction()`](./scriptChains.md#make-code-execution-action) — тогда вернёт `null`. + +  + +```js +getScriptLongId(): string | null; +``` +Возвращает [long id](#long-id) сущности текущего исполняемого скрипта кроме случая запуска сниппета кода с помощью метода [`ResultActionsInfo.makeCodeExecutionAction()`](./scriptChains.md#make-code-execution-action) — тогда вернёт `null`. + +  + ### Интерфейс ExportObfuscationState ```ts interface ExportObfuscationState { diff --git a/API/scriptChains.md b/API/scriptChains.md index 835d42f..7465f10 100644 --- a/API/scriptChains.md +++ b/API/scriptChains.md @@ -22,6 +22,7 @@ makeMacrosAction(identifier: string | number): ResultMacrosAction;   + ```js makeCodeExecutionAction(code: string): CodeExecutionAction; ``` @@ -154,6 +155,8 @@ appendAfter(): this; В такой ситуации скрипты исполнятся в следующем порядке: `3 -> 4 -> 5 -> 1 -> 2`. +Запущенный таким образом скрипт унаследует идентификатор [запроса](../appendix/glossary.md#request) от своего родителя. +   ```js @@ -290,7 +293,15 @@ setTaskDescription(description: string): this; ```js run(): TaskPromise | null; ``` -Запускает скрипт с помощью асинхронного механизма выполнения. Вызов метода породит задачу, которая не будет дожидаться завершения текущей задачи, а будет выполняться сразу. Так как родительская задача не завершается и может работать параллельно с дочерней, то важно следить за совместимостью режимов блокировок родительской и дочерней задач (иначе можно попасть в `dead lock`). На данный момент существует защита от погружения в бесконечную рекурсию и задача, запущенная через `run()`, не может сама использовать этот метод. Если до запуска скрипта был вызван метод `withPromise(true)`, возвращает [`TaskPromise`](#task-promise), иначе — `null`. +Запускает скрипт с помощью асинхронного механизма выполнения. Вызов метода породит задачу, которая не будет дожидаться завершения текущей задачи, а будет выполняться сразу. + +Так как родительская задача не завершается и может работать параллельно с дочерней, то важно следить за совместимостью режимов блокировок родительской и дочерней задач (иначе можно попасть в `dead lock`). + +На данный момент существует защита от погружения в бесконечную рекурсию и задача, запущенная через `run()`, не может сама использовать этот метод. + +Запущенный таким образом скрипт будет считаться порожденным системой и получит системный идентификатоп [запроса](../appendix/glossary.md#request), даже если родительский скрипт был запущен пользователем. + +Если до запуска скрипта был вызван метод `withPromise(true)`, возвращает [`TaskPromise`](#task-promise), иначе — `null`.   @@ -310,7 +321,7 @@ interface CodeExecutionAction extends BaseCodeExecutionAction { setTimeLimit(value: number): this; } ``` -Интерфейс действия запуска динамического кода. Наследуется от [`BaseCodeExecutionAction`](#base-code-execution-action). +Интерфейс действия запуска динамического кода. Наследуется от [`BaseCodeExecutionAction`](#base-code-execution-action). Скрипты, порождённые этим интерфейсом, не имеют имени и [long id](./common.md#long-id).   diff --git a/appendix/glossary.md b/appendix/glossary.md index 69ddbd8..6d1348c 100644 --- a/appendix/glossary.md +++ b/appendix/glossary.md @@ -13,6 +13,18 @@ ***Рабочая директория скрипта*** – временная папка на сервере, которая является рабочей директорией скрипта. Скрипт ***НЕ*** может выйти за её пределы. Перед запуском скрипта создаётся эта папка, скрипт запускает команду [`chroot`](https://ru.wikipedia.org/wiki/chroot) в неё, исполняется сам, после чего папка удаляется. + +***Запрос*** – последовательность операций, запущенных пользователем или системой. Запрос чтения и модификации данных создаёт контекст, который содержит: + +- идентификатор запроса, время поступления и время завершения, +- сам исходный запрос, идентификатор пользователя, модель, в контексте которой он выполняется, +- список агентов (воркеров), которые назначены для выполнения запроса, +- список шагов выполнения запроса, +- результат запроса (ответ на запрос). + +Запросы могут быть порождены пользователями, тогда они имеют идентификаторы вида `%латинские буквы и цифры%-%число, отличное от ноля%`. Если запрос порождён системой, то он будет иметь идентификатор вида `%латинские буквы и цифры%-0`. + +Запрос регистрируется в системе и может быть отменён, а также запрос будет залогирован в системные журналы. Список активных запросов можно увидеть в панели администратора в разделе `Requests` -> `Requests`. Рядом находится вкладка истории **пользовательских** запросов (системных запросов там не найти) — `History`. [Приложения](appendix.md) diff --git a/changelog.md b/changelog.md index 3a52fd7..98622e6 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ | Дата релиза | Тег релиза | Версия ScriptAPI | Версии MiddleWork | Версия приложения | Изменения | | --- | --- | --- | --- | --- | --- | +| xx.xx.xxxx | [v9.300.x.x](https://github.com/optimacros/scripts_documentation/tree/v9.300.x.x) | — | | | | | 16.12.2024 | [v9.?00.x.x](https://github.com/optimacros/scripts_documentation/tree/v9.?00.x.x) | — | | | | | 15.11.2024 | [9.200.x.13](https://github.com/optimacros/scripts_documentation/tree/v9.200.x.13) | — | | | | | 26.09.2024 | [v9.0.50.6](https://github.com/optimacros/scripts_documentation/tree/v9.0.50.6) | — | | | | From e8f47ee5f905724eeabd9ee494ca74469eefedcd Mon Sep 17 00:00:00 2001 From: mgolovkina Date: Mon, 14 Jul 2025 14:39:19 +0700 Subject: [PATCH 3/3] Some corrections after review --- API/common.md | 8 ++++---- API/scriptChains.md | 4 ++-- appendix/glossary.md | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/API/common.md b/API/common.md index e6a601e..e86c5d3 100644 --- a/API/common.md +++ b/API/common.md @@ -75,7 +75,7 @@ copyData(): CopyData; ```js apiServiceRequestInfo(): ApiService.RequestInfo | null; ``` -Возвращает ссылку на интерфейс [`ApiService.RequestInfo`](./apiService.md#request-info), если скрипт вызван через API Service, или `null` иначе. +Возвращает ссылку на интерфейс [`ApiService.RequestInfo`](./apiService.md#request-info), если скрипт вызван через API Service, или `null` иначе.   @@ -250,21 +250,21 @@ setStatusMessage(message: string): this; ```js getRequestId(): string | null; ``` -Каждый запуск скрипта должен существовать в рамках пользовательского или системного [запроса](../appendix/glossary.md#request). Метод предполагает возможность вернуть `null`, но такое поведение можно смело считать багом системы запуска скриптов. Возвращает идентификатор [запроса](../appendix/glossary.md#request), по которому можно найти запись о запуске скрипта в истории запуска скриптов в `web`-интерфейсе (`Macros` -> `Scripts` -> `Launch History`) и в панели администратора `Requests` -> `History`, если запрос на запуск скрипта был сделан пользователем. Скрипты, запущенные по расписанию или через систему API сервисов считаются системными. +Каждый запуск скрипта должен существовать в рамках пользовательского или системного [запроса](../appendix/glossary.md#request). Метод возвращает идентификатор текущего запроса. Предполагает возможность вернуть `null`, но такое поведение можно смело считать багом системы запуска скриптов. По идентификатору можно найти запись о запуске скрипта в истории запуска скриптов в web-интерфейсе на вкладке `Macros` -> `Scripts` -> `Launch History` и в панели администратора на вкладке `Requests` -> `History`, если запрос на запуск скрипта был сделан пользователем. Скрипты, запущенные по расписанию или через систему API сервисов считаются системными.   ```js getScriptName(): string | null; ``` -Возвращает имя сущности текущего исполняемого скрипта кроме случая запуска сниппета кода с помощью метода [`ResultActionsInfo.makeCodeExecutionAction()`](./scriptChains.md#make-code-execution-action) — тогда вернёт `null`. +Возвращает имя сущности текущего исполняемого скрипта. В случае запуска сниппета кода с помощью метода [`ResultActionsInfo.makeCodeExecutionAction()`](./scriptChains.md#make-code-execution-action) возвращает `null`.   ```js getScriptLongId(): string | null; ``` -Возвращает [long id](#long-id) сущности текущего исполняемого скрипта кроме случая запуска сниппета кода с помощью метода [`ResultActionsInfo.makeCodeExecutionAction()`](./scriptChains.md#make-code-execution-action) — тогда вернёт `null`. +Возвращает [`longId`](./views.md#long-id) сущности текущего исполняемого скрипта. В случае запуска сниппета кода с помощью метода [`ResultActionsInfo.makeCodeExecutionAction()`](./scriptChains.md#make-code-execution-action) возвращает `null`.   diff --git a/API/scriptChains.md b/API/scriptChains.md index 7465f10..4d08e7d 100644 --- a/API/scriptChains.md +++ b/API/scriptChains.md @@ -299,7 +299,7 @@ run(): TaskPromise | null; На данный момент существует защита от погружения в бесконечную рекурсию и задача, запущенная через `run()`, не может сама использовать этот метод. -Запущенный таким образом скрипт будет считаться порожденным системой и получит системный идентификатоп [запроса](../appendix/glossary.md#request), даже если родительский скрипт был запущен пользователем. +Запущенный таким образом скрипт будет считаться порождённым системой и получит системный идентификатор [запроса](../appendix/glossary.md#request), даже если родительский скрипт был запущен пользователем. Если до запуска скрипта был вызван метод `withPromise(true)`, возвращает [`TaskPromise`](#task-promise), иначе — `null`. @@ -321,7 +321,7 @@ interface CodeExecutionAction extends BaseCodeExecutionAction { setTimeLimit(value: number): this; } ``` -Интерфейс действия запуска динамического кода. Наследуется от [`BaseCodeExecutionAction`](#base-code-execution-action). Скрипты, порождённые этим интерфейсом, не имеют имени и [long id](./common.md#long-id). +Интерфейс действия запуска динамического кода. Наследуется от [`BaseCodeExecutionAction`](#base-code-execution-action). Скрипты, порождённые этим интерфейсом, не имеют имени и [`longId`](./views.md#long-id).   diff --git a/appendix/glossary.md b/appendix/glossary.md index 6d1348c..b2cf87f 100644 --- a/appendix/glossary.md +++ b/appendix/glossary.md @@ -22,9 +22,9 @@ - список шагов выполнения запроса, - результат запроса (ответ на запрос). -Запросы могут быть порождены пользователями, тогда они имеют идентификаторы вида `%латинские буквы и цифры%-%число, отличное от ноля%`. Если запрос порождён системой, то он будет иметь идентификатор вида `%латинские буквы и цифры%-0`. +Запросы могут быть порождены пользователями, тогда они имеют идентификаторы вида `%латинские буквы и цифры%-%число, отличное от нуля%`. Если запрос порождён системой, то он будет иметь идентификатор вида `%латинские буквы и цифры%-0`. Скрипты, запущенные по расписанию или через систему API сервисов считаются системными. -Запрос регистрируется в системе и может быть отменён, а также запрос будет залогирован в системные журналы. Список активных запросов можно увидеть в панели администратора в разделе `Requests` -> `Requests`. Рядом находится вкладка истории **пользовательских** запросов (системных запросов там не найти) — `History`. +Запрос регистрируется в системе и может быть отменён, а также запрос логируется в системные журналы. Список активных запросов можно увидеть в панели администратора в разделе `Requests` на вкладке `Requests`. Рядом находится вкладка `History` с историей **пользовательских** запросов (системных запросов там нет). Системные запросы скриптов можно увидеть в web-интерфейсе Optimacros на вкладке `Macros` -> `Scripts` -> `Launch History`. [Приложения](appendix.md)