Следующие примеры выражений фильтра и тестовых выражений были взяты из набора правил для блок-схемы, входящего в шаблоны простых блок-схем, функциональных блок-схем, схем «Шесть сигм» Visio 2010.
Пример 1. Требуется правило, проверяющее, что оба конца всех соединителей присоединены к фигурам.
- В качестве целевого типа выберите фигуры, Visio.VisRuleTargets.visRuleTargetShape.
- Чтобы ограничить поиск фигурами соединителей, задайте следующее выражение фильтра:
ROLE()=1.
- Чтобы проверить, что присоединены оба конца соединителей, задайте следующее тестовое выражение: AND(AGGCOUNT(GLUEDSHAPES(4)) = 1, AGGCOUNT(GLUEDSHAPES(5)) = 1).
В этом примере выражение фильтра используется для исключения всех фигур, не являющихся соединителями. Тестовое выражение проверяет наличие одной двумерной фигуры, присоединенной к точке входящего соединения, и одной двумерной фигуры, присоединенной к точке исходящего соединения.
Пример 2. Требуется правило, проверяющее, что на любой странице хотя бы с одной дорожкой все фигуры блок-схемы принадлежат этой дорожке.
- В качестве целевого типа выберите страницы, Visio.VisRuleTargets.visRuleTargetPage.
- Чтобы ограничить поиск на страницах страницами с дорожками, задайте следующее выражение фильтра: AGGCOUNT(FILTERSET(SHAPESONPAGE(),"HASCATEGORY(""Swimlane"")"))>0.
- Чтобы гарантировать принадлежность всех фигур блок-схемы к дорожке, задайте следующее тестовое выражение: AGGCOUNT(FILTERSET(SHAPESONPAGE(),
"AND(OR(HASCATEGORY(""Flowchart""),ONLAYER(""Flowchart"")),
AGGCOUNT(FILTERSET(PARENTCONTAINERS(),""HASCATEGORY(""""Swimlane"""")""))=0)
"))=0.
В этом примере выражение фильтра используется для исключения всех страниц без фигуры дорожки. Для каждой страницы в документе выражение фильтра из всех фигур на странице исключает только фигуры категории «Дорожка». В данном примере на нужных страницах есть хотя бы одна фигура, соответствующая этому условию.
Тестовое выражение проверяет принадлежность всех фигур дорожке. Фигура блок-схемы определена как фигура, которая принадлежит уровню блок-схемы либо имеет категорию «Блок-схема». Тестовое выражение просматривает все фигуры на странице и «задает» каждой фигуре следующие два вопроса:
- Является ли фигура фигурой блок-схемы?
- Есть ли у фигуры родительские контейнеры, являющиеся дорожками?
Затем выражение суммирует количество фигур, давших положительные ответы на оба вопроса. Если сумма отлична от нуля, найдена как минимум одна фигура блок-схемы, находящаяся вне дорожки.
Примечание. Список категорий, к которым принадлежит фигура, отображается в ячейке User.msvShapeCategories в ShapeSheet для фигуры. Можно определить несколько категорий для фигуры, разделив их точкой с запятой. По умолчанию функциональные блок-схемы (CFF) принадлежат к категории «Контейнер CFF», а отдельные дорожки в CFF принадлежат категории «Дорожка» (Swimlane).