Sdílet prostřednictvím


Vytváření tvůrců faktů a načítátorů pro použití s pravidly a sady pravidel (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.

Pokud chcete vytvořit fakta pro modul pravidel, který se bude používat při vývoji a testování obchodních pravidel, můžete vytvořit tvůrce faktů, který poskytuje vašemu modulu pole objektů .NET. Můžete také vytvořit načítač faktů, který během provádění vkládá dlouhodobé nebo pomalé změny faktů do pravidel pro vyhodnocení.

Tento průvodce postupy ukazuje, jak vytvořit tvůrce faktů a načíst fakty pro váš projekt azure Logic Apps Rules Engine, který se má použít.

Vytvoření tvůrce faktů

Pokud chcete vytvořit instance faktů, implementujte rozhraní IFactCreator a jeho metody, CreateFacts a GetFactTypes. Po sestavení sestavení .NET (soubor DLL) pro vašeho prvního tvůrce faktů můžete vybrat sestavení z testovací schopnosti sady pravidel v nástroji Microsoft Rules Composer. Další informace naleznete v tématu Sady testovacích pravidel.

Následující příklad ukazuje ukázkovou implementaci tvůrce faktů:

public class MyFactCreator : IFactCreator
{
    private object[] myFacts;
    public MyFactCreator()
    {
    }

    public object[] CreateFacts ( RuleSetInfo rulesetInfo )
    {
        myFacts = new object[1];
        myFacts.SetValue(new MySampleBusinessObject(),0);
        return myFacts;
    }

    public Type[] GetFactTypes (RuleSetInfo rulesetInfo)
    {
       return null;
    }
}

Vytvoření načítáče faktů

Fakt retriever je objekt .NET, který implementuje standardní metody a obvykle je používá k poskytování dlouhodobých a pomalu se měnících faktů modulu pravidel před spuštěním sady pravidel. Modul tyto fakty ukládá do mezipaměti a používá je v několika cyklech spuštění. Fakt retriever odešle fakt poprvé a pak aktualizuje fakt v paměti pouze v případě potřeby. Místo toho, abyste při každém vyvolání modulu pravidel odeslali fakta, vytvořte načítač faktů, který odešle fakt poprvé, a pak aktualizuje fakt v paměti pouze v případě potřeby.

Pokud chcete do modulu pravidel zadat instance faktů, implementujte rozhraní IFactRetriever a metodu UpdateFacts . Potom můžete nastavit verzi sady pravidel tak, aby tuto implementaci používala k uvedení faktů za běhu. Vaše verze sady pravidel pak volá metodu UpdateFacts při každém cyklu provádění.

Volitelně můžete implementovat IFactRemover rozhraní na komponentě fact retriever. Modul pravidel pak může volat metodu s názvem UpdateFactsAfterExecution z rozhraní IFactRemover při odstranění sady pravidel. Tímto způsobem můžete provádět jakoukoli práci po spuštění, například potvrzení jakýchkoli změn databáze nebo odvolání všech instancí objektů z pracovní paměti stroje pravidel.

K provedení následujících úloh můžete navrhnout nástroj pro načítání faktů s požadovanou logikou specifickou pro aplikaci:

  1. Připojte se k požadovaným zdrojům dat.

  2. Vymažte data jako dlouhodobé fakta do modulu.

  3. Zadejte logiku pro aktualizaci nebo uplatnění nových dlouhodobých instancífaktch

    Modul použije počáteční hodnoty vytvrděné a uložené v mezipaměti v následných cyklech spuštění, dokud se tyto hodnoty neaktualizují.

Implementace faktu retriever vrátí objekt, který je analogický k tokenu, který retriever může použít s faktaHandleIn objekt k určení, zda aktualizovat existující fakta nebo uplatnit nové fakta. Když verze sady pravidel volá fact retriever poprvé, faktHandleIn objekt je vždy nastaven na hodnotu null, ale přebírá hodnotu návratového objektu po dokončení provádění fact retriever.

Následující ukázkový kód ukazuje, jak pomocí implementace načíst fakta .NET a XML:

using System;
using System.Xml;
using System.Collections;
using Microsoft.Azure.Workflows.RuleEngine;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace MyApplication.FactRetriever
{
    public class myFactRetriever:IFactRetriever
    {
        public object UpdateFacts(RuleSetInfo rulesetInfo, RuleEngine engine, object factsHandleIn)
        {
            object factsHandleOut;
            if (factsHandleIn == null)
            {
                // Create .NET object instances.
                bookInstance = new Book();
                magazineInstance = new Magazine();

                // Create XML object instance.
                XmlDocument xd = new XmlDocument();

                // Load the XML document.
                xd.Load(@"..\myXMLInstance.xml");

                // Create and instantiate a TypedXmlDocument class instance.
                TypedXmlDocument doc = new TypedXmlDocument("mySchema",xd1);

                engine.Assert(bookInstance);
                engine.Assert(magazineInstance);
                engine.Assert(doc);
                factsHandleOut = doc;
            }
            else
                factsHandleOut = factsHandleIn;
                return factsHandleOut;
        }
    }
}

Pokud chcete zahrnout následující možnosti, napište vlastní implementaci kódu:

  • Určete, kdy se mají aktualizovat dlouhodobá fakta.

  • Sledujte, která instance modulu pravidel používá jakákoli dlouhodobá fakta.

Určení načítáče faktů pro sadu pravidel

Pokud chcete nastavit načtení faktů pro vaši verzi sady pravidel, můžete buď nastavit vlastnost Fact Retriever v nástroji Microsoft Rules Composer, nebo napsat vlastní kód, jak je znázorněno v následujícím příkladu, který používá třídu s názvem "MyFactRetriever" v sestavení s názvem "MyAssembly":

RuleEngineComponentConfiguration fr = new RuleEngineComponentConfiguration("MyAssembly", "MyFactRetriever");
RuleSet rs = new RuleSet("ruleset");

// Associate the execution configuration with a ruleset version.
RuleSetExecutionConfiguration rsCfg = rs.ExecutionConfiguration;
rsCfg.FactRetriever = factRetriever;

Poznámka:

Pokud jako první parametr konstruktoru RuleEngineComponentConfiguration použijete jednoduchý obecný název sestavení, například MyAssembly, modul pravidel vyhledá sestavení ve složce aplikace.