Атрибуты запроса: различия между версиями
ENetrebin (обсуждение | вклад) |
ENetrebin (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
'''''[[Применение Ключ-АСТРОМ]] / [ | '''''[[Применение Ключ-АСТРОМ]] / [https://doc.ruscomtech.ru/index.php/Применение_Ключ-АСТРОМ#.D0.90.D1.82.D1.80.D0.B8.D0.B1.D1.83.D1.82.D1.8B_.D0.B7.D0.B0.D0.BF.D1.80.D0.BE.D1.81.D0.B0 Атрибуты запроса]''''' | ||
Ключ-АСТРОМ позволяет создавать атрибуты запроса на основе аргументов метода. | |||
== Создать атрибуты запроса == | |||
Чтобы создать атрибут запроса на основе аргумента метода | |||
# Перейдите в '''Настройки > Мониторинг сервисов > Атрибуты запроса'''. | |||
# Выберите '''Определить новый атрибут запроса'''. | |||
# Укажите уникальное имя атрибута запроса. Вы можете переименовать атрибут в любой момент в будущем. | |||
# Выберите '''Добавить новый источник данных.''' | |||
# <code>необязательно</code> Определите область действия атрибута запроса. | |||
# В списке '''Источник атрибутов запроса''' выберите '''Параметры метода Java''', '''Параметры метода .NET''' или '''Параметры метода PHP'''. | |||
# Нажмите кнопку '''Выбрать источники метода'''. Здесь вы можете выбрать класс метода, для аргумента которого вы хотите задать атрибут. | |||
# Выберите группу процессов, содержащую интересующие вас классы или интерфейсы, и нажмите '''Продолжить'''. | |||
# Найдите класс, включающий интересующий вас метод. Начните вводить имя класса и нажмите кнопку '''Поиск'''. Заполнение списка может занять несколько секунд. | |||
# Выберите класс из отображаемого списка. Если нужного вам класса нет в списке, уточните строку поиска. [[Файл:Image4061.png|граница]] | |||
# Наконец, выберите один или несколько методов, из которых вы хотите получить параметры, а затем нажмите кнопку '''Завершить'''. | |||
# Выбранные вами методы перечислены в правиле захвата аргументов методов (см. ниже). Для каждого метода выберите аргумент или возвращаемое значение метода, который вы хотите захватить, из списка в разделе '''Захват'''. [[Файл:Image4062.png|граница]] | |||
# Вы всегда сможете расширить список или удалить методы позже. После сохранения перезапустите процессы, к которым применяется это правило. | |||
== | === Примечания === | ||
* | * Помимо аргументов и возвращаемых значений любого метода, вы также можете отслеживать количество его вхождений. При регистрации вхождений следует использовать только одно правило метода. Ключ-АСТРОМ подсчитает количество вызовов этого метода в рамках одного запроса. | ||
* | * Вы можете захватывать не примитивные и не строковые объекты. Однако это может привести к увеличению нагрузки. Некоторые объекты могут непреднамеренно менять своё состояние в зависимости от вызываемого метода, поэтому используйте эту возможность с осторожностью. | ||
* Базовые классы '''Java''' (например, <code>javax.</code>и <code>java.</code>) или классы '''.NET''' (например, <code>System.</code>) выдают предупреждение «'''Не инструментируется'''». Эти классы нельзя использовать, поскольку их инструментирование подразумевает инструментирование значительной части вашей среды. | |||
== | == Что дальше? == | ||
Как только ваши службы начнут вызывать соответствующие методы, вы увидите атрибут запроса на странице распределенных трассировок. | |||
[[Файл:Image4063.png|граница]] | |||
Древовидное представление на уровне кода также содержит эти методы. Оно показывает, какое значение было у каждого конкретного метода, на случай, если метод вызывается несколько раз с разными значениями. | |||
== Постобработка == | |||
В большинстве случаев захваченное значение будет содержать именно то, что вам нужно. Однако вам может понадобиться не всё значение целиком или даже не все значения. С помощью постобработки вы можете управлять захваченным значением. | |||
Разверните опцию «'''Дальнейшее ограничение или обработка заблокированных параметров (необязательно)'''», чтобы увидеть этапы обработки. Этапы выполняются в указанном порядке — каждый этап применяется к результату предыдущего. | |||
Вам не обязательно применять все шаги. Каждый шаг становится активным после того, как вы укажете для него значение или установите флажок. | |||
[[Файл:Image4064.png|граница]] | |||
<u>'''Шаг 1'''</u> позволяет извлечь что-либо из полученной строки на основе разделенных символов. | |||
'''<u>Шаг 2</u>''' позволяет разделить полученное значение на несколько значений на основе символа-разделителя. | |||
'''<u>Шаг 3</u>''' удаляет пробелы. | |||
'''<u>Шаг 4</u>''' позволяет отфильтровать полученные значения, которые не соответствуют заданному критерию. | |||
'''<u>Шаг 5</u>''' позволяет извлечь что-либо из полученной строки на основе регулярного выражения. | |||
== Числовые значения и агрегации == | |||
Возможно, вам потребуется захватить аргумент метода, который вызывается несколько раз. Иногда вас могут интересовать только конкретное значение. В других случаях вам может потребоваться только подсчитать количество выполнений или усреднить захваченные значения. В других случаях рассматриваемый аргумент может быть сложным объектом, и вас интересует только один аспект этого объекта. | |||
Для решения таких ситуаций можно использовать параметры «'''Тип данных'''» и « '''Агрегация по запросу'''» при определении или настройке атрибута запроса. | |||
=== Агрегации === | |||
Агрегирование применяется не только в пределах одного источника данных (например, правила метода), но и в пределах нескольких источников данных. Порядок определяется: | |||
* Порядок правил источника данных | |||
* Порядок правил метода в источнике данных метода | |||
* Порядок выполнения методов в вашем приложении (когда метод выполняется несколько раз) | |||
==== Атрибуты текста ==== | |||
Для атрибутов текста вы можете выбрать один из следующих вариантов: | |||
* Первое появление | |||
* Последнее появление | |||
* Набор различных значений | |||
Параметр «'''Набор отдельных значений'''» позволяет использовать все отдельные значения, найденные в запросе, для фильтрации. Например, если запрос содержит атрибут запроса с названием <code>Product</code>, и для этого атрибута получены два значения, <code>Book</code> и <code>Video</code>. Вы можете выполнить фильтрацию по любому из этих значений, чтобы найти нужный запрос. | |||
==== Числовые атрибуты ==== | |||
Для числовых значений можно использовать следующие агрегации: | |||
* Минимум зафиксированных значений | |||
* Максимальное количество зафиксированных значений | |||
* Среднее значение зафиксированных значений | |||
* Сумма зафиксированных значений | |||
* Количество значений | |||
* Количество отдельных значений | |||
При выборе одного из этих вариантов тип данных автоматически изменится на целочисленный. Эти настройки полезны при подсчёте. | |||
== Глубокий доступ к объектам == | |||
Интересующее вас значение может быть доступно не как простой аргумент, а как часть сложного объекта аргумента или даже переменной рассматриваемого класса. К таким значениям всё равно можно получить доступ. Вы можете получить доступ не только к значениям аргументов и возвращаемым значениям, но и к самому объекту. Если захватываемый элемент (будь то аргумент или объект) является сложным объектом, вы можете определить метод (цепочку), который обеспечивает глубокий доступ к объекту. В примере ниже используется метод <code>getBookingCode</code>. Вы даже можете выполнить цепочку, например, <code>getBookingCode().getCustomerCode()</code>. | |||
[[Файл:Image4065.png|граница]] | |||
'''Внимание !''' Функция глубокого доступа к объектам добавляет в ваше приложение новый код, который необходимо выполнить. Таким образом, это может изменить состояние вашего приложения или повлиять на его производительность. Используйте эту функцию с осторожностью. Так как данная функция выполняет энергоемкие операции - не рекомендуются использовать ее без указания фильтров для атрибутов запросов. Избегайте также функцию глубокого доступа к объектам, где может возникать рекурсия. | |||
=== Ограничения === | |||
На доступ к глубоким объектам действуют следующие ограничения: | |||
* Вы можете получить доступ только к одному полю одновременно. Если вы обращаетесь к полю, оно должно находиться в начале цепочки. | |||
* Параметры метода не допускаются. | |||
* Необходимо использовать допустимую нотацию '''Java''', '''.NET''' или '''PHP'''. | |||
Текущая версия на 22:29, 30 сентября 2025
Применение Ключ-АСТРОМ / Атрибуты запроса
Ключ-АСТРОМ позволяет создавать атрибуты запроса на основе аргументов метода.
Создать атрибуты запроса
Чтобы создать атрибут запроса на основе аргумента метода
- Перейдите в Настройки > Мониторинг сервисов > Атрибуты запроса.
- Выберите Определить новый атрибут запроса.
- Укажите уникальное имя атрибута запроса. Вы можете переименовать атрибут в любой момент в будущем.
- Выберите Добавить новый источник данных.
необязательноОпределите область действия атрибута запроса.- В списке Источник атрибутов запроса выберите Параметры метода Java, Параметры метода .NET или Параметры метода PHP.
- Нажмите кнопку Выбрать источники метода. Здесь вы можете выбрать класс метода, для аргумента которого вы хотите задать атрибут.
- Выберите группу процессов, содержащую интересующие вас классы или интерфейсы, и нажмите Продолжить.
- Найдите класс, включающий интересующий вас метод. Начните вводить имя класса и нажмите кнопку Поиск. Заполнение списка может занять несколько секунд.
- Выберите класс из отображаемого списка. Если нужного вам класса нет в списке, уточните строку поиска.

- Наконец, выберите один или несколько методов, из которых вы хотите получить параметры, а затем нажмите кнопку Завершить.
- Выбранные вами методы перечислены в правиле захвата аргументов методов (см. ниже). Для каждого метода выберите аргумент или возвращаемое значение метода, который вы хотите захватить, из списка в разделе Захват.

- Вы всегда сможете расширить список или удалить методы позже. После сохранения перезапустите процессы, к которым применяется это правило.
Примечания
- Помимо аргументов и возвращаемых значений любого метода, вы также можете отслеживать количество его вхождений. При регистрации вхождений следует использовать только одно правило метода. Ключ-АСТРОМ подсчитает количество вызовов этого метода в рамках одного запроса.
- Вы можете захватывать не примитивные и не строковые объекты. Однако это может привести к увеличению нагрузки. Некоторые объекты могут непреднамеренно менять своё состояние в зависимости от вызываемого метода, поэтому используйте эту возможность с осторожностью.
- Базовые классы Java (например,
javax.иjava.) или классы .NET (например,System.) выдают предупреждение «Не инструментируется». Эти классы нельзя использовать, поскольку их инструментирование подразумевает инструментирование значительной части вашей среды.
Что дальше?
Как только ваши службы начнут вызывать соответствующие методы, вы увидите атрибут запроса на странице распределенных трассировок.
Древовидное представление на уровне кода также содержит эти методы. Оно показывает, какое значение было у каждого конкретного метода, на случай, если метод вызывается несколько раз с разными значениями.
Постобработка
В большинстве случаев захваченное значение будет содержать именно то, что вам нужно. Однако вам может понадобиться не всё значение целиком или даже не все значения. С помощью постобработки вы можете управлять захваченным значением.
Разверните опцию «Дальнейшее ограничение или обработка заблокированных параметров (необязательно)», чтобы увидеть этапы обработки. Этапы выполняются в указанном порядке — каждый этап применяется к результату предыдущего.
Вам не обязательно применять все шаги. Каждый шаг становится активным после того, как вы укажете для него значение или установите флажок.
Шаг 1 позволяет извлечь что-либо из полученной строки на основе разделенных символов.
Шаг 2 позволяет разделить полученное значение на несколько значений на основе символа-разделителя.
Шаг 3 удаляет пробелы.
Шаг 4 позволяет отфильтровать полученные значения, которые не соответствуют заданному критерию.
Шаг 5 позволяет извлечь что-либо из полученной строки на основе регулярного выражения.
Числовые значения и агрегации
Возможно, вам потребуется захватить аргумент метода, который вызывается несколько раз. Иногда вас могут интересовать только конкретное значение. В других случаях вам может потребоваться только подсчитать количество выполнений или усреднить захваченные значения. В других случаях рассматриваемый аргумент может быть сложным объектом, и вас интересует только один аспект этого объекта.
Для решения таких ситуаций можно использовать параметры «Тип данных» и « Агрегация по запросу» при определении или настройке атрибута запроса.
Агрегации
Агрегирование применяется не только в пределах одного источника данных (например, правила метода), но и в пределах нескольких источников данных. Порядок определяется:
- Порядок правил источника данных
- Порядок правил метода в источнике данных метода
- Порядок выполнения методов в вашем приложении (когда метод выполняется несколько раз)
Атрибуты текста
Для атрибутов текста вы можете выбрать один из следующих вариантов:
- Первое появление
- Последнее появление
- Набор различных значений
Параметр «Набор отдельных значений» позволяет использовать все отдельные значения, найденные в запросе, для фильтрации. Например, если запрос содержит атрибут запроса с названием Product, и для этого атрибута получены два значения, Book и Video. Вы можете выполнить фильтрацию по любому из этих значений, чтобы найти нужный запрос.
Числовые атрибуты
Для числовых значений можно использовать следующие агрегации:
- Минимум зафиксированных значений
- Максимальное количество зафиксированных значений
- Среднее значение зафиксированных значений
- Сумма зафиксированных значений
- Количество значений
- Количество отдельных значений
При выборе одного из этих вариантов тип данных автоматически изменится на целочисленный. Эти настройки полезны при подсчёте.
Глубокий доступ к объектам
Интересующее вас значение может быть доступно не как простой аргумент, а как часть сложного объекта аргумента или даже переменной рассматриваемого класса. К таким значениям всё равно можно получить доступ. Вы можете получить доступ не только к значениям аргументов и возвращаемым значениям, но и к самому объекту. Если захватываемый элемент (будь то аргумент или объект) является сложным объектом, вы можете определить метод (цепочку), который обеспечивает глубокий доступ к объекту. В примере ниже используется метод getBookingCode. Вы даже можете выполнить цепочку, например, getBookingCode().getCustomerCode().
Внимание ! Функция глубокого доступа к объектам добавляет в ваше приложение новый код, который необходимо выполнить. Таким образом, это может изменить состояние вашего приложения или повлиять на его производительность. Используйте эту функцию с осторожностью. Так как данная функция выполняет энергоемкие операции - не рекомендуются использовать ее без указания фильтров для атрибутов запросов. Избегайте также функцию глубокого доступа к объектам, где может возникать рекурсия.
Ограничения
На доступ к глубоким объектам действуют следующие ограничения:
- Вы можете получить доступ только к одному полю одновременно. Если вы обращаетесь к полю, оно должно находиться в начале цепочки.
- Параметры метода не допускаются.
- Необходимо использовать допустимую нотацию Java, .NET или PHP.


