Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas tworzenia zasad dystrybucji określamy jeden z następujących trybów dystrybucji, aby zdefiniować strategię używaną podczas przydzielania zadań pracownikom.
Tryb działania okrężnego
Zadania będą rozdzielane w sposób cykliczny, tak aby każdy dostępny pracownik otrzymywał je w kolejności.
Najdłuższy tryb bezczynności
Zadania będą rozdzielane najpierw do pracownika, który jest najmniej obciążony. Jeśli jest remis, wybierzemy pracownika, który był dostępny przez dłuższy czas. Wykorzystanie jest obliczane jako Load Ratio
przez następujący algorytm.
Współczynnik obciążenia = Suma zdolności zużywanej przez wszystkie zadania przypisane pracownikowi / Łączna zdolność pracownika
Przykład
Załóżmy, że każde chat
zadanie zostało skonfigurowane do korzystania z jednej jednostki dla pracownika. Nowe zadanie czatu jest umieszczane w kolejce do routera zadań, a następujący pracownicy są dostępni do podjęcia zadania:
Worker A:
Capacity = 5
ConsumedScore = 3 (Currently handling 3 chats)
LoadRatio = 3 / 5 = 0.6
LastAvailable: 5 mins ago
Worker B:
Capacity = 4
ConsumedScore = 3 (Currently handling 3 chats)
LoadRatio = 3 / 4 = 0.75
LastAvailable: 3 min ago
Worker C:
Capacity = 5
ConsumedScore = 3 (Currently handling 3 chats)
LoadRatio = 3 / 5 = 0.6
LastAvailable: 7 min ago
Worker D:
Capacity = 3
ConsumedScore = 0 (Currently idle)
LoadRatio = 0 / 4 = 0
LastAvailable: 2 min ago
Workers would be matched in order: D, C, A, B
Pracownik D ma najniższy współczynnik obciążenia (0), więc zadanie zostanie mu zaproponowane jako pierwszemu. Pracownicy A i C mają ten sam współczynnik obciążenia (0,6). Jednak proces roboczy C był dostępny przez dłuższy czas (7 minut temu) niż proces roboczy A (5 minut temu), więc proces roboczy C zostanie dopasowany przed procesem roboczym A. Na koniec proces roboczy B zostanie dopasowany ostatnio, ponieważ proces roboczy B ma najwyższy współczynnik obciążenia (0,75).
Najlepszy tryb roboczy
Pracownicy, którzy są najlepiej w stanie wykonać pracę, są wybierani jako pierwsi. Logikę do ustalania priorytetów pracowników można dostosować przy użyciu wyrażenia lub funkcji Azure, aby porównać dwóch pracowników, określając regułę punktacji. Zobacz przykład
Jeśli reguła oceniania nie zostanie podana, ten tryb dystrybucji będzie używać domyślnej metody oceniania, która ocenia pracowników na podstawie tego, jak etykiety i selektory zadania są zgodne z etykietami pracownika. Algorytmy zostały opisane poniżej.
Domyślne dopasowywanie etykiet
Aby obliczyć wynik na podstawie etykiet zadania, zwiększamy Match Score
o 1 dla każdej etykiety pracownika, która pasuje do odpowiedniej etykiety w zadaniu, a następnie dzielimy przez całkowitą liczbę etykiet w zadaniu. W związku z tym, im więcej etykiet pasowało, tym wyższa była wartość Match Score
. Finał Match Score
zawsze będzie wartością z zakresu od 0 do 1.
Przykład
Zadanie 1:
{
"labels": {
{ "language": "english" },
{ "department": "sales" }
}
}
Pracownik A
{
"labels": {
{ "language": "english" },
{ "department": "sales" }
}
}
Pracownik B
{
"labels": {
{ "language": "english" }
}
}
Pracownik C
{
"labels": {
{ "language": "english" },
{ "department": "support" }
}
}
Obliczenie:
Worker A's match score = 1 (for matching english language label) + 1 (for matching department sales label) / 2 (total number of labels) = 1
Worker B's match score = 1 (for matching english language label) / 2 (total number of labels) = 0.5
Worker C's match score = 1 (for matching english language label) / 2 (total number of labels) = 0.5
Pracownik A zostanie dopasowany jako pierwszy. Następnie pracownik B lub pracownik C zostanie dopasowany, w zależności od tego, kto był dostępny przez dłuższy czas, ponieważ wynik dopasowania jest remisowy.
Domyślne dopasowanie selektora procesów roboczych
W przypadku, gdy zadanie zawiera również selektory procesów roboczych, obliczymy wartość Match Score
na LabelOperator
podstawie selektora tego procesu roboczego.
Operatory etykiet równości/nierówności
Jeśli selekcja pracowników ma LabelOperator
Equal
lub NotEqual
, zwiększamy wynik o 1 dla każdej etykiety zadania zgodnej z tą selekcją pracowników, podobnie jak w przypadku Label Matching
powyżej.
Przykład
Zadanie 2:
{
"workerSelectors": [
{ "key": "department", "labelOperator": "equals", "value": "billing" },
{ "key": "segment", "labelOperator": "notEquals", "department": "vip" }
]
}
Pracownik D
{
"labels": {
{ "department": "billing" },
{ "segment": "vip" }
}
}
Pracownik E:
{
"labels": {
{ "department": "billing" }
}
}
Pracownik F
{
"labels": {
{ "department": "sales" },
{ "segment": "new" }
}
}
Obliczenie:
Worker D's match score = 1 (for matching department selector) / 2 (total number of worker selectors) = 0.5
Worker E's match score = 1 (for matching department selector) + 1 (for matching segment not equal to vip) / 2 (total number of worker selectors) = 1
Worker F's match score = 1 (for segment not equal to vip) / 2 (total number of labels) = 0.5
Najpierw zostanie dopasowany pracownik E. Następnie, Pracownik D lub Pracownik F zostanie dopasowany, w zależności od tego, kto był dostępny przez dłuższy czas, ponieważ wynik oceny jest taki sam.
Inne operatory etykiet
W przypadku selektorów pracowników używających operatorów, które porównują wielkość liczby (GreaterThan
/GreaterThanEqual
/LessThan
/LessThanEqual
), zwiększymy wartość pracownika Match Score
o wartość obliczoną przy użyciu funkcji logistycznej (zobacz Rysunek 1). Obliczenie jest oparte na tym, ile wartość etykiety procesu roboczego przekracza wartość selektora procesu roboczego lub mniejszą, jeśli nie przekracza wartości selektora procesu roboczego. W związku z tym im więcej wartości selektora przekracza pracownik, i im wyższy stopień, w jakim to robi, tym wyższy będzie wynik pracownika.
Rys. 1. Funkcja logistyczna
Następująca funkcja jest używana dla operatorów GreaterThan lub GreaterThanEqual:
MatchScore(x) = 1 / (1 + e^(-x)) where x = (labelValue - selectorValue) / selectorValue
Następująca funkcja jest używana dla operatorów LessThan lub LessThanEqual:
MatchScore(x) = 1 / (1 + e^(-x)) where x = (selectorValue - labelValue) / selectorValue
Przykład
Zadanie 3:
{
"workerSelectors": [
{ "key": "language", "operator": "equals", "value": "french" },
{ "key": "sales", "operator": "greaterThanEqual", "value": 10 },
{ "key": "cost", "operator": "lessThanEqual", "value": 10 }
]
}
Pracownik G:
{
"labels": {
{ "language": "french" },
{ "sales": 10 },
{ "cost": 10 }
}
}
Pracownik H
{
"labels": {
{ "language": "french" },
{ "sales": 15 },
{ "cost": 10 }
}
}
Pracownik I
{
"labels": {
{ "language": "french" },
{ "sales": 10 },
{ "cost": 9 }
}
}
Obliczenie:
Worker G's match score = (1 + 1 / (1 + e^-((10 - 10) / 10)) + 1 / (1 + e^-((10 - 10) / 10))) / 3 = 0.667
Worker H's match score = (1 + 1 / (1 + e^-((15 - 10) / 10)) + 1 / (1 + e^-((10 - 10) / 10))) / 3 = 0.707
Worker I's match score = (1 + 1 / (1 + e^-((10 - 10) / 10)) + 1 / (1 + e^-((10 - 9) / 10))) / 3 = 0.675
Wszyscy trzej pracownicy pasują do selektorów pracowników na zadaniu i kwalifikują się do pracy nad nim. Widać jednak, że wartość selektora procesu roboczego H przekracza wartość selektora "sprzedaży" o margines 5. Tymczasem Pracownik I przekracza wartość selektora kosztu tylko o 1. Pracownik G nie przekracza żadnej wartości selektora pracowników. W związku z tym Pracownik H zostanie dopasowany jako pierwszy, następnie Pracownik I, a wreszcie Pracownik G zostanie dopasowany ostatnio.