Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Azure Logic Apps (стандартная версия)
В этом руководстве показано, как тестировать наборы правил с помощью Microsoft Rules Composer и содержать выходные примеры для тестирования правил.
Почему наборы правил тестируются постепенно?
При создании набора правил для интеграции бизнес-логики с рабочими процессами приложения логики уровня "Стандартный" проверьте набор правил постепенно или по крайней мере перед использованием правил в приложении. Таким образом, вы можете подтвердить, что каждое правило работает так, как вы ожидаете, или найти и устранить проблемы раньше, когда правила менее сложны и проще устранять неполадки.
Если вы ждете, чтобы протестировать все свои правила сразу, особенно когда они длинные или сложные, вы можете столкнуться с большим количеством ошибок, чем ожидалось, что требует больше времени для их устранения и затрудняет их отладку.
Предварительные требования
Скачайте и установите Microsoft Rules Composer.
XML-файл, содержащий правила, которыми вы хотите управлять, и факты, которые вы хотите проверить.
Чтобы добавить факты, укажите их значения в XML-файлах, на которые вы ссылаетесь в окне выбора фактов , которое открывается после выбора набора правил теста в следующих шагах. Может потребоваться создать создателя фактов, чтобы добавить факты .NET. Более подробную информацию см. в разделе Создание и использование механизмов создания и извлечения фактов.
Проверка версии набора правил
Откройте microsoft Rules Composer. В окне обозревателя правил выберите версию набора правил, которую требуется проверить, открыв окно сведений о версии.
В контекстном меню версии набора правил выберите Тестировать набор правил.
В появившемся поле "Выбор фактов" в верхнем окне отображаются типы фактов, на которые ссылается правила набора правил.
Чтобы добавить экземпляр фактов в разделе XML-документы или классы .NET, выберите соответствующий тип фактов, а затем нажмите кнопку "Добавить экземпляр".
Примечание.
Если вы передаете производный класс в правила, но правила записаны непосредственно для членов базового класса, вместо этого передается экземпляр базового класса, и условия оцениваются относительно экземпляра базового класса.
Чтобы удалить экземпляр фактов, выберите соответствующий тип фактов и нажмите кнопку "Удалить экземпляр".
Чтобы добавить создателя фактов, который вы создали, в окне Fact Creators нажмите кнопку "Добавить".
Когда вы будете готовы, нажмите кнопку "Тест".
В окне вывода показан вывод тестовой трассировки набора правил.
Откройте контекстное меню для окна вывода теста и выберите вариант сохранения, очистки, выбора или копирования выходного текста, чтобы просмотреть результаты.
В следующей таблице описываются команды окна вывода, которые можно использовать для работы с выходным текстом:
Задача Команда ярлыка Снимите весь текст из окна вывода. Очистить все Скопируйте выделенный текст в окне вывода в буфер обмена. Копировать Выделите весь текст в окне вывода. Выделить все Сохраните текст, содержащийся в окне вывода, в указанный файл. Сохранение в файл
Выходные данные теста отслеживания набора правил
В этом разделе описываются сведения об отслеживании и действия, включенные в трассировку при тестировании набора правил с помощью Microsoft Rules Composer. Выходные данные отслеживания могут включать следующие типы инструкций:
- Действие фактов
- Оценивание условия
- Обновление повестки дня
- Правило, запущено
Действие фактов
Это действие указывает на изменения фактов в рабочей памяти двигателя. Приведён следующий пример записи фактического действия:
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872
В следующей таблице описаны сведения в этой записи:
| Элемент | Описание |
|---|---|
| Идентификатор экземпляра обработчика правил | Уникальный идентификатор экземпляра RuleEngine , который предоставляет среду выполнения для запуска правила. |
| Имя набора правил | Имя набора правил. |
| Операция | Следующие типы операций могут встречаться в действии факта: - Утверждение: факт добавляется в рабочую память. Примечание. Если тип для утверждения факта не соответствует ни одному из типов, используемых в наборе правил, функция Assert отображает ошибку "Assert – Fact Unrecognized". - Обновление: правило обновляет факт, который затем необходимо повторно включить в подсистему повторной оценки на основе новых данных и состояния. - Отзыв: факт удаляется из рабочей памяти. |
| Тип объекта | Тип факта для определенного действия: — TypedXmlDocument Утверждения отображаются как для родительских, так и для дочерних экземпляров TypedXmlDocument. |
| Идентификатор экземпляра объекта | Уникальный идентификатор экземпляра для ссылки на факт. |
Оценивание условия
Это действие указывает результат оценки отдельных предикатов. В следующем примере показана примерная запись оценки условия:
CONDITION EVALUATION TEST (MATCH) 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:Root.EmploymentType/TimeInMonths >= 18
Left Operand Value: 31
Right Operand Value: 18
Test Result: True
В следующей таблице описаны сведения в этой записи:
| Элемент | Описание |
|---|---|
| Выражение теста | Простое унарное или двоичное выражение в правиле. |
| Значение левого операнда | Значение термина слева от выражения. |
| Значение правого операнда | Значение термина на правой стороне выражения. |
| Результат теста | Результат оценки, который имеет значение True или False. |
Обновление повестки дня
Это действие указывает правила, которые добавляются в повестку дня обработчика правил для последующего выполнения. В следующем примере показан пример записи обновления повестки дня:
AGENDA UPDATE 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: Employment Status Rule
Conflict Resolution Criteria: 0
В следующей таблице описаны сведения в этой записи:
| Элемент | Описание |
|---|---|
| Операция | Операция, которая добавляет или удаляет правила из повестки дня. |
| Имя правила | Имя правила, которое добавляется или удаляется из повестки дня. |
| Критерии разрешения конфликтов | Приоритет правила, который определяет относительный порядок выполнения действий, и где действия с более высоким приоритетом выполняются первыми. |
Правило, запущено
Это действие указывает на выполнение действий правила. Следующий пример показывает запись, созданную срабатыванием правила:
RULE FIRED 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Rule Name: Residency Status Rule
Conflict Resolution Criteria: 10
Функция обновления
В этом примере показан пример правила InventoryCheck и правило Ship в примере набора правил с именем Order. При первом проверке правила условие, связанное с правилом Ship, оценивается как False. Однако, когда правило "InventoryCheck" срабатывает,
Примечание.
Если правила написаны неправильно, переадресация с функцией Update может привести к бесконечному циклу. В этом случае при тестировании набора правил в Microsoft Rules Composer вы получите сообщение об ошибке с текстом "Обработчик правил обнаружил цикл выполнения".
Правило InventoryCheck
IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)
Правило доставки
IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder
Выходные данные
RULE ENGINE TRACE for RULESET: Order 3/17/2023 10:31:17 AM
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: null
Right Operand Value: True
Test Result: False
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Inventory
Object Instance Identifier: 446
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Inventory.AllocateInventory == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Update
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: Ship
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: Ship
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Order
Object Instance Identifier: 448
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Inventory
Object Instance Identifier: 446
Примеры выходных данных трассировки набора правил
В этом разделе приведены примеры, показывающие выходные данные набора правил для различных типов фактов.
Тип фактов класса .NET
В этом примере используется пример правила с именем TestRule1 в наборе правил с именем LoanProcessing:
IF test.get_ID > 0
THEN <do something>
Выходные данные
RULE ENGINE TRACE for RULESET: LoanProcessing 3/16/2023 9:50:28 AM
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872
CONDITION EVALUATION TEST (MATCH) 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Test Expression: MyTest.test.get_ID > 0
Left Operand Value: 100
Right Operand Value: 0
Test Result: True
AGENDA UPDATE 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: MyTest.test
Object Instance Identifier: 872
Тип фактов TypedXmlDocument
В этом примере показано, что сущность TypedXmlDocument с типом документа с именем Microsoft.Samples.BizTalk.LoansProcessor.Case утверждается в обработчике правил. На основании заданного в правиле значения XPath-селектора, модуль создает и проверяет дочернюю сущность TypedXmlDocument с типом Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, основываясь на типе документа и строке селектора. Эта дочерняя сущность TypedXmlDocument оценивается как True в условии, что приводит к обновлению повестки дня и срабатыванию правил. Затем удаляются родительские и дочерние сущности TypedXmlDocument .
В этом примере показан пример правила с именем TestRule1 в наборе правил с именем LoanProcessing:
IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>
Выходные данные
RULE ENGINE TRACE for RULESET: LoanProcessing 3/17/2023 9:23:05 AM
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853
CONDITION EVALUATION TEST (MATCH) 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
Left Operand Value: 6
Right Operand Value: 4
Test Result: True
AGENDA UPDATE 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853