Создание настраиваемых правил проверки: Примеры выражений фильтра и тестовых выражений


Следующие примеры выражений фильтра и тестовых выражений были взяты из набора правил для блок-схемы, входящего в шаблоны простых блок-схем, функциональных блок-схем, схем «Шесть сигм» Visio 2010.

Пример 1. Требуется правило, проверяющее, что оба конца всех соединителей присоединены к фигурам.

  1. В качестве целевого типа выберите фигуры, Visio.VisRuleTargets.visRuleTargetShape.
  2. Чтобы ограничить поиск фигурами соединителей, задайте следующее выражение фильтра:

ROLE()=1.

  1. Чтобы проверить, что присоединены оба конца соединителей, задайте следующее тестовое выражение: AND(AGGCOUNT(GLUEDSHAPES(4)) = 1, AGGCOUNT(GLUEDSHAPES(5)) = 1).

 

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

Пример 2. Требуется правило, проверяющее, что на любой странице хотя бы с одной дорожкой все фигуры блок-схемы принадлежат этой дорожке.

  1. В качестве целевого типа выберите страницы, Visio.VisRuleTargets.visRuleTargetPage.
  2. Чтобы ограничить поиск на страницах страницами с дорожками, задайте следующее выражение фильтра: AGGCOUNT(FILTERSET(SHAPESONPAGE(),"HASCATEGORY(""Swimlane"")"))>0.
  3. Чтобы гарантировать принадлежность всех фигур блок-схемы к дорожке, задайте следующее тестовое выражение: AGGCOUNT(FILTERSET(SHAPESONPAGE(),
    "AND(OR(HASCATEGORY(""Flowchart""),ONLAYER(""Flowchart"")),
    AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Swimlane"""")""))=0)
    "))=0.

В этом примере выражение фильтра используется для исключения всех страниц без фигуры дорожки. Для каждой страницы в документе выражение фильтра из всех фигур на странице исключает только фигуры категории «Дорожка». В данном примере на нужных страницах есть хотя бы одна фигура, соответствующая этому условию.

Тестовое выражение проверяет принадлежность всех фигур дорожке. Фигура блок-схемы определена как фигура, которая принадлежит уровню блок-схемы либо имеет категорию «Блок-схема». Тестовое выражение просматривает все фигуры на странице и «задает» каждой фигуре следующие два вопроса:

  1. Является ли фигура фигурой блок-схемы?
  2. Есть ли у фигуры родительские контейнеры, являющиеся дорожками?

Затем выражение суммирует количество фигур, давших положительные ответы на оба вопроса. Если сумма отлична от нуля, найдена как минимум одна фигура блок-схемы, находящаяся вне дорожки.

Примечание. Список категорий, к которым принадлежит фигура, отображается в ячейке User.msvShapeCategories в ShapeSheet для фигуры. Можно определить несколько категорий для фигуры, разделив их точкой с запятой. По умолчанию функциональные блок-схемы (CFF) принадлежат к категории «Контейнер CFF», а отдельные дорожки в CFF принадлежат категории «Дорожка» (Swimlane).