Przetwarzanie danych i funkcje zdefiniowane przez użytkownika
Ważne
Udostępniono nową wersję usługi Azure Digital Twins. W świetle rozszerzonych możliwości nowej usługi oryginalna usługa Azure Digital Twins (opisana w tym zestawie dokumentacji) została wycofana.
Aby wyświetlić dokumentację nowej usługi, odwiedź aktywną dokumentację usługi Azure Digital Twins.
Usługa Azure Digital Twins oferuje zaawansowane możliwości obliczeniowe. Deweloperzy mogą definiować i uruchamiać funkcje niestandardowe względem przychodzących komunikatów telemetrycznych w celu wysyłania zdarzeń do wstępnie zdefiniowanych punktów końcowych.
Przepływ przetwarzania danych
Po wysłaniu danych telemetrycznych przez urządzenia do usługi Azure Digital Twins deweloperzy mogą przetwarzać dane w czterech fazach: weryfikowanie, dopasowywanie, obliczanie i wysyłanie.
- Faza walidacji przekształca przychodzący komunikat telemetryczny na powszechnie zrozumiały format obiektu transferu danych. W tej fazie jest również wykonywana weryfikacja urządzenia i czujnika.
- Faza dopasowania znajduje odpowiednie funkcje zdefiniowane przez użytkownika do uruchomienia. Wstępnie zdefiniowane dopasowania znajdują funkcje zdefiniowane przez użytkownika na podstawie urządzenia, czujnika i informacji o przestrzeni z przychodzącego komunikatu telemetrii.
- Faza obliczeniowa uruchamia funkcje zdefiniowane przez użytkownika dopasowane w poprzedniej fazie. Te funkcje mogą odczytywać i aktualizować obliczone wartości w węzłach grafu przestrzennego i emitować powiadomienia niestandardowe.
- Faza wysyłania kieruje wszelkie niestandardowe powiadomienia z fazy obliczeniowej do punktów końcowych zdefiniowanych na grafie.
Obiekty przetwarzania danych
Przetwarzanie danych w usłudze Azure Digital Twins składa się z definiowania trzech obiektów: matchers, funkcji zdefiniowanych przez użytkownika i przypisań ról.
Dopasowywanie
Matchers definiują zestaw warunków, które oceniają, jakie akcje mają miejsce na podstawie przychodzących danych telemetrycznych czujników. Warunki określania dopasowania mogą obejmować właściwości z czujnika, urządzenie nadrzędne czujnika i przestrzeń nadrzędną czujnika. Warunki są wyrażane jako porównania ze ścieżką JSON, jak opisano w tym przykładzie:
- Wszystkie czujniki typu danych Temperature reprezentowane przez wartość ciągu ucieczki
\"Temperature\"
- Posiadanie
01
w porcie - Które należą do urządzeń z rozszerzonym kluczem właściwości Producent ustawionym na wartość ciągu ucieczki
\"Contoso\"
- Które należą do spacji typu określonego przez ciąg ucieczki
\"Venue\"
- Które są elementami podrzędnymi nadrzędnego identyfikatora SpaceId
DE8F06CA-1138-4AD7-89F4-F782CC6F69FD
{
"id": "23535afafd-f39b-46c0-9b0c-0dd3892a1c30",
"name": "My custom matcher",
"spaceId": "DE8F06CA-1138-4AD7-89F4-F782CC6F69FD",
"description": "All sensors of datatype Temperature with 01 in their port that belong to devices with the extended property key Manufacturer set to the value Contoso and that belong to spaces of type Venue that are somewhere below space Id DE8F06CA-1138-4AD7-89F4-F782CC6F69FD",
"conditions": [
{
"id": "43898sg43-e15a-4e9c-abb8-2gw464364",
"target": "Sensor",
"path": "$.dataType",
"value": "\"Temperature\"",
"comparison": "Equals"
},
{
"id": "wt3th44-e15a-35sg-seg3-235wf3ga463",
"target": "Sensor",
"path": "$.port",
"value": "01",
"comparison": "Contains"
},
{
"id": "735hs33-e15a-37jj-23532-db901d550af5",
"target": "SensorDevice",
"path": "$.properties[?(@.name == 'Manufacturer')].value",
"value": "\"Contoso\"",
"comparison": "Equals"
},
{
"id": "222325-e15a-49fg-5744-463643644",
"target": "SensorSpace",
"path": "$.type",
"value": "\"Venue\"",
"comparison": "Equals"
}
]
}
Ważne
- W ścieżkach JSON jest rozróżniana wielkość liter.
- Ładunek JSON jest taki sam jak ładunek zwrócony przez:
/sensors/{id}?includes=properties,types
czujnik./devices/{id}?includes=properties,types,sensors,sensorsproperties,sensorstypes
dla urządzenia nadrzędnego czujnika./spaces/{id}?includes=properties,types,location,timezone
dla przestrzeni nadrzędnej czujnika.
- Porównania są niewrażliwe na wielkość liter.
Funkcje zdefiniowane przez użytkownika
Funkcja zdefiniowana przez użytkownika to funkcja niestandardowa wykonywana w izolowanym środowisku usługi Azure Digital Twins. Funkcje zdefiniowane przez użytkownika mają dostęp do nieprzetworzonego komunikatu telemetrycznego czujnika podczas odbierania. Funkcje zdefiniowane przez użytkownika mają również dostęp do usługi wykresu przestrzennego i dyspozytora. Po zarejestrowaniu funkcji zdefiniowanej przez użytkownika na grafie należy utworzyć element matcher (opisany powyżej), aby określić, kiedy funkcja jest wykonywana. Na przykład gdy usługa Azure Digital Twins odbiera nowe dane telemetryczne z danego czujnika, dopasowana funkcja zdefiniowana przez użytkownika może obliczyć średnią ruchomą z ostatnich kilku odczytów czujników.
Funkcje zdefiniowane przez użytkownika można pisać w języku JavaScript. Metody pomocnika współdziałają z grafem w środowisku wykonywania zdefiniowanym przez użytkownika. Deweloperzy mogą wykonywać niestandardowe fragmenty kodu względem komunikatów telemetrycznych czujników. Oto kilka przykładów:
- Ustaw odczyt czujnika bezpośrednio na obiekt czujnika na wykresie.
- Wykonaj akcję na podstawie różnych odczytów czujników w przestrzeni na grafie.
- Utwórz powiadomienie w przypadku spełnienia pewnych warunków dla odczytu czujnika przychodzącego.
- Dołącz metadane grafu do odczytu czujnika przed wysłaniem powiadomienia.
Aby uzyskać więcej informacji, zobacz How to use user-defined functions (Jak używać funkcji zdefiniowanych przez użytkownika).
Przykłady
Repozytorium GitHub dla przykładu usługi Digital Twins w języku C# zawiera kilka przykładów funkcji zdefiniowanych przez użytkownika:
- Ta funkcja szuka dwutlenku węgla, ruchu i wartości temperatury, aby określić, czy pomieszczenie jest dostępne z tymi wartościami w zakresie. Samouczki dotyczące usługi Digital Twins eksplorują tę funkcję, aby uzyskać więcej szczegółów.
- Ta funkcja wyszukuje dane z wielu czujników ruchu i określa, że miejsce jest dostępne, jeśli żaden z nich nie wykryje żadnego ruchu. Funkcję zdefiniowaną przez użytkownika można łatwo zastąpić w przewodniku Szybki start lub samouczkach, wprowadzając zmiany wymienione w sekcji komentarzy w pliku.
Przypisanie roli
Akcje funkcji zdefiniowanej przez użytkownika podlegają kontroli dostępu opartej na rolach usługi Azure Digital Twins w celu zabezpieczenia danych w usłudze. Przypisania ról definiują, które funkcje zdefiniowane przez użytkownika mają odpowiednie uprawnienia do interakcji z grafem przestrzennym i jego jednostkami. Na przykład funkcja zdefiniowana przez użytkownika może mieć uprawnienia do tworzenia, odczytu, aktualizacji lub usuwania danych grafu w danym obszarze. Poziom dostępu funkcji zdefiniowanej przez użytkownika jest sprawdzany, gdy funkcja zdefiniowana przez użytkownika wykres o dane lub podejmuje próbę wykonania akcji. Aby uzyskać więcej informacji, przeczytaj Temat Kontrola dostępu oparta na rolach.
Element matcher może wyzwolić funkcję zdefiniowaną przez użytkownika, która nie ma przypisań ról. W takim przypadku funkcja zdefiniowana przez użytkownika nie może odczytać żadnych danych z grafu.
Następne kroki
Aby dowiedzieć się więcej na temat kierowania zdarzeń i komunikatów telemetrycznych do innych usług platformy Azure, przeczytaj Route events and messages (Kierowanie zdarzeń i komunikatów).
Aby dowiedzieć się więcej na temat tworzenia matcherów, funkcji zdefiniowanych przez użytkownika i przypisań ról, przeczytaj Przewodnik dotyczący używania funkcji zdefiniowanych przez użytkownika.
Zapoznaj się z dokumentacją biblioteki klienta funkcji zdefiniowanej przez użytkownika.