Provádění pokročilých úloh na sadách pravidel pomocí nástroje Microsoft Rules Composer (Preview)
Platí pro: Azure Logic Apps (Standard)
Důležité
Tato funkce je ve verzi Preview a podléhá dodatečným podmínkám použití pro microsoft Azure Preview.
Tato příručka popisuje pokročilejší operace, které můžete provádět se sadami pravidel v nástroji Microsoft Rules Composer.
Požadavky
Stáhněte a nainstalujte nástroj Microsoft Rules Composer.
Soubor XML, který obsahuje sadu pravidel, na které chcete pracovat.
Kopírování verze sady pravidel
Můžete vytvořit kopii existující verze sady pravidel, ale s jiným číslem verze.
Otevřete nástroj Microsoft Rules Composer. V okně Průzkumníka sady pravidel otevřete místní nabídku sady pravidel a vyberte Kopírovat.
Otevřete místní nabídku sady pravidel a vyberte Vložit verzi sady pravidel.
Nástroj Microsoft Rules Composer vytvoří novou verzi sady pravidel se stejnými prvky jako zkopírovaná verze, ale s jiným číslem.
Poznámka:
Pokud aktualizujete sestavení .NET použité k poskytnutí faktů sadě pravidel, nezapomeňte aktualizovat odkazy sady pravidel na toto sestavení. Další informace naleznete v tématu Aktualizace odkazů na sestavení .NET.
Vytvoření prázdné verze sady pravidel
Po přidání pravidel do verze sady pravidel můžete vytvořit novou prázdnou verzi sady pravidel s jiným číslem a uložit tuto verzi, abyste mohli pracovat později.
Otevřete nástroj Microsoft Rules Composer. V místní nabídce sady pravidel vyberte Přidat novou verzi.
Nástroj Microsoft Rules Composer vytvoří novou prázdnou verzi sady pravidel s jiným číslem.
Otevřete místní nabídku nové sady pravidel a vyberte Uložit.
Teď můžete zkopírovat pravidla z jiných verzí sady pravidel a vložit je do nové verze.
Předání typů faktů do sady pravidel
I když nelze přímo zadat návratový typ pro sadu pravidel, můžete předat některé z následujících typů faktů sadě pravidel, změnit hodnotu faktu na true
nebo false
a potom zkontrolovat hodnotu vlastnosti nebo elementu nebo sloupce po spuštění sady pravidel:
- Objekt .NET, který má vlastnost s typem
Boolean
- Dokument XML, který má element s typem
Boolean
Nastavení načtení faktů pro sadu pravidel
Při použití načítáče faktů se sadou pravidel můžete ukládat fakta, která se často nemění, takže před prvním spuštěním hostitelské aplikace. Díky tomu můžete tato fakta načíst z úložiště, jednou je prezentovat modulu pravidel pro ukládání do mezipaměti a znovu je použít v několika cyklech spuštění. Další informace najdete v tématu Vytváření tvůrců faktů a retrieverů.
K sadě pravidel můžete přidružit načítání faktů dvěma způsoby:
Ručně vyberte načítač faktů pro verzi sady pravidel v nástroji Microsoft Rules Composer.
Programově pomocí objektu
RuleSetExecutionConfiguration
.
Poznámka:
K verzi sady pravidel můžete přidružit pouze jednu implementaci načtení faktů.
Ruční výběr načítáče faktů pro sadu pravidel
Otevřete nástroj Microsoft Rules Composer. V Průzkumníku sady pravidel vyberte verzi sady pravidel, kterou chcete přidružit k načtení faktů.
V okně Vlastnosti vyberte řádek vlastnosti FactRetriever a pak vyberte tlačítko se třemi tečky (...) a vyhledejte a vyberte existující objekt načítače faktů.
Poznámka:
Tlačítko se třemi tečky (...) se nezobrazí, dokud v okně Vlastnosti nevyberete řádek FactRetriever.
Volání podřízené sady pravidel z nadřazené sady pravidel
Pro tento úkol použijte jednu z následujících metod:
Volejte metodu
Ruleset.Execute
přímo z nadřazené sady pravidel.Z nadřazené sady pravidel volejte metodu pomocné součásti .NET, která zabalí metodu
Ruleset.Execute
.Druhou metodou můžete do
Ruleset.Execute
metody přidat kód předběžného zpracování a následného zpracování. V rámci této metody obálky můžete například vytvořit všechna fakta požadovaná z podřízené sady pravidel. Následující části obsahují příklad pro každou metodu.
Volání metody Ruleset.Execute přímo z nadřazené sady pravidel
Tato část obsahuje základní kroky pro volání podřízené sady pravidel přímo z nadřazené sady pravidel pomocí Ruleset.Execute
metody. Následující postup ukazuje kroky pro přidání Ruleset.Execute
metody jako akce do nadřazené sady pravidel, která předá dokument XML jako fakt podřízené sadě pravidel.
Poznámka:
V tomto ukázkovém scénáři se dokument XML odešle jako fakt nadřazené sadě pravidel. Tento dokument se předává jako fakt podřízené sadě pravidel. Můžete však volat metodu .NET, která místo toho vytvoří fakta pro podřízenou sadu pravidel.
Otevřete nástroj Microsoft Rules Composer. V okně Průzkumník faktů vyberte kartu Třídy .NET.
Otevřete místní nabídku pro sestavení .NET a vyberte Procházet.
V seznamu sestavení .NET vyberte Microsoft.RuleEngine a pak vyberte OK.
Rozbalte sadu pravidel a přetáhněte buď Execute(Object fakta) nebo Execute(Object fakta, IRuleSetTrackingInterceptor trackingInterceptor) do podokna THEN .
Vyberte uzel Schémata XML, otevřete místní nabídku schémat a vyberte Procházet.
Vyberte schéma dokumentu XML, který chcete předat jako fakt, a pak vyberte Otevřít.
Chcete-li předat dokument XML, který je předán nadřazené sadě pravidel jako fakt podřízené sadě pravidel, přetáhněte <schema-name.xsd> do prvního argumentu v Ruleset.Execute metoda.
Pokud jako druhý argument použijete metodu Execute , která jako druhý argument neprovede IRuleSetTrackingInterceptor , přeskočte následující kroky.
Vyberte kartu Třídy .NET a přetáhněte DebugTrackingInterceptor v Microsoft.RuleEngine do druhého argumentu Ruleset.Execute metoda.
Poznámka:
Pokud provedete tuto akci, klient musí předat instanci DebugTrackingInterceptor třídy jako fakt nadřazené sadě pravidel, která pak předá instanci jako fakt podřízené sadě pravidel. Místo toho můžete přetáhnout konstruktor DebugTrackingInterceptor třídy tak, aby instance byla automaticky vytvořena za vás.
Úprava klientské aplikace, která volá nadřazenou sadu pravidel
Klient, který vyvolá nadřazenou sadu pravidel, vytvoří instanci třídy Ruleset s podřízeným názvem sady pravidel jako parametr a předá instanci jako fakt nadřazené sadě pravidel spolu s dalšími fakty. Následující ukázkový kód znázorňuje tuto akci:
DebugTrackingInterceptor dti = new DebugTrackingInterceptor("RulesetTracking.txt");
Ruleset Ruleset = new Ruleset("ParentRuleset");
object[] facts = new object[3];
facts[0] = txd;
facts[1] = new Ruleset("ChildRuleset");
facts[2] = new DebugTrackingInterceptor("RulesetTracking2.txt");
Ruleset.Execute(facts, dti);
Ruleset.Dispose();
Pokud je klient orchestrace BizTalk, možná budete muset vložit kód do tvaru výrazu k vytvoření faktů a pak předat fakta jako parametry do obrazce Pravidla volání.
Volání metody obálky .NET z nadřazené sady pravidel
Tato část obsahuje základní kroky pro vyvolání metody .NET, která zabalí volání metody Ruleset.Execute z nadřazené sady pravidel.
Vytvoření třídy .NET nástroje
Vytvořte projekt knihovny tříd .NET. Přidejte do projektu třídu.
Přidejte statickou metodu, která volá metodu
Ruleset.Execute
pro vyvolání sady pravidel, jejíž název se předává jako parametr, například jak ukazuje následující ukázkový kód:public static void Execute(string RulesetName, TypedXmlDocument txd) { DebugTrackingInterceptor dti = new DebugTrackingInterceptor("RulesetTracking.txt"); Ruleset Ruleset = new Ruleset("ParentRuleset"); object[] facts = new object[3]; facts[0] = txd; facts[1] = new Ruleset("ChildRuleset"); facts[2] = new DebugTrackingInterceptor("RulesetTracking2.txt"); Ruleset.Execute(facts, dti); Ruleset.Dispose(); }
Klient vyvolá nadřazenou sadu pravidel a nadřazená sada pravidel volá pomocnou metodu, která vyvolá podřízenou sadu pravidel, například následující ukázkový kód pro klienta ukazuje:
facts[0] = txd; facts[1] = new RulesetExecutor(txd); // Call the first or parent ruleset. Ruleset Ruleset = new Ruleset(RulesetName); DebugTrackingInterceptor dti = new DebugTrackingInterceptor("RulesetTracking.txt"); Ruleset.Execute(facts, dti); Ruleset.Dispose();
Poznámka:
Pokud je metoda instance, klient musí vytvořit instanci pomocné třídy .NET a předat tuto instanci jako fakt nadřazené sadě pravidel.
Analýza více objektů se stejným typem v pravidle
V mnoha scénářích napíšete obchodní pravidlo proti typu a očekáváte, že modul bude samostatně analyzovat a reagovat na každou instanci typu, která je v modulu uplatněna. V některých scénářích ale chcete, aby modul současně analyzoval více instancí, které mají stejný typ. Například následující ukázkové pravidlo používá více instancí třídy FamilyMember :
IF FamilyMember.Role == Father
AND FamilyMember.Role == Son
AND FamilyMember.Surname == FamilyMember.Surname
THEN FamilyMember.AddChild(FamilyMember)
Pravidlo identifikuje více instancí FamilyMember , kde jeden je Otec a druhý je Syn. Pokud jsou instance související s příjmením, pravidlo přidá instanci Son do kolekce dětí na instanci Otce . Pokud modul samostatně analyzuje každou instanci FamilyMember , pravidlo se nikdy neaktivuje, protože v tomto scénáři má FamilyMember jenom jednu roli, buď Otec nebo Syn.
V tomto scénáři tedy musíte indikovat, že modul analyzuje více instancí v pravidle a potřebujete způsob, jak odlišit identitu každé instance v pravidle. K poskytnutí této funkce můžete použít pole ID instance. Toto pole je k dispozici v okně Vlastnosti, když v Průzkumníku faktů vyberete fakt.
Důležité
Pokud se rozhodnete použít pole ID instance, před přetažením faktu nebo člena do pravidla nezapomeňte změnit jeho hodnotu.
Když použijete pole ID instance, pravidlo se znovu sestaví. U argumentů pravidel, které používají instanci Son třídy FamilyMember, změňte hodnotu ID instance z výchozí hodnoty 0 na 1. Když změníte hodnotu ID instance z 0 a přetáhnete fakt nebo člen do Editoru pravidel, hodnota ID instance se zobrazí v pravidlu následující třídy, například:
IF FamilyMember.Role == Father
AND FamilyMember(1).Role== Son
AND FamilyMember.Surname == FamilyMember(1).Surname
THEN FamilyMember.AddChild(FamilyMember(1))
Nyní předpokládejme, že instance Otce a Son instance jsou uplatněny do modulu. Modul vyhodnotí pravidlo proti různým kombinacím těchto instancí. Za předpokladu , že instance Otec a Syn mají stejné příjmení, instance Son je přidána k instanci Otce podle očekávání.
Poznámka:
Pole ID instance se používá pouze v kontextu vyhodnocení konkrétního pravidla. Toto pole není připevněno k instanci objektu napříč spuštěním sady pravidel a nesouvisí s pořadím použitým pro asserting objektů. Každá instance objektu se vyhodnotí ve všech argumentech pravidla pro tento typ.