Bagikan melalui


Mesin aturan Job Router

Job Router dapat menggunakan satu atau beberapa mesin aturan untuk memproses data dan membuat keputusan tentang Pekerjaan dan Pekerja Anda. Dokumen ini mencakup apa yang dilakukan mesin aturan dan mengapa Anda mungkin ingin menerapkannya dalam implementasi Anda.

Gambaran umum mesin aturan

Mengontrol perilaku implementasi Anda sering kali mencakup pengambilan keputusan yang rumit. Router Pekerjaan menyediakan cara yang fleksibel untuk memanggil perilaku secara terprogram menggunakan berbagai mesin aturan. Mesin aturan Router Pekerjaan umumnya mengambi set label yang ditentukan pada objek seperti Pekerjaan, Antrean, atau Pekerja sebagai input, menerapkan aturan dan menghasilkan output.

Tergantung di mana Anda menerapkan aturan di Router Pekerjaan, hasilnya dapat bervariasi. Misalnya, Kebijakan Klasifikasi dapat memilih ID Antrean berdasarkan label yang ditentukan pada input Pekerjaan. Dalam contoh lain, Kebijakan Distribusi dapat menemukan Pekerja terbaik menggunakan aturan penilaian kustom.

Jenis mesin aturan

Jenis mesin aturan berikut ada di Job Router untuk memberikan fleksibilitas dalam cara Pekerjaan Anda diproses.

Aturan statis - Digunakan untuk menentukan nilai statis seperti memilih ID Antrean tertentu.

Aturan ekspresi - Menggunakan bahasa PowerFx untuk menentukan aturan Anda sebagai ekspresi sebaris.

Aturan Fungsi Azure - Memungkinkan Job Router meneruskan label input sebagai payload ke Azure Function dan merespons kembali dengan nilai output.

Aturan webhook - Memungkinkan Job Router untuk meneruskan label input sebagai payload ke Webhook dan merespons kembali dengan nilai output.

Aturan peta langsung - Mengambil label input pada pekerjaan dan menghasilkan sekumpulan pemilih pekerja atau antrean dengan kunci dan nilai yang sama. Ini hanya boleh digunakan dalam ConditionalQueueSelectorAttachment atau ConditionalWorkerSelectorAttachment.

Contoh: Gunakan aturan statis untuk mengatur prioritas pekerjaan

Dalam contoh ini, StaticRouterRuleyang merupakan subjenis RouterRule dapat digunakan untuk mengatur prioritas semua Pekerjaan, yang menggunakan kebijakan klasifikasi ini.

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

Contoh: Gunakan aturan ekspresi untuk mengatur prioritas pekerjaan

Dalam contoh ini yang ExpressionRouterRule merupakan subjenis dari RouterRule, mengevaluasi ekspresi PowerFX untuk mengatur prioritas semua pekerjaan yang menggunakan kebijakan klasifikasi ini.

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

Langkah berikutnya