Functions
Dynamics 365 Bedrägeriskydd ger dig flexibiliteten att skapa funktioner som du kan använda för att utföra en viss uppgift. Du kan till exempel använda funktioner för att kombinera grupper av kod som måste köras tillsammans. Eller så kan du använda funktioner för att återanvända kod, där du skriver koden en gång och kommer åt den från andra platser, vilket gör koden enklare att underhålla. Om du i det exemplet vill anropa en extern tjänst för att hämta ett värde från den kan logiken definieras i en funktion och funktionen kan anropas från andra resurser.
Definiera en funktion
Funktioner består av indataparametrar och utdataegenskaper.
Indataparametrar
Funktioner kan definiera parametrar som ska skickas till funktionen vid tidpunkten för anropet. Indataparametrar definieras i funktionsdefinitionen. Antalet parametrar som skickas till funktionen vid anropet ska exakt matcha antalet parametrar som definierats för funktionen. De definierade parametrarna kan användas i utdataegenskaperna för att returnera ett värde. Mer information finns i Utdataegenskaper. Det är valfritt att definiera indataparametrar.
Indataparametrarna består av följande tre delar.
Parameternamn: Ett namn som parametern kan refereras till med.
Datatyp: Varje indataparameter ska ha en associerad datatyp. Den datatyp som du anger konverterar värdet för parametern till motsvarande typ. Functions stöder de datatyper som anges i följande tabell.
Datatyp Exempelvärde Booleskt Sant Datum/tid Feb,22,2024 4:44PM Dubbel 10,0 Integer 10 String ”Hej” Standardvärde: Ett standardvärde krävs för varje parameter. Standardvärdet används under "Funktionsutvärdering" eller om det finns ett problem med funktionsanropet.
Utdataegenskaper
Du kan definiera returvärdet för en funktion med hjälp av utdataegenskaper. Utdataegenskaper använder logiken "Fraud Query Language (FQL)" för att returnera ett värde för funktionen. Utdataegenskaperna kan sedan nås från andra funktioner, regler, hastigheter, åtgärdsregler efter beslut och routningsregler när funktionen anropas. En funktion kan ha upp till 30 utdataegenskaper. Mer information om FQL och hur du använder det finns i Språkreferensguide.
Utdataegenskaperna består av följande fyra delar.
Egenskapsbeskrivning: En beskrivning av egenskapen. Beskrivningen är valfri.
Datatyp: Datatypen för det värde som returneras från egenskapen. Funktioner stöder alla primitiva datatyper, till exempel boolesk, datetime, dubbel, heltal och sträng. När en icke-bakåtkompatibel ändring görs i utdataegenskapen för en funktion som refereras till i andra resurser används standardvärdet för den ursprungliga utdataegenskapen "datatyp" som reserv för att fortsätta med resurskörningen. Vi rekommenderar att du uppdaterar dina resurser efter icke-bakåtkompatibla ändringar.
Standardvärde: Standardvärdet returneras som ett resultat av en funktion när ett undantag påträffas under utvärderingen av egenskapen. Till exempel division med 0 och Null Reference-undantag.
Kodredigeraren för att returnera ett värde: Kodredigeraren används för att returnera ett värde från funktionen. Följande är sätt att returnera ett utdatavärde.
Indataparametrar som definierats i en funktion kan användas för att returnera värden.
Exempel på en utdataegenskap som returnerar en indataparameter som returvärde. Mer information om hur du definierar indataparametrar finns i avsnittet Indataparametrar tidigare i den här artikeln.
RETURN _number1 + _number2
Både begärande- och svarsattributen (inklusive anpassade data) för en utvärdering som innehåller regeln som anropar funktionen. Du kan komma åt dessa attribut med operatorn @ . Exempel: @"salesTax"
Exempel på funktion med hjälp av begärandeattribut:
RETURN @"salesTax"
Berikningsdata för bedrägeriskydd. Till exempel Geo.CountryCode().
Exempel på funktion med riskcore:
RETURN Geo.CountryCode(@"deviceContext.ipAddress")
Visar listor som du laddar upp till Bedrägeriskydd. Mer information om hur du laddar upp listor finns i Hantera listor.
Exempel på funktion med hjälp av listan:
RETURN Lookup("Country_Score", "Country", "US", "ScoreCutOff")
Funktioner som definieras i Bedrägeriskydd. Mer information finns i Utföra hastighetskontroller.
Exempel på funktion med hastighet:
RETURN Velocity.IPs_Per_User(@"deviceContext.ipAddress", 30s)
Externa anrop som har skapats i Bedrägeriskydd. Mer information finns i Externa anrop.
Exempel på funktion som använder externa anrop:
RETURN External.weather("Seattle").id
Externa utvärderingar som har skapats i Bedrägeriskydd. Mer information finns i Externa utvärderingar.
Exempel på en funktion som anropar extern utvärdering:
LET $result = Assessments.myAssessment.Evaluate($baseInput = @@) RETURN $result.ToStr()
Åtkomstfunktion i funktioner.
Exempel på en funktion som anropar en annan funktion:
RETURN Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
Kommentar
Du kan skapa funktioner i valfri miljö i stacken med flera hierarkier. När en funktion refererar till resurser som funktioner, externa anrop, listor och externa utvärderingar som är tillgängliga i miljön, ärver även de lägre miljöer som anropar funktionen de resurser som funktionen refererar till. Om du till exempel skapar en funktion i roten som refererar till ett externt anrop för att returnera ett värde, kan den underordnade miljö som anropar funktionen också komma åt resultatet av det externa anropet. Mer information om hur du ärver och anropar funktioner finns i avsnittet Funktionsarv senare i den här artikeln.
Publicera en funktion
I bedrägeriskyddsportalen väljer du Funktioner i navigeringsfältet och väljer sedan Ny funktion. Bedrägeriskydd skapar ett utkast som endast visas för dig (funktionens skapare). Alla ändringar som du gör i utkastet sparas automatiskt.
Om du vill definiera en ny funktion från grunden läser du avsnittet Definiera en funktion tidigare i den här artikeln.
Om du vill publicera funktionen väljer du Publicera.
I bekräftelsedialogrutan kan du ändra namn och beskrivning. Markera Publicera.
Kommentar
När du har publicerat funktionen visas den för alla användare. Funktionen kan sedan anropas inom andra funktioner, regler, hastigheter, regler efter beslut och routningsregler.
Information om hur du använder funktioner i andra resurser, till exempel funktioner, regler, hastigheter, åtgärder efter beslut och routningsregler, finns i avsnittet Anropa funktioner från resurser senare i den här artikeln.
Fönstret Exempel
När du skapar eller redigerar en funktion visas exempelfönstret på sidans sida.
Funktioner är inte knutna till några utvärderingar. Exempelnyttolasten visas som en användbar guide för användare som visar alla händelseegenskaper som kan refereras till i dina funktioner. Välj händelsetypen i fältet Händelse överst i fönstret.
Avsnittet nyttolastexempel innehåller ett exempel på de egenskaper som kan skickas i API:et för begäran för utvärderingen.
Hantera en funktion
Om du vill redigera en tidigare publicerad funktion väljer du funktionen och väljer sedan Redigera. Ett utkast av den publicerade funktionen skapas och är endast tillgängligt för dig. Alla ändringar som du gör i utkastet sparas automatiskt. Om du vill skicka ändringarna till produktion väljer du Publicera. Den tidigare publicerade funktionen skrivs över med dina ändringar. Om du vill ignorera ditt utkast väljer du Ignorera.
Om du vill ta bort en befintlig funktion väljer du ellipsen (...) och väljer sedan Ta bort.
Om du vill uppdatera namnet eller beskrivningen av en funktion väljer du ellipsen (...) och väljer sedan Byt namn.
Om du vill söka efter en funktion anger du ett nyckelord i fältet Sök . Alla funktionsnamn och beskrivningar genomsöks och resultaten filtreras enligt nyckelorden i sökningen.
Utvärdera en funktion
Innan du publicerar en funktion kan du använda fönstret Funktionsutvärdering för att se till att den returnerar de resultat som du förväntar dig.
- Öppna fönstret funktionsutvärdering genom att välja Expandera på fliken Funktioner .
- Stäng fönstret genom att välja Dölj.
När utvärderingsfönstret är öppet visas listan över utdataegenskaper med resultatet. Utvärderingen använder standardvärden för indataparametrar och värden från exempelnyttolastavsnittet när du fastställer vad som ska returneras. Om något av dessa värden ändras ändras även utdata. På så sätt kan du se till att rätt värden för varje utdataegenskap returneras.
Anropa funktioner från resurser
Publicerade funktioner kan anropas från resurser som regler, hastigheter, åtgärder efter beslut och routningsregler. Alla utdataegenskaper som definierats i en funktion kan nås genom att anropa funktionen. Värdena kan sedan användas för beslutsfattande.
Regler
Funktioner kan anropas från valfri regel (inom valfri utvärdering) i samma miljö och från underordnade miljöer i hierarkin nedan. Mer information om regler finns i Regler.
LET $sum = Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5
Hastigheter
Funktioner kan anropas från valfri hastighet i samma miljö och från underordnade miljöer i hierarkin nedan. Mer information om hastigheter finns i Utföra hastighetskontroller.
SELECT DistinctCount(@"device.deviceContextId") AS Devices_Per_IP
FROM AccountLogin
WHEN Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum > 5
GROUPBY @"device.ipAddress"
Regler efter beslut
Funktioner kan anropas från valfri åtgärdsregel efter beslut (inom valfri utvärdering) i samma miljö och från underordnade miljöer i hierarkin nedan. Mer information om åtgärdsregler efter beslut finns i Åtgärdsregler efter beslut.
DO SetResponse()
WHEN Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum == 5
Dirigeringsregler
Funktioner kan anropas från alla routningsregler i samma miljö och från underordnade miljöer i hierarkin nedan. Mer information om routningsregler finns i Ärendehantering.
ROUTETO Queue("General Queue")
WHEN Functions.MyFunction(@"purchase.request.totalAmount", @"purchase.request.salesTax").Calculate_Sum > 5
Funktionsarv
Funktioner kan anropas i samma miljö och från underordnade miljöer i hierarkin nedan. Anropssyntaxen beror på var funktionen finns och var den anropas från. Nedan visas de olika sätten att anropa funktioner i en uppsättning med flera hierarkier.
Kommentar
Om en funktion refererar till resurser som funktioner, listor, externa anrop och externa utvärderingar ärvs resurserna också från underordnade miljöer i hierarkin nedan när funktionen anropas.
Anropa funktioner som skapats i samma miljö
Exemplet nedan anropar en funktion från en regel där både regeln och funktionen finns i samma miljö.
LET $sum = Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5
Anropa funktioner som skapats i rotmiljön
Exemplet nedan anropar en funktion som skapats i roten från en underordnad miljö.
LET $sum = Functions.root.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5
Anropa funktioner som skapats i den överordnade miljön
Exemplet nedan anropar en funktion från den omedelbara överordnade miljön.
LET $sum = Functions.parent.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5
Anropa funktioner som skapats i en miljö ovanför stacken
Exemplet nedan anropar en funktion som skapats i en miljö ovanför stacken och ärvts från en regel i en lägre miljö.
LET $sum = Functions.environment["environmentid"].MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5
Funktions- och resursgränser
Bedrägeriskydd har en gräns för antalet funktioner som kan skapas per miljö och antalet resurser som kan refereras i en funktion.
Resurs | Gräns | |
---|---|---|
Maximalt antal funktioner som kan publiceras i en miljö | 30 | |
Maximalt antal utdataegenskaper som kan finnas i en funktion | 30 | |
Maximalt antal unika hastigheter som en funktion kan referera till | 15 | |
Maximalt antal externa anrop som en funktion kan referera till | 2 | |
Maximalt antal unika listsökningar som en funktion kan referera till | 5 | |
Maximalt antal unika externa utvärderingar som en funktion kan referera till | 2 | |
Maximalt antal funktioner som en regeluppsättning kan anropa | 10 | |
Maximalt antal funktioner som en routningsregel kan anropa | 10 | |
Maximalt antal funktioner som en åtgärd efter beslut kan anropa | 10 | |
Maximalt antal resurser som en hastighet kan anropa | 10 |