Aracılığıyla paylaş


İş Yönlendiricisi kural altyapıları

İş Yönlendiricisi, verileri işlemek ve İşleriniz ve Çalışanlarınız hakkında kararlar almak için bir veya daha fazla kural motoru kullanabilir. Bu belge, kural altyapılarının ne yaptığını ve bunları uygulamanıza neden uygulamak isteyebileceğinizi kapsar.

Kural altyapısına genel bakış

Uygulamanızın davranışını denetlemek genellikle karmaşık karar alma sürecini içerebilir. İş Yönlendiricisi, çeşitli kural altyapılarını kullanarak program aracılığıyla davranış çağırmak için esnek bir yol sağlar. İş Yönlendiricisi'nin kural altyapıları genellikle İş, Kuyruk veya Çalışan gibi nesnelerde tanımlanan bir etiket kümesini giriş olarak alır, kuralı uygular ve bir çıkış oluşturur.

İş Yönlendiricisi'nde kuralları nereye uyguladığınıza bağlı olarak, sonuç değişebilir. Örneğin Sınıflandırma İlkesi, bir İşin girişinde tanımlanan etiketlere göre bir Kuyruk Kimliği seçebilir. Başka bir örnekte dağıtım ilkesi, özel puanlama kuralı kullanarak en iyi Çalışanı bulabilir.

Kural altyapısı türleri

İşLerinizin nasıl işlendiği konusunda esneklik sağlamak için İş Yönlendiricisi'nde aşağıdaki kural altyapısı türleri vardır.

Statik kural - Belirli bir Kuyruk Kimliği seçme gibi statik bir değer belirtmek için kullanılır.

İfade kuralı - Kuralınızı satır içi ifade olarak tanımlamak için PowerFx dilini kullanır.

Azure İşlev kuralı - İş Yönlendiricisi'nin giriş etiketlerini bir Azure İşlevi'ne yük olarak geçirmesine ve bir çıkış değeriyle yanıt vermesine izin verir.

Web kancası kuralı - İş Yönlendiricisi'nin giriş etiketlerini bir Web kancasına yük olarak geçirmesine ve çıkış değeriyle yanıt vermesine izin verir.

Doğrudan eşleme kuralı - Bir işteki giriş etiketlerini alır ve aynı anahtar ve değerlere sahip bir çalışan veya kuyruk seçici kümesi çıkarır. Bu yalnızca veya ConditionalWorkerSelectorAttachmentiçinde ConditionalQueueSelectorAttachment kullanılmalıdır.

Örnek: Bir işin önceliğini ayarlamak için statik kural kullanma

Bu örnekte, alt türü RouterRule olan bir StaticRouterRule, bu sınıflandırma ilkesini kullanan tüm İşlerin önceliğini ayarlamak için kullanılabilir.

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))));

Örnek: bir işin önceliğini ayarlamak için ifade kuralı kullanma

Bu örnekte, alt türü RouterRuleolan bir ExpressionRouterRule PowerFX ifadesini değerlendirerek bu sınıflandırma ilkesini kullanan tüm işlerin önceliğini ayarlar.

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)")));

Sonraki adımlar