Установка атрибутов для связанных элементов

Setting Attributes Between Linked Items

1. Задача

Задача заключается в том, чтобы автоматически получить результирующий статус требования (риска и др.) на основании статусов связанных с ним элементов. Например, получить статус тестирования требования на основании статусов связанных с ним тестов.

Рассмотрим настройки на примере категории Test Status,  которая имеет значения Pass, Fail, TBD. 

Для удобства назначим красный цвет статусу Fail и зеленый статусу Pass:

1 2

Назначьте эту категорию двум типам элементов: SYS REQ (системные требования) и TEST (тесты) и представьте небольшой набор элементов, для которых Test Status для каждого требования определяется на основе значений Test Status  связанных тестов:
3

так, что Test Status = Pass  тогда и только тогда, когда Test Status  для всех связанных тестов тоже равен Pass, а  если хоть один из тестов не прошел, т.е. его статус = Fail, то и это системное требование будет считаться не выполненным и его статус должен быть равен Fail.

Конечно, Test Status для системного требования может быть установлен вручную в соответствии с этими правилами. Но в этой статье речь именно о том, как сделать, чтобы статус устанавливался автоматически.

Это можно сделать двумя способами:

1. Используя для системного требования атрибут типа калькуляция. Эта калькуляция может быть также связана с каким-нибудь атрибутом типа категория.

2. Используя группы правил  для системного требования.

Далее посмотрим, как это настроить.

2. Основная идея

Основная идея реализации этой задачи  в том, чтобы конвертировать значения Pass или Fail в числа: 0 для Fail и 1 для Pass. Тогда, значение для системного требования будет просто вычисляться как минимальное значение для всех связанных с ним тестов.

Чтобы это сделать, мы определим новую категорию типа «целое» и назовем ее Test Status Value (или любое другое имя, которое вы хотите) и затем назначим ее для типа элементов TEST:

4 5

Затем определим группу правил, которая устанавливает значения 0 или 1 для Test Status Value, в зависимости от значения категории Test Status.

Cradle позволяет определить любое число групп правил для каждого типа элементов. Каждая группа может включать серию правил для одного атрибута в форме:

if <выражение> <оператор> тогда установить <значение> для <атрибута>

Таким образом, если вам необходимо определить значения для N атрибутов, то понадобится определить N групп правил, каждая группа для одного атрибута.

В рамках группы правил может быть любое количество правил. Они применяются сверху вниз, в порядке отображения. Как только подходящей правило успешно применено, следующие в этой группе уже не будут применяться.

Для этого случая нам необходимо два правила:

  • if значение категории Test Status = «Fail» тогда установить 0 в Test Result Value
  • if значение категории Test Status = «Pass» тогда установить 1 в Test Result Value

Группы правил настраиваются в Установках проекта -> Определения элементов -> для выбранного типа элементов (Rules set/Группы правил):

7

Определим группу правил, которая называется Set Result Value (или как вам захочется), которая устанавливает 0 или 1 в значение категории Test Status Value, так как мы определили ранее.

8

Вы можете вывести атрибут Test Status Value в любые представления:

9

После того, как вы это сделаете, легко увидеть, что при изменении Test Status будет автоматически изменяться Test Status Value.

Хотя здесь мы иллюстрируем возможности вывести Test Status Value в представление, мы рекомендуем скрыть этот атрибут для конечных пользователей, т.к. он играет только техническую роль.

3. Используйте калькуляцию, чтобы показать результат в системных требованиях

Тепер, когда все элементы типа TEST имеют категорию Test Status Value, которая равна 0 или 1, вы можете использовать механизм калькуляций, чтобы вычислить минимальное значение этой категории для всех тестов, связанных с системным требованием.

В Установках проекта определите калькуляцию для типа элементов SYS REQ, нажав кнопку Калькуляции (Calculations):

10

И создайте калькуляцию с именем Overall Result Calc (или любым другим):

11

Чтобы использовать подсветку в представлениях используйте цветовые привязки:
12

Теперь эта калькуляция может быть включена в представления для отображения системных требований:

13

в которых привязка по цвету используется в качестве фона:

14

Далее можно использовать замену на базе регулярных выражений, чтобы отображался только цвет, без цифры:
15

результат:
16

Результирующее представление, которое показывает значение Overall Result Calc для системного требования, вычисленное на основе статусов тестов:
17

4. Используйте группу правил, чтобы установить значение атрибута  Результат для системного требования

Теперь, когда все элементы типа TEST имеют атрибут Test Status Value со значением 0 или 1, вы можете создать группу правил, которая будет определять значение атрибута Test Status для системного требования на основании минимального значения Test Status Value связанных с ним тестов.

В Установках проекта определите группу правил для SYS REQ:

18

Создайте группу правил с именем Set Result From Tests (или любым иным). В результате должно получиться следующее:
19

Чтобы это получить, нужно выполнить несколько шагов:
1. Выберите Тип результата (Result Type) = определенный пользователем (User Defined), т.е. строка. Результат не будет ни integer, ни real, ни date.

2. После этого выбора вы сможете назначить результат группы правил в некоторую категорию, значения которой могут быть строкой. Таким образом в поле Категории (Categories) выберите Test Status. В этом поле отображаются только те категории, которые соотвествуют типу результата, который вы выбрали.

3. Далее определите правила. Каждое правило находит минимальное значение Test Status Value  для всех связанных системных требований и если минимум <1, то устанавливается строка Fail. Если минимум >0, то устанавливается строка Pass.

20

Это выражение создано за счет использования Aggregation of Linked Items’ Attributes, напримеру так:
21

Результирующий эффект применения этой группы правил — установка значения в категорию Test Status для системного требования. Как и для любой другой категории, значение этой категории можно отобразить в представлении:

23

в котором привязка к цвету используется для подсветки фона:
24

Ниже трассировочное представление, которое показывает системные требования и тесты, а также все настроенные атрибуты (включая те, которые были настроены в предыдущем разделе:

25

5. Рекомендации

Применение атрибутов-калькуляций более выигрышно тем, что их значение обновляется вне зависимости от отображения системного требования. Т.е. если статус какого-то связанного теста изменен, то тогда при обновлении представления будет обновлен и статус системного требования.

И хотя результаты калькуляций не хранятся постоянно как значения атрибутов, они могут быть использованы в запросах:

26

Однако при этом системе понадобится пересчитать каждую калькуляцию для каждого элемента при выполнении запроса. Поскольку в данном случае калькуляция вычисляется на основе анализа связанных тестов, это может занять некоторое время.

Эта потенциальная проблема может быть решена сохранением значения калькулации в целочисленной категории:

27

Альтернативный способ — использовать группы правил. Группа правил применяется только тогда, когда элемент сохраняется. Таким образом, в этом примере, если статус связанного теста изменен, то статус системного требования будет изменен только при его сохранении.

Поэтому наша рекомендация — использовать калькуляции.

6. Пример проекта

Скачать файл экспорта, с примером, который описан в этой статье.

Чтобы импортировать данные:

  • войдите в проект как MANAGER,
  • вызовите команду Импорт,
  • установите следующие настройки импорта:
    Тип данных: все
    Перезапись: вкл
    Владелец: как файле
    Из файла: выберите скачанный файл экспорта
  • После импорта закройте все диалоговые окна и выйдите из Workbench

Чтобы посмотреть установленный пример:

  • зайдите в проект под пользователем user/user
  • запустите запрос SYS REQ-all и выберите представление SYS REQ-TEST

 

 

Добавить комментарий