Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Azure Logic Apps (Standard)
Ez az útmutató bemutatja, hogyan tesztelheti a szabálykészleteket a Microsoft Rules Composer használatával, és példákat tartalmaz a szabályteszteléshez.
Miért érdemes a szabálykészleteket növekményesen tesztelni?
Amikor létrehoz egy szabálykészletet, amely integrálja az üzleti logikát a Standard logikai alkalmazás munkafolyamataival, tesztelje a szabálykészletet növekményesen, vagy legalábbis az alkalmazás szabályainak használata előtt. Így ellenőrizheti, hogy az egyes szabályok a várt módon működnek-e, vagy hamarabb megkeresheti és kijavíthatja a problémákat, ha a szabályok kevésbé összetettek és könnyebben elháríthatók.
Ha az összes szabályt egyszerre teszteli, különösen akkor, ha a szabályok hosszúak vagy összetettek, a vártnál több hiba jelenhet meg, ami hosszabb időt vesz igénybe a megoldáshoz, és nehezebbnek bizonyul a hibakeresés.
Előfeltételek
Töltse le és telepítse a Microsoft Rules Composert.
A használni kívánt szabálykészletet és a tesztelni kívánt tényeket tartalmazó XML-fájl.
Tények hozzáadásához adja meg a hivatkozott XML-fájlok értékeit a Tények kiválasztása ablakból, amely azután nyílik meg, hogy az alábbi lépésekben a Szabálykészlet tesztelése lehetőséget választja. Érdemes lehet létrehozni egy ténykészítőt a .NET-tények hozzáadásához. További információ: Ténykészítők és lekérdezők létrehozása.
Szabálykészlet verziójának tesztelése
Nyissa meg a Microsoft Rules Composert. A RuleSet Explorer ablakban válassza ki a tesztelni kívánt szabálykészlet-verziót, amely megnyitja a verzióinformációs ablakot.
A szabálykészlet verziójának helyi menüjében válassza a Szabálykészlet tesztelése lehetőséget.
A megjelenő Tények kijelölése mezőben a legfelső ablak a szabálykészlet szabályai által hivatkozott ténytípusokat mutatja.
Ténypéldány hozzáadásához az XML-dokumentumok vagy a .NET-osztályok területen válassza ki a megfelelő ténytípust, majd válassza a Példány hozzáadása lehetőséget.
Megjegyzés
Ha származtatott osztályt állít be egy szabályba, de a szabályok közvetlenül az alaposztály tagjaira vannak írva, a rendszer ehelyett egy alaposztálypéldányt érvényesít, és a feltételek kiértékelése az alaposztálypéldányon történik.
Egy ténypéldány eltávolításához válassza ki a megfelelő ténytípust, majd válassza a Példány eltávolítása lehetőséget.
Az Ön által létrehozott ténykészítő hozzáadásához a Ténykészítők ablakban válassza a Hozzáadás lehetőséget.
Ha elkészült, válassza a Tesztelés lehetőséget.
A Kimenet ablakban látható a szabálykészlet-teszt nyomkövetési kimenete.
Nyissa meg a tesztkimeneti ablak helyi menüjét, és válasszon egy lehetőséget a kimeneti szöveg mentéséhez, törléséhez, kijelöléséhez vagy másolásához, hogy áttekinthesse az eredményeket.
Az alábbi táblázat a Kimeneti ablak parancsokat ismerteti, amelyekkel a kimeneti szöveggel dolgozhat:
Feladatok Billentyűparancs Törölje az összes szöveget a Kimenet ablakból. Az összes törlése Másolja a kijelölt szöveget a Kimeneti ablakban a vágólapra. Másolás Jelölje ki az összes szöveget a Kimenet ablakban. Az összes kijelölése Mentse a Kimeneti ablakban található szöveget egy megadott fájlba. Mentés fájlba
Szabálykészlet-teszt nyomkövetési kimenete
Ez a szakasz azokat a nyomkövetési információkat és tevékenységeket ismerteti, amelyek a nyomkövetéshez tartoznak, amikor a Microsoft Rules Composer használatával tesztel egy szabálykészletet. A nyomkövetési kimenet a következő utasítástípusokat tartalmazhatja:
- Ténytevékenység
- Feltétel kiértékelése
- Napirend frissítése
- Szabály lefutott
Tényalapú tevékenység
Ez a tevékenység a motor munkamemória adatainak változásait jelzi. Az alábbi példa egy ténytevékenység-minta bejegyzést mutat be:
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
Az alábbi táblázat a bejegyzésben szereplő információkat ismerteti:
| Elem | Leírás |
|---|---|
| Szabálymotor példányazonosítója | A RuleEngine-példány egyedi azonosítója, amely a szabályvégrehajtás végrehajtási környezetét biztosítja. |
| Szabálykészlet neve | A szabálykészlet neve. |
| Művelet | Ténytevékenységekben a következő művelettípusok fordulhatnak elő: - Állítás: Egy tény kerül hozzáadásra a munkamemóriához. Megjegyzés: Ha egy helyesen megadott tény típusa nem egyezik meg a szabálykészletben használt típusokkal, az Assert függvény az "Assert – Fact Unregnized" hibaüzenetet jeleníti meg. - Frissítés: Egy szabály frissít egy tényt, amelyet aztán újra be kell helyezni a motorba az új adatok és állapot alapján, hogy újraértékelés történjen. - Visszahúzás: A rendszer eltávolít egy tényt a munkamemóriából. |
| Objektumtípus | Egy adott tevékenység ténytípusa: - TypedXmlDocument Az állítások a szülő- és gyermek TypedXmlDocument-példányok esetében is megjelennek. |
| Objektumpéldány azonosítója | A tényhivatkozás egyedi példányazonosítója. |
Feltétel kiértékelése
Ez a tevékenység az egyes predikátumok értékelésének eredményét jelzi. Az alábbi példa egy mintafeltétel-kiértékelési bejegyzést mutat be:
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
Az alábbi táblázat a bejegyzésben szereplő információkat ismerteti:
| Elem | Leírás |
|---|---|
| Kifejezés tesztelése | Egy szabály egyszerű unáris vagy bináris kifejezése. |
| Bal operandus értéke | A kifejezés bal oldalán lévő tag értéke. |
| Jobb oldali operandus értéke | A kifejezés jobb oldalán lévő tag értéke. |
| Teszteredmény | A kiértékelés eredménye, amely igaz vagy hamis. |
Napirend frissítése
Ez a tevékenység azokat a szabályokat jelzi, amelyeket a szabálymotor ütemtervéhez adnak hozzá a későbbi végrehajtás érdekében. Az alábbi példa egy napirendfrissítési minta bejegyzést mutat be:
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
Az alábbi táblázat a bejegyzésben szereplő információkat ismerteti:
| Elem | Leírás |
|---|---|
| Művelet | Az a művelet, amely szabályokat ad hozzá vagy távolít el a napirendből. |
| Szabály neve | A napirendhez hozzáadott vagy eltávolított szabály neve. |
| Ütközésfeloldási feltételek | Egy szabály prioritása, amely meghatározza a műveletek végrehajtásának relatív sorrendjét, és azt, hogy hol hajtják végre először a magasabb prioritású műveleteket. |
Szabály lefutott
Ez a tevékenység egy szabály műveleteinek végrehajtását jelzi. Az alábbi példa egy szabály által aktivált bejegyzést mutat be:
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
Frissítési függvény
Ez a példa egy "InventoryCheck" mintaszabályt és egy "Szállítási" szabályt mutat be egy "Order" nevű mintaszabályzatban. A szabály első ellenőrzésekor a "Szállítási" szabályhoz társított feltétel hamis értéket ad vissza. Amikor azonban az "InventoryCheck" szabály kigyullad, a rendelés InventoryAvailable mezője megváltozik, és a Rendszer kiadja a Frissítés parancsot a motornak a "Rendelés objektum" számára, ami a "Szállítási" szabály újraértékelését okozza. Ezúttal a feltétel „Igaz” értékű lesz, és a "Ship" szabály aktiválódik.
Megjegyzés
Ha a szabályok helytelenül vannak megírva, a frissítési függvénnyel való továbbítás végtelen hurkot okozhat. Ebben az esetben, amikor teszteli a szabálykészletet a Microsoft Rules Composerben, hibaüzenet jelenik meg a következő szöveggel : "A szabálymotor végrehajtási ciklust észlelt".
InventoryCheck-szabály
IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)
Szállítási szabály
IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder
Kimenet
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
Szabálykészlet-teszt nyomkövetési kimeneti példái
Ez a szakasz olyan példákat tartalmaz, amelyek különböző típusú tények szabálykészlettesztjének kimenetét mutatják be.
.NET-osztály ténytípusa
Ez a példa egy "LoanProcessing" nevű szabálykészlet "TestRule1" nevű mintaszabálya:
IF test.get_ID > 0
THEN <do something>
Kimenet
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 ténytípus
Ez a példa egy Microsoft.Samples.BizTalk.LoansProcessor.Case nevű dokumentumtípusú TypedXmlDocument entitást állít be a szabálymotorba. A szabályban meghatározott XPath Selector érték alapján a motor létrehoz és érvényesít egy gyermek TypedXmlDocument entitást a Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType típusával, a dokumentumtípus és a választó string alapján. Ez a child TypedXmlDocument entitás igaz értéket ad a feltételben, ami programfrissítést és szabályvégrehajtást okoz. Ezután a rendszer visszavonja a szülő- és gyermek TypedXmlDocument entitásokat.
Ez a példa a "TestRule1" nevű mintaszabályt mutatja be egy "LoanProcessing" nevű szabálykészletben:
IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>
Kimenet
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