Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Azure Logic Apps (Standard)
Pokud chcete integrovat obchodní logiku s vašimi standardními pracovními postupy v Azure Logic Apps, můžete vytvořit a sestavit projekt Stroje pravidel Azure Logic Apps pomocí editoru Visual Studio Code. Pravidla řídí obchodní logiku pro fungování obchodních procesů.
Pro spuštění pravidel z workflow použijte lokální vlastní funkci pro sady pravidel, které obsahují .NET fakty. Pro sady pravidel, které používají pouze XML fakta, můžete místo toho použít vestavěnou akci Execute Rules Engine , která je momentálně ve náhledu.
Tento průvodce ukazuje, jak vytvořit projekt azure Logic Apps Rules Engine:
Předpoklady a nastavení pro vytvoření vašeho projektu Azure Logic Apps Rules Engine, včetně vytváření obchodních pravidel pro váš projekt pomocí Microsoft Rules Composer.
Pokud nějaké máte, exportujte existující pravidla z Microsoft BizTalk Serveru.
Vytvořte projekt Standard Logic Apps pro Azure Logic Apps Rules Engine pomocí Visual Studio Code.
Spusť pravidla ze svého workflow buď pomocí lokální vlastní funkce pro .NET fakta, nebo akce Execute Rules Engine pouze pro XML fakta.
Požadavky
Stáhněte a nainstalujte nástroj Microsoft Rules Composer, který používáte k vytváření sad pravidel, obchodních pravidel a slovníků.
Pokud chcete zavést podnikání pro projekt pravidlového stroje, projděte si následující dokumentaci:
V této verzi podporuje vývojové prostředí pro projekt Azure Logic Apps Rules Engine pouze Visual Studio Code. Pokud chcete splnit požadavky pro použití editoru Visual Studio Code, přečtěte si téma Vytvoření pracovního postupu standardní aplikace logiky v Azure Logic Apps s jedním tenantem pomocí editoru Visual Studio Code.
K použití faktů .NET využívá Azure Logic Apps Rules Engine funkci vlastního kódu v aplikaci Visual Studio Code. Pokud chcete splnit požadavky na použití této funkce, přečtěte si téma Vytvoření a spuštění kódu rozhraní .NET Framework z pracovních postupů Standard v Azure Logic Apps.
Před vytvořením projektu
Pokud chcete zajistit úspěšný projekt modulu pravidel, projděte si a proveďte následující obecné úlohy a osvědčené postupy:
Určete, jak obchodní pravidla odpovídají obchodním procesům.
Naplánujte, jak do aplikace začlenit obchodní pravidla.
Identifikujte obchodní logiku, kterou chcete reprezentovat pomocí pravidel ve vaší aplikaci.
Pojem "obchodní logika" může odkazovat na mnoho věcí. Obchodní logika může být například "Nákupní objednávky větší než 500 dolarů vyžaduje schválení manažera".
Identifikujte zdroje dat pro prvky pravidla. Volitelně můžete definovat slovníky, což jsou terminologie specifická pro doménu, která představuje podkladové vazby.
Definujte pravidla, která se mají použít z definic slovníku nebo přímo z datových vazeb. Z těchto pravidel vytvořte sadu pravidel, která představuje vaši obchodní logiku.
Export pravidel z Microsoft BizTalk Serveru
Pokud chcete znovu použít existující pravidla ze serveru Microsoft BizTalk Server, můžete je exportovat. Fakta databází však v současné době nejsou podporována. Před exportem pravidel je odeberte nebo refaktorujte do jiných typů faktů pomocí nástroje Microsoft BizTalk Rules Composer.
Na serveru Microsoft BizTalk spusťte Průvodce nasazením stroje obchodních pravidel.
Na stránce Průvodce nasazením Pravidlového nástroje vyberte Další.
Na stránce Úloha nasazení vyberte Exportovat zásady/slovník do souboru z databáze a pak vyberte Další.
Na stránce Úložiště zásad v seznamu názvů SQL Serveru vyberte svůj SQL server. V seznamu konfigurační databáze na vybraném serveru vyberte BizTalkRuleEngineDb a pak vyberte Další.
Na stránce Exportovat zásady nebo slovník vyberte v seznamu Zásady požadovanou zásadu. Pokud chcete najít a zvolit definiční soubor, vyberte Procházet.
Až budete připraveni, vyberte Další.
Potvrďte informace o serveru, databázi a zásadách nebo slovníku a vyberte Další.
Po dokončení importu nebo exportu vyberte Další.
Zkontrolujte stav dokončení importu nebo exportu a vyberte Dokončit.
Vytvořit projekt Azure Logic Apps Rules Engine
Šablona projektu vytváří projekt funkcí a projekt logické aplikace. Projekt Functions a vlastní kód potřebujete jen tehdy, když vaše sada pravidel obsahuje fakta .NET. Pro sady pravidel, která používají pouze XML fakta, použijte vestavěnou akci Execute Rules Engine ve svém pracovním postupu.
V editoru Visual Studio Code na panelu aktivit vyberte ikonu Azure. (Klávesnice: Shift+Alt+A)
V okně Azure , které se otevře, na panelu nástrojů oddílu Pracovní prostor, v nabídce Azure Logic Apps vyberte Vytvořit nový pracovní prostor Logic Apps.
V poli Vybrat složku přejděte do místní složky, kterou jste vytvořili pro svůj projekt, a vyberte ji.
Po zobrazení výzvy k vytvoření nového pracovního prostoru aplikace logiky zadejte název pracovního prostoru:
Tento příklad pokračuje s MyLogicAppRulesWorkspace.
Po zobrazení výzvy k výběru šablony projektu pro pracovní prostor aplikace logiky vyberte aplikaci logiky s projektem stroje pravidel.
Postupujte podle následujících výzev a zadejte následující ukázkové hodnoty:
Položka Příklad hodnoty Název funkce pro projekt funkcí RulesFunction Název oboru názvů pro projekt Functions Contoso Aplikace logiky: LogicApp Šablona pracovního postupu:
- Stavový pracovní postup
- Bezstavové pracovní postupyStavový pracovní postup Název pracovního postupu MyRulesWorkflow Vyberte Otevřít v aktuálním okně.
Po dokončení tohoto kroku Visual Studio Code vytvoří váš pracovní prostor, který obsahuje projekt funkcí a projekt modulu pravidel aplikace logiky, například:
Node Popis < název pracovního prostoru> Obsahuje projekt funkcí i projekt pracovního postupu aplikace logiky. Funkce Obsahuje artefakty vašeho funkčního projektu. Například soubor <název-funkce>.cs je soubor kódu, ve kterém můžete psát svůj kód. LogicApp Obsahuje artefakty pro projekt modulu pravidel aplikace logiky, včetně pracovního postupu.
Napište kód svého pravidlového modulu pro fakta v .NET
Pokud vaše pravidla používají pouze XML fakta, přeskočejte tuto sekci a použijte vestavěnou akci Execute Rules Engine. Pokud vaše pravidla obsahují .NET fakta, vytvořte lokální vlastní funkci, jak je popsáno v této sekci.
V pracovním prostoru rozbalte uzel Functions pokud ještě není rozbalený.
<Otevřete soubor název funkce>.cs, který je pojmenován RulesFunction.cs v tomto příkladu.
Ve výchozím nastavení tento soubor obsahuje vzorový kód, který obsahuje následující prvky kódu spolu s dříve zadanými ukázkovými hodnotami tam, kde je to vhodné:
- Název namespace
- Název třídy
- Název funkce
- Parametry funkce
- Návratový typ
- Komplexní typ
Následující příklad ukazuje kompletní vzorový kód funkce s názvem
RulesFunction://------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace Contoso { using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Azure.Functions.Extensions.Workflows; using Microsoft.Azure.WebJobs; using Microsoft.Azure.Workflows.RuleEngine; using Microsoft.Azure.Workflows.RuleEngine.Common; using Microsoft.Extensions.Logging; using System.Xml; using System.Text; /// <summary> /// Represents the RulesFunction flow invoked function. /// </summary> public class RulesFunction { private readonly ILogger<RulesFunction> logger; private FileStoreRuleExplorer ruleExplorer; public RulesFunction(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger<RulesFunction>(); this.ruleExplorer = new FileStoreRuleExplorer(loggerFactory); } /// <summary> /// Executes the logic app workflow. /// </summary> /// <param name="ruleSetName">The rule set name.</param> /// <param name="documentType">document type of input xml.</param> /// <param name="inputXml">input xml type fact</param> /// <param name="purchaseAmount">purchase amount, value used to create .NET fact </param> /// <param name="zipCode">zip code value used to create .NET fact .</param> [FunctionName("RulesFunction")] public Task<RuleExecutionResult> RunRules( [WorkflowActionTrigger] string ruleSetName, string documentType, string inputXml, int purchaseAmount, string zipCode) { /***** Summary of steps below ***** * 1. Get the rule set to Execute * 2. Check if the rule set was retrieved successfully * 3. create the rule engine object * 4. Create TypedXmlDocument facts for all xml document facts * 5. Initialize .NET facts * 6. Execute rule engine * 7. Retrieve relevant updates facts and send them back */ try { var ruleSet = this.ruleExplorer.GetRuleSet(ruleSetName); // Check if ruleset exists if(ruleSet == null) { // Log an error in finding the rule set this.logger.LogCritical($"RuleSet instance for '{ruleSetName}' was not found(null)"); throw new Exception($"RuleSet instance for '{ruleSetName}' was not found."); } // Create rule engine instance var ruleEngine = new RuleEngine(ruleSet: ruleSet); // Create a typedXml Fact(s) from input xml(s) XmlDocument doc = new XmlDocument(); doc.LoadXml(inputXml); var typedXmlDocument = new TypedXmlDocument(documentType, doc); // Initialize .NET facts var currentPurchase = new ContosoNamespace.ContosoPurchase(purchaseAmount, zipCode); // Provide facts to rule engine and run it ruleEngine.Execute(new object[] { typedXmlDocument, currentPurchase }); // Send the relevant results(facts) back var updatedDoc = typedXmlDocument.Document as XmlDocument; var ruleExectionOutput = new RuleExecutionResult() { XmlDoc = updatedDoc.OuterXml, PurchaseAmountPostTax = currentPurchase.PurchaseAmount + currentPurchase.GetSalesTax() }; return Task.FromResult(ruleExectionOutput); } catch(RuleEngineException ruleEngineException) { // Log any rule engine exceptions this.logger.LogCritical(ruleEngineException.ToString()); throw; } catch(XmlException xmlException) { // Log any xml exceptions this.logger.LogCritical("Encountered exception while handling xml. " + xmlException.ToString()); throw; } catch(Exception ex) { // Log any other exceptions this.logger.LogCritical(ex.ToString()); throw; } } /// <summary> /// Results of the rule execution /// </summary> public class RuleExecutionResult { /// <summary> /// rules updated xml document /// </summary> public string XmlDoc { get; set;} /// <summary> /// Purchase amount post tax /// </summary> public int PurchaseAmountPostTax { get; set;} } } }Definice funkce obsahuje
RulesFunctionvýchozíRunRulesmetodu, kterou můžete použít k zahájení práce. Tato ukázkováRunRulesmetoda ukazuje, jak předat parametry do pravidelového enginu Azure Logic Apps. V tomto příkladu metoda předá název sady pravidel, typ vstupního dokumentu, fakt XML a další hodnoty pro další zpracování.< function-name>.cs soubor také zahrnuje
ILoggerrozhraní, které poskytuje podporu pro protokolování událostí do prostředku služby Application Insights. Informace o trasování můžete odesílat do Application Insights a ukládat je spolu s informacemi o trasování z pracovních postupů. Soubor <funkce>.cs také zahrnujeFileStoreRuleExplorerobjekt, který přistupuje ke sadě pravidel. Jak můžete vidět, konstruktor proFileStoreRuleExplorerpoužíváloggerFactorytaké k odesílání telemetrických informací do Application Insights.private readonly ILogger<RulesFunction> logger; private FileStoreRuleExplorer ruleExplorer; public RulesFunction(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger<RulesFunction>(); this.ruleExplorer = new FileStoreRuleExplorer(loggerFactory); } <...>Modul pravidel Azure Logic Apps funguje podle popisu v následujících krocích:
Modul používá
FileStoreRuleExplorerobjekt pro přístup ke sadě pravidel. Soubor sady pravidel je uložený v adresáři Pravidla pro vaši standardní aplikaci logiky.V tomto příkladu se volá
SampleRuleSet.xmlsoubor sady pravidel, který byl vytvořen pomocí nástroje Microsoft Rules Composer nebo exportován pomocí serveru Microsoft BizTalk Server.
var ruleSet = this.ruleExplorer.GetRuleSet(ruleSetName); // Check if ruleset exists if(ruleSet == null) { // Log an error in finding the rule set this.logger.LogCritical($"RuleSet instance for '{ruleSetName}' was not found(null)"); throw new Exception($"RuleSet instance for '{ruleSetName}' was not found."); }Důležité
Sady pravidel obsahují odkazy na jejich fakta. Microsoft Rules Composer hledá sestavení faktů k ověření sady pravidel pro jejich úpravu. Chcete-li otevřít sady pravidel, například
SampleRuleSet.xmlv nástroji Microsoft Rules Composer, musíte je umístit společně s odpovídajícími sestaveními faktů .NET. V opačném případě se zobrazí výjimka.Modul používá
ruleSetobjekt k vytvoření instance objektuRuleEngine.Objekt
RuleEngineobdrží fakta pravidla pomocíExecutemetody.V tomto příkladu
Executemetoda obdrží dvě fakta: fakt XML pojmenovanýtypedXmlDocumenta fakt .NET s názvemcurrentPurchase.Po spuštění modulu se hodnoty faktů přepíšou hodnotami, které jsou výsledkem provádění modulu:
// Create rule engine instance var ruleEngine = new RuleEngine(ruleSet: ruleSet); // Create a typedXml Fact(s) from input xml(s) XmlDocument doc = new XmlDocument(); doc.LoadXml(inputXml); var typedXmlDocument = new TypedXmlDocument(documentType, doc); // Initialize .NET facts var currentPurchase = new ContosoNamespace.ContosoPurchase(purchaseAmount, zipCode); // Provide facts to rule engine and run it ruleEngine.Execute(new object[] { typedXmlDocument, currentPurchase }); // Send the relevant results(facts) back var updatedDoc = typedXmlDocument.Document as XmlDocument;- Modul používá
RuleExecutionResultvlastní třídu k vrácení hodnot doRunRulesmetody:
var ruleExectionOutput = new RuleExecutionResult() { XmlDoc = updatedDoc.OuterXml, PurchaseAmountPostTax = currentPurchase.PurchaseAmount + currentPurchase.GetSalesTax() }; return Task.FromResult(ruleExectionOutput);Nahraďte vzorový kód funkce vlastními a upravte výchozí
RunRulesmetodu pro vlastní scénáře.Tento příklad pokračuje v používání vzorového kódu bez jakýchkoli změn.
Zkompilujte a vytvořte svůj kód pro .NET fakta
Pokud vaše pravidla používají pouze XML fakta a plánujete použít vestavěnou akci Execute Rules Engine , tuto sekci přeskočte. Pokud vaše pravidla obsahují .NET fakty, po dokončení psaní kódu kompilujte, abyste se ujistili, že neexistují žádné chyby při sestavování. Váš projekt funkcí automaticky zahrnuje úlohy sestavení, které zkompilují a potom do složky lib\custom v projektu aplikace logiky přidají všechny vlastní knihovny kódu, včetně vašich sestavení .NET Functions, kde pracovní postupy vyhledávají vlastní funkce ke spuštění. Tyto úlohy umístí sestavení do složky lib\custom\net472 .
V editoru Visual Studio Code v nabídce Terminál vyberte Nový terminál.
V seznamu pracovních adresářů, který se zobrazí, vyberte jako aktuální pracovní adresář pro nový terminál funkci Functions .
Visual Studio Code otevře okno terminálu s příkazovým řádkem.
V okně terminálu na příkazovém řádku zadejte dotnet restore .\RulesFunction.csproj.
Po opětovném zobrazení příkazového řádku zadejte dotnet build .\RulesFunction.csproj.
Pokud sestavení proběhne úspěšně, okno terminálu oznámí, že sestavení proběhlo úspěšně.
Ověřte, že v projektu aplikace logiky existují následující položky:
V pracovním prostoru rozbalte následující složky: LogicApp>lib\custom>net472. Ověřte, že podsložka s názvem net472 obsahuje více sestavení potřebných ke spuštění kódu, včetně souboru s názvem< název> funkce.dll.
V pracovním prostoru rozbalte následující složky: LogicApp>lib\custom><function-name.> Ověřte, že podsložka s názvem <název funkce> obsahuje soubor function.json, který obsahuje metadata o kódu funkce, který jste napsali. Návrhář pracovního postupu používá tento soubor k určení potřebných vstupů a výstupů při volání kódu.
Následující příklad ukazuje ukázková vygenerovaná sestavení a další soubory v projektu aplikace logiky:
Vyvolejte svá pravidla z pracovního postupu
Volání factů .NET pomocí místních vlastních funkcí
Pro pravidla, která obsahují .NET fakta, použijte lokální vlastní funkci. Po potvrzení, že se kód zkompiluje a že projekt modulu pravidel aplikace logiky obsahuje potřebné soubory pro spuštění kódu, otevřete výchozí pracovní postup, který je součástí projektu aplikace logiky.
V pracovním prostoru v části LogicApp rozbalte uzel <workflow-name>, otevřete místní nabídku pro workflow.json a vyberte Otevřít návrhář.
V návrháři pracovního postupu, který se otevře, se zobrazí výchozí pracovní postup zahrnutý v projektu aplikace logiky s následující aktivační událostí a akcemi:
- Předdefinovaný trigger požadavku s názvem Při přijetí požadavku HTTP.
- Integrovaná akce s názvem Vyvolání funkce místních pravidel v této logické aplikaci.
- Integrovaná akce Odpovědi s názvem Response ( Odpověď), kterou používáte k odpovídání volajícímu pouze při použití triggeru požadavku.
Vyberte akci s názvem Zavolat funkci místních pravidel v této logické aplikaci.
Informační podokno akce se otevře na pravé straně.
Zkontrolujte a ověřte, že je hodnota parametru Název funkce nastavená na funkci pravidel, kterou chcete spustit. Zkontrolujte nebo změňte jakékoli jiné hodnoty parametrů, které vaše funkce používá.
Zavolejte XML fakta pomocí akce Execute Rules Engine
Pro sady pravidel, které používají pouze XML fakta, použijte vestavěnou akci Execute Rules Engine . Nemusíte psát, kompilovat ani volat lokální vlastní funkci.
Důležité
Akce Execute Rules Engine je v náhledu a podporuje pouze XML fakta. Pro použití .NET faktů volejte lokální vlastní funkci.
V pracovním prostoru v části LogicApp rozbalte uzel <workflow-name>, otevřete místní nabídku pro workflow.json a vyberte Otevřít návrhář.
V workflow designeru, pod triggerem nebo akcí, kde chcete spustit pravidlovou sadu, přidejte akci nazvanou Execute Rules Engine podle obecných kroků pro přidání akce do workflow.
V panelu s informacemi o akci ze seznamu pravidel vyberte sadu pravidel, kterou chcete spustit. Tento příklad vybírá validaci.
Otevřete seznam pokročilých parametrů .
Pro každý XML fakt, který vybraná sada pravidel očekává, seznam obsahuje parametr začínající předponou Fact:. Tento příklad vybírá Fact: Backend.
Vyberte každý faktický parametr, který chcete poskytnout.
Pro každý faktický parametr uveďte odpovídající XML dokument.
Můžete zadat XML nebo vybrat XML výstup z dřívější workflow operace. Tento příklad využívá výstup Body XML z předchozího Compose XML se schématovou akcí.
Když akce běží, pravidlový engine aplikuje vybranou sadu pravidel na XML fakta. Výstup akce můžete použít v dalších pracovních postupech. V tomto příkladu workflow využívá Parse XML se schématem ke zpracování výsledného XML.
Ladění kódu a pracovního postupu
Následující kroky se vztahují, když používáte lokální vlastní funkci pro sady pravidel, které obsahují .NET fakta. U sady pravidel pouze ve formátu XML, která používá vestavěnou akci Execute Rules Engine, laděte pracovní postup a zkontrolujte vstupy a výstupy akce v historii spuštění pracovního postupu.
Opakujte následující kroky a třikrát spusťte emulátor úložiště Azurite: jednou pro následující služby Azure Storage:
- Azure Blob Service
- Služba fronty Azure
- Služba Azure Table
V nabídce Zobrazení editoru Visual Studio Code vyberte Příkazovou paletu.
Na příkazovém řádku, který se zobrazí, vyhledejte a vyberte Azurite: Spustit službu Blob Service.
V seznamu pracovních adresářů, který se zobrazí, vyberte LogicApp.
Opakujte tento postup pro Azurite: Spustit službu fronty a Azurite: Spustit službu tabulky.
Po úspěšném spuštění hlavního panelu editoru Visual Studio Code v dolní části obrazovky se zobrazí tři spuštěné služby úložiště, například:
Na panelu aktivit editoru Visual Studio Code vyberte Spustit a Ladit. (Klávesnice: Ctrl+Shift+D)
V seznamu Spustit a ladit vyberte Připojit k aplikaci logiky (LogicApp), pokud ještě není vybraná, a pak vyberte Přehrát (zelená šipka).
Otevře se okno terminálu a zobrazí se spuštěný proces ladění. Zobrazí se okno konzoly ladění a zobrazí se stavy ladění. Ve Visual Studio Code dole se stavový řádek změní na oranžovou, což znamená, že je načten ladicí program .NET.
Pokud chcete nastavit zarážky, najděte v definici funkce (<název> funkce.cs) nebo definici pracovního postupu (workflow.json), najděte číslo řádku, kde chcete zarážku, a vyberte sloupec na levou stranu, například:
Pokud chcete v pracovním postupu ručně spustit spouštěč požadavku, otevřete stránku Přehled pracovního postupu.
V projektu vaší logické aplikace otevřete místní nabídku souboru workflow.json a vyberte Přehled.
Na stránce Přehled pracovního postupu je tlačítko Spustit trigger k dispozici, pokud chcete pracovní postup spustit ručně. V části Vlastnosti pracovního postupu je hodnota Callback URL adresou URL pro volatelný koncový bod, který je vytvořen triggerem požadavku ve vašem pracovním postupu. Na tuto adresu URL můžete odesílat požadavky, které aktivují pracovní postup z jiných aplikací, včetně dalších pracovních postupů aplikace logiky.
Na panelu nástrojů stránky Přehled vyberte Spustit spouštěč.
Jakmile se pracovní postup začne spouštět, ladicí program aktivuje první zarážku.
Na nabídce Spustit nebo v panelu nástrojů ladicího programu vyberte akci ladění.
Po dokončení pracovního postupu se na stránce Přehled zobrazí dokončené spuštění a základní podrobnosti o tomto spuštění.
Pokud si chcete prohlédnout více informací o běhu pracovního postupu, zvolte dokončený běh. Nebo v seznamu vedle sloupce Doba trvání vyberte Zobrazit spuštění.
Pokud chcete nasadit aplikace logiky pomocí projektu Modulu pravidel do Azure Logic Apps, postupujte podle kroků v části Příprava na nasazení.