ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكن لموجه الوظيفة استخدام محرك قاعدة واحد أو أكثر لمعالجة البيانات واتخاذ قرارات حول الوظائف والعمال. يغطي هذا المستند ما تفعله محركات القواعد ولماذا قد ترغب في تطبيقها في التنفيذ الخاص بك.
نظرة عامة على محرك القواعد
غالبا ما يتضمن التحكم في سلوك التنفيذ الخاص بك اتخاذ قرارات معقدة. يوفر Job Router طريقة مرنة لاستدعاء السلوك برمجيا باستخدام محركات قواعد مختلفة. تأخذ محركات قواعد موجه الوظيفة بشكل عام مجموعة من التسميات المعرفة على كائنات مثل وظيفة أو قائمة انتظار أو عامل كمدخل، وتطبق القاعدة وتنتج إخراجا.
اعتمادا على المكان الذي تطبق فيه القواعد في Job Router، يمكن أن تختلف النتيجة. على سبيل المثال، يمكن لنهج التصنيف اختيار معرف قائمة انتظار استنادا إلى التسميات المحددة على إدخال الوظيفة. في مثال آخر، يمكن لنهج التوزيع العثور على أفضل عامل باستخدام قاعدة تسجيل مخصصة.
أنواع محركات القواعد
توجد أنواع مشغل القاعدة التالية في Job Router لتوفير المرونة في كيفية معالجة المهام.
قاعدة ثابتة - تستخدم لتحديد قيمة ثابتة مثل تحديد معرف قائمة انتظار معين.
قاعدة التعبير - تستخدم لغة PowerFx لتعريف القاعدة كتعبير مضمن.
قاعدة Azure Function - تسمح لموجه الوظيفة بتمرير تسميات الإدخال كحمولة إلى Azure Function والاستجابة مرة أخرى بقيمة إخراج.
قاعدة Webhook - تسمح لموجه الوظيفة بتمرير تسميات الإدخال كحمولة إلى Webhook والاستجابة مرة أخرى بقيمة إخراج.
قاعدة الخريطة المباشرة - تأخذ تسميات الإدخال على وظيفة وتخرج مجموعة من محددات العاملين أو قائمة الانتظار بنفس المفتاح والقيم. يجب استخدام هذا فقط في ConditionalQueueSelectorAttachment
أو ConditionalWorkerSelectorAttachment
.
مثال: استخدام قاعدة ثابتة لتعيين أولوية الوظيفة
في هذا المثال StaticRouterRule
، يمكن استخدام ، وهو نوع فرعي من RouterRule
لتعيين أولوية جميع الوظائف، التي تستخدم نهج التصنيف هذا.
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))));
مثال: استخدام قاعدة تعبير لتعيين أولوية الوظيفة
في هذا المثال ExpressionRouterRule
، وهو نوع فرعي من RouterRule
، يقيم تعبير PowerFX لتعيين أولوية جميع المهام التي تستخدم نهج التصنيف هذا.
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)")));