Sdílet prostřednictvím


Moduly pravidel směrovače úloh

Směrovač úloh může pomocí jednoho nebo více modulů pravidel zpracovávat data a rozhodovat se o vašich úlohách a pracovních úkolech. Tento dokument popisuje, co moduly pravidel dělají a proč je můžete chtít použít ve vaší implementaci.

Přehled stroje pravidel

Řízení chování implementace může často zahrnovat komplexní rozhodování. Směrovač úloh nabízí flexibilní způsob, jak vyvolat chování programově pomocí různých modulů pravidel. Moduly pravidel směrovače úloh obecně používají sadu popisků definovaných u objektů, jako je úloha, fronta nebo pracovní proces jako vstup, použít pravidlo a vytvořit výstup.

V závislosti na tom, kde použijete pravidla ve směrovači úloh, se výsledek může lišit. Zásada klasifikace může například zvolit ID fronty na základě popisků definovaných na vstupu úlohy. V jiném příkladu může zásada distribuce najít nejlepší pracovní proces pomocí vlastního pravidla bodování.

Typy stroje pravidel

Ve směrovači úloh existují následující typy modulu pravidel, které poskytují flexibilitu při zpracování úloh.

Statické pravidlo – slouží k určení statické hodnoty, například výběru konkrétního ID fronty.

Pravidlo výrazu používá jazyk PowerFx k definování pravidla jako vloženého výrazu.

Pravidlo funkce Azure – Umožňuje směrovači úloh předávat vstupní popisky jako datovou část do funkce Azure a reagovat zpět výstupní hodnotou.

Pravidlo Webhooku – Umožňuje směrovači úloh předat vstupní popisky jako datovou část webhooku a odpovědět zpět výstupní hodnotou.

Pravidlo přímé mapování – vezme vstupní popisky úlohy a vypíše sadu selektorů pracovních procesů nebo front se stejným klíčem a hodnotami. Tato možnost by měla být použita pouze v ConditionalQueueSelectorAttachment ConditionalWorkerSelectorAttachment

Příklad: Nastavení priority úlohy pomocí statického pravidla

V tomto příkladu je StaticRouterRuleto podtyp RouterRule , který lze použít k nastavení priority všech úloh, které používají tuto zásadu klasifikace.

await administrationClient.CreateClassificationPolicyAsync(
    new CreateClassificationPolicyOptions(classificationPolicyId: "my-policy-id")
    {
        PrioritizationRule = new StaticRouterRule(new RouterValue(5))
    });
await administrationClient.path("/routing/classificationPolicies/{classificationPolicyId}", "my-policy-id").patch({
    body: {
        prioritizationRule: { kind: "static", value: 5 }
    },
    contentType: "application/merge-patch+json"
  });
administration_client.upsert_classification_policy(
    classification_policy_id = "my-policy-id",
    prioritization_rule = StaticRouterRule(value = 5))
administrationClient.createClassificationPolicy(new CreateClassificationPolicyOptions("my-policy-id")
    .setPrioritizationRule(new StaticRouterRule(new RouterValue(5))));

Příklad: Nastavení priority úlohy pomocí pravidla výrazu

V tomto příkladu, ExpressionRouterRule který je podtyp RouterRule, vyhodnotí výraz PowerFX nastavit prioritu všech úloh, které používají tuto zásadu klasifikace.

await administrationClient.CreateClassificationPolicyAsync(
    new CreateClassificationPolicyOptions(classificationPolicyId: "my-policy-id")
    {
        PrioritizationRule = new ExpressionRouterRule(expression: "If(job.Escalated = true, 10, 5)") // this will check whether the job has a label "Escalated" set to "true"
    });
await administrationClient.path("/routing/classificationPolicies/{classificationPolicyId}", "my-policy-id").patch({
    body: {
        prioritizationRule: {
            kind: "expression",
            expression: "If(job.Escalated = true, 10, 5)"
        }
    },
    contentType: "application/merge-patch+json"
});
administration_client.upsert_classification_policy(
    classification_policy_id = "my-policy-id",
    prioritization_rule = ExpressionRouterRule(expression = "If(job.Urgent = true, 10, 5)"))
administrationClient.createClassificationPolicy(
    new CreateClassificationPolicyOptions("my-policy-id")
        .setPrioritizationRule(new ExpressionRouterRule("If(job.Urgent = true, 10, 5)")));

Další kroky